From d645c82e784ca2f20d56c1a86492f21015db0021 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 11 May 2020 11:30:00 +0800 Subject: [PATCH 001/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9chainid=E5=BC=BA?= =?UTF-8?q?=E8=BD=ACshort=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/poc/utils/validator/TxValidator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java index 2f582a5a71..521c80b50f 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java @@ -245,7 +245,7 @@ private boolean validateWithdraw(Chain chain, Transaction tx) throws NulsExcepti * @return boolean */ private boolean createAgentBasicValid(Chain chain, Transaction tx, Agent agent) throws NulsException { - if (!AddressTool.validNormalAddress(agent.getPackingAddress(), (short) chain.getConfig().getChainId())) { + if (!AddressTool.validNormalAddress(agent.getPackingAddress(), chain.getConfig().getChainId())) { throw new NulsException(ConsensusErrorCode.ADDRESS_ERROR); } if (Arrays.equals(agent.getAgentAddress(), agent.getPackingAddress())) { From ac800748bf95c6fad7b6059037651543f109d596 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 11 May 2020 11:30:51 +0800 Subject: [PATCH 002/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcmd=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/nuls/cmd/client/CmdClientBootstrap.java | 3 +-- .../src/main/java/io/nuls/cmd/client/CmdClientModule.java | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java index 558788fa25..57ecdab22e 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java @@ -32,8 +32,7 @@ public static void main(String[] args) { NulsRpcModuleBootstrap.run("io.nuls.cmd.client",args); //增加地址工具类初始化 AddressTool.init(new AddressPrefixDatas()); - //增加跨链资产信息获取 - AssetsUtil.initRegisteredChainInfo(); + }catch (Exception e){ Log.error("module start fail {}",e.getMessage()); } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java index eb0543a095..8ce8bcad37 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java @@ -1,6 +1,7 @@ package io.nuls.cmd.client; import io.nuls.cmd.client.config.Config; +import io.nuls.cmd.client.utils.AssetsUtil; import io.nuls.cmd.client.utils.LoggerUtil; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; @@ -41,8 +42,7 @@ public Module[] declareDependent() { new Module(ModuleE.TX.abbr, ROLE), new Module(ModuleE.BL.abbr, ROLE), new Module(ModuleE.CS.abbr, ROLE), - new Module(ModuleE.LG.abbr, ROLE), - Module.build(ModuleE.PU) + new Module(ModuleE.LG.abbr, ROLE) }; } @@ -80,6 +80,10 @@ public boolean doStart() { public RpcModuleState onDependenciesReady() { System.out.println("nuls-wallet base module ready"); ThreadUtils.createAndRunThread("cmd", () -> commandHandler.start()); + if(this.hasDependent(ModuleE.CC)){ + //增加跨链资产信息获取 + AssetsUtil.initRegisteredChainInfo(); + } return RpcModuleState.Running; } From b510ecfd5ddd96370dc5b7cd8d391661aeb979d6 Mon Sep 17 00:00:00 2001 From: tag0313 <981602228@qq.com> Date: Thu, 28 May 2020 15:32:04 +0800 Subject: [PATCH 003/304] broad cross chain info change tx remove main chain --- .../main/java/io/nuls/crosschain/nuls/utils/BroadCtxUtil.java | 1 + .../src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java | 3 +++ 2 files changed, 4 insertions(+) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/BroadCtxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/BroadCtxUtil.java index 0047927024..0f80fcdda6 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/BroadCtxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/BroadCtxUtil.java @@ -288,6 +288,7 @@ private static boolean broadCrossChainChangeTx(Chain chain, BroadCtxHashMessage if(txData.getType() == ChainInfoChangeType.NEW_REGISTER_CHAIN.getType()){ broadChains.remove(toChainId); } + broadChains.remove(config.getMainChainId()); } broadChains.remove(config.getMainChainId()); chain.getLogger().info("跨链交易需要广播到broadChains:{}",broadChains); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index fcb039196e..823f9945ef 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -226,6 +226,7 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { convertHash = mainCtx.getHash(); convertCtxService.save(hash, mainCtx, chainId); } + CtxStatusPO ctxStatusPO = new CtxStatusPO(ctx, TxStatusEnum.UNCONFIRM.getStatus()); //如果本节点是共识节点,则需要签名并做拜占庭,否则只需广播本地收集到的签名信息 if (!StringUtils.isBlank(address) && chain.getVerifierList().contains(address)) { BroadCtxSignMessage message = new BroadCtxSignMessage(); @@ -252,6 +253,8 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { } MessageUtil.signByzantineInChain(chain, ctx, transactionSignature, packers,hash); NetWorkCall.broadcast(chainId, message, CommandConstant.BROAD_CTX_SIGN_MESSAGE, false); + }else{ + ctxStatusService.save(hash, ctxStatusPO, chainId); } //将收到的签名消息加入消息队列 if (chain.getFutureMessageMap().containsKey(hash)) { From 981980b4834c298600e6f3bfd78e97e032eb585b Mon Sep 17 00:00:00 2001 From: tag0313 <981602228@qq.com> Date: Fri, 29 May 2020 14:07:29 +0800 Subject: [PATCH 004/304] cross chain info change handler update --- .../impl/RegisteredChainChangeServiceImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/RegisteredChainChangeServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/RegisteredChainChangeServiceImpl.java index fc2eaaeac3..da64f77d7f 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/RegisteredChainChangeServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/RegisteredChainChangeServiceImpl.java @@ -83,10 +83,10 @@ public boolean commit(int chainId, List txs, BlockHeader blockHeade try { RegisteredChainChangeData txData = new RegisteredChainChangeData(); txData.parse(crossChainChangeTx.getTxData(), 0); + Set verifierSet; + int mainByzantineRatio; + int maxSignatureCount; if(txData.getType() == ChainInfoChangeType.INIT_REGISTER_CHAIN.getType()){ - Set verifierSet; - int mainByzantineRatio; - int maxSignatureCount; if(chainManager.getRegisteredCrossChainList() != null && !chainManager.getRegisteredCrossChainList().isEmpty()){ ChainInfo chainInfo = chainManager.getChainInfo(config.getMainChainId()); verifierSet = chainInfo.getVerifierList(); @@ -121,6 +121,12 @@ public boolean commit(int chainId, List txs, BlockHeader blockHeade chain.getLogger().info("有链注销了跨链,chainId:{}",txData.getRegisterChainId()); }else{ for(ChainInfo chainInfo : txData.getChainInfoList()){ + if(chainInfo.getChainId() == config.getMainChainId()){ + ChainInfo oldChainInfo = chainManager.getChainInfo(config.getMainChainId()); + chainInfo.setVerifierList(oldChainInfo.getVerifierList()); + chainInfo.setSignatureByzantineRatio(oldChainInfo.getSignatureByzantineRatio()); + chainInfo.setMaxSignatureCount(oldChainInfo.getMaxSignatureCount()); + } registeredChainMessage.addChainInfo(chainInfo); chain.getLogger().info("Registered cross chain chain information has changed,chainId:{}" ,chainInfo.getChainId()); } From a341912b5792c7dc5cd1fa706b28ae47b48c79f7 Mon Sep 17 00:00:00 2001 From: tag0313 <981602228@qq.com> Date: Fri, 29 May 2020 16:10:13 +0800 Subject: [PATCH 005/304] chainManager cross asset record update --- .../impl/NulsCrossChainServiceImpl.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java index fb9f7b0c3f..7eadd6448c 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java @@ -288,19 +288,19 @@ public boolean commitCrossTx(int chainId, List txs, BlockHeader blo } ctxStatusList.add(ctxHash); chain.getLogger().debug("跨链交易提交完成,对跨链转账交易做拜占庭验证:{}", ctxHash.toHex()); - //如果本链为主网通知跨链管理模块发起链与接收链资产变更 - if(config.isMainNet()){ - List txStrList = new ArrayList<>(); - for (Transaction tx : txs) { - txStrList.add(RPCUtil.encode(tx.serialize())); - } - String headerStr = RPCUtil.encode(blockHeader.serialize()); - ChainManagerCall.ctxAssetCirculateCommit(chainId, txStrList, headerStr); - } //发起拜占庭验证 chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, ctx, syncStatus)); } } + //如果本链为主网通知跨链管理模块发起链与接收链资产变更 + if(config.isMainNet()){ + List txStrList = new ArrayList<>(); + for (Transaction tx : txs) { + txStrList.add(RPCUtil.encode(tx.serialize())); + } + String headerStr = RPCUtil.encode(blockHeader.serialize()); + ChainManagerCall.ctxAssetCirculateCommit(chainId, txStrList, headerStr); + } chain.getLogger().info("高度:{} 的跨链交易提交完成\n", blockHeader.getHeight()); return true; } catch (Exception e) { From bc20e958fedeedc98818ddd14f2c92be8971de26 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 1 Jun 2020 11:13:47 +0800 Subject: [PATCH 006/304] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/test/rpc/NulsCrossChainTest.java | 17 +++++++++++++++++ .../test/java/io/nuls/api/test/MongoDBTest.java | 12 +++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/rpc/NulsCrossChainTest.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/rpc/NulsCrossChainTest.java index 2e97c85d42..9667be6496 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/rpc/NulsCrossChainTest.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/rpc/NulsCrossChainTest.java @@ -1,6 +1,9 @@ package io.nuls.test.rpc; +import io.nuls.core.exception.NulsException; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.util.RpcCall; +import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.model.dto.input.CoinDTO; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.info.NoUse; @@ -105,4 +108,18 @@ private String createCtx(){ return null; } } + + @Test + public void testSendCrossTx(){ + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, 2); + params.put("tx", "0a00c07ed05e0000d20217020001b003d44b0cba41eb30bb5b775dc63f79247fb1a1040001000058850c0200000000000000000000000000000000000000000000000000000008c6bcaba6b2db02d50017020001b003d44b0cba41eb30bb5b775dc63f79247fb1a10200010040420f00000000000000000000000000000000000000000000000000000000000831816bd95cc2224600011704000111246da8310ed89f6ac6b16cfe17b72d7410c4de040001000058850c0200000000000000000000000000000000000000000000000000000000000000000000006a21026728caa0b388c4ae0f39394a039e5f773e3c9476192e707a3f54e6c4f1874583473045022100c050663c9c647b8985cf22c7d667953f0b4a5b1abe284d4853d47fc3ec6f15470220070df0df8adab51e47c061d70cc3f5c638846c1c885ba11cdfca3ae899ffe7e5"); + try { + Map map = (Map) RpcCall.request(ModuleE.CC.abbr, "newApiModuleCrossTx", params); + Log.info("{}",map); + } catch (NulsException e) { + } + } + + } diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java index eec83759c0..b181ec95af 100644 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java +++ b/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java @@ -1,19 +1,28 @@ package io.nuls.api.test; import io.nuls.api.ApiContext; +import io.nuls.api.constant.CommandConstant; import io.nuls.api.db.mongo.MongoBlockServiceImpl; import io.nuls.api.db.mongo.MongoContractServiceImpl; import io.nuls.api.model.po.BlockHeaderInfo; import io.nuls.api.model.po.ContractInfo; +import io.nuls.api.rpc.RpcCall; import io.nuls.api.utils.DocumentTransferTool; +import io.nuls.core.basic.Result; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.model.ModuleE; import org.bson.Document; import org.junit.Before; import org.junit.Test; import java.math.BigInteger; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class MongoDBTest { @@ -28,10 +37,11 @@ public void before() { ApiContext.databaseUrl = "127.0.0.1"; ApiContext.databasePort = 27017; - SpringLiteContext.init("io.nuls.api"); + SpringLiteContext.init("io.nuls"); } + @Test public void testDBSaveBlock() { MongoBlockServiceImpl mongoBlockServiceImpl = SpringLiteContext.getBean(MongoBlockServiceImpl.class); From 58b0fb6643548d137dbae455354eea859cf27798 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 1 Jun 2020 11:14:59 +0800 Subject: [PATCH 007/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c4214ca359..9877bcf73b 100644 --- a/.gitignore +++ b/.gitignore @@ -120,6 +120,6 @@ logs/ keystore/ Modules/ NULS-Wallet-linux64-beta* -NULS_Wallet_* +NULS_Wallet* config_tmp/ -NULS-Wallet-linux64-alpha* \ No newline at end of file +NULS-Wallet-linux64-alpha* From e358754f655d562c93d806682f7f4ff64d75ef2e Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 1 Jun 2020 11:29:28 +0800 Subject: [PATCH 008/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=20(#600)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 437459cd94..e70b4523ae 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.5.0 +2.6.0 From 1107a84fb7575633c1d6985a08394948816c04ee Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 1 Jun 2020 17:13:50 +0800 Subject: [PATCH 009/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=20(#601)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From f42d83a3a57dea0d1cfa1cf3193b1a2f043749da Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 1 Jun 2020 17:28:35 +0800 Subject: [PATCH 010/304] =?UTF-8?q?2.6.0=20=E4=BF=AE=E6=94=B9=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E7=89=88=E6=9C=AC=E5=8F=B7=20(#602)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> --- .../nuls-protocol-update/src/main/resources/versions.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 6bb2751eef..e961e8f511 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -23,6 +23,10 @@ "version": "5", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "6", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } - ] \ No newline at end of file From 366da835411ecf5e66c6a07063260d8e2f094029 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 17 Jun 2020 10:55:35 +0800 Subject: [PATCH 011/304] =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8A=A8=E6=80=81=E6=89=A7=E8=A1=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/cmd | 3 +- .../NulsRpcModuleBootstrap.java | 2 +- .../core/rpc/modulebootstrap/RpcModule.java | 5 +- module/nuls-cmd-client/script/cmd | 2 +- .../nuls/cmd/client/CmdClientBootstrap.java | 4 +- .../io/nuls/cmd/client/CmdClientModule.java | 27 +++++++++ .../io/nuls/cmd/client/CommandHandler.java | 49 +++++++++------- .../processor/account/CreateProcessor.java | 20 ++++--- .../account/ImportByPrivateKeyProcessor.java | 16 +++-- .../crosschain/CreateCrossTxProcessor.java | 15 +++-- .../processor/system/EvalProcessor.java | 58 +++++++++++++++++++ .../transaction/TransferProcessor.java | 14 ++++- 12 files changed, 169 insertions(+), 46 deletions(-) create mode 100644 module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/system/EvalProcessor.java diff --git a/build/cmd b/build/cmd index 579989a9d4..f4468c5366 100644 --- a/build/cmd +++ b/build/cmd @@ -38,7 +38,7 @@ LOGLEVEL="ERROR" command="cmd" PARAM= JAVAOPT= -while getopts hl:c:C:P:a:i: name +while getopts hl:c:C:P:a:i:e: name do case $name in l) LOGLEVEL="$OPTARG" @@ -47,6 +47,7 @@ do c) config="$OPTARG";; C) command="$OPTARG";; P) PARAM="$OPTARG";; + e) PARAM="eval \"$OPTARG\"";; a) JAVAOPT="${JAVAOPT} -DassetsId=$OPTARG";; i) JAVAOPT="${JAVAOPT} -DchainId=$OPTARG";; h) help ;; diff --git a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/NulsRpcModuleBootstrap.java b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/NulsRpcModuleBootstrap.java index 1c1005d2da..0668edc5f8 100644 --- a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/NulsRpcModuleBootstrap.java +++ b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/NulsRpcModuleBootstrap.java @@ -78,7 +78,7 @@ public static void run(String scanPackage, String[] args) { } }); } - module.run(scanPackage, args[0]); + module.run(scanPackage, args[0],args); } public static void printLogo(String logoFile) { diff --git a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java index 63eee43908..4cdca63566 100644 --- a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java +++ b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java @@ -67,6 +67,8 @@ public String toString() { @Autowired NotifySender notifySender; + protected String[] startArgs; + @Override public final void afterPropertiesSet() throws NulsException { try { @@ -214,7 +216,8 @@ private void notifyFollowerReady() { * * @param serviceManagerUrl */ - void run(String modulePackage, String serviceManagerUrl) { + void run(String modulePackage, String serviceManagerUrl,String[] startArgs) { + this.startArgs = startArgs; //初始化依赖模块的ready状态 this.getDependencies().forEach(d -> dependentReadyState.put(d, Boolean.FALSE)); try { diff --git a/module/nuls-cmd-client/script/cmd b/module/nuls-cmd-client/script/cmd index 7048345053..6e4abd8753 100644 --- a/module/nuls-cmd-client/script/cmd +++ b/module/nuls-cmd-client/script/cmd @@ -44,7 +44,7 @@ JAVA_OPTS="-Xms128m -Xmx128m -Dapp.name=cmd-client --add-opens java.base/java.la CLASSPATH=$PUB_LIB:. if [ -x ${JAVA} ]; then - ${JAVA} $JAVA_OPTS -classpath $CLASSPATH $MAIN_CLASS + eval "${JAVA} $JAVA_OPTS -classpath $CLASSPATH $MAIN_CLASS" exit 0 fi diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java index 57ecdab22e..c5bb2afb68 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientBootstrap.java @@ -19,9 +19,7 @@ public class CmdClientBootstrap { public static void main(String[] args) { NulsRpcModuleBootstrap.printLogo("/cli-logo"); if (args == null || args.length == 0) { - args = new String[]{"ws://" + HostInfo.getLocalIP() + ":7771","0"}; - }else{ - args = new String[]{args[0],"0"}; + args = new String[]{"ws://" + HostInfo.getLocalIP() + ":7771"}; } ConfigurationLoader configurationLoader = new ConfigurationLoader(); configurationLoader.load(); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java index 8ce8bcad37..84a1e15823 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CmdClientModule.java @@ -1,6 +1,7 @@ package io.nuls.cmd.client; import io.nuls.cmd.client.config.Config; +import io.nuls.cmd.client.processor.system.EvalProcessor; import io.nuls.cmd.client.utils.AssetsUtil; import io.nuls.cmd.client.utils.LoggerUtil; import io.nuls.core.core.annotation.Autowired; @@ -14,6 +15,8 @@ import io.nuls.core.rpc.modulebootstrap.RpcModuleState; import io.nuls.core.thread.ThreadUtils; +import java.io.UnsupportedEncodingException; +import java.util.Arrays; import java.util.concurrent.TimeUnit; /** @@ -46,6 +49,8 @@ public Module[] declareDependent() { }; } + @Autowired + EvalProcessor evalProcessor; @Override public Module moduleInfo() { @@ -79,11 +84,33 @@ public boolean doStart() { @Override public RpcModuleState onDependenciesReady() { System.out.println("nuls-wallet base module ready"); + + Arrays.stream(this.startArgs).forEach(d->{ + Log.info("arg:{}",d); + }); + if(startArgs.length > 1){ + String evel = startArgs[1]; + if(evel.equals(evalProcessor.getCommand())){ + if(startArgs.length < 2){ + System.out.println("param is error"); + } + String[] cmdAry = startArgs[2].split(","); + Arrays.stream(cmdAry).forEach(cmd->{ + try { + commandHandler.processCommand(cmd); + } catch (UnsupportedEncodingException e) { + System.out.println(CommandConstant.EXCEPTION + ": " + e.getMessage()); + } + }); + System.exit(0); + } + } ThreadUtils.createAndRunThread("cmd", () -> commandHandler.start()); if(this.hasDependent(ModuleE.CC)){ //增加跨链资产信息获取 AssetsUtil.initRegisteredChainInfo(); } + return RpcModuleState.Running; } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java index d0356bd7d7..c5cab4da60 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java @@ -219,8 +219,7 @@ public void start() { if (StringUtils.isBlank(line)) { continue; } - String[] cmdArgs = parseArgs(line); - System.out.print(this.processCommand(cmdArgs) + "\n"); + processCommand(line); } while (line != null); } catch (IOException e) { e.printStackTrace(); @@ -248,7 +247,6 @@ private static String[] parseArgs(String line) throws UnsupportedEncodingExcepti String encoder = URLEncoder.encode(subGroup, StandardCharsets.UTF_8.toString()); result = result.replace(group, encoder); } - String[] args = result.split("\\s+"); for (int i = 0, length = args.length; i < length; i++) { args[i] = URLDecoder.decode(args[i], StandardCharsets.UTF_8.toString()); @@ -256,39 +254,50 @@ private static String[] parseArgs(String line) throws UnsupportedEncodingExcepti return args; } - private String processCommand(String[] args) { + public void processCommand(String args) throws UnsupportedEncodingException { + String[] cmdArgs = parseArgs(args); + try { + CommandResult commandResult = this.processCommand(cmdArgs); + System.out.print( commandResult.toString() + "\n"); + } catch (Exception e) { + if (System.Logger.Level.DEBUG.getName().equals(System.getProperty("log.level"))) { + e.printStackTrace(); + } + System.out.println(CommandConstant.EXCEPTION + ": " + e.getMessage()); + } + } + + public CommandResult processCommand(String[] args) { int length = args.length; if (length == 0) { - return CommandConstant.COMMAND_ERROR; + return CommandResult.getFailed(CommandConstant.COMMAND_ERROR); } String command = args[0].trim(); CommandProcessor processor = PROCESSOR_MAP.get(command); if (processor == null) { - return command + " not a nuls command!"; + return CommandResult.getFailed(command + " not a nuls command!"); } if (length == 2 && CommandConstant.NEED_HELP.equals(args[1])) { - return processor.getHelp(); + return CommandResult.getFailed(processor.getHelp()); } try { - try { - boolean result = processor.argsValidate(args); - if (!result) { - return "args incorrect:\n" + processor.getHelp(); - } - } catch (ParameterException e) { - return e.getMessage() + "\n" + "args incorrect:\n" + processor.getHelp(); + boolean result = processor.argsValidate(args); + if (!result) { + return CommandResult.getFailed("args incorrect:\n" + processor.getHelp()); } - return processor.execute(args).toString(); - } catch (Exception e) { - if (System.Logger.Level.DEBUG.getName().equals(System.getProperty("log.level"))) { - e.printStackTrace(); - } - return CommandConstant.EXCEPTION + ": " + e.getMessage(); + } catch (ParameterException e) { + return CommandResult.getFailed(e.getMessage() + "\n" + "args incorrect:\n" + processor.getHelp()); } + return processor.execute(args); } private void register(CommandProcessor processor) { PROCESSOR_MAP.put(processor.getCommand(), processor); } + public boolean hasCommand(String command){ + return PROCESSOR_MAP.containsKey(command); + } + + } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/CreateProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/CreateProcessor.java index 1c3cd32010..c55dd08e01 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/CreateProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/CreateProcessor.java @@ -50,18 +50,19 @@ public String getCommand() { public String getHelp() { CommandBuilder builder = new CommandBuilder(); builder.newLine(getCommandDescription()) - .newLine("\t[number] The count of accounts you want to create, - default 1"); + .newLine("\t[number] The count of accounts you want to create, - default 1") + .newLine("\t[password] setting account password"); return builder.toString(); } @Override public String getCommandDescription() { - return "create [number] --create account, [number] the number of accounts you want to create, - default 1"; + return "create [number] [password] --create account, [number] the number of accounts you want to create, - default 1. [password] setting account password"; } @Override public boolean argsValidate(String[] args) { - checkArgsNumber(args,0,1); + checkArgsNumber(args,0,1,2); if(args.length==1){ return true; } @@ -72,10 +73,15 @@ public boolean argsValidate(String[] args) { @Override public CommandResult execute(String[] args) { - String password = getPwd("Please enter the new password(8-20 characters, the combination of letters and numbers).\nEnter your new password:"); - if(StringUtils.isNotBlank(password)){ - if(!CommandHelper.confirmPwd(password)) { - return CommandResult.getFailed("Password confirmation doesn't match the password.Operation abort."); + String password = null; + if(args.length == 3){ + password = args[2]; + }else { + password = getPwd("Please enter the new password(8-20 characters, the combination of letters and numbers).\nEnter your new password:"); + if(StringUtils.isNotBlank(password)){ + if(!CommandHelper.confirmPwd(password)) { + return CommandResult.getFailed("Password confirmation doesn't match the password.Operation abort."); + } } } int count = 1; diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByPrivateKeyProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByPrivateKeyProcessor.java index fdd7b74169..d43f298047 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByPrivateKeyProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByPrivateKeyProcessor.java @@ -62,7 +62,7 @@ public String getCommandDescription() { @Override public boolean argsValidate(String[] args) { int length = args.length; - if (length != 2) { + if (length < 2) { return false; } if (!CommandHelper.checkArgsIsNull(args)) { @@ -74,10 +74,16 @@ public boolean argsValidate(String[] args) { @Override public CommandResult execute(String[] args) { String prikey = args[1]; - String password = CommandHelper.getPwdOptional(); - if(StringUtils.isNotBlank(password)){ - if(!CommandHelper.confirmPwd(password)) { - return CommandResult.getFailed("Password confirmation doesn't match the password.Operation abort."); + + String password; + if(args.length > 2){ + password = args[2]; + }else{ + password = CommandHelper.getPwdOptional(); + if(StringUtils.isNotBlank(password)){ + if(!CommandHelper.confirmPwd(password)) { + return CommandResult.getFailed("Password confirmation doesn't match the password.Operation abort."); + } } } ImportAccountByPrivateKeyReq req = new ImportAccountByPrivateKeyReq(password,prikey,true); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CreateCrossTxProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CreateCrossTxProcessor.java index 5b31ed6933..0774d1069c 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CreateCrossTxProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CreateCrossTxProcessor.java @@ -34,19 +34,20 @@ public String getHelp() { .newLine("\t transaction asset chainId - require") .newLine("\t transaction assetId - require") .newLine("\t \t\tamount - required") - .newLine("\t[remark] \t\tremark "); + .newLine("\t[remark] \t\tremark ") + .newLine("\t[password] \t\tpassword"); return builder.toString(); } @Override public String getCommandDescription() { - return "createcrosstx [remark] --create cross chain tx"; + return "createcrosstx [remark] [password]--create cross chain tx"; } @Override public boolean argsValidate(String[] args) { - checkArgsNumber(args, 5, 6); + checkArgsNumber(args, 5, 6,7); checkAddress(config.getChainId(), args[1]); checkArgs(AddressTool.getChainIdByAddress(args[2]) != config.getChainId(), ErrorCode.init("cc_0001").getMsg()); checkIsNumeric(args[3], "assetChainId"); @@ -70,12 +71,18 @@ public CommandResult execute(String[] args) { BigDecimal decimal = BigDecimal.TEN.pow(decimalInt); BigInteger amount = new BigDecimal(args[5]).multiply(decimal).toBigInteger(); String remark = null; + String password = null; if (args.length == 7) { remark = args[6]; } + if (args.length == 8) { + password = args[7]; + }else { + password = getPwd(); + } Result result = crossChainProvider.createCrossTx( new CreateCrossTxReq.CreateCrossTxReqBuilder(chainId) - .addForm(assetChainId, assetId, formAddress, getPwd(), amount) + .addForm(assetChainId, assetId, formAddress, password, amount) .addTo(assetChainId, assetId, toAddress, amount) .setRemark(remark).build()); if (result.isFailed()) { diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/system/EvalProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/system/EvalProcessor.java new file mode 100644 index 0000000000..49b8e7474d --- /dev/null +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/system/EvalProcessor.java @@ -0,0 +1,58 @@ +package io.nuls.cmd.client.processor.system; + +import io.nuls.cmd.client.CommandHandler; +import io.nuls.cmd.client.CommandResult; +import io.nuls.cmd.client.processor.CommandGroup; +import io.nuls.cmd.client.processor.CommandProcessor; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.Arrays; +import java.util.List; + +/** + * @Author: zhoulijun + * @Time: 2020-06-01 15:37 + * @Description: 功能描述 + */ +@Component +public class EvalProcessor implements CommandProcessor { + + @Autowired + CommandHandler commandHandler; + + @Override + public String getCommand() { + return "eval"; + } + + @Override + public CommandGroup getGroup() { + return CommandGroup.System; + } + + @Override + public String getHelp() { + return null; + } + + @Override + public String getCommandDescription() { + return null; + } + + @Override + public boolean argsValidate(String[] args) { + checkArgsNumber(args,1); + String command = args[1]; + checkArgs(commandHandler.hasCommand(command),"not found nuls command!"); + return true; + } + + @Override + public CommandResult execute(String[] args) { + List argList = Arrays.asList(args); + argList = argList.subList(1,argList.size()); + return commandHandler.processCommand(argList.toArray(new String[argList.size()])); + } +} diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferProcessor.java index 74a59e96a1..5b3c06aba2 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferProcessor.java @@ -59,13 +59,15 @@ public String getHelp() { .newLine("\t
\t\tsource address or alias - Required") .newLine("\t \treceiving address or alias - Required") .newLine("\t \t\tamount - Required") - .newLine("\t[remark] \t\tremark - "); + .newLine("\t[remark] \t\tremark - ") + .newLine("\t[password] \t\tpassword - "); + return builder.toString(); } @Override public String getCommandDescription() { - return "transfer
| | [remark] --transfer"; + return "transfer
| | [remark] [password] --transfer"; } @Override @@ -79,9 +81,15 @@ private TransferReq buildTransferReq(String[] args) { String formAddress = args[1]; String toAddress = args[2]; BigInteger amount = config.toSmallUnit(new BigDecimal(args[3])); + String password; + if(args.length == 6){ + password = args[5]; + }else{ + password = getPwd("\nEnter your account password:"); + } TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(config.getChainId(),config.getAssetsId()) - .addForm(formAddress,getPwd("Enter your account password"), amount) + .addForm(formAddress,password, amount) .addTo(toAddress,amount); if(args.length == 5){ builder.setRemark(args[4]); From 96e49a13524c475412d6fec93807dbec9ad81e69 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 23 Jun 2020 15:28:07 +0800 Subject: [PATCH 012/304] update getblock api --- .../provider/model/dto/TransactionDto.java | 20 +++++++++++++++++++ .../provider/model/dto/block/BlockDto.java | 7 ++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/TransactionDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/TransactionDto.java index 922cdf1fb4..eca9c9daad 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/TransactionDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/TransactionDto.java @@ -93,6 +93,26 @@ public TransactionDto(Transaction transaction) throws NulsException { } } + public TransactionDto(Transaction transaction, int i) throws NulsException { + this.blockHeight = transaction.getBlockHeight(); + this.status = transaction.getStatus().getStatus(); + this.hash = transaction.getHash().toString(); + this.remark = ByteUtils.asString(transaction.getRemark()); + this.inBlockIndex = i; + this.status = 1; + this.size = transaction.getSize(); + this.time = DateUtils.timeStamp2DateStr(transaction.getTime() * 1000); + this.timestamp = transaction.getTime(); + this.transactionSignature = RPCUtil.encode(transaction.getTransactionSignature()); + this.txDataHex = RPCUtil.encode(transaction.getTxData()); + this.type = transaction.getType(); + if (transaction.getCoinData() != null) { + CoinData coinData = transaction.getCoinDataInstance(); + this.from = coinData.getFrom().stream().map(from -> new CoinFromDto(from)).collect(Collectors.toList()); + this.to = coinData.getTo().stream().map(to -> new CoinToDto(to)).collect(Collectors.toList()); + } + } + public String getHash() { return hash; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockDto.java index 9881bcdda2..f156fecf25 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockDto.java @@ -54,11 +54,12 @@ public BlockDto(Block block) throws NulsException { this.header = new BlockHeaderDto(block.getHeader()); this.txs = new LinkedList<>(); List txList = block.getTxs(); - if(txList == null || txList.isEmpty()) { + if (txList == null || txList.isEmpty()) { return; } - for(Transaction tx : txList) { - this.txs.add(new TransactionDto(tx)); + + for (int i = 0; i < txList.size(); i++) { + this.txs.add(new TransactionDto(txList.get(i), i)); } } From 386c40c04597c0e520f92e3e7da7fe5bbba608e6 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 23 Jun 2020 19:51:40 +0800 Subject: [PATCH 013/304] update getblock api --- .../main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java index 2ebe537d0e..2f5628addb 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java @@ -8,6 +8,7 @@ import io.nuls.api.utils.DocumentTransferTool; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.StringUtils; import org.bson.Document; import org.bson.conversions.Bson; @@ -42,6 +43,7 @@ public void saveAccountTokens(int chainId, Map account List> modelList = new ArrayList<>(); for (AccountTokenInfo tokenInfo : accountTokenInfos.values()) { Document document = DocumentTransferTool.toDocument(tokenInfo, "key"); + document.put("totalBalance", BigIntegerUtils.bigIntegerToString(tokenInfo.getBalance(), 32)); if (tokenInfo.isNew()) { modelList.add(new InsertOneModel(document)); } else { From d2dfe8ec8ea94f6894d221684239019a28cb9688 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sun, 28 Jun 2020 20:06:30 +0800 Subject: [PATCH 014/304] =?UTF-8?q?nuls-api=E5=A2=9E=E5=8A=A0=E9=93=BE?= =?UTF-8?q?=E5=86=85=E8=BD=AC=E5=B9=B3=E8=A1=8C=E9=93=BE=E8=B5=84=E4=BA=A7?= =?UTF-8?q?=E7=9A=84=E7=A6=BB=E7=BA=BF=E4=BA=A4=E6=98=93=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TransactionController.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index da368fa549..4f0e297f93 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -339,6 +339,90 @@ public RpcResult broadcastTxWithoutAnyValidation(List params) { } } + + @RpcMethod("transferOtherChainAsset") + @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易,转账资产为链内的其他平行链资产") + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链id"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产id"), + @Parameter(parameterName = "address", parameterDes = "转出账户地址"), + @Parameter(parameterName = "toAddress", parameterDes = "转入账户地址"), + @Parameter(parameterName = "password", parameterDes = "转出账户密码"), + @Parameter(parameterName = "amount", parameterDes = "转出金额"), + @Parameter(parameterName = "remark", parameterDes = "备注"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash") + })) + public RpcResult transferOtherChainAsset(List params) { + VerifyUtils.verifyParams(params, 8); + int chainId, assetChainId, assetId; + String address, toAddress, password, amount, remark; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + assetChainId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is inValid"); + } + try { + assetId = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + try { + address = (String) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + try { + toAddress = (String) params.get(4); + } catch (Exception e) { + return RpcResult.paramError("[toAddress] is inValid"); + } + try { + password = (String) params.get(5); + } catch (Exception e) { + return RpcResult.paramError("[password] is inValid"); + } + try { + amount = params.get(6).toString(); + } catch (Exception e) { + return RpcResult.paramError("[amount] is inValid"); + } + try { + remark = (String) params.get(7); + } catch (Exception e) { + return RpcResult.paramError("[remark] is inValid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + if (!AddressTool.validAddress(chainId, toAddress)) { + return RpcResult.paramError("[toAddress] is inValid"); + } + if (!ValidateUtil.validateBigInteger(amount)) { + return RpcResult.paramError("[amount] is inValid"); + } + TransferReq.TransferReqBuilder builder = + new TransferReq.TransferReqBuilder(chainId, assetId) + .addForm(assetChainId,assetId, address, password, new BigInteger(amount)) + .addTo(assetChainId,assetId, toAddress, new BigInteger(amount)).setRemark(remark); + Result result = transferService.transfer(builder.build(new TransferReq())); + if (result.isSuccess()) { + Map resultMap = new HashMap(2); + resultMap.put("hash", result.getData()); + return RpcResult.success(resultMap); + } else { + return RpcResult.failed(ErrorCode.init(result.getStatus()), result.getMessage()); + } + } + + @RpcMethod("transfer") @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易") @Parameters({ From d4a394483194cca40eef4b626d40fd3e662df800 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 29 Jun 2020 11:50:14 +0800 Subject: [PATCH 015/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B9=B3=E8=A1=8C?= =?UTF-8?q?=E9=93=BE=E8=B5=84=E4=BA=A7=E5=B0=8F=E6=95=B0=E4=BD=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/cmd/client/config/Config.java | 6 +++++- .../processor/ledger/GetBalanceProcessor.java | 8 +++++--- .../nuls/servive/impl/MainNetServiceImpl.java | 4 ++++ .../nuls/api/rpc/controller/AccountController.java | 14 +++++++++++--- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/config/Config.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/config/Config.java index 26f1cdc053..2577f5f511 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/config/Config.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/config/Config.java @@ -108,7 +108,11 @@ public void setClientVersion(String clientVersion) { } public BigDecimal toBigUnit(BigInteger val) { - BigDecimal decimal = BigDecimal.TEN.pow(this.getDecimals()); + return toBigUnit(val,this.getDecimals()); + } + + public BigDecimal toBigUnit(BigInteger val,int decimals) { + BigDecimal decimal = BigDecimal.TEN.pow(decimals); BigDecimal dval = BigDecimal.valueOf(val.longValue()); return dval.divide(decimal); } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/ledger/GetBalanceProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/ledger/GetBalanceProcessor.java index d8b21096e7..37d861f7d0 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/ledger/GetBalanceProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/ledger/GetBalanceProcessor.java @@ -35,6 +35,7 @@ import io.nuls.cmd.client.config.Config; import io.nuls.cmd.client.processor.CommandGroup; import io.nuls.cmd.client.processor.CommandProcessor; +import io.nuls.cmd.client.utils.AssetsUtil; import io.nuls.cmd.client.utils.Na; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; @@ -103,10 +104,11 @@ public CommandResult execute(String[] args) { if(result.isFailed()){ return CommandResult.getFailed(result); } + Integer decimalInt = AssetsUtil.getCrossAssetDecimal(assetChainId, assetId); Map r = new HashMap<>(3); - r.put("available",config.toBigUnit(result.getData().getAvailable())); - r.put("freeze",config.toBigUnit(result.getData().getFreeze())); - r.put("total",config.toBigUnit(result.getData().getTotal())); + r.put("available",config.toBigUnit(result.getData().getAvailable(),decimalInt)); + r.put("freeze",config.toBigUnit(result.getData().getFreeze(),decimalInt)); + r.put("total",config.toBigUnit(result.getData().getTotal(),decimalInt)); return CommandResult.getSuccess(new Result(r)); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java index 55fde103a9..2921a9e902 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java @@ -134,6 +134,10 @@ public Result registerAssert(Map params) { AssetInfo assetInfo = new AssetInfo(assetId, symbol, assetName, usable, decimalPlaces); chainManager.getChainInfo(chainId).getAssetInfoList().add(assetInfo); ChainInfo chainInfo = chainManager.getChainInfo(chainId); + //本地数据库保存最新的资产信息 + RegisteredChainMessage registeredChainMessage = registeredCrossChainService.get(); + registeredChainMessage.setChainInfoList(chainManager.getRegisteredCrossChainList()); + registeredCrossChainService.save(registeredChainMessage); try { int syncStatus = BlockCall.getBlockStatus(chain); chain.getLogger().info("新跨链资产注册,chainId:{},assetId:{}",chainId,assetId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 4816e7c503..cc976df839 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -36,11 +36,13 @@ import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.MapUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author Niels @@ -152,15 +154,21 @@ public RpcResult getAccountTxs(List params) { PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight); + result.setResult(new PageInfo<>(pageNumber, pageSize,pageInfo.getTotalCount(),pageInfo.getList().stream().map(d->{ + Map res = MapUtils.beanToMap(d);AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); + if (assetInfo != null) { + res.put("symbol",assetInfo.getSymbol()); + res.put("decimals",assetInfo.getDecimals()); + } + return res; + }).collect(Collectors.toList()))); } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); + result.setResult(new PageInfo<>(pageNumber, pageSize)); } - result.setResult(pageInfo); } catch (Exception e) { LoggerUtil.commonLog.error(e); } return result; - } @RpcMethod("getAcctTxs") From dc0a4076c462f79c006689e66ce1e37879731d69 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 29 Jun 2020 11:51:29 +0800 Subject: [PATCH 016/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=93=BE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=9C=A8=E6=B3=A8=E9=94=80=E8=B5=84=E4=BA=A7=E6=97=B6?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E8=B5=84=E4=BA=A7=E5=8D=A0=E6=AF=94=E6=97=B6?= =?UTF-8?q?=E5=B0=8F=E6=95=B0=E4=BD=8D=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/chain/service/impl/ValidateServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index 1760a5980f..87c34dd8c5 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -87,7 +87,7 @@ public ChainEventResult assetDisableValidator(Asset asset) throws Exception { BigDecimal inAsset = new BigDecimal(chainAsset.getInNumber()); BigDecimal outAsset = new BigDecimal(chainAsset.getOutNumber()); BigDecimal currentNumber = initAsset.add(inAsset).subtract(outAsset); - double actual = currentNumber.divide(initAsset, 8, RoundingMode.HALF_DOWN).doubleValue(); + double actual = currentNumber.divide(initAsset, dbAsset.getDecimalPlaces(), RoundingMode.HALF_DOWN).doubleValue(); double config = Double.parseDouble(nulsChainConfig.getAssetRecoveryRate()); if (actual < config) { LoggerUtil.logger().error("chainId={},assetId={} actual={},config={},==={}-{}-{}", asset.getChainId(), asset.getAssetId(), From 9436e0c98a0b34ba3ce51c97967a80e4e72b8714 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 29 Jun 2020 11:53:01 +0800 Subject: [PATCH 017/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E8=B5=84=E4=BA=A7=E6=97=B6=E5=B0=8F=E6=95=B0?= =?UTF-8?q?=E4=BD=8D=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/client/processor/crosschain/CrossAssetAddProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CrossAssetAddProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CrossAssetAddProcessor.java index 23235e7367..727e4a04fd 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CrossAssetAddProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/CrossAssetAddProcessor.java @@ -83,7 +83,7 @@ public CommandResult execute(String[] args) { String assetName = args[4]; String symbol = args[5]; long initNumber = Long.valueOf(args[6]); - int decimalPlaces = Integer.parseInt(args[3]); + int decimalPlaces = Integer.parseInt(args[7]); AddCrossAssetReq req = new AddCrossAssetReq(address, assetChainId, assetId, symbol,assetName,initNumber,decimalPlaces,getPwd()); Result result = chainManageProvider.addCrossAsset(req); From d304c78d5a2dd59d1972ef96fab0d8b9e1eff6bc Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 29 Jun 2020 15:38:01 +0800 Subject: [PATCH 018/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=BF=9E=E6=8E=A5=E6=97=B6=E9=97=B4=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/rpc/modulebootstrap/RpcModule.java | 1 - .../io/nuls/network/NetworkBootstrap.java | 5 +++ .../io/nuls/network/manager/TimeManager.java | 43 ++++++++++++++----- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java index 4cdca63566..55a222e24f 100644 --- a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java +++ b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/modulebootstrap/RpcModule.java @@ -303,7 +303,6 @@ private synchronized void tryRunModule() { } protected long getTryRuningTimeout() { - //TODO pierre 临时测试调整, 需要改回30 return 30; } diff --git a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java index 1c7e2fbc96..52820d0fab 100644 --- a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java +++ b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java @@ -218,6 +218,11 @@ public RpcModuleState onDependenciesReady() { return RpcModuleState.Running; } + @Override + protected long getTryRuningTimeout() { + return 60L; + } + @Override public RpcModuleState onDependenciesLoss(Module dependenciesModule) { LoggerUtil.COMMON_LOG.info("onDependenciesLoss module={}......", dependenciesModule.getName()); diff --git a/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java b/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java index 254f39d66f..5680f8276b 100644 --- a/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java +++ b/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java @@ -26,7 +26,9 @@ package io.nuls.network.manager; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; +import io.nuls.core.thread.ThreadUtils; import io.nuls.network.cfg.NetworkConfig; import io.nuls.network.constant.NetworkConstant; import io.nuls.network.model.Node; @@ -40,6 +42,9 @@ import java.net.InetAddress; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * 时间服务类:用于同步网络标准时间 @@ -54,7 +59,7 @@ public class TimeManager { */ private List ntpSeverUrlList = new ArrayList<>(); - private List netTimeSevers = new ArrayList<>(); + private List netTimeSevers = new CopyOnWriteArrayList<>(); /** * 时间偏移差距触发点,超过该值会导致本地时间重设,单位毫秒 * Time migration gap trigger point, which can cause local time reset, unit milliseconds. @@ -108,17 +113,35 @@ private TimeManager() { * 并按相应时间排序 */ public void initWebTimeServer() { + CountDownLatch latch = new CountDownLatch(ntpSeverUrlList.size()); for (String url : ntpSeverUrlList) { - syncStartTime = System.currentTimeMillis(); - netTime = getWebTime(url); - if (netTime == 0) { - continue; - } - syncEndTime = System.currentTimeMillis(); - NetTimeUrl netTimeUrl = new NetTimeUrl(url, (syncEndTime - syncStartTime)); - netTimeSevers.add(netTimeUrl); + ThreadUtils.asynExecuteRunnable(()->{ + syncStartTime = System.currentTimeMillis(); + netTime = getWebTime(url); + if (netTime > 0) { + syncEndTime = System.currentTimeMillis(); + NetTimeUrl netTimeUrl = new NetTimeUrl(url, (syncEndTime - syncStartTime)); + netTimeSevers.add(netTimeUrl); + } + latch.countDown(); + }); + } + try { + latch.await(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + Log.error("等待获取网络时间发生异常"); + System.exit(0); + } + if(netTimeSevers.size() < 3){ + LoggerUtil.COMMON_LOG.warn("可用服务器小于3个"); } Collections.sort(netTimeSevers); + LoggerUtil.COMMON_LOG.info("初始化时间服务器完成"); + LoggerUtil.COMMON_LOG.info("=".repeat(100)); + netTimeSevers.forEach(d->{ + LoggerUtil.COMMON_LOG.info("site:{} 耗时:{}",d.getUrl(),d.getTime()); + }); + LoggerUtil.COMMON_LOG.info("=".repeat(100)); } /** @@ -260,8 +283,8 @@ private void sendGetTimeMessage(Node node) { private long getWebTime(String address) { try { NTPUDPClient client = new NTPUDPClient(); - client.open(); client.setDefaultTimeout(500); + client.open(); client.setSoTimeout(500); InetAddress inetAddress = InetAddress.getByName(address); //Log.debug("start ask time...."); From ca0a5e03047c234f7860d19654386da212613930 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 29 Jun 2020 15:57:47 +0800 Subject: [PATCH 019/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=BF=9E=E6=8E=A5=E6=97=B6=E9=97=B4=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/network/manager/TimeManager.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java b/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java index 5680f8276b..d2577ab7b7 100644 --- a/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java +++ b/module/nuls-network/src/main/java/io/nuls/network/manager/TimeManager.java @@ -116,11 +116,10 @@ public void initWebTimeServer() { CountDownLatch latch = new CountDownLatch(ntpSeverUrlList.size()); for (String url : ntpSeverUrlList) { ThreadUtils.asynExecuteRunnable(()->{ - syncStartTime = System.currentTimeMillis(); - netTime = getWebTime(url); + long syncStartTime = System.currentTimeMillis(); + long netTime = getWebTime(url); if (netTime > 0) { - syncEndTime = System.currentTimeMillis(); - NetTimeUrl netTimeUrl = new NetTimeUrl(url, (syncEndTime - syncStartTime)); + NetTimeUrl netTimeUrl = new NetTimeUrl(url, (System.currentTimeMillis() - syncStartTime)); netTimeSevers.add(netTimeUrl); } latch.countDown(); From 84e2c5edcb818d65468a110ca5fd3bba647311b8 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 30 Jun 2020 12:01:16 +0800 Subject: [PATCH 020/304] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E8=B5=B7=E5=A7=8B=E5=8D=8F=E8=AE=AE=E5=8F=B7?= =?UTF-8?q?=E3=80=82=20=E5=BD=93=E7=A8=8B=E5=BA=8F=E5=B7=B2=E7=BB=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=B0=E6=9F=90=E4=B8=80=E4=B8=AA=E9=AB=98?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=8F=B7=EF=BC=8C=E6=AF=94=E5=A6=826?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E9=AB=98=E5=BA=A61=E6=97=B6=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E4=BD=BF=E7=94=A8=E7=9A=84=E5=8D=8F=E8=AE=AE=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E4=BE=9D=E7=84=B6=E6=98=AF1.=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=8F=AF=E5=9C=A8nuls.ncf=E7=9A=84global?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=BB=84=E4=B8=8B=E9=85=8D=E7=BD=AEbeginProt?= =?UTF-8?q?ocolVersion=E9=85=8D=E7=BD=AE=E9=A1=B9=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=B5=B7=E5=A7=8B=E7=9A=84=E9=BB=98=E8=AE=A4=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E5=8F=B7=E3=80=82=E6=AF=94=E5=A6=82=E7=9B=B4=E6=8E=A5=E4=BB=8E?= =?UTF-8?q?6=E5=BC=80=E5=A7=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/base/protocol/ProtocolLoader.java | 15 +- .../core/core/config/ConfigurationLoader.java | 13 +- .../documents/EventBus_FlowChart.jpg | Bin 141582 -> 0 bytes .../Module documentation is all here.txt | 0 .../documents/eventbus_discussion | 35 ----- module/nuls-event-bus/pom.xml | 68 --------- module/nuls-event-bus/readme.md | 6 - .../main/java/io/nuls/eventbus/EventBus.java | 134 ------------------ .../nuls/eventbus/constant/EbConstants.java | 73 ---------- .../nuls/eventbus/constant/EbErrorCode.java | 18 --- .../java/io/nuls/eventbus/init/Bootstrap.java | 108 -------------- .../io/nuls/eventbus/model/Subscriber.java | 97 ------------- .../java/io/nuls/eventbus/model/Topic.java | 112 --------------- .../io/nuls/eventbus/rpc/cmd/EventBusCmd.java | 117 --------------- .../eventbus/rpc/invoke/EventAuditInvoke.java | 22 --- .../rpc/processor/ClientSyncProcessor.java | 104 -------------- .../rpc/processor/EventDispatchProcessor.java | 46 ------ .../rpc/processor/SendRetryProcessor.java | 59 -------- .../eventbus/service/EbStorageService.java | 38 ----- .../service/EbStorageServiceImpl.java | 69 --------- .../java/io/nuls/eventbus/util/EbLog.java | 11 -- .../main/resources/languages/en.properties | 25 ---- .../resources/languages/zh-CHS.properties | 25 ---- .../src/main/resources/modules.ini | 11 -- .../io/nuls/eventbus/test/KernelMockTest.java | 47 ------ .../io/nuls/eventbus/test/PublisherTest.java | 45 ------ .../io/nuls/eventbus/test/SubscriberTest.java | 48 ------- .../test/rpc/cmd/EventBusCmdTest.java | 127 ----------------- .../test/rpc/cmd/EventDataReceiveCmd.java | 16 --- .../test/service/EbStorageServiceTest.java | 60 -------- 30 files changed, 24 insertions(+), 1525 deletions(-) delete mode 100644 module/nuls-event-bus/documents/EventBus_FlowChart.jpg delete mode 100644 module/nuls-event-bus/documents/Module documentation is all here.txt delete mode 100644 module/nuls-event-bus/documents/eventbus_discussion delete mode 100644 module/nuls-event-bus/pom.xml delete mode 100644 module/nuls-event-bus/readme.md delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/EventBus.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbConstants.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbErrorCode.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/init/Bootstrap.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Subscriber.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Topic.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/cmd/EventBusCmd.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/invoke/EventAuditInvoke.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/ClientSyncProcessor.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/EventDispatchProcessor.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/SendRetryProcessor.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageService.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageServiceImpl.java delete mode 100644 module/nuls-event-bus/src/main/java/io/nuls/eventbus/util/EbLog.java delete mode 100644 module/nuls-event-bus/src/main/resources/languages/en.properties delete mode 100644 module/nuls-event-bus/src/main/resources/languages/zh-CHS.properties delete mode 100644 module/nuls-event-bus/src/main/resources/modules.ini delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/KernelMockTest.java delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/PublisherTest.java delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/SubscriberTest.java delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventBusCmdTest.java delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventDataReceiveCmd.java delete mode 100644 module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/service/EbStorageServiceTest.java diff --git a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java index 90bcfebd9a..fe018b1ea4 100644 --- a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java +++ b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java @@ -1,5 +1,8 @@ package io.nuls.base.protocol; +import io.nuls.core.core.annotation.Value; +import io.nuls.core.core.config.ConfigurationLoader; +import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.io.IoUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; @@ -19,7 +22,15 @@ */ public class ProtocolLoader { + /** + * 默认的初始协议号 + */ + static final String DEFAULT_BEGIN_PROTOCOL_VERSION = "1"; + public static void load(int chainId, String protocolConfigJson) throws Exception { + ConfigurationLoader configurationLoader = SpringLiteContext.getBean(ConfigurationLoader.class); + String beginProtocolVersionStr = configurationLoader.getValueForOptional("beginProtocolVersion").orElse(DEFAULT_BEGIN_PROTOCOL_VERSION); + Short beginProtocolVersion = Short.parseShort(beginProtocolVersionStr); if (ProtocolGroupManager.isLoadProtocol()) { List protocolConfigs = JSONUtils.json2list(protocolConfigJson, ProtocolConfigJson.class); protocolConfigs.sort(PROTOCOL_CONFIG_COMPARATOR); @@ -65,9 +76,9 @@ public static void load(int chainId, String protocolConfigJson) throws Exception protocol.setInvalidMsgs(discardMsgs); protocolsMap.put(protocol.getVersion(), protocol); } - ProtocolGroupManager.init(chainId, protocolsMap, (short) 1); + ProtocolGroupManager.init(chainId, protocolsMap, beginProtocolVersion); } else { - ProtocolGroupManager.init(chainId, null, (short) 1); + ProtocolGroupManager.init(chainId, null, beginProtocolVersion); } } diff --git a/common/nuls-core/src/main/java/io/nuls/core/core/config/ConfigurationLoader.java b/common/nuls-core/src/main/java/io/nuls/core/core/config/ConfigurationLoader.java index a0a17db4c7..67e560d4ce 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/core/config/ConfigurationLoader.java +++ b/common/nuls-core/src/main/java/io/nuls/core/core/config/ConfigurationLoader.java @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -174,17 +175,25 @@ public Map> getConfigData() { } public String getValue(String domain, String key) { + return getValueForOptional(domain,key).orElse(null); + } + + public Optional getValueForOptional(String domain, String key) { ConfigItem configItem = getConfigItem(domain, key); if(configItem == null){ - return null; + return Optional.empty(); } - return configItem.value; + return Optional.of(configItem.value); } public String getValue(String key) { return getValue(GLOBAL_DOMAIN, key); } + public Optional getValueForOptional(String key) { + return getValueForOptional(GLOBAL_DOMAIN, key); + } + public ConfigItem getConfigItemForGolbal(String key) { return configData.get(GLOBAL_DOMAIN).get(key); } diff --git a/module/nuls-event-bus/documents/EventBus_FlowChart.jpg b/module/nuls-event-bus/documents/EventBus_FlowChart.jpg deleted file mode 100644 index e57bd014a3aa611528d5809e273536ca41c00623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141582 zcmeFa1y~)+wl3OO@Q@JP0|XM>T|@8?B)A5*;I1_Bn57pYz@K?z=QJv$`17-Q(|3Rez1@IqGKoW*)dFBOxsTz`?-*ufQMRW`QnO z+|}F!0OaHVIsgDrfI9#>01u{Uzykv~YybgF!+}2l9P3~61L4?yOXGktMFHjj;%_nl zO7kWOfDGngfXAu;a9@IC6HK9i`|Wm%z%2r|2;3rYi@+@c|5qZQW^Qd{C65CKSF9_Tx{{{fEpujwSX$G^*feinGR zKfEXRGvVR?NE2NBe(_g-DgV<~1Hj#k-%J5w0Lq;^$aj!Xkdcv5QBlw^a4<2@(J=_I zA7J5-5|NXU5|NNlP&3g|P%==FkUZvo!ob4H!NEaJ%PYvkCcwnb!S?ecaHy!L80Z)T zn3x1?4@n-f{qlD66}XQA#DNS7?jZnw9}eL@+)XP$4&Ega=w15hVETQ7gGWF_x`T{@ ziiQpfRNMnKMnHf^L_k791l>k(Uf}-$#QR9t4_QU;JW$j}rnJLhdmEXCLiM!d8?Ms8 zJ~g|6{X0}NJbVH|qDM5ekDt(SaB^|;@bZa06PJ*bl9qX?tfH!>uAymYWNcz;W^Uo& z=;Z9;>gMj_>*pU3_&z8q`a?`?+{gHY^o-1`?3~=Z&!uJM6_r)hHMPwxt!?ccon7At zhlWQ+$Hpfn7Z#V6S60{7H#QFrkB(1H&(1F{f9my9&p)=mDE244?t^;4BO)RoBLCD2 z4&DXa5$+=*J!HLuEvksDZ})(b?JWw<)5x@vZ>Uu4O8dA5_5)~m)EoZDJ)rm4ns<$sMETJkYov8OS&EI~g#ys$OuSNsQ4i^U?q%UxRsO1ztI3v_1AsQJ z9c9?mT(1LDyAVFEtJK~%nE#OV+_Tl__~aAP&wuBv>K-H-3)p+k9qox=F*@=+!=ep^ z)+wPf^V|RudXU*0;3OBm`OahX74_jtQDM6j75g^U1>0-QL&0X;Yt9!wU& zb-HiwxX~65znpe>w53fDphMx7mv7TGQ|63msFrX^)~?0C=i87~?A_php}8eNM!usY zg(N-WqqF;w$v@GW`GvK!=MA9w}8^N@aRJ6hd4s5XRoA#mdl&y3?$7yVuYdgvW}LuDft>C zVcN#zJmKkygOoEm?;Z(hoAL-%!yE&Y$_ainNJxHnTMl2h^gTwKjIFcGZY`wv7>}w< ziT90Pnq+CRK8w@xs)CK&k;&UJfXVAmIQ* zXC3`FfQ%DhtM`CVRgj_7M&Z!dA!NUz<>}~AiE@dy-^OaBZV?fzjX#BpZgwIcqDo39 zX@edA+K?g&fnj28C|qVkh)lp{@kxlCo8_s);clOuiYDy)i{<{(d|bofC&jSBM*n)B zDMG6ofUE>kEgT~&hCTl6fZKnpl|_tvQox5emf-<^b(_6Q(_N;t_nM7i%cf2io*dHl=&mIf}VP$?ieJ4c)oMuCE zQcGFnfm@(*vjis#da^P@6N0H=huxDYB1~@0Bu+GX!-jw zbUI1xY4eE121y^jG(Q&`7XJAwiGm}kQa1fJ(kO%^Z(oWn>0wOm9u`sS%s?DhQ%C4d zX}8Kfl4W=zamQj_q2#Esj)Ik4`r35;F`U^?EdDEdGv4BZhWUP}*pfnQ^&79*2)P0H zTC2|kGJ@SO>!eJk4pFHdN}shkzHE768UNZrrR`<*wC=JqneZUh(9YmW<^zUTJYj4i z6wZY^#I34C8y__|0=~EJY=kwzKGW&vATFQcGN|xY;MU};7?)O=m}?MJ&0g(-)lQY-No z>Gy}GmtoJEUQEO#nyHfK1s-fA|Bc!?B?Z#zdQ*WYv?xS*lhGEXYgfEAAERR&Ye#60vPKXl2W$37Hioy$w;FirKA`nzFRJP-4srD~*`yQZwghr;jN0DB2Jfq7nCVMH-; zwU(d#6h5tuVJs+&Uds(3l~ORPdZ~yXtWiMp zw(3-s+moa3=g!;Dz`A$WSTuAf~42I=q)hm-j`v>SbvBTIAOGo5wRju zqcEhQCH>4>U_*^y5+~rg6*#`yVElM)QNR>cYeCSaWzwj!_SsXd?l^P6llR;6+zSYX zN*^D_(oVDy$^BGVh3iqw@=UmWl4g(^9)G7HgYJ^Oe{=L$RaGvh#gnB(A+0+d+Nvgj z-$w-$v)5go*tid(l5&T>PhpchE*L%cOWWZ$O5)<7!InHK3e^8B?Ld{_T5B5}Je`$w zEjpys%6J{nH$8E$`I|@|shke^y<>QhBic1s{75&d(wT%^`%tO8L-y5kLIq{yU$!9__J zAzvcyC4>4B zORpcMqQkn%Br+c~!g0!4CjWA}z=@RWaF9MQ9&HJ&jdy za;g_UE^#?V285?}9Kw0+J(QreQ!w}N&cPMKwLq`Gqz6v7Y%Vs1sU+#|8Yx6_jMP>- zO`<$U|PRG968&$LEkGx30VaQZf!X-!77(%N^kCcMEPu5`4%-LFN@&Ec%f3Lc5D_ zB*a22rYyO7A2)S!$Dq6}RynfsLm3iX^-c#(`O>*%P8*#RbCI+v#vS~s1s$b!X~rza-yy@d=CZJSr$*rKk-((KG38W|@QbD{4n-wTb{3 zwg8FzK_>CX6T`j+2FTV+=z@Z&iTqubdF5Ljisk=dXzw>%g z;maw=*$t4ExA7k7cjL@t`zI7XYc$@_gCc5kkT6*S&Jppg0;E|u6VlH$1%n1vD4A=p zbIV}Pq|@slOPj&*IhF7y78ni>&y5p_@Df>7L9cLM6w2;Cl1OgEF*_!}QI*J&P4x3$ zWz)HX^R8gQeLk$gortQQ9h>r*{hb#RqB&`NzDF~U>cdHk)|4NqL0*O-x$f2ow$9R2 zTLx-AAyb(HqWPr}=o5CnW&P+SafqW+-DDB_UNwSw+1(P6N!!zN?-xN(G#a7Z`NHGaB& z^qAiFj776~NL!9Xk$KjQgf7gkOXwudYf+GrA9aS4m{L>A}21I zhIj*PfsA?%=AV;I{W}qj==zWLg_337;=ReCA678Fc9^|eJ1rSQsJ-u!k{SbuTAT@+ z5cmllLC9-P^G0@Mf&O;<8mt>&^k+kt5+ufMe1!1DVDkqHazaM2fRX#bar(6Mn*YY_GRyFCXMR?iXt@A#x*QU*Z(tvto8|XbD0ugqL(v=Y52)DM#z@*qXSw zAEefM<+e4=Zd zDT%(RCi=m_*Sm3AP13r5rp<=qLGQqey8d0Num(B{#U##1$Nc8(NaO0lR=HFzwIy=? z)$9Vf*2jfsAINjlRMd8J$wfs_c1zMsc@&3-g{>>U3YigZM3})NThhizJ?83^g-?Eg zbv{U(C|oX)mT~x97U?|d}R@|rcvc{vJ^DTPbM@evT+EJw== zcNQu{G3%vqEO?#~AQWOJWo76S*@l&<(xiX-0y+}@GhEZkZUBY3lTmpnX5KOW%fxg4 z0vHjTa>>!y8}{+BEk4aj%4i zF2-`s)#Ph~pH)U#ZV=mI5q%)9Q~JyW3pmQa8GP68%2TDdY2(Iz1N03+=HSC=AQzW5 zSMzGgPUFYhS0S$e(GVUqHRw{-QS8U=0$v6u8OMfZ}-`Dxsrkn3KX#~7wc&X zb$B&|pN1pa3dAf%bhKDHr*7HQ_gxvKCzX`WNjAz|yg!IRASvWD&@_sp&JDI9j1=t{ z&Hj3f<4CS(i!7?bAewG$kFz6p(vk9`<{Ep&>kb7P!_=Y9PO@B=>w z^U7-E2fN^C9*FdSnw$ORiGho{$0ln9_d-6)t}=zOVn}hPZ;F|niX~R$^NSa*2o=va zbLlyp7FgKZq^s+w)yeovOwk`DZPqOB+nuW^-uE|)Qg1Hh^H)MvFn^jJ+h)k}pn0Ne zh83m>v4haLh`v>|1Fs8u67)AUmn*po;YEr7WZK!95|tSghb#vRoEVM6(vJtvmrb|x zE)sGlXQnJ7XN{YwjRnHEl9p0+N7f2PWw(=UnB{lwqLRq4H1rv) zDBp3{>R#WOL{jlQZ{6aP2yx zP}E{pA*zErX&7HPk7S9NNC{|AuEo7*@IE}cYtEF@XGk|3Do)V&_69&@4rDM4gY!I~ zEV{4q62N*vKO{iqVVCRbKD)a4lA*88A%eH%zC5nX{QwSySDV8zl7vG3JGg5p5un1q z_jtbzGk%gW5N$$AhIk1=RVA#!nkNE;j_A~U5%-Q&%xd7v^6pxNUE{Ip?`9EaQ|w!9 zaZ!&*w6quq*hrI?3$W&sLWB*3!!_o67dMmbNiZ+T3K(HRs^g zy$n)8LW=(52Iv$x+P3J8(Raej$0&Y1(9Ry^j`bmEFqY_Z9^QhLA};-qt+~u4(dBGx zZEvJd%HYRXof=#A5Eh#aZ4Xa2KU;~cCu^xQcTcXktX>KBC^_5`rUJLuI4qw-YNBg0#2rY%5z>F$s=`{{~=Pp`fK z!d)&E5QFEoWPes8MG;J4PcN+FoS$yf-+ZUP{V|=^4D5=t5YlrVz+OAz)G$E9UqSNT z74Y5I7z3TbaQ36a)*6lS+HNvft8_a6E=dWh8d5T3=CuO6q;*N-{vfslORrSk?*rPO zmF5o{!n&CN-&AE?H*<8fV8zU&e=-_7UsPD>X?LhVW37#1{7}}fLI-1*9Q~W%kzJZOCqadY|lerO} ziM|P^fsqj>qk%rV5hE+Bkv^lo5j!iR5j(pPHzz9(n+dA{wzlq ziP;$-*Omk{_R;alsvh3l6P_$A?6>$-*Omk{_R;alsvh3l6P_$A?6>$-*Omk{_R;alsv zh3l6P_$A?6>$-*Omk{_R;alsvh3l6P_$A?6>$-*Omk{_R;alsvh3l6P_$A?6>$-*O zmk{_R;alsvh3l6P_$A?6>$-*Omk{_R;alsvh3l6P_$A?6>$-*Omk{_R;alsvh3l6P z_$A?6>$-*Omk{_R;alta-wxN`zO`X&4SrR_1^iCNZ!xYA;NgG%f*T_Ei-htsS`-o* zGV&c13^WW3bTo8y%)8k4Fz?>Ki;jK|@810fIJmgD7+ClOcsK;uIJh{!#kfKM%OE15 zA|avTV4`E<{POl&j4OC3(p>~N%G(%MK*j&@F|MF5(}P;V_#0#uhrbT*T2WOc8%WJd z1$M*`FYik5cBdS})rcEI3}{%@}hDIYhI7mqu@1ZISWSmYyeVIel(SToB}!uC1?D_9NfHZr%?taAuEz zx37DNq07d*?i{_CKSz#$Ny-`SL&0(sm6~*o(Z-Lj# z`JLVpI}8`TWvd)a8ZRcND`KzDFWIT1v6x=k5-G;l(Xit;>IhHVhpWg{_tp4?4h9X68hVSw)iYh z@}{91pu{k-RdH@|d`3^Zhh)xeO;EnD8utsWO!bZv|hF-M7wHZNuKb<;vh~4=7!z$de-w;p5fw{46MdpT15`S zqETZLiW^{vtIgb%zJ;&JZ@cjLs>hm9{zcgvEltV^H@0nUB(}!WyWd0zRYdHik*RQO z8i}S{gOx}2JSDBtE%*2W!6*_H<_{CTvk;?bWLjNEv=%kLfJ~sljX^81O1!?vWKVS; zd5$cK=Z=mb^#c?hj(mcq)22px}be*KANXFJ7ylwWA z^37KAqE&;dB?mlSn(ZEETERVnx(KAx=^FQ*h56pw^ksGEg|R3LeQkWx`-xU}5p-`pY}pwLiP{iQNVuiJ(sA1+z` z!`S`yO$ldqR)q&E6fD$eeKvmFv1+o=xPqxEjgIuja1s|)Mvjm6gjp^RC`=gG-+Z#S zz&n@AZMvoknQTw6E|<~|o833Zs6rcn2Q&~De63liLv}H^0X1F#w~_4H=-tt`1gpM4 zzmkUrnAbbBUm}DwdxUdq5MjHsWR3L|*-R%~5>>O&`sw5eHe$Hd?$TKN2;-jMf zG+bep<(Tbx-m%xS)Z^}#x#Jf>`3x3>s%F&VG9@8hWQ6Vk-@4@XhQ^*)=JXVJig=mG zniuYHbn|jtnZ!F2&Pw0Uw#`WnUT*)~v4_2Ei<_7a#%KK*ulD!7w4VD0ptxw-I@|-} z2T>Ple&3(F_F26Fio2VjkE8yv0sW&P{qKAp^jNlP#>9oyOXq027PrP$R&H56%5=Am zw6P;G(V0+--Y&ouMfaid30Ve1uxYyvuV2Q@#yDkf;;Z5D=?{~Ef%+(GRle#Iu)QPZ zU3h~~^9`|I57{-nuT68dOn;G-@?oBv%&VG#thjEe7DQsd!R3Xp7kBKwlG4j6@4ucb zTYu1(SEg%z5w&X>c64-QJZUgdAiDBJpI(4mM4R`BbdGzeb%DZ+b^G;DU_+gEY7auUbVkq`crlq zk*8ZpZ>x>6VeC!hK2FKBnj=MyR?d^XElSl_MwL~XZpnjQL75rv)ljA$*vHWBSs7E~ zt}-;DZnA7R6B%~|7Mhk;?w^bWe3Z=QlR9{gfA+Ti5CMxxsFg%muEh-5IL|`uGOlGS z`6;{00#sz8qWJ)!8~yQ2|3zek-Cm2cpuo|$6rmC0;rho-Q+!1=G7vI;S;_pcP|`|taIa)uo~T# zw3_?nd=pa7d=r-LxaN!|!%+`otE`R5fW{O*oL?9gOH4SGox*jjCvGo*%)P(W;ht~~ zQLQ|{*~zmcvUoIXUts=VcIpSW$kSYvnL0-SfSa~Kb)UPH@x@TfJ+2}rEIiks%|&QW zY$8%EL0VOft472Ff^n8NcTAj3mncYUPa){Ls!O5`bt7qUii4j#tVU0*aJZ#o%$}9R ztEV!F-(_i`6=YZD0DH^5fP~)NzSdFc&r=PH7d@FZ@6@eL*lPtKX1yyPR@8aEc0Mdi z0E!Q&7SH15NhNN8W^8TknNapCQ705DRrP|U*V}CQr4c<9U*WWi27A*a1sTU$ulV`9 z>&zV+#C6Bis|HM7KYiN86Vk?f*=s2D+Dk~kE@plyaYX3OcMeM^z1Y|dQ1;r1kxr29 z!n&Yw@bEPTp7Fzes^p#OS9yJK?jsGB3rtygoA^p%i~f}rbxkG1IVN8uYt46jWeB9J zCAd+Pm%e|swhRC8M$Ga+!BtIu%=CbB+eN9PST08+(*#{X(NGNyqm&MVX;EV?`s?!N zF}DRh>k;|1_L{~pi8Cf2& zGST6z&pe_$%nW+QZakdLi{X1e)nc!_+InZ(AnbC(#=8A^v?TtA5NX<#=gFVh-=NY0 zM$u6sjEdr51gHPG9WG{3{sOt>2GEO5y;LN%7*%^OyiAS-_11)JJafti<3)jioPOWQ zoDTR~iTZq zbM~ZjG-s=iLiKw}8*V6(`5;Sg0S+7rv(_W?BSC1H1Dr-ur zOU=ogqKUso$fSv)WgrnZX&-zS+xOn>ooiA3Vp$?@nJG&hP5QKJHDOzT*`^}dMCX&p z0y5$XPSPRDox;?%9Xy*^U9CBDF8hhb3{y8R?7%&%Xr#JyOcq(N zRhT=WVScz#YuIM-Fa>4K42ynGpCPE^6CxeL5q4&zZ}qusfyJODw`NX|VRci}yLL{l z%U3~&QKJqV_H2ZNA7kg=Yzl#~b4|^VLLrMtE7O(vS#GuZWe0+dp}CSS7}i7dh=wbr zbx5ijILo0k5;!9}SWEZ;^`c8p1h~z)uD+T`t!R95j7;Z=bY}2>*3t8BJ?&joX2=6D zY9U&x7Mu19*yF0G#WgJ-tr#s?==XYaB46GJ_u%hbeJTN#5#kTBt8&eouqlV8T2m;#4DND_)@pf? z%LJW7iATPyC@8{tC(Ss$F9~03;}4^$9&04qm~78+va+L>q>^^B=b0v9ShN9Ne>FgIPOK;!U^=Vek_rZNz z5Jr>DkhQ;zo)H+Do#8{dzA!Nu{35;pN4+2^8YZs^taA3@THXNrJ{u{N(nZ_boWvik znNsD-rFS`|?mYdz8B*L(wsPT{Z-udM$E4&sLb!vDANRDxM;!5`F!o-XR5pZCnhgZ`>vVpL`R1kK02l2k@3p=#}J1csv_`#MUSy*E$vZhYtrHycIxwdh})t( zruMk`WoUa`uBL_AB!g;yVws(#fE}wjMx(mo(bAfN-AH_-q;&SR(qP5=g0|4YlbQO{ z{pp5bJEm^q50!H~c(X~84;j?V#wE7rNvvoWxN<&CZ8)f(CkYiA3SJeqt)>*ih3zUb z1X4;qMR9scP_qUhpu;^&y<@d&%^?-LJ8gccDG_+6;RErTX;59!u`S(wwW;uq;0-=6 zfXCFxwsFd*WueB06-fCdVv1PytpT-cd5TQPE^DsPI<+z z3~FRPLCmA}Hh&Ph_c6j+;mx}nfJurzXOTI;g^YG=&$^gXYDlhOz+@o1;@xn;)T683 z(s&ePK{&B3$vboT2dWJswN55kt*A?HbEV-b zWOEYBH&Vp|U8y%cxG>_Ja}`_6@$+<|jmfZN(Vj7+85J3j3tQ{9C3w3Dhns2nGO^q! zj6p*2qdrxiu5Sj}>ChhE_s8J+GjGy^z%ZQu-`El8TT>6Q0$@#y!pG@+BL&6SkWL}; z%j@zRU@&k?6$}{qbDf-jZ)YnKUN!@LDOBtbP}A%tH^J`xl&H zzdDAar*DBAVkN?wm~MdMbQw@FOfa;lkj>?F9jMv+#|Wx_3@QKa^Dh5lRjZT`;kks4 zs#N2U6IHN>tmnKmJG_LvF@Pu3GTKNvR?&R};8^1G73JHHCHQ@tKH}D&P==s|eRVAU z1bI!x9JfFrJZw`t1A|dcUD^~U@fN3aD1Z2D?JTCZ*Pz2AFiCZu z5F#IPP_s!z@lmn0vu(pY6y@nUUVeK%R%97v=At%xU+3kscXKa@NE|BKs%u^qs9NQo zN2ER${^5LmO`ed7>nlXQe-@H1L_S#L+3h8?h+CPku^9VA$2sQ5+vYV4xE7=N!M;4aXKr6 zMq5|89|V5H?>iCUfd-HHnLD#u!OKIGb-w4XE%L0)Ih$M7&?|!N<5`)S-z;)Gkrsi+98YJm&HZEY_+NML`NY@hK)#jutIQSa$ z$!*iu$ue)}3_G6GCVb`p^1i-9M7f5sA_n&jb!y@e?so?b878KVLWu%9j^V+9Imt7j ztz)5DXbOx)ZfOg(+)AfvtMWdoz_sCy!kYE9^D8OL@m)lxucvh9eWw=YYKy0dD;A_bPlUBz#2g+_2k(?uVnOlhg4B_y2$U zlTerX28i$!KDhvU!L0kEg~qPYFwuR`xK?stA0#!w^`8FyK@r@adsB@+b+_e!s%rQR z@DS4h)`WipNH2gMq<`?pbNnZL;Gg@%|KwOhm-wf4b0-%rpmx}*pmsJe(Id#%${g&2 z^gr*t?S%2YiCYf%o7py|M$ympcJS0Nlc+!4_wU&MLQP)e{#NgSr6yC_LW8Oow@P_b zJM2M#zoHLpUyxAVgoFr+RX~pCN-TQN6E(S&V8ne;x%Y@`Rc{d6+7=0{v>%K5ZtXrL7BQs-t)#%_e|5K}*epHhbYm#=aqhEgLzWKJA0=#U zYTn0hSAzOzaf03aATZseOYadX<;%<59-w^(h2bKPbCYb^MK>5KT0=TkUr-#eW$DveJSuwR(d^qk$7=&*#(S#cO98cgO^waX!$ zs+u)cP0x6t@~Bh}+L58Cmpr#WJckQew}xEfYk-75L3kmrkq&&ha2lMnXDS106(=~I z@M^IsLD&Nvjje(!iwMvjcJJz~dIt{t3#B6lv>hF$>b+e1FiQ@k1uF2va>{6C|nYtwel0eUMr zwl~?Pd-!|i8=$<{>O_N4$%cj}JocgA*N3>0YSwnT1G=~tN@+^US+zpJSeiURiusry z6~%GiSN}is_;8Y1qXqT68MB)SAzN04rs(nlJp=b8q@jFjZ&Rn@zD_JXJD|eSE1Lo# zjoiXIojQ*gbvH?z59Vb#8*glygscQr?MB=H^_yC-iEzzxSYsLE_q@f&SDI&IHeyTc z+N(uGO(iW;a!`42aixWtdMt2oD2xq0A3?CirB(zVM9)0r67D?i27udXx}a>7v+?() z)&s??xKi@;m%VbWYkZ&U?>zQxiZ6o}R(J5Wz1rl{nT@7aoD~_}<6xbptYkBc6wB~J zi+~UvXGG5%XX?OAqZ#&C{7Y3Y$ju-v4zA>|H{OqKfUh1lFsTd}apG67E+HH+!w{w* zhvJ^n;(Dhv56Z4OVRP+gdUmIC*WBFT(h%#&i+b0{;9V~V3IB&1S8H!1?`OV#S*WqW zXGCt^R2LzR!9T*yx)V!*)jI0Lysb^TQwWuWHiT6iSEc=vQx5F!?L;n+0I!duBt7#NB(l5**|=@lT3qt=${{wEe#@h5L~|9|vK z{3i_TKX@;26z-^WT!#`tpl)DwU$+H0nKqH^;=ELt<5J}|c zl>KwTN7^5kKWH-g}lRb|EMh}HJqVQ?9}CL8XnxHlq?`YD(ub*xs*E=A_wpMxaH6` zy;e?ap(?mMk&wCAld(`^LZWVV(M!lERBgCK8&1K@8|i@deZlOW_7A;QwnhTjIDARbGH3asy+GoXi0lju!Rn*h6JV(zL*-QiR?ooRbe^i zFY&&JP`@%3LWj#^o^?1^IUODgp?F#d|BhZ4gnuar!g<0dyo_81yylucrm6q zWM#8$s+Gu}J8EVkU%TG&FrWkn&LSv3dsDTxA-AS1nTfHx-ryN8Qsj4*YeK1Ox)A_J z1@onL*+ACNQe9+*$5o`cH6E?kV2mlSgKRb#+WpEdWI3qmFMeCxBb$!mNinr^=7Wr< zLkR?Xo~&H)q-`tdpB~`3Wj$SoeWucWGJlArAX(rVyhxMiweO;J;O*x{I+L)$jjuY? z4hc0hfFl*V1KhI}-O{md9tqLsDv#~JvHM_37a^~19sUN!?Ap~x;rZf#tftBHflj&V z_{Os2RrSG%3g(HSwig%f1RC=v_+-7@p?5hb&HU8fVyc;+hhwCzXZjp!_IG-l=DUjP z^%gqIM~66+t@ztit3=wIRwU9Vk#%}V3g+lMtM#wNe6%JjlE(t;C3AFV&1$`-Md)9lRg z*!5NF(}{Iw)h!#3!gGjR)xmRblHom@@)`!E$HT4Ptumu#MDEuCU*F)w05<@hg)rR2 z#^joxBh-Wul{0uMS;DYT%e;}SqV9e>*LLt7DOeYwT&vU@d#zPsJ3Zmmr~qFpt;GG4 zA+L(-dkhwGLUMv$oKs$$d(K|``yG<9^HU4J_+xx_8&2-S&HVrJ~V|Pwt4}@y?t=&TZ_zOu7)y^F5(`aHK#g- z$IX?wHxi)I#qoWcP4-bILdE{M#j~p3vL}#FAfGu{n~uMAa{S#C1@1vpSkr48Vpo@T z*uz1F@)=;#d@`mdNlvhQ=b`$F5mMkscq#3DWX&teCYDBeNSE?K6*K_svyQW6E=dxx zWbZ3k6xbMfwtKxV^v^<;P_;?{I|Iyy0|eOHMk0_h@rVCLnLHMep$MLwH^3Vg^6N-F zp#eP&Xrj*zkZN|`x1()y4K?l8+n<`dC%jI)P<)L5E~oU9HB~iIK>E2`^v;pNnV2rz zqa7TG$@~qlHi`A`m(g014;*qm>cDG!G9n-d4jZc^#N=&|%Da#@NHMzCi~~=psC*)I zbMSX6mc|XGmImwDNzC9sGsb*HLl!}v6 zX*DBkDHcstQiZ$8TbtjnccHP6<#_=r7<3F4*{7Gzc`(t2=IZ%0^znq&iRrYFYfyC( zM~<&|~X7;vb z>&w11J~*#f+(Ta1+`DFCE`?aAi+Y?w&LtShyN{^Urs}A8WAT z#ZAY_>*wqs^M`zGI)yI*d52@sri0_U19h=?o=}Q;ij#~*5ml_*R9uE-akL~UIAhkJ zsS6KJ&6px#tDkNFi$FRM8vQ^k=oht`;yNLYYlNXjE{hbrMCD>8G=$4fqfOJidumTpbEYIs4PP@D_|M{^1*RVY0PfyG8E%)vJK6XO zFNU~=DVwdDBcA%gE1C26Tkov)`#_}bi(XEcFL@GCYA_4U&f62zrMzFKG?YQPXixXvkiFDrrF`{m91hcqGi!I ziT*Ry2sWejISS{Ii!-`y+cx!z1+x=;J02dPPt`&L(v-$2)B3NS7WFVR8j8XfNnc7= zxUiLTahE>z1K-O<`)UecT%jGt;yH)zI7V$2+pv$jb~?y(P0BTfjUB>jo%zGxD_M-r zl_SO}YK7{lT^T1&b6LLrT1T)L`Oxf)9S;HJYm_wdXsw1PW6t&SVUDY{hOu&VM)_87 zIZw?OCEOoV9MdJ35q&X#0LB;5RPKikJ_}L0+H$UAO7hfk&tdw>NpXxxyE9|FdukQM zc$VJOX2fcvoR}(w?GL%DC;@T++pPGjWx1r=*^Keg|Q( zBB3Y8-1gk+ct)IDS>4(=QsU#lyCV|`!&-J6-zCDM56-x2W8MM>oY1y{GhND&BGU?0 zDe8n%HM5vFOT_Nf<6b4?fY(5~-)?P$g^BgCsev=VhuNMn-PZ9bmn_Wkj^ z-)rl3DMH*;+pUC{S`BJVzhPNJDp`v>b~x*8QIl}w73$B+;i4OAdhN56;7jWICs4%- zN1fnY&Sn33=1@46-16Pi{VX@llvoIHp)`mzf5^hpKAU*4EM+;O_ro z@4bVf=-;&8QIH@RB}XMmmYhLEauSrB1SF0_&S?N8CjkKg0m&I8BOp0S&N=5iLmXfj zPrJLd?>;_ze!t!KRK0cf)UnDxrnF~zrn|p=-`DlIuioT|TD*93Msi43(Go0fu%?bs z2ILb`cscSBN__@3{tHB0VBb8NA!T*lE(qyx*>9ZD`R3Pkt(x8lv+8W{%LLPGMh(^Q zzcLuejGdS_xQkW(0>J|#Q$es4dZa*@QQoN%W(smGJuo6FDB4^b07pPwo*pcwE_*O{* zcu&ZASedvo90x_*j}ed!m~;vpwF-I)@jh?k{mCJ_r&cxY6FLL^L?Z0`Eim%(k?Wn+ zOl(#bZsdJ+*gF_Obi=vCp~(KWJ8OL&&WE005}jReQlD?_EN zZ0<{=D=A`A7HAoJu7KD-?~7-*x{0bKz{l6nU)c(2>|F|xUJBL;>3iz<=ql8~Nxsy@q)MDpwWoC$e@5Syj7*0$ z&tQJfF-^(FqWb#@(c4hs&97|EC(MiaUon1og@djlS}!m3>HK{p-ZpIBCZ^ujNYq8J zP}a1?t39(DcyjQTdDK`dl#jXH{jM67t4R}FtCKzZD_k<0Akd)Oa%fmzXt-fp9o3tz zs8xo|$;j@&cvoA5R`*eWtk<<@MU(WZfjZH$wU9fnN}M$yFwP0CF@yNiUyPWZ;Oo3Q z@@VU&K1WCEb}=Ecm4b}CQk^_L_TgiRR?SQBl-P)?IgGh5EZeg%)3*-l{lw1m?g~6@ zEimRoGR5Hv24kOd`d#ez#LXs7orTq48|tgaZWY#WXx@{*dKqNYA8jB~Zjj|KKHY`7 zhX^Y{gdd$gM`Zp2VI3tf53{HO_c*_~{l4}m_DfBorFmi3n3rKJ&&x4eG3A0J(Kr#?MXU;k_o8YQJXx5ZbQiH>cvn zbbR6CX28Iwg6_@0NKM$|Zjwq_N}|N`|#pG2z#`HNVoK! zAGdY(YlQsTp&-_z&@LJ4L)&^#=;s178eUALOR4ItUCnHgvZQf{7sEER@@=tpIrCvT zSJ|;zIW)<*fiC%zrrdnC_Bm*5dNCuNw(v$`FTxRy_5yakl$^6i2{|992)anNcYJg^ zyP~k8C;w9zlg1ZJyEN$IX;a`4Vf?*%#HEz4uiA3-EL1Bu@%bi+X=G=KL$op8Bs=DyqE-oa#SyM-n_I$=dBslh3k0(Y`X=x058$+pTTr z&Mxo>${H=ntY{3}Tk7m*njll!q%h}dG$d)$erM%A*gCj{c;yPt-n;h8aI`2aJsgU< z&2SY6)!S0;`qZh_|A0V66gf-pd~%AP3OBr>AV_K^W+y5H&AR-@hYMO!KS8BXJvmg6miox;^)Y$Rv_VTb)H!a-=Qc66r!LCuT)YD$fV1a$clW5a} zljL95@59&Bdd#Y(y;vs;D9&BCv9F(w~d4IDgZKQ=7Q|T|(46 zwfuR85Zm_h<~1$ESk1k!ZunfR#eXjfUflNlSuV7CBx;c_xM%%~&aRQ4k&oD9k~AW0 zRaLQrIOci%Q!mxb}D8D9LzMg+5)BlLG{_kqV z|HI%wlg}n3EgMB1^QaDB8M}VP41#g-1>ecuj&)1D4Nu>#KCUNhPc)WGTQ>O{vV!+QQAZM7ozvegRLfCq`MB3I`wmmhP}Nj zi1qO6LfFJT2F8y(=fj}6`CZ9}gtq#`(mqK}k_~la%GB*bZOhaZ?5xJGu|^Wl_yPZq zB=Z|;Ab4NiyO`bgt}n)#@DVaUnJG~ZH++-)5yrEpTFu8Tq%P2iME%#I65mGN3SPe> z8+isdxmO=C{7Iow_EA`%fApY@=kSgJ<`>oD<3Ep41ilycwxEMkvl*c6db+BLb0&i^}Js6kJxoW(&vHHzo4RG>c^hlV)@->^sAuN=^X?W*{ zB}ujVhLs9jcA2WPu2h1!2fmrJ%8(W6$VG&}Y6}4({w4gOALBg^$XWbjBWwykpnz>7 z9&+$|6R6pxCJnmLDuzb6gIB?Ly!MBoM zhXywR_d=}0m{166@FM0AB0OVvDtM)r!s>n|)-q{M?R&5tNmFX<_{k!#!C)F0`JiL` z3loi2O-ugO1z^s4sdv!5uU&?H1ZyCE&VF!nGPFsY%AEBZ_4?NIAy^ap#f#4%UO;4@q%&65PrWv zT6A-c*0oNvZCIv6Z(!91v)`QNmF_C^5fxk(QwnwUL&R<{Uw$9)n_rW_n9<+8`~`Y9 z3)12+voW1ft|S%iC=fP$AMFGtA>I6OxI5kQ^H%j$Ti=s|gj?4-yT zH6FT+hq{TZOl-?sGLW!(P-N_IzH~0qys|n&al&3)bUNiCBe(fuU9q2e*y_{1`#cf- zQli=GV&9(Mj(FmZqPS;fxMEzLSEm}Mst4JOXxVF8csfn3H)YMq68#)1W7B5neMda; z5xJ~Ni{f?D!;q%-8F})q=4Nm2#@%L=3{nQxOcis`7=g{nZ^X+@Fk`YOG(Dzdrk98A z^72S;J}WEz!wLu-1eXdvYGN&J&TxSZEEzh>OEi*(TjxB3_kQpP{1|b6&o)pXd-J%T zsG+W0ZPw7qQrB6kgrNPwp<=0>`#c6VztaaX=N|!@B~N>1q91fEJ%&C6SMA|W2kElW zH#dR52NngKDz%b|KN!LH0BKiCG$a&pN|hr3H@vuhDSrAIXp9kQ+Xq#@KrDAw=`N32 z&Z50;iOPqLXRT0bXzfzRi_l%_^J@l^M;Xu`@<{emt9gg*o1B(TKr{l_Z=cn3=|5~v zOd5D9O5qnMy5-=WFJM|8%eQ4*F`xjs@Eb`CDn6HvqGclnv5#uiS-w^~^P%_!ij!I~ zxw)eYaNnXjCdiIop!wxY059P&xj5c)prew4kLM`GLXTv&&`mZKm;;+)D7N2#;fe ziiCo!QGH7L5|ibW3qUyK5rl?3v=l9xTNoYal`BzWlW&jApD1$P2<7MR|LPq?B#+127k&&a?DV&-dj%3jM>IhvEV@@V+zfmFWcNw+vl6^c#&lzNfc5g^De7y;$&|n882s^*s zNLS4*%eEIEgK*Z6YFP@Sv4Ch3cD41lgTyJ|WE$`RNtU{4JI%eVQ}uBUPA;N!J)A2) za6ctm(NW)gJ=|ZUuv00=;>ZNT-(Wwie!`A-Uo+;Iv$@XA#$A8^lCM7#R#xW-D2Cv! z>^))|gIeG3oQ7?U!re&7kVm)I)Gtt2GZ7-YLo_}4%{5o9M0Y0SAuLPxC&glx9xW4j zKd;?fs}q(;*>p!U8!Y(!s#s`uE=kwob_mxyBRkoRBn`tRwHMDE?Y_sN4=W$({(B82PNte}|gqG@kmKN?2%S#0p_Tl-IPJ0M@#zl5p+)x60mEO&Y0p?U&!<$O5yuMul(!)Xsdyzx+-v zl7ukT%gCH2uxIHzj(6t7OSYmPmb88}#MihBVl#dACy_Sux*ySrA~(VNQI}A%>oq}k zU(a%!g^LUmomaFta~tsqZC+Sl9DxDGb8eGlgr#-o+hm(88R{?3E|@58O7p#7)DGI% zN!D{`wNGLXlylZc;fx$22?|ZJ5vkJZL`ydD%*l=rpUNI{2U=bnHOvI6CO_L^%qzuh zJLxhC?N3(hXS43(0NQ8bxzql^3TwXX=tk_&e&4SrUVHchlHGG1Pot!i77N{>&skz{ z{8Knqth;#hGZqkjYy1r5MJ_y{IhCYyI^{5GInorCHlgG7#hqt>sb0wXVuuO6q>Ay4 z&rd~iauJnrerOnPX-#t;iiHO(M2piDzPD*#tI9N{{?uOtFaD`&qx0#TNNvro*N#5l zP|b%?<{xr$zHe{Wtu_PYuloH-j;!(H+`7OEJS9eY&dH+QioRA6jmPZXPT9Gy%Cq^U zh!#8&y>U9$u*oz{Fc`@wVa@6_dg`}X8w7%SB-(P%$p{`3mv+4MU$TLB-{?#r9k^Ug z9o+Q{a!ZoPG!`f_Utn*AL?uhQ>rsDT#IW3R0_zKhh};O40#u)MpJ>sD!QbXukIBVd;A@Y$XRiz+V}F6}{sPV12TB0Nv6#r^6M3X7 z(73T5-?Df~{^nQcVBEL^ z(m>A%(!vag^AwMBzNXU{#C0d^!yPU8)|*Q!1S)1Fr++_T)(HFD_hw_0Jl}6SIl8rn zhJ>Oorx9{Gf;>a0!@%q6LEP0)a)k2pM_lyLYh*$f?P95(51;DDJYmvPSXqfCK*#k9 z*tsNg*H`^?d6CtPQXo3w)Rv|Xe*U%6j#?03PTo)}6i5dlUkw%rC!csM=YLNN4FnR! zef`M{9@nj?q@lF<9xWgmgX?L$&E@>&Zw#T;%k<9z?jO9yB!j z(>jH)n4{;g-lO`7Oo#|(t=7sZU=dc$0#xGAoxNM4tRIHV76zDP_uXuOJ|jfj z$4)DxXHYG7+^A(W`8U9dTLl2DL1aKX8U+}hv;fQxyv6N(pl5$iC54hO0dQ6KiwpKE z^Gm5y@#Ax6Y~-I|lysicmNk03p1A2*mzj@s(fM4YS%I5V+fUc#RpDEvr z0hqo4smTGBQ{`imjo-j62T}_FZe@Y%$=vD}s0T3Ng7tm_x6dO0ptF1U7br$&C+Z>8 z-mE22${Cmp`~}i^nlZ@z0~-6E>~SeTd?K+CUBG-wx4wL+3!pv;&2d=bn?saFu+62| zyP>|LpJETEnoqLwJeMBl7+R3eUP+yDQA-8qGYJnVmJ6VOQe9`5PUZgx9RCe;)cLza zlwSjbcB;=7uW47oF}oc zOf!l}Si3I()(p%gW0wry{xE6`9OQp?!kL^ea3gPHmSRG$gSk<@%D~~ZO3?T(Y$-qO z&~kbqJJrBBr-R`*tqNo9wmBs zPnH^41lpL+`mbCvuYJLogM)_*(AVH|ad&Q(s)R8I6yfp9`J zr#QvUQY=$*=a;O%Eqo&scM?qoTyRN z(VU8jbq3qpdyHZonq|=1W=0D*fBcGfuyLpR30f*Fzf+x9aTQpsY#`Y)dy=dZ)tLo{ zzFJcRm08azZ7gmiH)GQ+?h43J^eqOYI3aDCC(HRc#a_UM=UpL65~`MUjV%T)RrM9= zGN`ZH+r z3~<5FR3>~BNxsOaioTo6wjp{t`En1#ltH#>?p<$aZw|(C<2?gAd~hxt8g(u~)|EmR z;u1wlqkW@Q)zqlSRo>i>D`f?CebgH@k9QGWloOa8h|MmU1iR*ZpzR$cr8mjR-~Bxf zwo}n$^7b^x?5Oq1&l>k&=%r#6BeGt&lzsXBoQX%3A{;kPh1+Fbxmeg-o7RBw5J$u` zG7hi79NqQZb|lF2V7dBUs*N8V&%DirXjxH`8Vu}JG^;=Fn_~a?jn&LeOmh1@m2bFy zFY%PE;Cpj7>J8sRlokead%W{m<^ss-@SHA6-;uL|O4dl0gzmCvV%pBvB4qMyYPGR* z_Zrd@pyo{LGKKT}oWjb51E(+A6;cGBZz|lwrXs@>VMb-bmQ^Qf2=Gjd7nY0`cVq`% zsXneUw0qL2d~zb*oAvSDd~lf52M9e$6BV47o66SBZAzQtqhi+l-t+_U7J;gPgNjxi zd(NBhbxwi@Xmmocw^Rr045vrLXS> z-7Bt#*>~J>w^o7UcJtgI#wgY2_7WZMtVDS7K%H+AA9=R9ZP#c{Hk0n^Pkk?0UR*F% zv?Q<d)L+1LrKh$mr0tPOtsZMN6|E~MbQdO$$DX0 z3u^a3##QjL+!Bvejqz$DN~%F_#ir1nVOXH#n!8?oLv3;o;hm~P6o zT|aTyCv;;zRg6q}U3=V@LP^Bb%A{kA`zLX7%U0mNNa4z4E-PtJ@a8L_?NQyz4X3x^SdBrLm2#AzSZJp1?DMC|cbiwF8U3@# z8Q@>>S=uwm1u}>Y5XO2<+>rd3hc>DOHjip#9&tTZ^eKcB9JT56TAYef7l`W!!6JIn z>FW^AE4AruuH~d2wevSh+%@3%CayrNCA}Q0(A#8bR}I`JdpKNti40>dF~MHO5txB% zf!;kP_w{bWdj?#XU!0Iq_XklxiU|6vt?F#^3EFA6dfHJWqi47Bn&Ww}!G?L8hTNvu z)Pj*0j~~^^jn-SBJ^C2w?|_940wd_U>0qCCFUvVoZRUbAyty*GEyu9YU&%)vI$&&C zytNQU52gTZ;73=8Gp&koW9-K1%{HA@UlJQFEE-8(l`+TG0Sy`&;|1tn{**TSdurx? zHz?qb!9MU`^AP@5^4vcgtNTy>9k)2pA(H}J$@|EzD^&KU!eMBR2-8x ziN|s0@s)5)V9O;y^o_kJH!EvczQ+xe#)o6V-++OVQWO&)J-+~sz=qiKKYx#6-92ru zETs$gmqt0fO~m}fnAner%R(@NHL>VVu(nF3-|x^e!|^NDIECbDrl1vv$LHn5vW^02 z2`#CWa|axo8dvY1r@|7l*2tV_+RN%Lr&RGeOp zxhJ5}Bg-qAH+otL*&1;hhm6!4BbXzX(^GRs30<3;o!W_R@al0xwN-|&hr|N|9w3k+ zi~l`&aPiEtv7x?!@%)03L6P`~EL&A~8TRv^_|M+pWADEYzpCnPArkO?)#1lb1(AO_ zaYjezK?U5ywk9|soTGs<6yeHmL$CU&I0j>d7cUjWiHy>ELUSr6o8H8ObyBEF-9-7M zxngW=FXQ{!2C_&_O`$w#fo#QS??=j1LEc8PuC91dCDTHD^7i)kDHv0E&{xqCp#fFLk-Afjv%UueZAlaat49Q z!|$`1d6aNJ{(eWD?y0so?U$*8r#<$#4jq(TxVA(L&+Zll_=9LL*tek=%eK?Bk72G` zbvb&w?sIfOIp0TDD$>drr%6_#^hmX%CGsSS^l3_*8Q+ongPmm&0c)Is%dOXifNZ+T z4S2&@?cU#A3LvXdZ&)oa@09+0;z;hQs}TET>-7dL7G~8RWkO!O73b#pgrIgTZl9wg zeKbEsxAKDkZSeLm*&bzdDZqh-RSy;Oh)qtc~g(e z+vD`JmuSf4rpwc_6;Lq7kLZX26wprdo>B+G}tN$2UWL!Zck4Ki`%|xFm|Z zlL(Qqig%GoGr70}7VAv`BeKJN;mHiHu94^q6!+sYSi9xXby5(;2U4&;6!|=`-|fn` z@AIMUQk(0CCUeFrP^%NE2xxMh7&OGqV-Vy`S_2)(B=r znI>FOymu0H9CYyFu z3ZvY0i8Aic0?VJ2-AnkXV(RCoGp9D*wsNhV>(S%y^BkZ>)o~Fxuf{o8;19LKEbz-M zdkZB~sfk5}*B^Cs7MTfSIx8ff};s^J( ziI*59do;jv4+6_0Dx@56x0aTHlPLS|A8!8Y%4C6dDe1KQ2Tc@7543#?0R=9=X~4d* zw+DDDz!3ZUXIB&=%Z~``m9M6kqPv^cS6U)#Oemo3uD8Xa!?y`*#kXA3?`%^!*Jdl! zFd6N{(^bKLd*A5FexIKX4ju2` z8$HdIvJhM^OT$$nX2-b@GF+Rg!gifSGZYFz&QDMJ6UtD?96 zr+<|2^_EpfXGS=`!Ic1c9 z5S|j|;Urfp-u?$G3Bnct%qEXnAi$e1T->KyF!5nAo3X!ILslA4-~O>m|Hr@occL5r zKaLdr*@j0W)qa8ELlNx1K#nc9j7k@5e@h=Qa&5kE0$iK(IgX~l`e}ev1_XjoKmhG^ z3;J_z*UA9lu2l0qdJT_jh$?g=<#nQ%i;hl0ol0xKN5hjIL=1~Swk*i1ZS{~17$yu+ zsS37!o1&W&y-1Sn`MG)^2Op<`DfFf@&RNT4`5wYs&c#5$Xb$aOGUU~c!$e#&A0a^ zXFj~yG}C#cOYQUo&BaFq_IX4{hL&tJIK1+zKM$By=(sRtx$N|IJK8vnoa(vIO1iMR zu%7`I#Hyz9s@wRVChYy)i>W+O_3Px_>?zaDO!^*P*Ryu~rD{fOK#KEF9j;@l@J8C? zWAr5a)~c^dp+AM3uPurzfxd(gw*E5o9LGHuD+uk9l8 zcQ2q>E_F-I-4Ln4~(%Ja$%?xcqABQ8=HC`6Df}GL?XNYgdlZ?4pe$ z222pu2m-T%bX$YR!&xzOPhO~z!;H>WWXPf&i99{E%$;naSiSWuGk7&py(n9j$p2+= zwud$0WyQ1kfQ5%u<`P2Gu4QJY>yk<4j?gU|(eLBchYB|Cb6Fj9vxm7H;khlIO_{u0 zdRn#HoYh+1Qeh*z?v#T~(M_jASgjIZFZq_s!1BVfjaFi$)W3R{rhCW`qE#^#-!V7XT`E!0l-?~+M?CkOk>@zxrB!Gk|L)_BfR9h5C2By< z`Yjz&n27f}qGg4vssx&o_zTO%HY5E~KcBXUvD#s(d6WezTj$kzdp=gAcj2j4`C6#? z^mX*-9^1rlQ2RI%b2W{5O3Z)`e^*d@)R1$*VSc8IlCl5N0>p(DJvgC#2#oR@x_8?H zz>4T^VC51O|HDn7$H($FrLtarbH@a_D>hXP4WoN)Zh+7{v)a-EP|VVd@V{N(e_ro? zAN=|F=KYL3M`ya6dK(ZD98~(2#$$#4L z{n-Hi<@F!=dFi= zBwsoGf|e`lR4RbQsh6PtEgMrayHd{mkDjwUuu1*qEwo)8{-DhmU^_p^8~|2N)NS4E zgBx}CImuD1nByx3%LS{`sMSK~>qOiYpRohe%!mkjt1qwIfA{y`(? zp#=)V55sN7^gzKk=ht&vn!ljyn+=@8?1NG9ehX1Ei(lSa(a1Vc*0qc60t2Ck)#XHZ z+$!*ginOITx>sXWSj3Atb@2ll5BN2*()#J|Nu!Aj=Z-$3m0shXy%jh#Q*5a|h-4@abZ__C) zlI`OzbR)Y}$me98K+k>}`V3%&5p$-aJ!v52U;!B|(DSRbq5B-22R)~0yBawalI zAK|UUd@ilHOl}%@XFGH2y!?HgSBd1KvGwV(`3^~j&kME<&>44?ft^Cp4x!}Gv1ea` z<>?zCrm@lSYqgoqIY=&e)Zv#C17id0>3A7&)tYtJfS=zaLh0$+V}eA3hDu?LZPRt} zea@cF*?NQgC$-zLbLbqMmyB^x%IVn_t3&Yvi$k*N3qKw48$|@9)FTf{X)}E}n2WHz z>@0VcNZmbPX^MJ*EB-ygzd}T{^rn^(ql4QnczyL=r)X|>MIJcJsx->h*LZ3T%q{v* zuXGHXK2C~9CHy(Y&r0f`Gm*0*c7|7jO%Q-FgBKdQK z^>43lv2Np~fEg$A+x_8Nj`S9Z{WFFO6<{5_vl??*E_GJvbyae6J14bvOL1-}g1Y2} zwG7h!03614y6pdUY4|7h@`pwF50dx{hceec)WBbkKwNy4U)M*`CmyX0$ZYE64DC}X zHp`k}NBsg#7O!xr2^We>uP>5yG}ARsZUQs}jt5IUk-kz4V?P0LX!i-%9_6@ z8+*Eas2_6qU-UQB%0n(7gr`UraI}JnQY`AkrgGZvNJIPYU1O4nh(j@JZXTjddoZSbC z-=B-Ce@}jPrF(av1fx1#64oi|8-+|~7}M;&9dJuh^(72n4QSJyccb1Q3P}HS=ZCCi z+nVa*eZ5qLkk^%|+CjLLGx82mqV#My{BMrXIGSRSGE)^kQgG!C+Q;AOzlZ2n)q3lu zcsCjp7sP>eJBXUKaNStDrN!TbgZ7`4P>B1kh8~>V)WK=v5*yxsKG+8D1R8#Wqg-y0k{t=`}e$3SASPywWNP(K*^q4c+8f{V%l67hGNlu^Z8A@5Vy z_f}ZDU&p!oLRUwBYXJgD?d8`LK+AtGDdTqp7nnQ9z)Xd?(Hygc;t`&M+ciSx!L0?Dt)d@wjkf#gHN$y(dRRO?0|AK4qoiU&& z`&V^tagPDezJC}3HKbIB`}009*_z5U}M^v!BZib=>7=D#16$x;UG>gnoKPPKMZM|1DHhVuh= z?yS4wmc9?<#S)+Vx!(L&KB=NSq>xsxzAR*ie`6b~?>DRcn)1)Znfi}aOP>sKv-PbxgFK6bJ z9UVE`E?}8)iWYAQ!ZDPIJwSK9q<|9tYl29rZ&9zBH5?K-M%-@{=a1`;Lt1KBrzHsyb#3WS8-{XR*k@c0)qwIU zCjP=52R8)e<#Kksv%B`ek{-k_#xc^_R z33l_gYZXa)xLa860)LpjukXF;D55*mvYz(c-K$O9TeI<5QGQn=`av1xR&84!sNb}&9yn2=Jz>2yv$aQ z0CR0;m^x)D4&UcBAb%;R&|6|^{2)f)@RDkxVAsrF>VfT4 zjS-<1>7+G30xm044EJ{RSH;=&Z$e>XOl06b`L;fgH5z?%c937= z1Y?(mC{duFAo*vEA0EgFs6A+l*D@aH8tKj2XqVc-`2FaW3%^d3YA_KnDiu;ZVDOil ziq+W`(LNrqUB>iLF18`_l97xj$$1GT)Hl4%)AkHH2$tn#`GoE*jEQ@--=lOSE(_OD z9z8gBuL|FORX?uQ_uN1walWI7*EheP$4+yhz|0A&Te`C$rmGxhH!_0ryt7-{sqaEn za&6sfz8WmXokV5#+U6xGknQHD-HORn>>~mftPm_Lsi{r1Si>p)oLh54S|P6d#;ndG zQG06KX!`5wUey|CikCx}E6pe=yE5G+llRVf%uGE=7R*j3fk`Oe?p^_=% z?;gU)@{@3#r8adMn zNfUcR_sQDoXn6NLN#biQdO<8ZVT!i+m806rOUjaqYshVPf&D#Hq5!y9*+bi1CUi4e zVl1jKL|YbL&7+&Z)C%q`XT(!hBPG~|nlG5gdJ}9=SuwlVXLs6?L~*iyJ7YF*w+x0u zn`flFRvT}#7RCLdme^R?)n`hFO!;9klV`m3izAajCx%)XnPm-mh_Jk->2 zO*|5HPE@=SbGW{q%qD*@o5S*Vl5@9YKJsAr5^pHu!v&X1&GUfXJib(~o2c%m+ShT5 z{Unv)3E|PQ=d9flW;EJV)V6qJKr$`^&u(|eji6bCd*1i7c1dj=JC^sjKqEEe?RjMM zeX)97Kr$8X+@4Y`L_EKziS@Pi#x%}bWK}2hsirxXzk&>5?kh%~`_Ih7LF=W>q#kiy zhesU7TjPslos!ri}!ttyK_&O+Lew_oUF(r)!^Ir@r}CZ z#p)k2zyp^oJ#vG^vh93!zD3f+_uhOc5Nn2Ysk3w)$G$N zbgW;2dn_74U4Q(1d(!oDbw6{2a^09I@K8Tb%@<*dP2HT7kQ;<&8Ph@80P9*wLVr-R|^9}vHO~BQU-2+mh+FSo)feY1f!I!&;Gc49m zd~hR_unjGKbXrB_XZK|Ulfo6|{<0n@(IOykLe$2~1Tyf|^JEE|(l^Z-6T#p0=4>8# zvw8=a&GfzLv2HEC*6C;=)J3E!aPilU@gEb}QqD9!=(XE6C^%}BQ|Gq*1WwR6{gU$r zSwH7RgSlpzRtj!NPy9J`+E!2+ly&G9w?Rb(uKkoZVx~p*NbTqjP8?29@pXA89**o( z_EdM=^bziP&pl0uF-VW4Ec-$}?KA2Aznoe&dIJP## z*j%qjyylwZ5~#D#U-Q5={b@ZT)ML5=5#M9X*mRrAEzZq(*j=%DGibq)H(E9`Xg4Cp zR*yA{6T~5d3+eXO>L+@VGvTg!Jh${?U^O`MOMK!WCz3WHL_pwEH^s~O=$;-Fm(8gS^g)xVy+mp0r$Cg> zjYKRnd57T2!;ivkG$A7{SrOF^X;Ob{^35#%>5-c7f$C@~MZ z)tC-nWo5Wv-EAsVu$1Yi%!T6SfF=2BL3248jbNa}IGvk?XsKzX_zdnOnV&UK)R1XE ze4xY%5P8k=a}RX@^R~m-hY{!)0N$Ln4vMq|nzP{#8E1mfO+lddh|)BRFZssuAZojT*FSE<49lcTV2j4J$PCYgH8= zThL2IMi4vm{+e2lMc$0DG862^Thu_GE7@f_?%@rhmguUL+vyb=gK%#-BmDSK43^Qk zL{a}u)wW;T&11vB==mIKiMMyJ?L)QL)#6`7!NyvkylKWewW+I?NUSG*&i}+}bu{eCKDv zCfIL>6Fb4B2zoOesE>3*0MCcCZ_`hVT2tlcO0a=id0RQs=KI$<&kr)j{+v1yk1V~j zdU3S;rHseGPxLkyNSyY242;iZd6ad7qiDe~yi2ID>xUj&AG&pU4MZ05G3}muQW#hJ zz5;q=$<52B*B4|czn){0EpK-u$1pzB9*^!ux_QD*vYY9Kzr|9B?zH2OO1xaCE~&-M zquZnCqJ^}H-LpvE6hG&fZ>c};D&y^!XLTCAqt$pk>YR*Ak$0=^E|8!z*0lQKhU@IZLZ1R_!kR4UzrMN&!Dw#um`XQ zkagU!BUdhSKwd@g)KAY&B{&;{5lQ83J@0-%4IT8 z$9uiu0y$s!egsBOw}Q-Sv~$PDCaJ-NrJ+BoJrsvw3NP)WvCDYL@DKX01 zdOzPVs3A(n8A~w|+emtgzdt(2S;t3p)!+xX+ZccHYaB`4=nCptH(jyK0>sOo<+)bbLrm;CG(w0lFiX^&B95dDEv9@K2J6y zb0!t0=mN!k&E_X7S%5=R z8iTn9LqNOcm*3uqG0mJ^jM%+V=-B0ael_Q#M*|NGtoq@90P~3L#gk}h5Ouad8L}< zufb~<7p*oaY1Ov;-Vzd;;9@ANLNrDj9h;q5=c*i8G}yy@%`!IE21Qua7<|@~H*Z^; z6oYHs1DWGxm&1wba)0~2E{|`isX1J-SZxZ`@C%emH_f&LWSYxgGt?p6*P^IeTOPbS z4+ih2k z>3#?!R(xvW&KcVt5PtHLEk7hk-qX{M4z?llK-96?2c=U3%;`_%A%a$Y1(!}ZDfc@` zPZsy5u7~Gw3453tvWD(|B_`BUDGpS?8^($Dv=5_Y8537^&FjlEpsSX-qdX{GVpaj} z!>Ph}`eGpb`N!|*iQTG>6B@YUkGL%Ax5LsDPQ(nZq0=vc!5qu zT@}4Z*u#<>I@*;(^{F_W3K!=suZjP~n4xF3POSRH@tVx6h4mREe=&KM~%hnG_XYq02Q{XSvw(f0aT(}x~c zZ>Ev^>9&V)e5^08=mTes<>v8VWjE>*S?T?nHStOn6GyJ8s!SypBI#hyHR}}L%@^MJ zmUIoh84riHZ3fT2VYdFcCU-A`6U=?3ZUaDZWamiwH2J^S|F=j{7;&Ut>< zbN)bqxz?akz3-A~o8<%yBX3BFG?|5Q4qB~`}o zaHzd-h|=}w^=X4J&|EgVq8ifF-+Ev;>XkRh_xa*$7D!5V^d9kSMJY&+vRTsgEj8ST zp5<6Ik9(B-eakwm!fNmiMM6Kt?Nz7@KH*31xNfWiT$G>}f!?U|W2=$Oq+y=%@586j zX1L97d~VIIKgN27!4&gy|Lc={G%ZS?5$PrL(ZP<;Xi6qaXUp-~xr{}OqIJI=NA1S| zE$ojRUEmJIW!`Wq@*w9syGf4^cuYS@6_QjRF@>*Y4^%7Ugg-3cVpB^^t=YH^GkuhE>4cEs-C5fa zRaz*4Y&H>hbA~-3u;u(SpPA~6cjZP8t7Z}iam1`~xiHQMUNdW>3HZitQig)tjdAUr z;bv;CLauv&;MGGv{Q1BhZmj$vNmm^2C(Kvzf?B;`P;}+zab={@4BO#(LLoJE23@|+ zR4af6tqs@I%_gQ!V`H1k!d)tNsBVB`>s1}G1m)SDa}8O*ptNJS+nOPwfd>BFj~M+& zd>*G@FCosk*FQL1XKlbNhYFNxx@XtDiY*f;=Nu~DiEU7>{uTl2t40t`PGJ@#jje~^Ju4^S%fwNU7spTKaZig&StyTqUcl-vm2ir!ZtpSo)HA6 z-XB9PR@!oPD(u$jWw`rhTM!hf_gwt8YPPnuBfcg4AnZs4t*oYnB?xke+_ z(dTx^v<}gPFd?}yXWdsxN1asikW3$8oib)KP0X0~*svJ4;z(8G^a`F*2~(_Ejop1!_;Jb^(UjV6dZSSvB{A;tj)0PmLq`pwmzZ{=wz` z>FMs{S?-BMyEoq&qI9FP!xI%aMCsZ_>Y9|*8YZf6lCO3?@RaZ{*;poN^@-h!QTS4+ z9{xzCPKIfkzu+-5r9vg3Z-V2t0-`2@0&(Z7hcZX^z9alSm6w8v=}BakuE^NkY~JWax8iFY5ilYKw*`br<*zW7Jp&^w`voYxi# z>hW}XgiIQkKA3L#rDP_%0jP;00SdZHvg zxQAPlctG9^ z)tR3xh(dwzOTIDRyRe&hmVj!B(%EiS%!a-d3gteXIMSueOL|1pPjBr;H~*$r)8#cW z4?V|Fm!6?hc`FUI9z=7fSOqh42+Zt`V;b)kcJn{ySsp^FXG(0ktE!)~&Mx z+GQm@|lGWJLdulRhJ?AS8c(sR4c8(92-oj?pl_iM~v;>3`coEuQNu9xZ$id zYm5^177To^C=|+VUOb&sdBY}Ldc*djdk zgXrReQ&s z_`>{Tm%D~MV_v?II8LJXUHQh#OSPzph*hkOcSDq|6INA11rnJ!JP`s|iGvewv)ll$ z9L;<}XQ-iZJ6_I|PI6r8@yMcb!@Xs(sWk;U8+E`g5-)Yl3pX#8LRe_3j;#8#7z5Tc<+=n^dwXS=&jui4HlH zor@X~@;UXh>=(oRW%Z&_gr2?fM7j8~c2X-##VM}5o>zTa=8eh9sWw#4xQ47AC{SJ@ z+K0mz>K@JNrm`S&9G9+@jXpR%b+pKW*T#Q0Bw{L`d-Y0wMQ7@B-Hi{7AU_P6{DE3z z+n1@W^AjWFE2n|UNQlrvmV+b2jEc*lzGp)s{|!Y?DJ7%KJdMB0T^)=sqiDLVb9cIi zOl3#s0_&N^1ZD2<;Yf4Ew}5vxfJom?u;fQ5Q7WD^eOvj+mb$TPr0zJ6U_*tQjnHrn z9yPVi-l3FKM&NAF>nNR4gP2hYi}r@{YNqe6qCQ%P3z9cAFbqCIh{4Lz?GL3?}S zpdtu%4X{yHDC3JXCRiKR0H8owhJ6R()?=AJyoIs;u-xCb@xLO!0TeKSItAM5U+hTr z8V;!M($f3@kr2A01vZ4}05n2}H6dX0=|(X?H7g15Sl-w1fR~uATrRcGjTS4eQ;AsT zP9mvPbC`9WtU(ZSca+N@wWOPtFP>KSiM!)8)_^kuA^ds=$bJ)d$=9)}ExKve!I5{~q zUUi0 z%xr9f#HS7!Hh2`!5eoTBPydxaOcL2CD;8T3`NcP)g-zYP0`Nu)Raq$c%PgwJ)`ToD ze|~1j^=p*IuinUi_VvF)`e1PIp%Ehs*`QL2K#&hFOmzqn8rWRM4SWox$rX;qdHR41 zvyJlW&>ZQo7Ivhk0;@lYx^U-VOAYb#Y-IsWc$L66GKr5?OqUo>@T(4GLv7$si?|bG zHG*DJsWjFmDdgCh%=(Fm0fQMu#FDub9*ZXxviR5|uf`k*0j+39+R`^~v%B!Bmq(z5%+C ze%`ctllGFlzRc+!vP1_nvoD`CiC)A$#f?>@Zfdc3Ca|R47gh7IMOYa` zn~9S6meo|=5HexS^LpRjJ|hOFE=z2mnRt-eE`0MC)IrUD9Px-$yWRLMN@N+Xw*3>N zRtUVqMB6?>8RIdJ--<-VoCq|C@k%8yNEc`Q$12p|* z6?Hm|r&AB>`g%dM0K|dJc&Q{P%?Lep#kA$MA=G=}Qjx77AoZ;>l<-Z+y08To$-U1T z;uDcUz-$m#J?h|H;uR6%JC;fN`}zghCSTGkV=5lEe({a%MAn<`CctyWGYfS%~0^w)H;OQr(q{|oa{L;j4N}7@3%Q(iQcDE7JR&t}B3TElo z3EffigEhkE5$42h$xmhLEg4_+%DNN9+?cQiL?l8>al_h*BUu$nRF5-DpGBXymRD~* z;`UP*;*Jp!zCHIg$+!)SXI+@b9iO}!F0LO6UF==Z@gobQD{`zBvDkP#_)=MDJsv@h za&TLc02>K29q9BSq0p&Q_7x>V@z9+z2V* zyD0jmYiXGg+m%UMfq7Q<^}_V#=C{WT&+R3Y{iPhI#F%mggvydtgJieDVj;J?SH zPiU!UY9>!;Lzqryb?YR%=0@L*kLrG2UutoG@Vkaz9z`dX9P~Th-I>R#5GI)D`J!s{ zdVRcH%reDt2s>qBA2IQ5-=2%=)zui~=mk&d@iV38or;NX`W$a1i@$TZ*9PItMc~Eu z`!eB*@T^o;;6E2W>$cDFzK;y|WOZ4d@M1pwWCegYh-Z|mq^b zp}^cYP{DQp8Y-AulH|4VhQge|m_GTw2UhX7KYor2VSO8odoH8ea!T3&gmu1WS7{`h zu$fUN)tPx^09|i_I?o6Wlu~%i&qj=E7Ni<+M*{0_(zE|zT5umISsR~3f34ka%063PfIU4|euEZ#_ zzPS#FYSLn^rn}B)SW%ae=$nY{V|t`H0+45Ofzfz?Jo}9Pum=Xnu61B2DnNFfua8)>3ZW7z@^Gr`7Qiz+(yCE9vzQtAW0K0v7kg znUthibj|e=Sia>;Q8vcHGN}@Q-exLiI=Z)PWOnKpPv0)T<{g2|x}w&V}C$4Jw-bBgv zq;jjfwl4~7lW85F_G)C$#qFV6B+LAuVY4N3gzkscA8>b0(YWn#tpef6f~qaB=BWGAR*W^>06f3IL2Q{hiHl(|9@A(Samgz?=+6Osn_ltAQS3bz-_|QcE6S zM6kyq!B6T(c29dMm4pq2y9@QEdu*tsZ-9JMZ?{I>!NAB6Dw6@3=^}aCF70z}W!Plc z#Mc~3RSz3VTTv;}Je3L__giIC0jW6nV5yCI(`<@DL#m*}IJbF(nxr-jsb_=DY)l@^ zaC${c&i4k~#|%r=y`sTS3IVkRwV-Kg>g(%5+b#{X$W*)f9Svhy)+P2>pG_6BO)$9NH9WU5 z?pJ(P-$ilf+K75}Oz-I8>SRFXT}u-9Y>-SPYGrx2mY|>el)E7BOSQM%z&!YFuLyv3%Go}F5%HQNC7xHuQztQ&5B&dsSbFSe7d zHnU(jWDh7G-k(bSizB@GS6^>*IfwoPC1nAv(S?GapvuCj!Y&x#ow@h|K9|@|yLw)~ z1t4tl`c58w0m7t&p<{^vMkb}0F69w0^_bzh-KFV9XvdnjqGPXctUI3R&qNM3#m2nbtuvG zB6VNwt$AXdSt@c61h)}uc`JA*&~DeYHf z4Jv}uqot@euDyX->TP;ezrozC|FEnG`gubZk2S?1!1Pi8k8{l)Q)j#F{l@{vYlUY? z^sPaesK|~o`p&dMRBH(53`*%Rx%F^|j`!PX)x=&&BRH=*-5IAZIJf#Em)-sFI8$j# z$gIXbSoqfC%pB_x8^sb7!3izLy`tnuWh8iYh$OR~8gav}S~Rf4Oemrc&N61S(6u4! znXeFbtNXRc@o@L-74I`f(y#k(pSc;-86~5^tNU(Eq}xV<$mdCx1%Mt3FQNeEOdgy)yk{9> zt@oHjmg2q&hTG@W>YI?$uU|w7TEzyWhS~vXhrW7gY2fiUy=~zU{pOvIANqQWx=Glh z(mt7#NbsqY34Ycnx#nLWE{_f3g|(d2a{@~;z<616g2!pHG=hB(KC-WyQy;(`L*CgV ze!R>LuYFZx66-slWObO(q5UH%yi(7!aBGOzP<&FQgT}~KpuJP}O@ppRRLkCD1NubA zyy_eT|5g8WfOa0^Rbm%loh$R*M*NXxeqadeyd(&yqGf5*9OvGJI_q{+g*S$u4Bck{ zrF%s2yY^tzmJBQg00`e#Nc|%Wg(Jc9A$KmV@9_GE>Wo#5W%;b7b33t9R{kT&7Dq-` z9Wd%fi4}UX#hCcZrkwUc(y(_ENBu>bgyw$-iz{4&b=~07VoX7CfITLqciuMkKH?Io z(Cg`2jZaF;|0{Cj?(2WoxC-nwHvxy1Rt9)GQ#)i_4^ToIt;(0w;NxV#AKD4Tyn&5K z1zY-Dz_~L(=pTx3(^yDpBKEL%&ZYkAcD^1 zBx9|pMx}qYDl3R5YgGSOP}xMO+W9Jb%uJ0NA?Pk+;R;1RJ%LTGEuudv0DqxNhzo3> z$ZnhfyHsU%q_u?qi;x)0^1X=&abo!ft;J@;_-}d#3y7mqT`hOu4Fmk+-c5To+p+C&i-0?-9+Bp!$%{1M-%r>=WqJb)Q_cx}3wW)go zsd)xa@;@}R0+yiNM5{$rS(Gz-mHA!?if?(v(UyWLBt>J^_EH};44~bAaom5~#u`|* zxxYB>(vCpVRzLL1t_wZK=e)@JfjE8y7=2lf`}U33y@Q910et+}B7l##hoQ)U)Zr)z zyj0K(B!b`OfYr`Z@wcGNWEqhJ_V_m+^yLMxywHCVKv^u!*wpNR(y~++3Q3kBr@i8?# zi)qRxoZo>XvV{V~Y!NUTrwI6Afd2PmFLf{;pl|vK`W5pjuO-YO`T_7hLJaZebNbUI zLx1gn33~rP1F_o@INtc}PmsW=YzS)qpIpjuaCurgFQKOb(xU*7q$AKHO*P}@RSJ!t zmL+up$wBWmX$|W--kO%zBcFRuWN95EE@*4TR|vujcMEdUQV{*;A#9nAj&uLmA>se+ z;c55BXRFWMULa6iyvwG*^ zIV~V<9!cbkFV0)8LB%Ok!=~Q-1pNd(H!s#h=w_hU+)EFk;MCP5pQQ7J#`TE{eN9WxT{wnq9kk5WMiu8kr%W)ZTYcqFs=T0G6BegB-DCDVF#-oyuRJ07_t(fi3z1c2#J($YOb8`-GlqSRZ{!n)weuDLN;`sJ5-hA0eh2sQ5I+6 zF>8zzMRT1S6MCACI78I-mq(P06>S<-d1`3K8yzl&pM868a1+T}`!;)zG3-Qlff2y= zUG1^9lf?_GZ4`wbk#v{K)97Bynp<7~V4F>=)q!Oj$Qr_=Sgo-Km-GsHeEU6E2t z8(}7;DCL6eqDa|+ifQX$Yj={&nqJKUnO8dLVrP=nt{uahh`@L=#2JuHF}Gv_b3GG;Ote&8SA@wgh$v$dWi>e z$?h<1MLTdHWii52z@~84@3k}YIHXUi3#q?x5%t5k{VnHunC=niXzImJMX}+-9G4BWYcJ_}NDIl@Wvb|o3dkLo{7EoV_VtG_(= z-cQ;0syK99=AP_O#+Y>t*^x?aTeOaD*BVt^zlaVqm4Ot-iLXS=cL~jDlaqJy21Rv7 zcdfv1yQn~4LJReM(w#uiEuh=~JM**TbIRjhrA|DanKaFpMU0qvsv?U@FFXI*)y+Q_ z0>@ojN2=ni?#lQ6P@8Qk= ztzhf_6uL?G+wjA`sRs9eXod*`5IGzGamJQ8>BWJuOVm$LgCfc}6D+z6{s9Er0p73K zGOH$AMOUn?bg6jKog5}r$jZIaiop|RP-FK?IcD1F<6a(p#s?uBgBf{-TO!JK9uT3F zUMz0Bb_<%D7&o78L_MYJ3_T@HDb~siVGm}5GaW9#g&JM%t&q2_6Xop6lJF0jIZ58%a9V+gtpeEj@u=nB6NxQ$JWA2EB?Tmg3K9?nVdt{9NU z>TCM~m5zF_h8HWrPf&A-tQR?O1KsG_0`8-K6Y|^u{{J5p^U(i3Ir#1PrHjX5+E=Q$ z)gLb2c!$^HbNeF$;+F;lOc7mN{T=)YtW0ToL4R^4HTR}^yd+dzb?4b=9b1~I_?)*# zR#J8mC*z$27?cu!k#wba0g|pN6e#!s9icy2q_okcK#ZRTJrMW_(gIS=p^hH{CmbQy zLVv{<6?x{DhPr~e!U{EE8_QRT{|Eb(yZow*_Chp*$G;#>j=cH-?-D`@w)6r81_EVr zfLO~0+!L4C{>f2Xo8$pXpv49H?Q!D^Wb?YWg{pBb;xN~n9*A&50TM5XJ`nQ)!`FX5 z`@f$l!I^Cd3T5mlNq-#=Tm3H1h`ydgM-Lfi3Jm~3HZJP^(w-FOHD_xQOCpTSv!PHz zlp^PaA3mi9QIz~jnb64OkR?U;itU$Zt&zpV(+i_pI(KQD9D%L2hWl~)*l&YInj}d>Qv{g8`g-*>3)3V5x9@lA4ZPFlc z{rFP7NN;w=@P)b3)hk@mpq_AG6dpt56E+NL17w_o^Rfh4mt0kolK2i{Izcas32d1X z^VoBWkeuIM`vuwUTdF?xoj)QZ`K{?d<9cnX{NlrUp|i0xQR#j+`!S-Kf=B41(K`M$ zeLvg`2IyNGD4ahXXlslGWQ!(mA8vUpUkPgSBKjS!5CXX7(IE+pT=F+7h0-ut@``Eo zCbh>Z^?OVd^>au2b?QG*P7|TJ7pY&wyo$B++(`Wd%5y$amo3xv{#Nr)0Y8T)QSfDG zJxc^jN)9wR80Eu^T|8+dLRgcL%GG0XFj-96wOZ6Qnwf+ECpG51Eh|I_O_H@sB z>$E}Fb4P}xlWm4%KRU@%AJj(Z78mbQzf79`?1mfeb5KLSL#e4!?Y-^8H)z*&IKnb4 z8|PNCLlqb1I6VZV9ew&qazIpxij(WP&ONF?9^GJi4_3h&9|}B8>mpWO)|4MM=TE}n zFtbISLCE`W;A!uXbb9bBuCOo)J_CDfTt0pJ!$g^-^UBc&qa{`0FE7{8*1Nly9_@T{ z(M(0=PAXr_!<>6~9uhqAh95R}sn<6(gsP1>?d+szalf*M>pl237~k{yCU$s&P549U zTWg>E960$ z2wO^#A}JfoE0-U!d$v&4_u%c&8=~jCH$wUSbRhFeWypJ(TcuO_v)g*v@8YX3o$G2A zaqa}fay~H((?9uW5MZGmw!)NDC(=qS*Ld|pbRBMMHqJD@XZG~ySUVY<23lY<-ck&MxQ`fihB+hU%)VDk*`=A0|%#< z;}_N+W2fOp_p*eKhpcdH=S4m3yv^{rYY7oJ(M)~ByxyFYo8|V!xSbJ^wAzZb{tff> zX7rap8LX#I>Tq4`S3tC0|6X{YXYyW1J39If{vkxLVQ0*yJq{o-^H83y1lI%77c-N+ zq?eM)=rw}0^`YJq#E;7~-s@lCg;CE^z`wr(WqrVwrFE>&BeR`7jf}*MC{Y?B{WBfC z-mo>+DaueY6A3$3a*z0IxT(HPNBh&3E>n)@C94Lop&_(1i5ofn$qA5BcNi|3Dw1fz z9;~3fVaF6%-N1m3v@}#8`(iiF|NHAaIo#fs%B#ux-J78opxJO)9NqV70#F7T4gr&U zJ}BPgoCjcl6)6DWpxFpcZLQaX|uVTb9A?0 zD?2|L96#It=%OfjKd?3wVm~oVpJg7k`ZYV{%t~6W?;! zF|EVE_~9Tw{fM4NG>Rb9Ru6ASX?fo9No0GOBGf9cFS|0vSdQzMQ?bcBLW;`s&E4nJ zpi|0X#0q`D887KJ9ahySR0xkdK|3X9ta7tWB9oT?3?oJ(04qh^1)Jw)c^M|?-6d~u zC19QQs@$5Sw^bBNs7R8Ly|bPx@}-QzD|?Sw;f6o^W3^jxu3Gu^C{g;LO3Tvb!-?3e z4@J&Q!>^&a3M`tTyCYA}b&22kj`g+|(iTZ|^WP~DnkVnLx0TBE$ySoFp`rB9951KG zev&NB8ex6lFY+<`tL?cpBB=rVJdzmB?1!zOrR zXY4;9Wtq6Hs7wG_e?@T6uGUYG>ItJNHG@}l!i~B6G2n+^R(BV&SNu~6QVcwGj)Zgg z+m;GB4XtNvRJTP0B=W2D6Kt%)I?3!l3V)}5hZULZH&=q;Qn*9Kld_CMRx!@S?aV1` z(z$R<8qfcjVa?7g0t@KRT5 zXdd@e^~lyYG|*LC(+v(Ejp^H1YrB2(!7ZhRp#Jgg2{ir4o^vQ%k5+h)R&9&y@j;fa zmRsDDyT#w_O+XZw=cF%JS{A4q&?6@(aE{V-Ztsr;i;qg@)yDM}y{Of9^Pg3)({xY@ zN0JSNdYcom*74*DWbkvi?DmWg^O;je6xsP~2bTl&8|r^D1)J z32x<5BPDb*H_7dX%tlOgXpS_}r&}x9*4qc=Ztd71c9$nc9=#VkLRfwi-k+)KGQd4e zCy+dvY#$;*NpLdPm9_$kg*o zAYNYh06Bk(m)0)9t5TilPtzk=obM7fmrgbub&G&|h>>2qV@ZM-Pi;pnQg(D@%>G-K zgKKp@OX5rZVq_nN?^lTc&x=E46{O=**^!w1t_=8e2kh?GrplY}a|NKj zk?^(MKEGFi?IO+ucw%^kldbZa3%`q$RyZrZI8e0wX!0A~i<+P9DMeQhTfWU->PPt$Uue7)d+1Pqr_TSc`TX1cf&R!V9Tq z#XRhG#LQ@jJ}lS9zK&LS!@td47Wvr4?Z|1Rj-dNGbQdQ-L^Q%6R3D;pg8{NAk?3KqqDk^St zw!XYkG-D@gn-o*e?_^AlY|}X6iO!s#-KsZOpV9A|jK^S)c~q>$G(NiABseNa}B zf?UswXw-FHilnx?w^dE$VXJ7CF$*8>?N;O-%;Ulh55%wyv^2mCG)rl_Sx*fnbmeV( zN1h;jUb=a>>HcVp^=VGe>+^X0k(x^c7r)=caV!O8uXzdMV^L^$C9Qr3RdZU2&J28e zdnZ?KPB@uShAo)s8&hl?-v`Wy{tz9SC=K(~jL&IdLIi}a^~q8yUHZ{zZ zJ#-Ui)XL-z3BGxoMMyS7e-f?ktE$mWFtHF^TI*Xe5BW<7qyBh_)2G+3K6K0%_!!Xh zt?~fPla;B!C!wX?x7KG*>}HWeU$yH!FSn(r=It|U^*cvc@SMe1V@aa!k=fHmVQPgs zaQfii{sLcC#?sj#wj~oLJ5OaB<9?CpGR&e_E!CgA(JmzuCa7bI#0ePWuLGTma`v5q z!>WfD`|#@=?oNl|39pM?QB%j>+Iep}#Q5qxUktfTg8hxhO#TtY(BOJZs>*uD1$ovF zDOASg{gD3PfCWC`A@1zEMK4~3;=#La`H1RqMg}c+1@326#@wm8GqLwsKiDa`hW`sD zH-|6T3+aI{H-sa1_;fein9y~$t(n;Mp26g46KNi1dwsy_8%j{;^MhBP&7ID2Ggo(` z`C~#FQ=)5ROkEv27wC@s4S52JZ7zqaW;aqK*I0@62j}9LaQDE`@Oox)a?2v3n3zVx zZ~v)Z<6@^ZZ`q}T+pcp`)TKS=a6B+}S!|wep~DHsE}ijx@x($q&63ZCgh1*W$$%2t z>*SxHb)c3r_2Ua{k7F-`=ec9j^X*wc1R~&1MCV@leO6)7a#EQS8^uW<3Om(99FGA( z#PYA|kJ%9v9jcAii%&yodXSQW_0oVO`#axH(1YeYq!~c5q-%Ncnyds>#SKP&Ib9?M_Dp|?0#0lsct4AcYpPBv90`pV7|9Iyv{s7eTuP#T`F1LP@!OYSKY;$;Y584% zSz6h{A^OQp1aiq#&od#31J0w;`P3}L>|(PnkH8C zQJ_hEw3300&fJn@Jdz9l-tes>r!zT2e_M6O)W#)|?DkFBUj4qQt7;JWJGVKz_SK`j zV3yH)FJleIvPZK*yA@>{qT0(=X?+EJ>NHm9>(`uS&faze(}^>s%~HRRXD?L#9!`TF}BbOpdY!NmlG+x0>I4=O50ova!F zp5*q{gCvUvUxB*$WNLGc77@qrJj^#qfIDcdKB1HWS}g8t|>4Ya3Gk@jalATppvh-bvzaGw&5dfUYL(%3J0S z+4Eyytl7hwWe=!7WLI0U6ydJ~ppshk*4nlT90k%a z=B1S<;E+&3CruI#u)-wt{l6 zk`=z4EWC3(qf%Ze^E~$RvB9lwOxLy5;W+tiX*C zM_N^12Hd#!OJHu?%UmwJ4sZ9ZG);Po6)t=%FfqRQ*m2Zvj>d_dh@l2K&dk($`JOLm zZIhla?g{`!^b!Lg>)l0MDnX2iwP#_aL#UW0M|4{`P*xYJa(ldZm31ap1!(&Z3Ww8V z0MX9H(WS{h$SZFA--J^dIlCM+$d{ERoqLI>29DYCZ)uIbocNYA->&u|rs(wv+YQek z(-9K2hc~#7BV~%8Hd9XVghR|AUS1YLxjBwsW)@qA6ZbY!6;h=dqB0B&o`13cb2`Qd zJR#YYm72^L(FXT)!k-5BG9y zKL{e&<3K%RSu@R0G|D+jG2copBnbAeEihyF_vl2eYJFltiS};m1%l{+pF=VR!wk z4iTNo1jw3pX@xQyk)Cz0q@^6+m<_9inF2=n&o|{heTce4SxD%~J`6eIy=#nJZ__AZ z%gyaC-(aaqA0Pe@=cN4Rnu8BcS=S4r!y&(f)*9Su_vXw?y@O-H#4whHSx0-Z+hOug zn7#{?g1&=5Etpg#?RK=}9p_Y7Ybj&go(l%#Mc*#C)^M<9*WGGcqY-`6sUntjk;I;Q zE{7H+!LQ-_rxJ8Za*D@i;c~k>SOcFYOS2=g`YmOwQzFbY7=&eSuebw{IHy$R+6la~ z!;^!Rv4uW9HW-c`W%UTJ_u1w5^Xwfb$zCXxcsk+h%5e*n{T9WKZozDP9{&qy&qr9CDpj58pv0;l+Z-L93_{ zq##T-138Q7A&OKByxlI(%EI6Bky@wSZ0?cx4Iey;W=`u7+Zp?$Bf~ZqFE2Nff(LAb zO$`vssQo2_Pv=B2o|{O@M@s-cw|sD7MQg0s^3&!$-Rb$Q>ahC}3e0s)W3ti$9N|5< zRvT}=kb`-Jrgze?og}=W_XY$fO9z&3*jvTiA)%n7O=b$>cvr^v?B&}#;jU)|d7j)O z&RC62A$D-d&F=W~V?BO?ac1mEhTeQ4MuQmqMz(=PH*_E?HxV4i5j1Y$B z8wsvlN%qfHMint*7VldSk*aeU6jpn7%%(aFA;nhIMSL4MB{TB2^%n9Rb8VEpoGq(| z^XnQki2O>JJR52b*)@llKn|0JD6uQ^OU)HzsE(n&a)dRw^4si(yg)747*;yvgvw7@ zYeYJ)DHvJB4ZzsW2m)k~tk+HSZNWXB-qDv;_4P6AED;MN(^b)X1{K1_EbJM$6u38Y zK4Ca`OSoE;9Kd})hdR|;uj(>DE34`odJ6zPlX~^z+x!nWvAUT^S!|jGboBck3}xC8 zcHH*!_%O{di&ZqJMje0Ca6!Mk7Ibr^57J$`jxxrDr&o*%BF|DZ1@%ws)N=xZdVGdz zyN7Gy)}3AM>rTtM8h~!(|GJiJXH46O{iyXzO(O|fFlKix{apQ}F+RuJBzvI8X zkw(zPi*Mi>vZ4?<=*AeoK5wbZ@IW_R&PGL+=|mP&Z7GEme~@C|V8bqr1`83ybMV>; zPk{&BfuCWSkO@j4I~Gm<2uWtR*?YHo;$kw)JR)^+X;oO8yboGr>tN#ob>Ot&_;#Jb z^ts~sHo&5YkDj%8n_h#{(jg(eL>5_KQ>v@r?D^qVL_ODAxd-+-aak6z9~t}ch(E7D z4d9@6!Xm_m(`|y)<-w?OX@h65K}>D#an=I#DpCP`!Z*mS4)NjN`7>0MvlHE_`$pl=wnK5Up@pR$A6o% zRWyWD5Cp!!OY~Q-VY6WKE0?L0lMCu|w=|_WtrS4SxqyA$opu!kFHl!sM?9Mz(#y*0 zvxhTIOcH`4cdGU$*9qodVKN~7|7F*(jPOYoYQhFzq(q%_aa8w(NL3A z^<&my0}-1njJOUMMfzI{Q9A*M!Gg;}mz~GQjPX&ASt5mcQIn#E4fF3`M!2a22VB$cq}X53FlQwkZWo(4d+VG)9Q5VjpuwL=2LoHuLN}5MDX>_-P zXm~~xE*u+@b^#s}JJinwHto1|r=(Rd`I>)7VJr(Go|qeWyWgr8CPI{eJI!niI_e%U ztU-!krB)RTVE`$mX;aenj)3*{kD~#}^S3;WUyre)Kj9@}tj&i2ldCWW&kh2#scHf} zC9?Hx_Q6-uBbv`DjGZi=Hq^!Kz&`LkWk@es(E(s?90CPJL*d930E(ACZX z{v0@?_Wx}G7Y*GrwAGTNAF~&<6B-lJ`Tnk|%H=k5EImhzJgt`wfx{TcX4pv5o6R-; z(vVetB-8IFNIz{a+>Oyj_6Ek2SGVXZ`rai%PXn0W_dn#nfz6?KB-gGgP-S~rdMbOri& zvttSY;a!0nm1dvQd?nc$5fMs+9e8m$ku$kCZ|Dpyld${eS*4VzO;Unuy`zD(Vg}la>P!^kk`inxA!$SWz6mo0TYcKYxo7G#vglE_4 z8iyy_7)lT^gQUwDHg3qO0(@aU4Sz&1jOJl@vr4F+94pCmVv-+csF_o>o99K)yj~x%d$#0D2%_(DDb;c=T2CB*%Upd5L zqgagutJ9Q6pr=>Vc+wh(h>1~+I^SnEUXb78vvb|gHkF$`k6g$%W9yn@@NtKeuDMS} zdK%j-b2hOmj_#f%IwiC5l)O;Qez4g+f>GMz)GUSG@-bz(@W%*82)_$mPSN$$bxhyn z+njma+&odtQeR)4Vy9PxF z%Sqci(NLQL%?-Ay|>zF8nUXU51V4s!P*T}Rw;y2_nwgcd9+m^nK0lyR5U2KIM7))|*7 zlsA8!u68r`mZVv1DxVCXpj*`h`Tvg$NJ0BSt1u6C8ZJ5j#68SpH zpVX<{0bz`Z14?}cBy8sxD4#rMgzFvgl6vZo3x$fYi%UT5T=Hy_PDQH0 z*NZECgn{<^HCwx-FA^wM5Wf{||fb8P?R= zu8YP3sEB|{F9B&vmEMWKq)YELiXuWN(mPQQklq9o1f+>bliqs=>Ai;DOF|7K#50`V zTIA$aaxpT-J2Kv<-p_sWuT62R^PtVaZ@`B)0hw=n6ZpO)7}*LT zfvmFtn3?N9<9FE;Qu-BsfFk&hBZhoAz46DTh}H)XTT}f(Qz}7|_7+wy{4)=|;J}FGBfjUu&~>r?pfMG$ESVnJP3MOmDrFOf6eI z@%jLC&04*nPrCM8C8k2o2yv7_iv;JFe~6L4N&sUc6|lU-t;AI{14e_DD2z%cflOjg5X$}eIhSG%ABrENaeIyd4O9(d*1j$ zurw7B9!!4lom3$fM{?Ej5d9bHFFc>sIo8T936*67(})#K`Leq8<-<0NxXABlV_dsYG#VA;C7fg9ce&DtX~;xex})UXnZih;rvn;CTDvu-y3bO4`FXQn zzqUlNZf~E#a<;&K27~M%N-f)MX_gd%uy{FE9or|z8{P?LUgc&}vd1<)x?f!@yy;() zNXXZ(ab&Z*D>hsALJut0s_GQ=+WWGEop(+dfWTr@;zfGM9FqQh)|MInp!1Hk;r!4Z zcSc1D%u?6AB{}WYBl!yqDPotj?>V-09kTN}#e{4=8Z^sZ09a2dA;ZW8gj=n0WLaJI(5Lzf>MxU-ZtUsL7qiO1r(42Y;Vc6kZ?fpWUd3Dricc0L^ zn|Z(6TtT}API=7sk@fQwngCj#q!CEOXUO`sCZc(fLEm#myqH!@!T3?#x#WPQX;qI4VWnan#>toO8X@I2%Sqm$)s>jg>! zri5SsT11SECsM&RY6HbUxiX&$j~pYbedDar5uttuh7hvE2Z8z$0UGLT{*8tGh{=pa zp-^N+J0N&cpuS?%k){^iUfU({$;+|m<8BAR`UN)7EyG(_n-SbSZ*OGK8wqI_y1)d> zd?Nw!y}QOL%1UD#Bzh| zFK%1tz2EimB1?`B8!*DOS-_jAj-eIs z=Pk<~2)o&pz1a%iIoCCj)#}e$pR4vLO4c3BVcOpDG3W&Cbx#hUYxOhMJ>wTkSoJqS z!Rfz2%O?g++oBv;a!~WWmBA;lVLTBjzF(e;w z#=m}9MLF2QU1EEc)A6~8zX<;SFB|Xl%Dw+V?EnAPUy#UNAY|VGOx>`16+p5_nzcbC zyv5P)=P}?21ceJ>B-y&_F$H20Y*C${8DL&HY2A%8CU3EoptU5(_pJE!xpOhM(s9xY zosxu9M{u%OTPM{fv`ID0S^hOYInML@S1RuFZ@Z1--BA5qcVW{J#-d?w<1}lE;hT5L z%SO`T6&P;Hd?{jksZJkv39EP7jVC1wOlU}Gw8Ipw?0jW)+ z7PRC1bYv~@c#4YKw}Y(q%wojNvA4oKoGX!+zkH^gj2M*ia`+iKYoU^DcpjEpSO)#< zya93a=>%ZpNi@R?fx!y$cLNWCmt9hIm8nX+HJ zEcW`?ZOk)2(@9k*_OT0dB-fXYn+n%OtSAHGRp*&*YJ6=DIg_#vnWGF+8QL4xh}oyp zq*oEywppuA)Rnm$zT6tla7FRDa(L#;2?>2OjwR^AkE#JD7>Ph<14V<*t>*>$ttkSE z-Yix*&-tb|DX2@D@ZYZSTrcFkz|5$~8IsxANaC9DD5ONVl?Wf9-cTR&9b}syerDx% z(}RyLf$NTZ(UP5-nGO{dSjg!mENVxLnj;b#>PzNhV3nJrXeTu@_1M7@5|bd^?LiCx z9caHc=icXv4)f#Zgx{7By|cNS;6`Mh+2$ZPJMpy=BbIkLxLkE*J1XrmnY{TGCaRA& z3UW88eG2j|1e144h2vxIDcSBa5z~fv25L9aw^#1HX}HDZ%{G5-eWIR7RrbzX9A0R3 zd_pQ3@qA}V#;_^J8G(|h`;^Zlgga?qbmK2 zOYH_XAM`19;^zY@S^ORuEt%>Iv#dU>6bE;TV%k~#gqV|is7ycZdt9o@4PTgLNl#(= zWcY54_r1pSC+2WE##@;%b5 z5_wkF>Gnv7UeAX^bMdi&`cxRq#mR}N^!|(~nbm5< z{la^?*RncS-e`dOAMlz%!R`7*XK2`4KRi&_a{iw!hIg(kXuf(k9 zpC@_aP40GWuA=i7-ZLT8^}s^ z9)825EJ=0YoLjFXdbOO#g6h6vf88u!0|&)vFl}tVQI-A2jrbU232K*29@we}5$&~4 zJoi^sE5Y1LT^-tEC52K9?oU()w*`$6Bpa?`&pw8-WX;YlzvvK)o4LkMLgPnF1{9Wm z@d!rpAC?Q!zh&utFwJ64&8ZO%a5fHiG;lNtK7}+*Yy2zzHl(=AlA}& zn|D|tOJ$zZ?hwQ`cCKzyiG&1kH=(Zp`fWNNM_S zqQ$;YqK#XddPZT1x^EK$LMV6are?2~Z^~b5M|b;)G~P*aSuiEX7*zly6kdekMl-g7 zIOC^Qi?qmM(#jj^vNK~8zdDzH9@K2++t}uL@0A$0*{>-+OXz-3GjrtHp(jF{;{HVp z9^h=srdK=437kz*?Eoib&$Xk;n)(5|i*KB&Z2v{9N?_D!&;_F-^BH)jGV8z{4?oJ`?gF^7-h%1?;ysd zH9JwkPPG3L!OKrY!B0>XL39DLB_!2lRU)_Al`!X^%Q!Ni)A7p_uJFg0ClGRDLt{%l zkM;et#FA#NsdL)_wL$-=z=w7mDU)r_|8o)U{|(qCMkUP_cgL0LQkqAgP=!l%bvaQC zi4QWr*hz4!;j2F!2MSBSelfp3t`LhKL2c`n7HkRXDaD8`Lc*5RL-xudDbW=&EL`(3 zi#Dvdb}wpc_>M zh4cMC*pe>-XuE42Krk^>clt~)Bd9bdvk+!DHFhNROjM8FJ*ho2scg^13o)?a>=jy* z&)V&U(R>1DzH&mI%Mc~Ys9`94gNA^KsepauwtjD_L8%_lRfqzbZXYlH^m9Eo@{}6L zr_ToL7ZU{4S^;TkA_%Uk$J^vkICztDvE zj|N=_irC+on1b_?>A>OabK~9n;W9&_*t&_?3U`q{e1~-o^AKw_?)CR_N=C}-OAS9y z2XY7lfEWTSo?uu$o1cWpHutU$`H*c_W6A@9nRU=5WTEWOg(`Jh?bFmb%fHFE0d<>S z#v%W%Vw~pA7dStrXS?@xBcmrX9gc3#- zmU0W}8g7rj1Y0pOZ2sDGG0DJiCV*0|=cbxi%JRY4J)Mt(0$Zk9YubU$V|2MV8RJWcA_1_Vz6GOt1? zgwe}(P8hPL*uHP+aBKq-zq4yY?C2S5#sk&I{ds_CX2pd?|0-4QYz@u^dm@y5O{8o1 zQ(j!d4_Zdg?17VT0Ytt!cC?FTx8&LXAg!x}slMeb!|_d!yv=T9HghD@vQ#ka5a zTkmgjM2IMB>ZxQkXjdC_0}sJbL*JOBEbeCiW%b3}S@Q{WXmbhYU|n9~%?BSphLe2< zxz$O;Tk6B(-pgZcPaR!8p~pYDzbbn>VoReKv1OR5Ujg%B9oFhd{G3n2)jp8_X5=)) zQOPD}iJo7Mm{4`%e^cJ5)Yi}gWW1XDiul(=S>q)}Es!oAB@sRO+~ zqa2ZG(>S}IJfTY^p|9i9|DskuLQ~FEj5o^-yahkt&oy(2(b@oN=|6^3^ZS4j;N4534FLIBU?QX~ zk_zUDUq(X-mQ7K778%U7a%(yuTK#hu{e1LXQNsLOHnL-B?RBl_qKe2KXMszuV1#9) zPu(HWix77S66uzE8z1Peunoe^!Ka+m3Fj|?Y-A|Z8uJXJ_;qBZJZ8UpZdb+d@>dBI z$GZ>CPno^5XPlsnksa!UAs>W8p`X^KEvjrKp4}i5it#$ppZw7Ot6U@a=eb_8i9sma z@B6X8^dIe$yT48i7qo{+mZ`78-My|sJL{Jn5I=wJuk*tCPvq!-SBjJj;8}(`itM4a zA;5U}x*X6xxdwoG(Ez9aPvgoQMd^{hTNwK0gngbWTDQNpAcgWAZ2undW0g~inF#S; zX1r^&mrhzB1nUT70i*rGt)^hCpB9dh`y;O}!HNDahgRlk@0fV?*b4BMzVA zy#AFO6ClTH=kpxT{S^#DhwQ+qF)itzH$e`gwBzBSgSaZknnW(Np<`>NlB6w>5~c<&h2(Sm3UFX?NS|Ot@vU$ zZr(7m^gQ>}Fe!5P{*JN49&4U7t8x7lvf6<=5o4=XQK}rRJsje{Wm`>5YE+rrfI_%e z)8>i1+NgK4^0vmrXm{tMq`52uTCDy3+y!ZPV*S_SJtcoWIZr;|3cVA6H zcC<|yTTPX^#k+~cC*<@xJ;~UlPHr2m)hnLLRFwQI%wO{0&-dpk51 zqjra%-|rSu?}YI+Qu$@ne3sXuwPmw1v-<^0wAJPf!}0<~U9-&}NAn$Y8|ZXZ(GmyM zl1e4zyZaK9Moh~O*ih{ZiB9QwO@?w5Czu1|ACccQdPhuBAKq{>L7Ogye)g8moao7< z1M8sh%B#6|S>Kv4DDAAofbYud=dlqtRN^TZ9aD2e?MRd_Ej-H=4scPuZ(qS$2>!mr;*Kc?wX}N?8@p;g;H7 zo%+pSXV&q@_nsgsxCMk8Z(xXP-j<6yLW^8-haC45`~{)co6E=fmGdP#%Spd|GdKP0 z?H_kd8Rd6+>Uu;R&W>deWb*?>Sw$Q6x3=Ioqw<_wlPJw`;C|lP?P=SLM(y zs|wN@y@-H6pXSbW%lfU~#eLl7aXjc78QrW5U(}M7xbndc@GP-BL5{cVqxF>s%X}`W zjC?G5m{m6efkm)Ml(z`2ZmP3=@YMzX>cRjC<>(xdT-I+{${&(fZX?qEa(H|Gy9=)S zNB(p_^(Evw77UDuG!)dWy0p4{*pLBMlV*_Zfj}IIzHI%@y zqhJjEk@|U-sm|ueu^^a#WBl7X zB4`5on6gi9Da=RSV4|t9U~x`*@xn5U^hAtA5erlKB^0Rm84dG)Y*6#Rkr({SkMAF| zvwcV?`)V_5o&f?Mg%OqErK5^ute~fp)8yk)< z76F#jIpZfWq)30rz5gHND6*O;r?g- z|2fCjE3Op=AX}#mTl;$eWQ+ON`hb+;PYC4P?;v}1G#UxUBnBOn6~5&-^iDnR219yN z#-?#p1NdNVi6zSM#m{z=h3p1 z0GD1O_#fBLA+CVJ3wk3peS8%Q2p^g%SwK2_il4TxEMH$@itea;KJbHc>hJv!MEvl` ze}ep?5I?mAP2CH_;en7dWs$G&7WiT+F5w6MBWmYAP7mBZ3Acqv><5MRLX01LgJ~R~ z9sA{T|E~K7P)PrT?e)LJ-ujn6e@}!Nt~r@!`vnXbN1T9^_0dZX6I2{|-7nS$BYc(?72{OAh~M ztNdR&Z1wjZ14A<)7>n{o9G$uW{lA-f`G2DPeL!9M6MKbsG{zI&(ed&-Xl4YGobR3X zOZ8^`6oPpx1y6!-^nC{*fH8%`w?N&-i!BiN_fJ5_KmP86hamxI)Et2Pd$WGb~>Hu0g719>ABiEmjux`*n8jJN8QlQNU1B7;q#=!ne=PJ~A7 zJtD8n9ej=SqV79>lX(@;`D|Mt+^&6XQLl<1xK_?5+ue`Ika0-h`QA#PsLiq5N~!Cn z%nV1o<33+~OQpp{hwa-M1pP+D5n1&^IJ$Ly*tnznD{mDit30FpkyIOGhc^`3e}{EC}m2vyt( z@0$A=Fjp~;Bc3yvLpz?yk8%lmfy=)RFPDv2jOa4#FP##NyvgUi=@H~6a+zC6+stbL zadWN_;Nv?vy1@7dOH0E-byB3nMQJs=%PqZ98&D?&E?&P;Tayi?VWZnh*jS^!i zb$O9N)hFT3q2c<5NwUUt`VH-2E>DKdw7gre7yk{qwmjn-?ulM?L7Hp{xn_R5zY|`E} z`Fsa~Np~N(cHt)ah${ti|FEz0?1Kfj>ha)fz2F#~=6dZal?Vat zxIetb$sLS)>B|BjguU!>iUnUpj3!>s-mQ2NQ_mepm1SgQa>gBUI*g-90!X?JFQIsF zm!{!A1T|;o2moL(I2ewk2arWE9PsUJC>CQWeEf+J=bN!!&9SDAwzIzkl>UiZ8_>kI zz=pp4^Vu>m;y|fiY65Qks9|kWDm1;`8K@twA|dA>tjc%L%VWe3!B1h~S3r4;U=fNX z077;^^0K4|ey|htw-e?3JpO=c@COQ1k%WK{aCR%tEfXuTr3v>SjQDm@+iiTEeTL_V zZ}^Y!m6k4}#>oH`rJvXTLH-iiy-zuH8E84$cQ!o)R|MHZ7Za9P2McBsv86U zD17^wz~Pu3g_vx>Sx25ndS>H>3aa5vIs3p=azjVf0XEY7PqD&(R>1rBfbvoVy7x!) z+W`b+0L*j9E#v3rR%93g2!CCEgui>|Y@Slrf#(m5ZqKPkfL7i#JseN)F`6XrV4B5vV)fVAKOblHO#%Li>PJR=7ni1-Pq zSkK6x&wAU(34k?0SWdqFPdKc0dOmggWFAZbZ}vLRPpd;5LqmBEd(;mxZ};<;_K(?m z82W_i)s*^~$47on`cVc!%C;juV)biu59z7&KE>UgM5J#k{i1xAfurJC&_5>xOn|>i zKTguDPR{ZC-_}%8vMHi|dIZMe!K0TUf0n+3{3NM13J`<++Z}BA?>VX&eQQ3*ubygi z*cvE$Mx^=(;7_i?s#aO~y4xI>zS5?rNODxChpZ(ljd%~c`C6)qy~v_Ba!~Sk4n%I! zAOAoZ@O$74#Op)g1C@qtuOT4*&Htgc@aG1C83lR}S50fsKd-X#LrvrF3mKXOwf2XI zQ8b&959^^W_0z@mF1sot}`jECpcivdeiEZl8FZC*`?UZ|#g5S;j8ZRA4M(b`xnOpkhQl@!&n;d|8(jtVY!s zLu?!M+M6R9BHlfLDi;gVl6QTl3zPNQxX=6rw2na$u;@imYmu__@`j;`Mb{4EUNwGo zeIJ31gNAtzAF^!+Ed5~K@)*%<>p^`mUR>Q#&d8398=|jZH&md-n)&gyC|Q2K4-OwR z>yco8EF^O)F@I$&EzfYun%p(MCu?qc;q~zzKS%dXInID<@g{ycs6LsqS>g0?98p6r z(fnqXhgHJ@d>=j<$)0sh)$3W^0^|mo2B;K~2z1#3%;06Cc}#vAb{PTXN_ef&Pd!wJ zAtD58j1DEV!)SgWm41vBM+dtLCaXwKI4>OUuu7g>egBm5(zi(e0c?x^T=teyQy=eU zLjKO?*)hjvxQ@;WhftEQUPJoE3~G~O2J5h}rB27c6>HM#a#@PhR%Tp-QYCc5yqctB zCdZ6s_0a>i*Xqetc|;To{ei0$gUlm5tABG_+8^uo^J(05t>iK(1sNr;}aqkV~jkWrL;%oOpPGCI*6ZX4Co9q{BHm5~kz zN%`^Qo8{6Y!0PEo@(hvSJ7Y;}DN-2JW`RtTA&;q9#LoS~1W=>vx;V>`o_mX$w-`PKD{ZnSxpxufHgRq3|V>(?{A zD&<&I=JaY}G0PJGLwUFBKb#@@uh5YHk5Y;M@giv5{z+c`_MfNprtky6pxgTfQDEEP z(+xQj053|XYrsDkiK5a6?+aLc2OX_B0Tk0sfG~~&FgGR-)QZg9AZN5>xexIEToxPs zlhoC(S@j=N;eYj-?9VDZ)?@mCK!^+$KKC^R!nfbvUda7>dHx^YGZV)Me+Tty0@b2D zo$sJ2-EG}JSHOXg++Ta;^n)%uQf2Lw{vVm@KcpT1mfDjoAxg{2KRUxNZBqM2=D<=X zr8tX53b>qepH-%I1zT{+5H~u#iV-D4xTm&9qg{{t)hmYfj%JN^=%1IK3&^c{DC$Ur z4Rz64f2<~c-^B9u!WxY$h5T9j+{(wqkzVS~N0k61`hmE?#RrcE=2Kusx{_~4cDyLZ zvUhSS&Bi4XaMZH69Jkg&EL#J{0*o92AF0%{z!xOHgQhtqKIhkEfdQ5K5@HJ|&KGwD zg+N;opJgF#HXu`g*zhg9MG-#AjgAA96i&W_Yzocu`blBOII3a2;|-P=)~bp!!YglfdpwZSa$5`RC`)m;&y3Dm?VBo9rz^});-$848^FK($ z0)c?;iz$lZJLu{jZqkeiW8!TDEbw5VJ_*2BG*d0^-8l6ubvn<54&iz(nNua0*B>N^ z7ZapcWcj3-UBx^@LyS=sEp$xk1I{)1Mu)H$HL@@&SKa+*rX6&*$xVvpEfcq!M$?N( zPPhtAM0gKjwOn%jK0-zNZq0~@v;Nn$WQ%aT{@Z8e0be%UqFSzb_ggXniDj+&nPnHZ zILN>$YKF@vVIg(0uVo(57)c97yxFVOcUjn4aB#-gn^mpBZSvUbZFWpwtQROOZq&;% zaN;*)LdG9=xY9lq3idN(2+hBA@FuWh~6 z-EvH<-5e*@t5q|gQ1#1?SME~jJ_);d!OcyVN`#8}FsF=&r)7@0vZxqo8&T_GwYDFS zjE(AJHhIxBsBJ~LOvXed9w@pJo7J~R=UL-xvmKI`ldIg5-mqNv@LagVb2To!tZZ~Q#vh=WWb1pVEo$2rpP`Up6lflyS zf$%RvFC!Y+=N}!;>wQSQ=B-f;2;9t4^mG=VIc*nFTEtRP0Hiy z;p5QOOvG&oC6@Lgfr_tvQ`PMixso4lGAEIwljObTz+=YOAZAOkE)2lBi`7`dShbB~lN<4r?f6dARhCE(nJp@x zWqbk=@ZIHkCk<6(N2}gho)EE>U2(7NapxMwrKy$#|giR)n-}EvOiCzwf%Go zfyKZonF3kjRDN64dyzzWgO;u~!h`B5oX}g9H9u#gH@m}L>KzlTqN*m4^3IJ5k^JIs z`jC#5PbwYxRnC(z)tT&C}T4a%bD<0{JzOM!GJt08{nm)Km79t3b(m zCkXepL)#dw)$q)ec(HkQeATOP=ZZ5TTeD@NnAp;sG`!1fib$*jVv}HlfsWWWs0hsMP5eXR=@IH-yzT9&XVFi% zdzFtBJ9$Ywf~B_@4|hh+z@J(kBX#c&B_$a{Z6TMIdEN7xQ@902ZXpsB@^L<5sp-B1 zsAGQ=lPq;Zkl=+Jt2vnL+LaUuu_cDw&yPo3_e_b*(U7Jy^_N(2OF%Z;$|BpSU?ki# zb{0Ud-@4VsmT#-yr=IYB-*#wiba-vqY3?$}D1}U9vN!4C99;DErnk zC+1@|+FGl$8>Iq(PKyp~ zS8vu}%(1TROMgyjrrD+!Y0ztUp6ykOy}&@Zt58Mci*fxL>>Dmy)~aZ~otZXsc}Dq_ z9@-0)PMrm?HUzoAELh=d)o{Vh)y4f)#@qJx9QLp5ck=BFKo@2{Ej*x8VtCm|4O+ws zBO!*7T8T?Wp)&5=1$nzXwp^rgbxmQWr#mZLwXlQpH2m=c%GWK56SpUD_}1kodK|~5 zH}>boytFMHBnnuDKKg6K%q!T`D^a=|iF96nHyQa}W@#u7$LbE(s4S_dNZExYv$92gp;RcV7u;q z#tjo=kJK^in*Z@9U)DP4;4Q#ZxRJZrfmX$+Eld5NAWW#JK5*_q%xlhqVtGX-Pce?` zVYDQkW4Pc&`^)ZZMrCzFcgD-Ka4vNt3C%RN@%t^zYDHftzP*cmVcuxr5aB4%v2!1w zQ2`RJ`T($15Y99E{E*|S=Id$Oy@vOL*AD!YxXOp0Ow{rN`iH*PaBah-qoekvHO9Hq zTcNo%?&--{i38K=%rK_Ay7MtmHc63-IcUgYMBKt@Jx$#=iimoe>gtreZaMKW{p;xx zU%MLDM6j@K-=9}k;%;qsvh`!wVe(7cXn6iG4ruD!iBuo1XR(U+3<_L(&fRTQPhB(k z=~`%fqNXcZ!s-fS=oa%la)zE?DilS~a;c>rJba|W5m-HR*b{27JJn9pIiI4^{!YYC ziOhoDnC!H(NwlfWLwzc(i{9E{PhkqEyr<-R2l-sHCsqY=`G)*J#-&f7i?RBEQe*$^^%GB_%<8P< zx6xLPZBAD9w_{F^%L8Xe<1#fgD|iW9qq;10-tWCo(yFCzjs`@c_>5)$ZKEW z6z!?>R4c}D#HS^N=;Xy*9%}c#ExqCSl&K*VFM}A4m``%N#%;Hr781M_k$C!O-kCN_ z;ol#P$Wq|3kkrPVk&Rwy|DeNEENZQ+%euxjml^kSNvZ4KFQOoKL1M5AW!%JGkcXHq zr@aV7VUh2)#P&|K58=_D!03S^==-x*W>y}kn0_skLSQL^xR-9WAj8Gw^0*thQ{KZn z<%tiD_epa2g2M2ha^H7oVi?abHO^nj8xXZn(u{g5!ay29{KQNF(2k+!D2iM-3OGz; zx2h)&-??dQXu&rpcYKd4BPuP7^C92+2PTe+k6-4W@?xZipF_w6yuz7U;5H+8xa=<* z@lz2yOls9JU~Y@kXADdNy!`l6791yP9t7lol%lP>&ZfUQZU_$9>3C=*)%9bB7u&$H zI=PY&->CZxuUKe}NrJ1eX^#YWe30_V=FS+pCklfC=j=0 zn=UK+g=ZqGC0Nk~AN%$(dX_;ZYM+LnOjLO9=ocMwdIXtQ@kfxI`{Azb0zQyN)t zRMb__5f9qX7mS-u0LE6j>ea=q&;6F3_L8vb1gi5q?MpMhNA+wT)%FN2yYwu4k(eOd z^T=Lc8J1lh!8Tmr|FGSVTp-|~SGHqLOc6eVe-y9582mawceS)f1oNyruN(1{%6D@; z0Z%1x+dYbz+NAWGx=qs9wf0fm?dI*|^Y@96W&pRkUJVIa3|rrybBF3w)(*?gDl^rG zSX3$)M#jCPWoc~EWW7e8_7x-~2nmb#bPGG=xKlz$qcy}+C_gK-u@^R=ZcizFvGCn} zmbb<4_J#Z#2_*ZH7PIEQtq8g6N!v2?W1QqM;@=X#aHg zRBc?p|8}+HajIlpWT}4WAMm5Fed6c>w8Y+yvXWVdcGr@{Bp3(h%S7|kOO^f9}-RQ9b(Wf(>}^5wIa9A?-@g`GJ#aZ0xiFNAo>ELQ@iJa z2$)(PpJN=cVHsYju0rWX0_JI#)qQY?P{n{+lvcit^4(L000+PNOc1eFS*1#kfn}It z4m*J+r!CD(dHIz`RO&^bh@(^9>-RVncSHKR3Hh(b_^A4p7*X}+v2HvuP7Yno<5VW- zU{nG{e^_GBU!JYNdbQ!^ak@uXNF6j`(_7&dyeAdobx2$y`yC_^i#xsTlL$UtPCe<& zxm)2*@R@Gl zgxo#pnsfSxPp|KLQMczC3@Y^$1Rg%`E3uXYMwnQJM^K1gPE?SMBat*eFdF8xDLtOe zZMHi+^m@~W<^#C;rDVd>z^)GA*$f&|bm*7svig{7q4F zJ?Ygi%^pqniBpS)yB#e%B7VMT(|n)`rA}s5?Ojm;&{tm9L(O*PdR$WeT4`GRt|j5> zL4h$P)p8iM6qC1PLZh&ev%M4SMTMT;2|-t#pPM25?dbN2nW&HTWRchLrSD|vW!<~m zu2in`SvSlii#$f8@Rvp9+|AE>q;UKkz7_*V+^G*Z57LoCdFkj}AS=DsMc61(SMC^CMUq&b9q?pXn?9+F>Zb&NJAlTgo@vqnW!PZI zGMM<>*9gAxn@cYAJvjf5#p$14|I=c1T+tE_F}&Gy{@hIlqc906<76ww$oJx)?`c?f zs;JtxmzYGh6#Tt`vgVaY|3faq9WV^n^VP3shepUF#l$+Pe0fRSDeQw~zOxh0lddtK zNZr%Lljk(8VvG`c4z%>dfQ;>z>CGRB%75bo=MNm_pZnZpFpd`ZK5-JRfg1p#q$~d& za4FCUSpvT)^cK!AFqztlpJIkQf8uDgIY;<@iL_|a&W_1_^2Ao$;QGrKEe(VYON!q7 zi}ny z`6TGbr|KSX!cEuc>0Xvr-VR#+#tyJ&%pqMW&%2$Xn#D%f1Y$)i5m{H zJU4T5UdvW4`Ls3l?CXQCBepz|v2^`s0$XgmnX@Zh`?34w?JdsYYGTy;ss1=-WO?j- zKe4-|Ud$LVWy>AzjI0^C>Z2nrM12+Sk`sP{v!A!^R8z%;UWd6`sKAns?&NI(8;{E) zz}L`E>!w>@PGt_yDG2nk#jja^;o+uZI{i=}?04a?jBIg=zHSkI6P8FGQO{R_AzLZP z78w-~DzEj3rzj?kWiozKk*ms=9KAFBQhp)Ycp){oplpxM9i}(tEi-mfjd<;hsXW}4 zrWJM~<$eD|E2&fKw|9D-GknVP8U$58;W`aQYn5_mydREAh}$m~vce`ZgH+3h6Nlhm z@0TG~XJt@SI>DDnFjM^1g6vn(1PxrqTb7&K#Hi*PYEPRoQzamLCH*}8~tiPmZgxE6KyQa2)Hwox8e z`dAZEIW0Ruk78h-(cz0Zhmyig_7radqb+i*?@S%&#fT{E5`}-O`3`c=BH0b6VSYr~ z$;7Zvmz_Rn#b5CeJI|;IZEHI>EBo{_^1Ge?X7FD$fVbkvUGqF^%|eQs)ZBTA$ifczf8*Pa#g&NsrPY&L2bwD?06NKt`eItozIs+UV>!vMwYF; zP>h%{te-5{b#A)j3p%1VZ?$OnQ8f1rw83weEx(0`OxlrsGuL4*cQTp+hf2sTsv64< z?O^2?hV2SmD3``QmcPnusCX?i_$@OnQq)qlJBjk5Ojr(xzWDj>}~7OsGUH_K6t z{H5&?uAITi0ft4( z1V1Q`VQhuxrswG1zmC6X{2WzV(QV*KvZJz?zqpm?8=18}c9KxhYaLbAi;<<+v$fm3 z%2^}|B9sv!VCi`1^cF!^@MI|eNU2t=+?7J?sZl_U$!ur7xPXj8IOT&UEPRdr4BqlP zCC@LvwCh5;sa94FuT_p55$5dJHjw1Mceg5}px^L7HatzHTs$dHM_qKv-^p|5$;v#gCY|kfe$^G~eo-Y@ zYKdDPwDw^G4Oxg!m`~Q)-BXKKjpevw+=W+3!XdSod#9D<@rM_?6Ch80{-sEI*nPvT zDbv14+KV0Xrt)Wds$(glcWz2{-+6$0z*1tz*UEjV!t|q%MQU5VY?G(yOm&&RwUD;; z)Hk674$mPqGmgn-dDJ_cqTkE37NLPJLh~V@;}DKiq$S|El(J`f;aO6#4tPyLJyKRm z_@j^3Eh2=O0CB22*zSqW7J9#zf5h7V@%4WZcW=gq(YA`8+6@Ij21<4EN$MlsK(W_U zhAv9wR$!R^EY~#D z#%9YJ&a3;)(`(&uRKyEx=hxt;T7Z>YDuuT&Vwr*X0|=qm_2F382ouOb&kw8^HtG}w z?E+(gY0MMk2<7mK%D{zBPR{(%$Ax=^B zzw92DP6B{r^h`(89i%o_ZvxGZKi{;$pBIh9x!;30nEWx4qS!Xr;AmL z(TlO<8O}C3^RqHnI*%?#wr2pXU|F;hAmW{h(%^7jwzh!-7e#qvThEQM7H(HTr+gZk zr7@hikrpHJ6e3jIoFM(3;UlFaoRs*LEH*R-AL5mET7S}cj6m&CVEj+@zuE7_y+8sPeLMXrCG)l^y zEt9woKbIQOvd?yO*!%(9-i5@^{7$ z#`zz;Di&-vSlfh%bsJbiZ|yl5Ean==NyTF#Wh&80S-p#?q?WMNduN@d?g$AR>7!jVG6OGg#6Uk zC(4K{=nxh{#hz!l`s%$W3*tMu9MbUfhQsb95M%d&tpXr5n0?dwLw-#3%mY>_N-`wm zU+-7Z7eMKj2f%giOaC8zsEP^dM%+Rue*KuBxFlbWX7;t19s;4s=6Z*fRYX? zofK@xOQkqSqhn&ZvNl4ns*iUi1_99=mXvdXlh(3x3;2Mn677lv$08k>ixOlj%T6s2tfJfD zZr7V5z3%7|+90c~#O!dac-kD-r>w#aPoH72c82QO2sTcHi)+cH*a^41$l%o5rS^fo zG^2ZaJe*HQwhsa6XoONCiZKN#M(}3%Uq(iKzjRn%r|$CXJT3wx~Kd$d}whr-)<>NO~ay@jLmg$oKAdP6y@LSnGjmbgjXK_ZCt40xT4o4pE@ZZ zMAz|UXI@g}^_nKr&Z@>P+E}dA=<48JtsKlUkC;sQ%k&oc*jek?9gn&Hhr73qi|XC? zM@LaXDMh*^1Zn9WLQ14Wx}>Cpp&JH4LQ+5&C8Z<>B!(P78lnvpA&VIA^{{dW$Tu)=g&Rky zvc92tLU4x0$N<~#BGo_ZlFPp+lDw;YZ<29OaxwBv;Yu8lt>^dIZE42g<4d2c%V*jq zrd`x36hB1@-+;>ckg?L{JEqz$z)<+oH3xeb`9Ss&Qqr8~2wQj0DhiVMc|lhdL8$#5 zCbHyLppSCOH`8wB8vzhf!u{ho8gD%yqoT}TF@&L1DS4aq;nVZ)8HKjgiQ;cagss>Qf?JPr|>-trAB&YL%y zF_xhoH8wF)ARf?LA9$L6@<|JpZtegIUBp4O%KWP9(ySYnPXceqi3#GI?Gl z_ds=DuXKkXlFW`}4qnyt)WOU9>jO^<%$PU@^+@E~ntrMJ z_?6FyZot(%(AsUDfl>(6r)fmAVO~c~Mj`90eMb~yEMx9!LpT@i%R4^(KBZBMgVeTx zWJ7|G-8VIH)I|f+@{>JWghDGl)D(5M6&gAfJ(`(>WuI z@Qhp|1fftpuqT;q_|lB$3xNRrQPNgO3h2anBPi zCzPdd@#Gk8kA{XzlcC>2A5^J93`WYhxc06jJo0Dd#mbecU6e>0_1Yf-u8oanNyJidfM|#5V&FlYaoAd8$K4ZUeg4uC&|C7?ypXIB+{6iX@ znpZ|?RAQ1GK;{JWBBR+FPp4+=BZ7LLvZN8^CiqQMO~hgWGRe^^=&s)w_%z951WTv^ zTX)gHO7Ui{`jKgkx~p;aGBQ!H3?1sE0#?5 zzmcGCB+AqE@yiQ3aJ_t@6!U}Qry?HX31ul%1p`^4yQ3lS0#zNAud>cE0~f?tNQ_9( zaOA|-efN#&8m|{;$4P^PVIMg7e3d32dLht%`oU7%UBU`RAlXUd^Hw4{!?}OkK0n+^ z5OUw-r@zE9dx5?+#`4r5KLuD;Z>{Sd5ZBFf<9-1U}-v#^fUagCEAqvh@cE5fUQ zdGC#Up|wDqQ37f930}BhjNx?Wa+^kZg_^t)&}38&+l=BXrZjuZxOm>+8S;eQAtnnX z5e1Zu^jZ(?&<0!7(jV6ytL<)AX=Vy4@jeK`?PIpX9!MCfcN8gK;VylC<70{1Pe^Di zuk7L;7?RZtmqy87!0!K^hmGvxL6Q;Rix9abdkK1*)v2)sC#z8Akkv(N2fC-uG`Bmv-8Y5`Rtt zxqrnsL&2|D-cq*%ah>psj_H|8X$G$HS1+IMbt=a`Jytj-lfY24xvD`qF@DeOJn;HN zV#l?}>*RxU%ILE>TCfIJGsy{IDJepoURa&tEj%2;7tfx>oo zGR7~|VTJN}bM^v4W0mR^=K{9?jvr;5??>hNOFZWF9X&~$Wi?0#_`VQlO;fNGx!OZj zWSknGgkYd^trJ7vG!65*VwTZT4jG!v^_Bhc{TlSccHbux z`F4U|zM^`kTcA#FS5*)c$)agU+yN#sX{S+Ll4L9M`0*eq!^lGkFaxGpcNEUOw?4#e zF^UM#R<5?=dXoh2&#eqi`jPJ6-*aa;=M7bjQ&*1$+AM|_aS$Y&@rdU_r75=KP32IYW%{|Vp3bRG4#U&y_!f0;Kt^o$<`tb z`q?u1pPZleRsVSII+bV(7Au~f=v32C9eK;cRDnPy?8sD&K661=+wDJkFKqDR0dI=_ zYAoqh8yw`jN47rA5QEgAh!9j`GaK1+Ou5)!#u4uXw_g^l{j4}sa}&S%)g8(K zTnPuXU&lOSOp%Us{-#q;QORq-~4xgVG6^0FcHy*9MkP6ywPVBhOGnT>l-nB zcPO%UwoJuT6QlJ;NAsW5);0(pEaaG)494ZX6de7OG@?5{r@ebgf4=NpwWmI)UzNly z1lN{BWu#iWiSu_$kJkJOfAz^Go;H~2r{9B==~`4e{2dP^{nsn#7lz};FKR-v_ zTGEfp8tyGe9XEML^l10!)dp$2|9Wr+${FBAz?%+I#-RfAO zN*7#^lJ$zZ0546Ldgy9(1IbT1YB})GDPweYp^U5O+vR#FgBoO+;er3N;WEK~v78Zq zDaQgM6V`0*;l5&95vp=za0TDA`mAN-`FwKKMe+Je*Xe7?k%Ki$a49PV8QtDQg+opH zwMLGl_0j_I)~Sfg)Fz-w<=kZ}2!GB^KKE$eD(Wl@^W4;8#kcA$5k5nbrylIeesno= znY`hf;g+vcqGjH;i0*fV{Am_3ttV8TTFGEu07d@e$8s%rP3b6KiC{}`jdKQjLkRu6 z%Gi?L2(YFY88Q3u{2v?T^Ynxpa=vlUjZarbSRws*!PFlGuviLZCe+(Hk!(5kiwRy;k;KYZ&q%qImzCUGbs`_nadzi({I(b`a zX_@k4H=b>-Nykm{7k9*r&pWf0;^M^fHp2Hyouuh|T(W0{MtM_**1N|Kf4m6dd0K5F zYJz+>6WLLXF+w*@=tXXtVW@T=HNmt)lx>igTp}-Fyc|oCZOO@s(*v&rR@r~FoInq{ z0GcIqq%NS#W~n)D+B9`>@UF@-=NBF!iS&DITBBuT@MY!bAx;YRf#|76pG(-+6h*0w zFNi-#S~7&6;1h}y@?RQ`@iHgdmQ?)#Vh1Nt$+Cpz#ouS=SCl?gaS8J23f=@T;8<~Q zS2`Xk21C@F&&j?Xr7-r;{nWjWGllxdIkYg%?RU1P4>OQF!jdYB2XQIbJo7@?LJYCu z7*|d*Wf_{_Sv&>`OnHG~BK*l1?oQh{T_CpGntb zF?&-}59_`AF!0DnA}>ajga0Omi*NGl0`+k%a_Y^nkS*7eNB608h$CZGvp1(Zs(Y`6q`&k(9G-eM)2fD>ex-Tkvd2~ zNT}$l*RC4#avAv8a1v2*tqakCj3~PI^`3=GGy(XAsFS1|!xs}YtD&!T!jz;9m^9zx zAgUi;J#JK5(rBTBD46JObQ&V{1Qxu*H0}#0=6uHv3MA6xB%trsuzaZHxo&16x!dod zm#A4t)i33)I=a%<%9AH1M`$2Xv+3DHfyuL626Szzqh5@bWRJqF>dPA%l;7*!P zVf9A$<;np^Nbsxg>xCx%igEI2a<~nXeM;Z3!vj0rYT3I9baWhd1afpG?2;`(OmuF%*-A; zW@7f{WNL#uz7jvCZfY&TC2fC0bQ$S3Cq}an>E*i-fn+91btu}Zx9$Vvow=)jsn8gz zfA1$~viyz*M>Z%W$e3}*s(DD0VUlc?Q!iDuzHJ+t15E&VjRdUd7{swfW|&d$jj>NT zNyV+VqUYYCo|&jYm5~GZ{xg^WrPXNegT9|y*g0@I-)mBr%G2E?VrV{lN~e@K!BtVsZSMY{xAm5CdkM z(T-PwikFwU!y3E-KGsnco6s4$Zv6V$KGkWVR`mY4EjqmYnOT^)SLAW(;P+{hxh=?P zRFcjVL}>LcyYm$OWsS3jlQLuUcy%UfLv6&VYHK-TE2HaW(-;%MP6+qNi(yXxW_PLu zTS{gemZJo4xcJ+^yCaf3Z1uv_{?!Q`k57(NYBIzUU1p-mV`P8OK8*JGO3>)AA{>=% zcM;GxKH-O;fbH@L4-B7LS=J>p@sC*1V{ zJKlh-iDmpKWA3B(XjPZXlYdWBeZQ8u&PW@J-PNffy3BW;kazkjt-fG$9rD-jboQ<(1*YMX#iOYpjI=x)H#kKALA#UNtq%z$FY?_H{{d# z>gN5sFxg)P%Kq*r(4uYzP5R4xuc;b+oFKaNv75|1*xf==+BQE{d1f-Hd*hbX#<%Ps zF+YYdQ%c0JJ6zh4yh|%eb=HykVqDCSoV)hZ&t+-fTlb2CNI@VPaxBB}o<|hikWP4j z?&TJ_*g?)aU7sYGd!>s`uR)ZzPRX(qK;E!6I;Qr(;by7>g``?!wCy&G{^fZj{a94c zWcTc=hdb{wl6LsL%@kn@sY(G%9mijys;UX!hT-z8%~p9&tBP^Cim_xM)_?apsxJpq zAOFS3n7L5|x}J&s)Yrg^zd8N(sk}|D{&X8Dp#!b+3=@Z37dIuy`Te0@mY~v706CrF zh-RGfcR+#Sh6BXCx|=oZL7HMrbdhVIR+mtrf@^x1$9Q5c%&WGdV!_RYbYQssOS0|H z&uOdv19=bawuK4YNqZ0OZPtG)vn!gnBd74q``m#zKJ7kg83>ddVR}GxTm~~w zd7FyxUE0Zye#aphS`@}>Nh`ZFR#G4*=Fyu=xh+5!Cu(j1`#-7%nu+u73M^V{QW&8bwSF+zR<8i5 zhTf37o*J#fTdC_$aJS?p^4Q1o(;T|e001kD3J`X}l>|oY9r?nahOB&p?*L&ZF+kV} z?@wVTUqESU6FbxaG}k&^0n@z2=8fV1?%#o{TmXmJ@KaNKYydN$JY}AV11L|q0m@Sk zfXKP~q{W}*Itj_U(u{e5T_|?=_y@?+JNZnh=2G$(;jgwz2kA|9<9#t^oL~1Ynf`%1 z^(_NTx}~n3Q(xYr&D~Nox?ET+fmPxLx{3me&kkb5f8)-dTmhD z%mUzyOau5a;{5513`qUgGy#swB5h_ETo<6`Nwx>ISdrjGqM$V>lZDxU9tD39pu5%x z*f_sy0t_mDNW@{4bFegifVVM@zYvfVdNBYRX{S5_6_;(7(A#s@T{Gf{wEE;EKfBwr z$qzMf+F_b2{#-w0JO-(5t=bGXiw5$Gbb!Oe_cp?=l$ICnn;IB*?$8bv&PoCP3x^r_ zi@`)x8ZQ=6veLj~``d|2wU_nw9xd}m(bFU*vq~by(!@%d(egwDZsQ z;)dj3_SCR7oti3NCPZQ&|1hdo!e@YE^c{@DA0W^^_?!tjxNB@@!bjja?(+!!Pn1l4ho%49wk~UCtfW|h{=)n;CPcNa;yWvZ=TT$KN;Pvqe26*m z1nG?$1s7j%M*xmy)r1E=TtjW-I6y?p2=7F!Y~@mFV8{E7o}Q>yri3jhZEwKm$1l`E z%$`sjE^kCxpSaX#0Ux-F=!5q1pWOy&p&L%x!D!FNS*9$O_uSL#?Vn-9OIIY zvpL0b`3}l>k_D3Fn}p^7w}DhpO|{)HBTnc#G`*dod|LkluXf;9>T&!S^ph4z^*a<^ zFE-LZM4geHah(|q$&SxSC)_7sFK(CR76Hu$IezNawXDXZ z%xl(*h=*izNHfBi7cQ}9MF zM(Kx01|22~ct9TZyWC37V8RYwNUsf8JDeUsoVsU2uZSujZ_wxg)ho_x4~rG5*wb>K;AIFyrO( z&R;$-G;azE7c*z_c?hZV)6rtftU@PAyQLk~otY;md;B!L?9pesho*`ZvXmg02X~St zo|xq8$PoE{KvMm0pFgDPY4SK1_bSFUVSWa%QxF;kBA7MJ*U{$~FRJrbyMY=EoW9h@ zThff)rgS`mFQFuMck@lfVyDq%%l8M`#9jqVTJU+}mY3FNw&WiHN`hux#fMih7o6mm zolW$^Csb9J{eCa1n#1nYC6D`c59=@Ka1HY(cWZu4=nA?aG=NE6hF8a|_vV*omP~a} zF0eM`Gkj*fe4!~As88VB1ay4y;tSMu%%s8#52NwC1ME5x#nxMbsFnq{t1FQ*`#!f`JEgKvBdfV(A zAvBdGuj{**DJ*F}YkqDeQSR=>HB)etCPB|-et@5lX#eKq`wNe z?3nzy1S=9xz-2V91$^z`(j6N+(^g<7H@f^UKGfG)A%M(d9vD5*9gLDSg<0Q%7m z;BU0IPDH)4g$5$kT_WlMcbVRalqe0fbX>8$UW!L7+|sAOfY!v&Xf`+Dhg-BbPSUDn zybQJbU+KTP9%T_+yog45<*=ic%fbL z(K&3|3wByi&3Aa!F`E`25JQT{Qj2$O%qpgksPJ@g@&8;j`LXo;)YX(&yEHq!|`eD^S;D= z2c>jRBK~*0a_3(}VgIQ-^6%mk|7_dZ7}`Aqpk*i02eIL|?ZI(5^NBmJg@> z56}UyYs-pkBIFN{Pd=9QJWc=L%&>V0wmLZI>sn|5qGAiWEnIIFR*wh^MdP>m#uj8% zU7E<<&F}8UE4};HtIOC=Z`(C7+UWVl3M%r`CnH4fGz@?^QP^I*ov2CC`1n!&^aH%V z@9{e2#ep}@IUu;XrilBvQmE|4P6l0^R)Ac;V`rudU0(OmibX;_h0YHPBaXY>-E{r# z^L!YE75o5I!?7}Mh4J(zqsmg6&)8n~+)7*(Rr9HfP+S)_%0V)~fPP34T!`6dC-Dvz zWv-Cs8Ft)gh?lGQF+M^e&!(fu(NISxFpZpubg5i_d3<6TXjAarUeCCc=XC5`)dU%r zVn3exZO%bF1|Ir}(9Oq#qm6)_e_+>{G(e>+hf7lA+pPCs>v;V{=xW%q~SAkQaG^GXum)ylFlA?yvSms7Fyt0iTITJs3 z*1dJej&GNRR+WKvVwN0Yz^daO+`LL-Cq`5I+{4xh8kG%3kCg|8XkEHNQg7JG1m|#7 zMg95=CJwGeX37#1ov(V;LXcXFo-GKqDP_Q=eWT@>x~d! zpX%*e(bk#ShL;09j)J?XSh!w@p=_z0rtS2HQ2gmO+vITCr3_LKGlN?3kW(rks?;lmPI{VMKdvsz-dQJ}BJQ9z3&!5TH)3WZpKNl~9V69`u}>u1GVwZiSsNRI2cEDf zYwfeV(v6?wU}QP$YX`0554P~NDBDgpdf7!}TLygC&PZWwMbF;fsZR^mg6 z)5~F<;H@0%NIjDl+7Lv<{*9In?^!cEq_*<}bzZb&+J{;Ql&ungq0N4m(4G-Q zbbMni6BXp$q5yBNF?7lcaQS9xrx)Yly0fapHM8t)9e%d^;k`t%)T&cA%Xk2+mEnQW z^n#tnb=)bT;^p)D+9rclkq6vq`wx?+}wZ#kNUL`SB@~vU1 zlzjdxXO~0EtKjG^&RUxXc@xdJ5HGE5AoCc!YDTww1Olg?A79$Pry^Kg5*<7AI8dME z){^op=$6%l0ezMO_wl%$8~(i92d?Vv#U5(0*U`PBci1s(rQ==ln%fuasY{pEbz?&K zCc<;M`pFJ;$t*mx9Kr1b8EuUq?^QEgNe#=~ZQc8XL@SrtZRMK}HC!a?YOYUKkdfKU z>x4B=4oOlY(~^F$c@8cKjm3S~H&tF4t@?6;=fP4B({Bj&W{DO3^kxn>NdV{mqbXQ0 zY2n=?-#pSAD?kq5w!%PUw8=?v%H`$_ZL2XP`-JLeiE-hIv0Iz{38xOl+1>36D(_iJ zmGq#71@l%#mEp}|oH$iOe>tv|lh?=ew$f9P2raC0IjM$_p!C*feaPm9WaxPvQA#>- zE!aoHd6{a-8=9!MfwW+j%(V*opVY ztZGot_qf9-1Q=hXXM1;jl%3UATov}UTJ@bHy>TScxkucdJkNv*j}W3U;gIN;?=ZaG z*cb!fO;D_mo9H6u1kyC0o}*jc=S|u{Mzu(c*|Kifj&=ohpd77mvNyI^AEKGWH1eXn zg?^M?*60)1M#(+?zJS}|N$zzncpV0vJj(+F7!6N3b_%bkq2Rvdyer>k-tNOjhoysv zeL-GY@4z9!4<(W^u)~gm*;!@SgMJsMp&~(x$22+-G;JHNacpS&SDHh;GFa=X$q6kT zZOD^Tpox!l6nXZ({m`tPsUT-~dFN?@lsKS)r15AhkbGzQGzT2PliW&ZyzOkp1G6if zRdDJdE2&uM zmABBG0J@=7_U}kjR zGk`G=2^D&%l!O4qx5-NHVBY(5%6)%;9CcNg6T2Vy_$faI^Y$I#?oXD^i|zSaFEe1C z`7@O6G}~O7otnHq119y#zQYxpnFd^{ndrq8DRvYj0=mS53Jfj1&fLwMPQGt?of!yN zCG^FZIqedxcnZ8rb1zVRt9?}+zss_Dt2lsVYEGqNAp{);ro~NH%O9@-FA0K^s;Yd?E zH7+Sqwq?rSfMyGuP)9n-4bZ60NxaNZwdQ`PZ25&%d6jWlSNG+6zPmqHGUg*eXaJl9 zZqHs58m|n(RM2_upS?sh`EbM8NPcktn&~TitYr~Pm|Mu^;Dpz8lQIz3KKc9Sd{yo@ zoO6;}u6gfx!4Tem>OShx4v~b74H!aG0XnIKZaQr?Tsla0uk@vpKCrhrM>iW6&6qVR&k~ z<5_Q7vqE(xR=NNVXMqsQdX*~qaF50t2%a(dFxR>E_4a7lWB*}n7%`G>DJVvJL?>l8tqrwO^IS#=gq1$ z3RD6=&ci-Qy38u~^?z;^c)Wan@3JAHOdA+y=9h`>0TL&Vaa(TQspEx*ruLOeuGw-1 zc~**=Js*E1D0NHACT14cekG>-wKRg%MpMtI4NIyNn_>*cq$yu_RK@# zaBMR-_&8e}0IrijyQLW}t^oAOaKsLPn*R-D|3BIOKOT`!On0672WTBg>L<^NpnDv@ z`9hRglp^)edDrfMjnt30!K43(70Vu7mjGq)An(lU9q=_*aHB6W{In7XcW*31&wxG0 z758?4R166~6-cfIxV$dmW~kmnn~g?NEwiG`*xNh~)6#TXiJ2h>&~H;1I|KtpnSf-@ zJ4}K*o4B&rk=SjaCO!T@9av1qMqj>Oqh-EvPvg5I5 z6OpsCY|AMV@UERglOVemCeJU1rvZrI?zxjk3~R|dH`-V@$VS?}=F?Ap&3$$}n$TC} z7u1fuIXJMPq&<~wGi<#(^ZktdQs zHKyrN1KKQt_atgL(;oTdn@6-c1zV`rl*|vD?>8&O%4EJ{9P;vFV#X26RPGT7iK&v~ zy?U2VwK2hhl{dF7)cSC5%!HkLuSu$*>K9r9=`KwXC6d%R#&c60`7_f#S?e{hUjJ@m zP+CX>)#__{<${S^I9@Yr4z}tFFPXloOpI5g2=Irg8EKXu+{}*L7Q5@Af>Z$N-|kvs zwe)1-X>dxjlRHN}QJ&D5!z-js`CBNNpUo}=VCCXqIRIL#EOZHIn!v!-&{p}=xC_YI zd7#D>u^4d6>2^k;fU4J)v?S)?a==5QO4T{(9it>u;cen6`1hZ_#W>x}d0x=U<{va= z?^0kov#XZ7qMRjeHXFD~i#24S1&o#>|vg1miu3+c?V?Ris z-LR~y5x?ysBTv9zO#khkb**Pi8Ch^PISUn@jI($h{h8ojr<(F23 z#M6&1d*b8TePb6hlnht>aZ!PTt<-sY$MLrDG{xGsr{Z^F1$V^mf43O!SXWsGQxYiu z;Ck9qQuOLH`RwJfaK7r)!aQUwQv}mxhSo{XY?t6%c(9!kfDB|BW~s&gN>shH(i9D~ zO0kL*)``AVeQyQNZNRfBfL9k?6N`{Ak`ideK2{w|zF4P`^3->f->xpdj_K{3H;Z3? zV-%qi?DJOB%B|MVG47qeNZ#g|p;~5mRk0e!4%oIl_$N#7+mrcsp49;z1`zzs!LNUS zEQAv+rg>T@PF<=sDtB=o`6C@W{Vd8wq}?%EXt$1(t`0gJ`7z1oYz90+ekR&Vqy0tm zMu;W?#$57koYx!P@$sF9PlFJv87vbXyb%l}2>jH36({$GsxdCeMrC!ZYRI>)05^Q0 zW)!)qcMGm1$%D_<DnFqzDUxOTD3M}x za1#T0S$;{j0bD?X6 zp9vE}z8Ox@6z@>ld{DUP;&_@MaKC|<ObtjWLcz>*>YJeEqKX#Pf(M8ZW9;_pjG9IKYvHS%QBEukzX;{XM;l5&6 z>h}a@&R$3J0?gng)3(O$rEZ9Nb=)g&|6hmCyt6vC?8DQAbHv@wbp~kKt6VupJx9bk&4`XQ^I<9iKCN zST^7wZ`^P!2WJ1W{S&UwPi_Gge;(NX4)9kEIMbi>l984_TSLL zd|4@;!(H5nDD{6a&)hUlp*04s#J1ojLEId1n0y=v9GLkYN*{C0eD=@sCOeh)R+59< zCv@Me_nEl4OC67h+mmpqp?4Cor1jW(5#C}-Uo*x!n*GbY8$tDkg2a?H&BEr>O&l10 z!sHvO0UznA8%MEuXtNGGG({UVwg0n`Y*a=TVc*0BHd82lH`xNrds9WN#JLM*`^!l_ zPI4pRy(=)20Sp|j`mzt)Nbf-pNf*0QUn5yd#>P;gCwnHi`|4*8-qyX*sv&WIki@+E zZN!m5Gxi#8?y$LROS0KXP)tMiMrN}6rPf`#yE?~Ys@Mlo#8?vIy@g#z@THs6;2v*9 z*J*m~Oq>W!dF<1SPdCs?q0-!#5sef=TtGSCZ7D=jzKHU8Pk6Y!aTMwpzAh_%@}{)4=GnlZAb}y27wSt{`BSQ^4TN0t_C@pWR>*>t-Vnc;AiAOYH zch8IGd66_DSPw zk2JXAslQXUT(8)q=LTfCEbVb@Sw7rKcEj7tt(0Z07oKEr!h|W|%{=7%wQC%ETdN#J z5$4{YTV07-PqceGuWlaP$s)g|Y!ww$drk{8+b?H%{R{V}ZYEVAi(P$Z?ud7j&zfFomMAkC3J ziEuFFm}btC&}rq_NdEY18jDe@s+dw{`lv@VK^N5H=^8deU~TG8*LjWWjl_a~yXu1f zefsFf=MPYR!sXy+=_deq@fUUy z10?--%dVKfQ)Z|yTN!$%xYNi#KoV{%Ua5z>GtHtK5&=6~7wCm)d90lmV5(+@9V@da zF5~fiH3x5+|K@G$CqAY#GXs?YtkvEh%K@ZUB8lJZkACw3mKK2aFrX){gUXtZ(>H(f z5H4*#5B~#H(<~o_wP@a37~KWr;r_WyG?7F{lgOyM8M$o+-EfsHLiJkr=i$B>4{u;U zftd}UWZ$jymalfZsGSVQ?pDQ73ZyeYzMUE%;@iWzCvCZ8*y* z8WR<>>se8%PO%0`s5ccxnHDdDKbVq_mXz@d7E93aYS*N`Ecf>Bwn|nNpx#X~=Ch78 zE%@O$h-(L!;$86!AvufeM8*l-Sw~8oN;Fm2T|}mBVtv*=#wW+;M!AUL@XWgM-2ebB z_`wivkIY>lhI}uEFx!1sbX|GP+%E#QCP{_z(raWM?jMObo>wo!C;ipynkq+6mU7!D zf_JIWR%2F;U^}MC?uu^icJITp_HE)Xwb686sXzHY8V<#PA*0RZVOiHjg2epba{OkI zfg_hnpp0X3IhT40*>E(d#8_HddiclNi^rYPt->CvE}h!O#QU6`cU_x(3A3Y%^hp(Y z`bYufa$&YdNVt~1yO%dT|2*Z{MF%1|yy$V3Yw!J+ufLGtCOw_!`&uhuwtntY>4R=n z1>e{{gwUB>h7_JzetWqLHqN6>5Pt^!z;f_T`ZcF3|Y% z7Qo`{ihr=f?1Iz`aOx9=UI9*h)|rvb$L!5mg10~#brP6(GRu2)9XB8MvndOBjWS;X zP&9*9U=lO%0@5*k)F6y_Qt_(?gMi(Ue;Z{S)qwD#uZ`4J@p4oi$`9kLL_C>s?Sb={ z_{%!pG#@bcw$V=w`W^t1TY*5D_A47W$5SB9Um1nAaa{qEWESv(qAY=qZdZ{s0%+uB z#vjzrHWyhoZ;V#gw4Po@OQ|le7Zw^Ugnb{$8uP%{sc0Oxi0K&XV`S%;at->fL-6xm zDs6_kxchYdwS<4vFCMITtV5w}D%dYS7 z0$xWnV62qVZ{ty^^PSVK>%eTICb_dT?Dbhbp#Jg)C>iUQ)^Qg1wFw!viqURE#dE4T z$F~X3By+q9>&v%2|IqFS5|s+$Q9_KpsL<|E({g9pg`6GP-j1HJO1gVJ%6_;2eA?SrmC< z_S>_=fa(R4K{vIaSCqg9qqk>vYR%3s85$`A{xxDmNjMHdqzYI)H&P1wBrg zZi*@+zy1_Rj|o|7ZoAf2M?VH6mjk5Xtiy6|VqaSFwZ5yQ;oFYsbnEa_3-pTnWD{A) z-tcX3-Zo?$>|%vR;Y&xWHis)_y!JdA_xPQ0afAjjBd0%6dhh&o3O6Y(%pzEj zBkO$6QPb@YK6{xQ7Bc@@$;b&N^igUxn_g+b;s6Wf;HA9U#AECQswVy ztf2qt{rlVFe*)Os_#6$OKQ57ZO>}Rpq&V)J8i?;Mj({id*CN~y#L1}yV4}l-O*7!l z%SDaD|K7vxpQz9N4>+{H$(V5J{^kJkmC$hQ1RQBfFa%jI2Lv*{PMWsPSXbANF2yPj z=5X>cUON<&#e?k!r#w#XLXa*?G@c1ty&8pE@xd>`i`6KxXP&0lN@BQ`_|KE<(~_)v z-9l%)}oqs8F$hY}h=;D?e7IndTF>@T!wxaDaX)wZ540Nookj~fU@HdZ{=cajeY zqovhr*vw!YzEZQ`bq{zxs8hkEX{Y-~02a4*GsomMu@?)EMBmx5S|M&u~ruPyUWf-f-f0kZ@Ayw5-t3PWO3>TL112 z!Rw3=xBL9|*RIfqP1KuzfXF48-M%_#l?ThQMA{C}-<5e}W#*E&E6dzyEM}aL`fDI3 zCB%JfLB2;C?EeB42&`)NRxZIEzI10({x;v{i~~}&!ZaR}9f>GoED?7U^-%(*&EKwG zqD&D1gvpu9*LN;X-%OD;R_7BWD9=Y0wI?2z^@F1r?w&Nir+)%d9A}!1fgu{B893G@ zuh-5_Ouu4pT?<{ZWBW+9-1IRk9p5EI96nU_3mw84&fa{4`dt>!6mEb5=-F_?^24I9 z^Tw->>JDpP1aee!yt+=xfE|{fi~-ei{s3nkHA9J>s)otqt(EFgdI}?-Z)#h#q3WI1 z0Iq?#(I`8k)wh@-9ZD)Kd}V{0Td!O^Aa{t)aOXFiZ9B!+tZZXS;)-RuRs2Nswd}=% z7F6>Jq!UVFYCBJa%BUS&ZKH!%fnOsyZ#^y099U8kE-JOq@h&!pG9f-NXPVS0I4WKTTC#jzyZ;d{ zM%|fDVD!*o3tGk3tcNAp*t2#xlUBMEpgIA-V~LG(dovd!W$~N7ue_YMJY5$0U=%&~ zxZ8(H$9!(a^x?i%SLYZb)$3<4uF?h8jE{fLJ%5=?Yfmvfi$U*dEPVJ!!if%-j&#m^&~i?bK_mgx_0lmm}Q^?mK*>+9dBSMMB0G)gdQmb zL==8dEKeN9c!3xI-}#~dJJvlQ-l@O(ncdiY5}0{)1$9}3mLQ-T)0a~h4nU5Q3Sfk; ziA{mZbxR|lT}PpG#RCEIvSTT4VDBAZp}#T-wANC(Xx6|6f@{I!hRsKN0lSyHr_rdv zHsa_MmFDm0uFw*HJqLR3{aCmY`I6FA1#Dw$bMDopl^&3l+>)l)l;%f2ivc($4>vFF zgyi=|h1QNP#u`=Q?km97G<cTEVgRPo6M*bM15j4b9_L94 zKADrG^QAeLaV9RTuSyDek=MWgh4usFUTk<7A#`zm;SW$$&OeM^Gk-xIwhZX{WXA0? zT=eQ;1IijRzcv5E8S=k+pS4MI)+fw7Lz5?#7n}OZzuNbIx^F1i z8k82xPaKxwFD#5#=`b-=DO+pJ{p)|V_nl!;ZQGV0C>c~F=bS+@l1fC9NR%W9h~z9e zQz!yT4g!)TgCq$>k&&EpE}+Oc7O{Y$PVaO3-TUr2w_kVPey_i;!~0PmyQ)}guiAU< zwdNdi%rR+wBBf4aaa@VLX}7e2ipyLMp36Tys__vWW>XsiyXepG5NU#A4^axBZWA4P zvcd1>Q@p>(DTuJYRHcW(LlH*;D|N8$HdmJ3XmAYrS-k4prnH>Zv@J=9WZ8brSVO02 z8iH2=At-iswt5o3>bY=m4%#9!N=58i>9XKR7Ko4qo>70ZYm`aJVNI+zjCE%9e-B2@M%M}KTq^Dilb)7h=?z3gaRwgFN5EUt|A7C%LR z=ue8&9k$GD-iB^u z^Fhpc(mi&4uK``PVD$KsEqdYDbk09Z>Q>x3Bcs)mcZ+`Nv`LOjp09+n5d=7oFO;ei zx>RY@RE+JfghOu>0h3GK>oaget=SlCWzI6aLy8#U}_ARv@5t>VTba8wsbB?;*5A04psi>#ZfB{-|G);g#82p6u z52vsIP-mbw%@NcWC6o^6oDi53U(wY@S4;4&eOo}XHm>X<$_*WQ^Z;<)hF{2zm4inY zS3xMMzSkgx=5H92!oV!h`rB|AUYDVcj?Dg@En^$D!YmQuvj8Cl(rm4LL%ZkZe37=9 z&>!n=IU;Y^`rp5%Wov>DU-0LZ)=vF~k-|gtjIU45_$WuT ze*s#}{tctZ8vVTJzups`*>SY)C5zDk_0}yBoCVm)(!U1e0(A52#!fI&IKB$}*9N(N z?Lzi17p~*~gocT-F{Snm;0S3!;O5BId(d^4IXd%->mRW?MJ_+)Sz`X#`q$wXyJsCZ zBUPI?E=DRTfik>hVplY$jf0fKejeqKvdqxhu$D_>Q#bBO+nXnTCDvmMW$c+AoR1vP zIo=3~8gBJ^CogR4d7{=JrrCe~o(=oHUl8Y0?wPpaIJ<4{Vc!;BXtsjQn)g zFZ>+UaV*a$neK)!o2BUQK0SJ!OdT+lE;gazC~|+1DISkC@<)Gmc#?MD@j|JP)JGl# z&H*b+&VJCtN|SKTAFMq8plZ|-Q1QL>9m5qbb@FXcA;6-EusanNxRlHcD@g>mjGxPn z{7Km8j|7~G!I3*o-5Oj{`8N3ArW#dGZaUeK%E=$m# zre*J@?kUzz@{1Y^yrg(>VmJ>U?ql8kRLm2?o$DGaUbPSo*bp?^2>K=wrc$8Yvp*`@8fElm2|Pu2OB%KLkpv46526R~_;764c{?3|sS% zDg68XIAX=+J+cYbk7A7tjZMBtmwaGd#iPH|S@m7ee_k11aGq?F+r`!$9e4e*noxnO zAF=sDW|56?U}^GoL{ai+HZw2GtI_;twD6 z;#7(9kDpmb(%-X>K-3nC!0{&b&oi{=^=I_1Rm|ey8~iWH8!={$@i55O*}dDAtqOF? z=mBHfkWR!+MYp`@Miy2WumCaHZMgLCb)G4wi}_&HFjfX3h|*V`xI5mIRC`%nr6QTl z{bJ=s(Lx^4em!%2ru~#OnFvw#?7VlF<}o^V#bzxIj<=x|U>V<)^dKbJ$LXnYugdjw zxOakjSX(WZ1!AC}JbL=l*FUvW50UmUk}h?!+eAe?qkmUJVf}4*g(Z1Hb0nyyWV~2H z!tG{yJKk{4__mB}Vz0VdDN4(v+6_UvAINl!&fvQqSqU58Kd3nP?!oB=BYoU&xZY@vXr%^iR^~VcJJ~s3mg8jMXONV-RMH@j_s!vZyOM4wl2u< zU4lA3$k(xh71fvn&WeIe(^@WGOI=+bG7{ZBOw3`qo*4LIp9}A$_(PFu8siH!ccz(XI#Nt+{s{2xihlh) z1oZDY=IH>c_*Ps|qJVwfdFdKk_mB+m*lP4qk%72C`0VKR4);|HGhnM2o8J7z!hs}! zTVGuPX-T}xHaX#_x3|1JG~Em*{6IFvFVLB2S!y>T3>A?KJ|?*(vXu#i0%e(M1)4aD zc8Xa5%}qtY`rMm0Y(3xx22j2uzAiThr$P;M!u*NOCu(g^haMpI$J`zs4~MHZe*PXp z7~k9W07tuXnPfQQZYfmUWnQtdFs{?C9*b8UV`REmQNx1Y0%{?m2LT+fb2>5j>&<4PF1dMMIb0S*_T!3prl>hIyl;=e6ZxsV>?JD|= zoROCiw{57BJtP<)kxwE6*?;GQU0iOfC_K`i%_1h-MPmcHO3PVco}O9Ol~V!!6y^AqQAqo9QMv?&85uN26l47Ez@tt*?UC$jl%octmK1&^DO;OygBMv%$S z>>mmx^2K|=N-MN)w(-*ObF3$;9L9xx?( zRJ?W?Dr^@>hoBLQepcc_xLeY!8^lxfw91{qO?1nY6td^&)|J4Xep3@5DRH(48l7)% zBx@;`R}NU15jQI`w)IkVvvd>9=no|jdHCo(E|5)+0Iw81^WjzLSdobFx-l_ee3ma4g_B9 z11!xyuwMTG#YOerI{bdy{#RfB7XZ0e5f?c~TNmdN63W?U^f(+lL_={_9Zg;M7l_jAK7zP4wMEAavxh zKjbEqHP8ndZV5DaG3L2Zf78tneiHfo(V~<7TtVus?4}QYL@C@GtP`yHGj0DemTs)C zMr>S;4wvy*O?$IB8BGQ1UOK(`4qgTLG<{B(Jw!w1dc-4EmV(pp)XVcqhr7^ZXo z`RjAHZct<0MTPS5(SC&YjPfYr)qiCaU$aui|@?z>2XzTdIhpUW`qx zrWUofy{sD0l2rk;M+%Z!-EYpSpV(=6a4Xs#fV<)L(3FKm1DlJgHj#*j zb9>@0lItXAelCzajNdRw2IqyOm`e5v=4+t^3T_2e&XW(!g$xw1)yRo;9L+al8ocfY zHqE4I8CMQ6X57Xvf~L-9jOHu*k6rEHW4~b-1=3tfEfK>NTt$o(4jc|PWAs%6#^!S> zlKP2pdsyisedr+(gkCP*t6k2HT>y*TAx!YI9=~`b-4BeNgEt#wpDN3>J{ckn{f?lj zKGZz~16(4Pdh_O^kb&3Pl?bl72~g##*FrLu_suJxTzvV2^phoa9NJ0WmXEP;@Aw@D z7IJ|{&Q@*DO0am}^dKMN(FsSN{~9wIdHm_f7aWehymY*1B^q1{{_1FpCb?+=FQU|; z-P6w`_zv~v+>z^vQ@ran%4|~+Yn2e3b@Sk zZ#@GyQ&*NK;h?}onRL%lApdKApWK=5yt7i>;=}6{{|ik_mW^N14}vE$c}9wUgv#EB z6z>(9EVLNwc$`}d;Bh(2i0;7A0Rn~D+j`n>TH;nJ>B=Bosf*3c9Wv?akEpbsvKF^7 z-f9@~tw2IgRcmjEa(jGA-ps!+xodTDsd%TDWutrT;}g1)5t|?AaTubxYzETQkdKVm zHG&ymd$ne%qH+8R+6s5ac4mP6Y4o6_4tj?&N%Vask7DUPEdNeojVEm~dkkF{d)S^P zmg&<_i@xUkYE`wplY?8B;LfT4ELHDb_-0Wlw>jAh^|a7(*e%?|G(t3#sy!!5ETV7; z4Gwz62jm9W9f#e90r1_KrEH2bP|9Ba6KMYl0L10;#E_tDd@BZb%1~Uspx*0lz-QhT zMjYn=fw{jk1kQgng`uegR`i_-e$ofOYQp*rLrK3eacyVW=QhXbV!nTCc#F#MO~>2~ zdotf;tC5dv&sH0TTehTI|npBO30Xu4l8MCef75mP(r5d71!hp0Fa-Yh4QTje`ctz_yD*q z1$Ga-165E`wu0!fsvE}vp;Hf1_L>%5V? zf(BOal5ee>F>nB{LS5#xJ_G&fKLHvB8wwz1WSapvoUIQ)!ze<-JHWiHB&Q_jZWO4o zo24s;%rpIMfG6>Xp9Aa+ts$moydX4@00?=`@GmDcLzlk;l7~Tl!2LRf|AQg1?fl1P z?tyoa49gXvshzOGFcI^@B~>gV=^-EKxyY)@H_H1soP~_m;p<&nj|3layb$yX%-Zx^ zu98-#d4NCh)gdeEicb6w)mQ&P-^$Ftb`I|a{dETO-u7(x2K~PXWLqS+pLl zNaZHe?{hn;p1A=5dCjW}ur`|^_GyFmh7VK3B(h5{u8Hf9$dT+FU89{7RD7ZYZVfY< zwNlm}nsu9Hs%#t zU~4^t0{SO_WoFqQS@$jdYZs+U4{UuevU3-V3PYsjXk-^eQr$l&Qqrr-l)q7cIoX8lUZgsrYMSvSRgaKF-maAR>D-CFh8gzPo+Y6ee z{!1+GN^1Xl>lR=3ci_|FYe3fTz^4)beDcP(ROZB-E5@L1!LB6dp%thbQ$JbtfAfcy z+T`A9c5VB<}V|+ z`+sWWIxxk!@+D+-2R73D4J4Y#WZK87eq#Ok^Vj!OB$kPruJxzf^}Zstqn>mJPHi7m zG5gDDySQA~YXa`!VN4=`0Q_sxUGyrPXTawzU~g0D%tCc{YZ*~hG4>CEaL2fY@6&+(oZ#)M@NLtB2rEDRB{$0I5@R_tNDMZ zpZxzldFAgf_5bE$u3eZ~W_{t1d6AKlm+fO1LRp9e$q+czR&mkOo`fGbR^k1W_KvJy z^OFG3PM-NG*3L+t*3$=uiwXhuM4cp?@L)$XB$+&yx;p$4rmR|O zFBD%Y9I4VR*Vn^HpQ7NM72G0W*TR+dEG1bL>L}+vE^hvUt zq+q*(ZQS25kky|VA!Tnkl$mj&V(C(BJ62o^U3^HlyW_&$9~`KPqw#g+<9+++@fI%7 zCwD(TIxLOj@`OUj;wsqA7Hw!tQKdvyEiiYffv?mwxV*9uTAPfIstO9AQ1H&*>ON5H zM!%Bjj*so(Ly1fJYt}&Zv^r?ZlU*MJq8qMC53m{e7-io@W1*fP+&U#U&O@5wcL1g7 zj$#v2IA7YxW`~1A%5%Z4_sha;bA1nA2n7YX1z{dM(hrhHm>bWOqqy9!HxmkN2UZ!X zHGF@DKlAVGti}dNuEeDOM@S*0%VXJx-h^OK{D|06I0qDm(>lV0fb^K@PPw)zGRb)GQ~UUxZ(OmZDtfbSUpveV{Ou6L`8o4LHrI5E=gSk&yvM3g zh1AV!0xL*^sYr67o)^ol79ZAzqBq8+BsYy{rj#=IuJUGsjuvlhx4DwPf0s@*8TJ-N zWl!nNqq{?}FUxm6}%# z<+oyXDLsog|Imd-d`?Stb^EfZCaM+Z2XK=f{;Y!9@>;N^Us3jFxKRhQBqyPq1*HHK zYU&$5vCX$!YH?ZGLMv&Eg9>y~6@um2n|xm;!J-rL_)|nik3x50Oaud;LU}`JRL$N+ z`5lK#Vycxmbcy>#iSS8b;(!J+*&8PvJPjk)2}!nr*`!Pb9Q!{ksIs^c|hrk37KC)@=z&HV4oS^ZZ>~W*`>hyiFiS_Coh#NCL1>id7r+(G7ll z#hUbEkeAbPE<@rw0sz&v zDg?GKaR)Zf_+!&OVnMK23WO%fXzdu*N!oZNgAZ{=CPsZv0=8gIf z_Sf&{>T5xmBoulFtB)QEXo)&Ll`=96dY#T){qX(cT>M$S$OA@;@ab}fu4#%1|~Jz*S? zOHU_EJzXNTZGh*m9x&*SozYnPv>rm$eLC=+s#y5fu4v!k;^GDMlFt3lL|C zxRn`z`HN*icLA^fjJ!-Iq?3aCfBcV%*6Sn9Ec8Qw8rx zdP>BCzOO@Vu7P}u3!!9E;ikMfsVd8JEBA&)-f;YN$v0e>_k~bLhG?4Oa)^u1%2`7# zfc6lIe~*Jqm*-hQ2)^qdn47a2T# z_b$F9*_cq7dq`M#uj{(M1&0L5$k-1T9MeO^+g17SISZ>N6HK8^S61OFW+5J*>V%wJ z`v)uUpbq;e+obh)(L{)lkeE5Oq_O~J8T4Kmi>|6tV^iFkz26l$fT0iSTJt94?bE0P zGYoo221A!?AC>YE>$r0eTWlz_UWX7r9!JW8wgUSJU2jQ4Qki{j8|_R2u6ew7S?qFp zA4{oC9aiIG`bBjN_9hLzV~rS=mL?ncO@BjUs(!LkopRQ&4WAaj*lof6enK}hgP%C1 zFDc2!WEl{53nRfb0te^z8O$;+Y)bVF)}F7UIx&bZxcA%o(3$<~RYjH-enNex zz=>0%HRr?LcldqZR02KFGWMr7GuQaCWdY_Sb55)oB6}6p16(Bc2wyn8eJCsai^9E* zx3$4>5_3OUUvm~VZP@#9+p~J}db=JABZ%5&i7V4+c-3xd9 znjc{<`{rLp`peymuq-9Ar88AYbUdg@@9<$Z-CR{o!RF}Wj#FaP93xg2$Ep$dbWTEJ zQ)MG*8-1htGm7bCRnnnaft!kQWXl2SsgK1Zmqh=JA&Zs450IX$C1UMq&e@MzMW&SXO~Ktn-(iBwngKP9^k{S zsQujxZAXpfx_?yqR4X~(*X_l8)Z0WHPK>$plm-YZVEmc*nz*WQg#*OEO_Q>&wdm|d z{}W964`Np81=g?9@pOopI{aRdn|tEDMvbX@Y){?#hx*S{%ZLL*vLR%3`(^4BI-%G$ z^%HeqVL?*?M-xQ+aaC`cfyg`MVPCUgLf0qQqj!@KJz*@3^$m5sEbI4b>&;kazl`#@Sz z;1_|=(1jMx8^apP#m2D@JM;8sn4?Oo%?};5>4ap=H4?N_nWXjX-9v3z7-M%+`m`~h zU{T)tc_b^~Ej#Ro+w=LXczk!`;N_TUdmjO>8ViL~-OZ2I*A&zBB!uXZ+>Q&+2LFbw z`I@Pk+RznhuGPeX@NOxPq!9FuNdNPwQ^kEev$~IBXP)RgGv>h^%*I}7J~cG?-qbQ| zW312{srIp|+uSgw6WaT^4DUzpb%(7D31|i@hF)rqmqIes7x|ec%qDX)@(A$;pTF&| z)9c`Dg9Y%&%OkA5tb!$Mu7|TqD4&V6nl-4@;$UYx<}K6GT9*^Orxs|VIx~_1smB;c ztMNannQyGIC*2y7iEn2S?Av@NV(v_?31D~wFCVnBWFKpE#4T@*eQu>tQXgF&Q)isp zyt0;chD(fq1SCcbF)H&=N@L}GXS3&Ouaw6je#>yZjN4+uawNy$eMR&=Z!*;m5cwIO zy;6*J>y$_UJ59+PpF@(Gx|r?9pZJvb8!g`U`&Tw%&LpJv{Y3Iy(1{*^YQ2)`$IGQh zs@Blb6@e2_8X%qU&>HEBTI5Pzy2o!Z+MQutE{~H{ppgsjb1~cUNg8hy_K_bl<=4mv zU2E1DNR;Tp@Pf^JIRg{%)lZ$<({Td44!q`iW&auU?jZ}utR8U~g1y5CArRrdk);tj z(^2)A---J6Wm?m>4Nsek6&5Y_#jchU2}W~~5h~=py-t12H#@LAN&nWlOKKe;s8=Iy zcCaa!G=I}M&u(t|?GUFSQxM$NLJ-q7u{T6EvCvg)qTn9Ej2gq;KPY>a)Cbp?gF5}X zLH1BFQkpOzmsYawtL3ZEXItAB?D_^YZa6k?+JZ<>|1HGTmP2L?GURAyT1+C&QB_sD(bFHXG#D1vqO&te z_NMnX>c$Vt4xDr1%2%cx3P|u`?(Zg#X$XI$M2#tyVxYxfDu(Bh|4rTmPcK@)n?e&Y z^LeeRX1ug~+L3${_voB&k3LIS61y%cNo;T%&r(w}D~-6>euncq2~!=C|9A&&XKP4b z?Z;p5Q*3Hz$E!{BjEb$^=ArdTdcyrW!biEBZ)e+>c6mU-4b4BkSvv}A)+N6*k_vG3 zVK_+T`JAV5rXX0makmY}-?|*g%A|91L=ebFpX|<+^J5tqD_F8Fz02x7U5}TD7vvv` zoZnDj6zo=af&9eWa6XnYlx0x0ald^?uzg5wqo-Q5Q5BWMmuXvjb0@djn(#604^C1p z*66KY^jM9@n-!~HD#}E*_dRU=yFxjPzPzdKAK6r0e?C|^NU1MG#`eqq?JH4mq@-Td zD&@G(w{0GK?-`1?*Kb~osyV-Bif!qVV%BC|WWmU_k@~6Vv5w4G*+x$Wj(HC_yE+Ug z6)ZFiNO(r&eEN(K=3)8BvY^<_fkFC|-d6k<%?+4f);1|Al@x&U%@qnE6G@Rf$-z=b z2bB+&xcX_c_^O>LhGyt8laK3bj(%v76toRtqkdY7cOjFYA*J}Bh z9|}ub{H~a7GWZGwSzXkyh-9AoDW%jgv&6G7>$c$(Otw6L+v!u+cu`x0c+aHPi1!%P z#YOGc?giZKFj8(&xzdvuwEu$3EOByAg{~kO!SZw(;^)ZUzq#tSvnq@m*zsN(Lc&eT z#ffd;&GwA8m@wP7DtKZPM|4>O9~ykNcY|%@?U1HfS62;%P)6fgIJVtczPn!eYb|xh zCMQVf&uN{1s!nS2x9YsVM{)nj*Z&QrN&g+(r+=0+#gl~m!Z%bNd{KiSL{nGQn)59# zW;DHe)8NST?u(@gh2N8>_qzEmbu2&7sl7#3w@GS5nN`Q=s@9Ub1?1eTY0Vsqe~L@g zKp`KC*R4S%g4uzrHbHoV1-H<4@g`4aGEeb;ubs*niys{x5BRwHS{qbj#fV*r74OT1 zaXQ?OQu=vZR`he)Vv0cNLT(v{>R5j##A4t?a6reG$0&XmB1#h4z+P-` ze|Kz(jl5b(8elLv!13P2F?$E|el%YG8rRl#1${UtJ@pNRlfyQh<;GT;>_z@q)sb)p zDzwm=%&|l~E=)x%gz2A1`0GB^2aJvVz$dn;g>$);V-VH(y|m8<%hewasMePVPkEe9 zQIIRX{Ql}NY{H@iJjn9WmlN-iu8CRLjyPAY*q6fHi_38zJMg$#4{?i`Sts}RySeJV{t8w_rSNYiNG0{g+DoVR8OW2)(DV){16%4p`<}NvdUBTj7$2p zSopO zxx;6^rkM2|w$xW-bDfxXq0KyCD_tAcuQitWgw%cIjd;>BcLKXkRHBgvvWpisU2n+& z6k?4du1eKQ;v=M~5I5-Z)EIe;?q%0k@{<)$z|RG>NCy9NWc_a^W_XIQ`>pQeb;mHevw9Q zXwdB*g`$OQ;OvvUrQd6sLRU{#7$c?Rn4?BDgsMec>)w>r9l$$|9z`TqOWSA^Jvtj%QaM5fPY#FT{2V>Ubzf+QDzW@nY z59s4lk~7{>%9#;1KVEw}e&~L+?^w>8+D%!us%o^e8kPI`0d;@)iY1H~=Nol{-G9?+ z`F%Cx`8eG|Vhh`>FS0weOO2EanMtU%x2%n9f0xO%YW5lItF^4w;+68Dj+m|*4oF;k zcpPh}H%yoeL7L5;BaG+aFQT024|$3sXK=Ur+QY1*yB~ZF7?+&-5=dfOWl!PTVCNfB zTO!(Ttl(vrG$z_u6eoviM!X^gQ+_RV9bx{doU1@+xN;hF?+zk8 zVd7sZnf#~6{U78}|4&j{FxNojBcW;C*M!jy8sRIG?v;-ya08ck?;WT+WPHKL6r!r- zTBNS3mkTqoU;Q!b9nnKQU3@n)xp>EAThc6{)0TNaHs(QN3z3&2M13{QOOQD2nbTG6 zK}F8?capmZj;rQdK+hWBNDNTih2#N;W zANaqV(e;-vBRC+?JgyB1uy=M5&1gz1sP!{?z18^Ie^d841@Vn1w2uKkyPIq5(u-C&M_jLvdo@M!d>ha}jeIBDMV+Rf9lG~1G)txnUaYVhp4-4I9o zhHnmZDe+H&SXWd&Sg~wyv$10L(jG>vsbRI#bG0-ahjho_bkruR*EBX%dl(DBHqcX> z-%@a+C}S$aST+U<5u_$ZIyqyd-=_*ESD^++hC Bh|K^1 diff --git a/module/nuls-event-bus/documents/Module documentation is all here.txt b/module/nuls-event-bus/documents/Module documentation is all here.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/module/nuls-event-bus/documents/eventbus_discussion b/module/nuls-event-bus/documents/eventbus_discussion deleted file mode 100644 index e349a4802a..0000000000 --- a/module/nuls-event-bus/documents/eventbus_discussion +++ /dev/null @@ -1,35 +0,0 @@ -Event Bus Module Implementation discussion: -========================================== - -->EventBus module implementation is bit different than other modules with respect to dependencies. -->EventBus can't set dependencies while bootstrapping as we dont' know how many modules(roles) actually uses EventBus. - So we can't predict dependent modules(roles) at start up --> Also, we can't just add all modules in the system as dependencies to EventBus. It won't work when we have many modules in future - -Proposed implementation: --------------- --> No dependencies will be set up during EventBus bootstrapping --> If any module/role subscribes to a topic, get connection information of that module from manager module and store that information at EventBus - Challenge here is: We need to have api command at manager module to get desired module connection information - Currently, we can get this information with "registerApi" command but it is called during module start up --> EventBus should be able to create WsClient. But, there is no mehod exposed as public in rpc-tools to create WsClient - EventBus uses this method to create WsClient to dispatch the published event - ClientRuntime.java - - static WsClient getWsClient(String url) throws Exception {} - this should be made as public in order to create WsClient outside of the package - - Currently it is package private. I can't create WsClient in EventBus module - --> There is no method available to send Ack message(just acknowledge message, no data at all) in rpc-tools - CmdHandler.java: - static void ack(WebSocket webSocket, String messageId) throws JsonProcessingException {} - this mehod also package private, can't call this from other module - - -14th December ---------- --> How would sender specify that it needs acknowledgement on receipt of the message ? Here sender is sending the message type as RESPONSE. - eventbus sends event to subcribers and it should specify that it requires acknowledgement from the subcriber on receipt of event data. - We can set up acknowledgement flag if message type is REQUEST but we dont have this for RESPONSE type. -->EventBus always sends event data as RESPONSE to subscribers - - Module A -------------------------------------> EventBus -----------------------------------------> Subscriber (Module B) - (acts as client) publishes event (acts as server) sends data to subscriber (acts as Client who wants receive event data) diff --git a/module/nuls-event-bus/pom.xml b/module/nuls-event-bus/pom.xml deleted file mode 100644 index fe57989941..0000000000 --- a/module/nuls-event-bus/pom.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 4.0.0 - - io.nuls.v2 - nuls-project - 1.0.0-SNAPSHOT - - nuls-event-bus - - - UTF-8 - UTF-8 - 1.0.0-SNAPSHOT - 11 - - - - - - - io.nuls.nuls-tools - common-tools - ${tool.version} - - - - io.nuls.nuls-tools - base-tools - ${tool.version} - - - - io.nuls.nuls-tools - rpc-tools - ${tool.version} - - - - io.nuls.nuls-tools - storage-tools - ${tool.version} - - - - org.projectlombok - lombok - 1.18.8 - provided - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 11 - 11 - - - - - diff --git a/module/nuls-event-bus/readme.md b/module/nuls-event-bus/readme.md deleted file mode 100644 index dbb87cb6df..0000000000 --- a/module/nuls-event-bus/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -模块说明 - -``` -这个文件夹下才开始放置代码,可以是任意语言开发的代码 -``` - diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/EventBus.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/EventBus.java deleted file mode 100644 index ba01f33303..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/EventBus.java +++ /dev/null @@ -1,134 +0,0 @@ -package io.nuls.eventbus; - -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.constant.EbErrorCode; -import io.nuls.eventbus.model.Subscriber; -import io.nuls.eventbus.model.Topic; -import io.nuls.eventbus.service.EbStorageService; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.exception.NulsRuntimeException; - -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.stream.Collectors; - -/** - * The {@code EventBus} class represents all operations related to Event Bus - *

It is implementation of publish subscribe pattern where publisher publishes/sends - * event to {@code EventBus} and {@code EventBus} sends/notifies the subscribers. - *

- *

It is singleton class to represent for entire Event Bus module

- *

Any valid module/role in NULS blockchain can be a publisher or subscriber

- * - * @author naveen - * @since 1.0 - */ -public class EventBus { - - private static EventBus INSTANCE; - - private ConcurrentMap topicMap = new ConcurrentHashMap<>(); - - private final EbStorageService ebStorageService; - - private EventBus(){ - this.ebStorageService = SpringLiteContext.getBean(EbStorageService.class); - } - - /** - * EventBus is a singleton class to have single object for entire event bus module - * @return singleton instance of EventBus - */ - public static synchronized EventBus getInstance(){ - if(INSTANCE == null){ - INSTANCE = new EventBus(); - } - return INSTANCE; - } - - /** - * Any role/module can subscribe to given topic - * @param params parameters needed for subscription operation - * @throws NulsRuntimeException when subscription fails - */ - public void subscribe(Map params) throws NulsRuntimeException { - String topicId = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - Topic topic; - if((topic = topicMap.get(topicId)) != null){ - synchronized (this){ - topicMap.put(topicId,topic.addSubscriber(buildSubscriber(params))); - ebStorageService.putTopic(topic); - } - }else{ - throw new NulsRuntimeException(EbErrorCode.TOPIC_NOT_FOUND); - } - } - - /** - * Any role/module can unsubscribe from given topic - * @param params required parameters for unsubscribe operation - * @throws NulsRuntimeException when operation fails - */ - public void unsubscribe(Map params) throws NulsRuntimeException{ - String topicId = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - Topic topic; - if((topic = topicMap.get(topicId)) != null){ - synchronized (this){ - topicMap.put(topicId,topic.removeSubscriber(buildSubscriber(params))); - ebStorageService.putTopic(topic); - } - }else{ - throw new NulsRuntimeException(EbErrorCode.TOPIC_NOT_FOUND); - } - } - - /** - * Any module/role sends event to a topic, EventBus sends the event to subscribers of that topic - * If specified topic is already not present, it creates and stores in DB - * @param params parameters required to create/publish to a topic - * @return list of subscribers who subscribed to given topic - */ - public Set publish(Map params){ - String topicId = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - String abbr = (String)params.get(EbConstants.CMD_PARAM_ROLE); - String moduleName = (String)params.get(EbConstants.CMD_PARAM_ROLE_NAME); - String domain = (String)params.get(EbConstants.CMD_PARAM_DOMAIN); - Topic topic; - if((topic = topicMap.get(topicId)) == null){ - synchronized (this){ - if((topic = topicMap.get(topicId)) == null){ - topic = new Topic(topicId,abbr,moduleName,domain); - topicMap.put(topicId,topic); - ebStorageService.putTopic(topic); - } - } - } - return topic.getSubscribers(); - } - - private Subscriber buildSubscriber(Map params){ - String abbr = (String)params.get(EbConstants.CMD_PARAM_ROLE); - String callBackCmd = (String)params.get(EbConstants.CMD_PARAM_ROLE_CALLBACK); - String moduleName = (String)params.get(EbConstants.CMD_PARAM_ROLE_NAME); - String domain = (String)params.get(EbConstants.CMD_PARAM_DOMAIN); - return new Subscriber(abbr,moduleName,domain, callBackCmd); - } - - /** - * Get all subscribers from all topics - * @return list of subscribers from all topics - */ - public Set getAllSubscribers(){ - return topicMap.values().stream().flatMap(topic -> topic.getSubscribers().stream().map(subscriber -> subscriber.getModuleAbbr())).collect(Collectors.toSet()); - } - - /** - * set the topics to topic map - * @param topicMap - */ - public void setTopicMap(ConcurrentMap topicMap) { - this.topicMap = topicMap; - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbConstants.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbConstants.java deleted file mode 100644 index fb6b92c96a..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbConstants.java +++ /dev/null @@ -1,73 +0,0 @@ -package io.nuls.eventbus.constant; - -import io.nuls.rpc.info.Constants; -import io.nuls.core.thread.ThreadUtils; -import io.nuls.core.thread.commom.NulsThreadFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ExecutorService; - -/** - * Constants used in EventBus module - * @author naveen - */ -public class EbConstants { - - public static final String SUBSCRIBE = "subscribe"; - - public static final String UNSUBSCRIBE = "unsubscribe"; - - public static final String EB_SUBSCRIBE = "eb_subscribe"; - - public static final String EB_UNSUBSCRIBE = "eb_unsubscribe"; - - public static final String EB_SEND = "eb_send"; - - public static final String TB_EB_TOPIC = "topic"; - - public static final Map MODULE_CONFIG_MAP = new HashMap<>(); - - public static final String KERNEL_URL = "kernelUrl"; - - public static final String ROCKS_DB_PATH = "rocksdb.path"; - - public static final String LANGUAGE = "language"; - - public static final String ENCODING = "encoding"; - - public static final String MODULE_FILE = "modules.ini"; - - public static final String SYSTEM_SECTION = "system"; - - public static final String DB_SECTION = "db"; - - public static final String RPC_PACKAGE_EB = "io.nuls.eventbus.rpc.cmd"; - - public static final String EB_BASE_PACKAGE = "io.nuls.eventbus"; - - public static final int EVENT_DISPATCH_RETRY_COUNT = 5; - - public static final long EVENT_RETRY_WAIT_TIME = 10 * Constants.MILLIS_PER_SECOND; - - public static final String CMD_PARAM_ROLE = "role"; - - public static final String CMD_PARAM_ROLE_NAME = "roleName"; - - public static final String CMD_PARAM_TOPIC = "topic"; - - public static final String CMD_PARAM_DATA = "entity"; - - public static final String CMD_PARAM_DOMAIN = "domain"; - - public static final String CMD_PARAM_ROLE_CALLBACK = "callBackCmd"; - - /** - * Thread pool for retry mechanism - */ - public static final ExecutorService SEND_RETRY_THREAD_POOL = ThreadUtils.createThreadPool(2, 500, new NulsThreadFactory("SendRetryProcessor")); - - public static final ExecutorService EB_THREAD_POOL = ThreadUtils.createThreadPool(2, 500, new NulsThreadFactory("eventBus")); - - public static final ExecutorService CLIENT_SYNC_POOL = ThreadUtils.createThreadPool(2, 500, new NulsThreadFactory("eventBus_client_sync")); -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbErrorCode.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbErrorCode.java deleted file mode 100644 index 66c26e26c9..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/constant/EbErrorCode.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.nuls.eventbus.constant; - -import io.nuls.core.constant.ErrorCode; - -/** - * Error codes for event bus - * @author naveen - */ -public interface EbErrorCode { - - ErrorCode SUCCESS = ErrorCode.init("10000"); - ErrorCode FAILED = ErrorCode.init("10001"); - ErrorCode UNKNOWN_ERROR = ErrorCode.init("10002"); - ErrorCode DATA_PARSE_ERROR = ErrorCode.init("10003"); - ErrorCode PARAMS_MISSING = ErrorCode.init("10004"); - - ErrorCode TOPIC_NOT_FOUND = ErrorCode.init("20000"); -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/init/Bootstrap.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/init/Bootstrap.java deleted file mode 100644 index 996093349d..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/init/Bootstrap.java +++ /dev/null @@ -1,108 +0,0 @@ -package io.nuls.eventbus.init; - - - -import io.nuls.eventbus.EventBus; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Topic; -import io.nuls.eventbus.rpc.processor.ClientSyncProcessor; -import io.nuls.eventbus.service.EbStorageService; -import io.nuls.rpc.client.CmdDispatcher; -import io.nuls.rpc.model.ModuleE; -import io.nuls.rpc.server.WsServer; -import io.nuls.core.core.inteceptor.ModularServiceMethodInterceptor; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.parse.ConfigLoader; -import io.nuls.core.parse.I18nUtils; -import io.nuls.core.parse.config.IniEntity; -import io.nuls.core.thread.TimeService; -import static io.nuls.eventbus.util.EbLog.Log; - -import java.io.IOException; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -/** - * Bootstrap class for Event Bus module. - *

It does following operations - *

    - *
  • Loads module configuration entity from modules.ini file
  • - *
  • Initializes annotated driven dependency management
  • - *
  • Starts {@code TimeService} thread
  • - *
  • initializes Rocks DB and loads topics from the db
  • - *
  • starts websocket server and registers Event Bus module with Kernel module
  • - *
  • starts {@code ClientSyncProcessor} thread to sync role connection info
  • - *
- *

- * @author naveen - */ -public class Bootstrap { - - /** - * main() method for starting the module - * @param args - */ - public static void main(String[] args){ - Log.info("Event Bus module modulebootstrap starts..."); - try { - initConfig(); - SpringLiteContext.init(EbConstants.EB_BASE_PACKAGE,new ModularServiceMethodInterceptor()); - TimeService.getInstance().start(); - initDB(); - startRpc(); - syncClientConnectionInfo(); - }catch (Exception e){ - Log.error("Event Bus module Bootstrap failed..exiting the system"); - System.exit(1); - } - } - - private static void initConfig(){ - try { - IniEntity moduleConfig = ConfigLoader.loadIni(EbConstants.MODULE_FILE); - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.LANGUAGE,moduleConfig.getCfgValue(EbConstants.SYSTEM_SECTION, EbConstants.LANGUAGE)); - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.ENCODING,moduleConfig.getCfgValue(EbConstants.SYSTEM_SECTION, EbConstants.ENCODING)); - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.KERNEL_URL,moduleConfig.getCfgValue(EbConstants.SYSTEM_SECTION, EbConstants.KERNEL_URL)); - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.ROCKS_DB_PATH,moduleConfig.getCfgValue(EbConstants.DB_SECTION, EbConstants.ROCKS_DB_PATH)); - I18nUtils.loadLanguage("languages",EbConstants.MODULE_CONFIG_MAP.get(EbConstants.LANGUAGE)); - I18nUtils.setLanguage(EbConstants.MODULE_CONFIG_MAP.get(EbConstants.LANGUAGE)); - } catch (IOException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static void startRpc() throws Exception{ - try{ - WsServer.getInstance(ModuleE.EB) - .moduleRoles(new String[]{"1.0"}) - .moduleVersion("1.0") - .scanPackage(EbConstants.RPC_PACKAGE_EB) - .connect(EbConstants.MODULE_CONFIG_MAP.get(EbConstants.KERNEL_URL)); - CmdDispatcher.syncKernel(); - }catch (Exception e){ - Log.error("Event Bus rpc start up failed"); - throw new Exception("Event Bus rpc start up failed"); - } - } - - private static void syncClientConnectionInfo(){ - Set roles = EventBus.getInstance().getAllSubscribers(); - if(roles != null){ - for(String role : roles){ - EbConstants.CLIENT_SYNC_POOL.submit(new ClientSyncProcessor(new Object[]{role, EbConstants.SUBSCRIBE})); - } - } - } - - private static void initDB(){ - EbStorageService ebStorageService = SpringLiteContext.getBean(EbStorageService.class); - ebStorageService.init(); - ConcurrentMap map = ebStorageService.loadTopics(); - if(!map.isEmpty()){ - EventBus.getInstance().setTopicMap(map); - } - } - -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Subscriber.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Subscriber.java deleted file mode 100644 index 1aef05dff0..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Subscriber.java +++ /dev/null @@ -1,97 +0,0 @@ -package io.nuls.eventbus.model; - -import lombok.*; - -import java.io.Serializable; -import java.util.Objects; - -/** - * It represents subscriber in Event Bus - * Any module/role in Nuls Blockchain can be a subscriber - * Each subscriber is uniquely identified based on module/role code - * @author naveen - */ -@ToString -@NoArgsConstructor -@AllArgsConstructor -public class Subscriber implements Serializable { - - private static final long serialVersionUID = -4204832123982044991L; - - @Getter - @Setter - private String moduleAbbr; - - @Getter - @Setter - private String moduleName; - - @Getter - @Setter - private String domain; - - @Getter - @Setter - private long subscribeTime; - - @Getter - @Setter - private String callBackCmd; - - /** - * @param abbr module/role code - * @param callBackCmd event is sent to this command, actual subscriber needs to implement to call this command on every event - */ - public Subscriber(String abbr,String callBackCmd) { - this.moduleAbbr = abbr; - this.callBackCmd = callBackCmd; - } - - /** - * @param abbr - * @param moduleName - * @param domain - */ - public Subscriber(String abbr,String moduleName,String domain) { - this.moduleAbbr = abbr; - this.moduleName = moduleName; - this.domain = domain; - } - - /** - * @param abbr - * @param moduleName - * @param domain - * @param callBackCmd - */ - public Subscriber(String abbr,String moduleName,String domain,String callBackCmd){ - this.callBackCmd = callBackCmd; - this.moduleAbbr = abbr; - this.moduleName = moduleName; - this.domain = domain; - } - - /** - * - * @param o - * @return - */ - @Override - public boolean equals(Object o) { - if (this == o){ return true;} - if (o == null || this.getClass() != o.getClass()) {return false;} - - Subscriber that = (Subscriber) o; - - return this.moduleAbbr.equals(that.moduleAbbr); - } - - /** - * - * @return - */ - @Override - public int hashCode() { - return Objects.hash(this.moduleAbbr); - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Topic.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Topic.java deleted file mode 100644 index 4e6bdc80a8..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/model/Topic.java +++ /dev/null @@ -1,112 +0,0 @@ -package io.nuls.eventbus.model; - -import lombok.*; - -import java.io.Serializable; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * Represents a topic in event bus - * Modules/roles subscribes/unsubscribes to topic - * Event is published to topic - * - * @author naveen - */ -@ToString -@NoArgsConstructor -public class Topic implements Serializable { - - private static final long serialVersionUID = -3703883040872615403L; - - @Getter - @Setter - private String topicId; - - @Getter - @Setter - private String topicDescription; - - @Getter - @Setter - private String moduleAbbr; - - @Getter - @Setter - private String moduleName; - - @Getter - @Setter - private String domain; - - @Getter - @Setter - private long createTime; - - @Getter - @Setter - private Set subscribers; - - /** - * @param topicId name of the topic - * @param abbr module/role code who creates the topic - * @param name name of the module/role who creates the topic - * @param domain domain of the module/role who creates the topic - */ - public Topic(String topicId, String abbr,String name,String domain) { - this.topicId = topicId; - this.moduleAbbr = abbr; - this.moduleName = name; - this.domain = domain; - this.createTime = System.currentTimeMillis(); - subscribers = new CopyOnWriteArraySet<>(); - } - - /** - * adds subscriber to the topic - * @param subscriber - * @return Topic - */ - public Topic addSubscriber(Subscriber subscriber){ - subscribers.add(subscriber); - return this; - } - - /** - * unsubscribe the role from the topic - * - * @param subscriber - * @return - */ - public Topic removeSubscriber(Subscriber subscriber){ - for(Subscriber sub : subscribers){ - if(sub.equals(subscriber)){ - subscribers.remove(sub); - } - } - return this; - } - - /** - * - * @param o - * @return - */ - @Override - public boolean equals(Object o) { - if (this == o) {return true;} - if (o == null || this.getClass() != o.getClass()) {return false;} - Topic topic = (Topic) o; - return Objects.equals(this.topicId, topic.topicId); - } - - /** - * - * @return - */ - @Override - public int hashCode() { - return Objects.hash(this.topicId); - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/cmd/EventBusCmd.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/cmd/EventBusCmd.java deleted file mode 100644 index a7ddd9ae3b..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/cmd/EventBusCmd.java +++ /dev/null @@ -1,117 +0,0 @@ -package io.nuls.eventbus.rpc.cmd; - -import io.nuls.eventbus.EventBus; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.constant.EbErrorCode; -import io.nuls.eventbus.model.Subscriber; -import io.nuls.eventbus.rpc.processor.ClientSyncProcessor; -import io.nuls.eventbus.rpc.processor.EventDispatchProcessor; -import io.nuls.rpc.cmd.BaseCmd; -import io.nuls.rpc.model.CmdAnnotation; -import io.nuls.rpc.model.Parameter; -import io.nuls.core.model.StringUtils; -import io.nuls.core.exception.NulsRuntimeException; -import static io.nuls.eventbus.util.EbLog.Log; - -import java.util.Map; -import java.util.Set; - -/** - * Collection of RPC commands for other modules/roles to interact with event bus - * - * @author naveen - */ -public class EventBusCmd extends BaseCmd { - - private final EventBus eventBus = EventBus.getInstance(); - - /** - * subscription command for modules to subscribe given topic - * It adds subscribed role to the client sync queue to get connection info from kernel - * - * @param params required parameters for the subscription - * @return success response when subscription is success, failure response when required parameters are missing or topic is not found - */ - @CmdAnnotation(cmd = EbConstants.EB_SUBSCRIBE, version = 1.0, description = "Subscribe to specific topic") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE_NAME, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_DOMAIN, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_TOPIC, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE_CALLBACK, parameterType = "String") - public Object subscribe(Map params){ - if(params == null){ - return failed(EbErrorCode.PARAMS_MISSING); - } - String moduleAbbr = (String)params.get(EbConstants.CMD_PARAM_ROLE); - String topic = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - String callBackCmd = (String)params.get(EbConstants.CMD_PARAM_ROLE_CALLBACK); - if(StringUtils.isBlank(topic) || StringUtils.isBlank(moduleAbbr) || StringUtils.isBlank(callBackCmd)){ - return failed(EbErrorCode.PARAMS_MISSING); - } - try{ - eventBus.subscribe(params); - }catch (NulsRuntimeException nre){ - Log.error("Subscription is failed"); - return failed(nre.getErrorCode()); - } - EbConstants.CLIENT_SYNC_POOL.submit(new ClientSyncProcessor(new Object[]{moduleAbbr,EbConstants.SUBSCRIBE})); - return success(); - } - - /** - * Un subscription command for modules to unsubscribe from a topic - * - * @param params parameters required for the operation - * @return success/failure response - */ - @CmdAnnotation(cmd = EbConstants.EB_UNSUBSCRIBE, version = 1.0, description = "UnSubscribe to specific topic") - @Parameter(parameterName = EbConstants.CMD_PARAM_TOPIC, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE, parameterType = "String") - public Object unsubscribe(Map params){ - if(params == null){ - return failed(EbErrorCode.PARAMS_MISSING); - } - String moduleAbbr = (String)params.get(EbConstants.CMD_PARAM_ROLE); - String topic = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - if(StringUtils.isBlank(topic) || StringUtils.isBlank(moduleAbbr)){ - return failed(EbErrorCode.PARAMS_MISSING); - } - try{ - eventBus.unsubscribe(params); - }catch (NulsRuntimeException nre){ - Log.error("UnSubscribe is failed"); - return failed(nre.getErrorCode()); - } - EbConstants.CLIENT_SYNC_POOL.submit(new ClientSyncProcessor(new Object[]{moduleAbbr,EbConstants.UNSUBSCRIBE})); - return success(); - } - - /** - * Command to publish/send the event to a topic - * If given topic is not found at Event Bus, it creates new one - * Adds event and subscribers to event dispatch Queue to handle separate thread - * @param params required parameters for the command - * @return success/failure response - */ - @CmdAnnotation(cmd = EbConstants.EB_SEND, version = 1.0, description = "Publish the event entity to subscribers") - @Parameter(parameterName = EbConstants.CMD_PARAM_TOPIC, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_ROLE_NAME, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_DOMAIN, parameterType = "String") - @Parameter(parameterName = EbConstants.CMD_PARAM_DATA, parameterType = "Object") - public Object send(Map params){ - if(params == null){ - return failed(EbErrorCode.PARAMS_MISSING); - } - Object data = params.get(EbConstants.CMD_PARAM_DATA); - String topic = (String)params.get(EbConstants.CMD_PARAM_TOPIC); - if(StringUtils.isBlank(topic)){ - return failed(EbErrorCode.PARAMS_MISSING); - } - Set subscribers = eventBus.publish(params); - if(null != subscribers && !subscribers.isEmpty()){ - EbConstants.EB_THREAD_POOL.execute(new EventDispatchProcessor(new Object[]{data,subscribers})); - } - return success(); - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/invoke/EventAuditInvoke.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/invoke/EventAuditInvoke.java deleted file mode 100644 index 8449fc8642..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/invoke/EventAuditInvoke.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.nuls.eventbus.rpc.invoke; - -import io.nuls.rpc.invoke.BaseInvoke; -import io.nuls.rpc.model.message.Response; -import static io.nuls.eventbus.util.EbLog.Log; - -/** - * Call back command to be executed when the event is sent to subscriber - * @author naveen - */ -public class EventAuditInvoke extends BaseInvoke { - - /** - * - * @param response from subscriber - */ - @Override - public void callBack(Response response) { - Log.info("Call back invoke:"+response); - //TODO implement if any audit related info is required - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/ClientSyncProcessor.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/ClientSyncProcessor.java deleted file mode 100644 index 9b001a9990..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/ClientSyncProcessor.java +++ /dev/null @@ -1,104 +0,0 @@ -package io.nuls.eventbus.rpc.processor; - - -import io.nuls.eventbus.EventBus; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.rpc.client.CmdDispatcher; -import io.nuls.rpc.client.runtime.ClientRuntime; -import io.nuls.rpc.model.ModuleE; -import io.nuls.rpc.model.message.Response; -import io.nuls.rpc.server.runtime.ServerRuntime; -import io.nuls.core.parse.JSONUtils; - -import static io.nuls.eventbus.util.EbLog.Log; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -/** - * Thread to sync roles connection information - *

When any role subscribe to a topic, role is kept in the client sync Queue. - * It connects to Kernel modules and gets connection information for the role and stores at event bus runtime

- *

If operation is unsubscribe, it removed the role from role map from event bus if the role is no more subscribed any topic

- * @author naveen - */ -public class ClientSyncProcessor implements Runnable { - - private Object[] objects; - - public ClientSyncProcessor(Object[] objects) { - this.objects = objects; - } - - /** - * Thread to sync role connection information from kernel - */ - @Override - public void run() { - try{ - String moduleAbbr = (String)objects[0]; - String cmd = (String)objects[1]; - Log.info("Sync process started for Subscriber :"+moduleAbbr +" for the operation:"+cmd); - switch (cmd){ - case EbConstants.SUBSCRIBE: - //syncRoleConnectionInfo(moduleAbbr); - getRoleConnectionInfo(moduleAbbr); - break; - case EbConstants.UNSUBSCRIBE: - Set roles = EventBus.getInstance().getAllSubscribers(); - if(roles != null && !roles.contains(moduleAbbr)){ - ClientRuntime.WS_CLIENT_MAP.remove(ClientRuntime.getRemoteUri(moduleAbbr)); - ClientRuntime.ROLE_MAP.remove(moduleAbbr); - } - break; - default: - } - }catch (Exception e){ - Log.error(e); - } - } - - private void syncRoleConnectionInfo(String subscriber){ - Map params = new HashMap<>(1); - params.put(EbConstants.CMD_PARAM_ROLE,subscriber); - try { - //TODO update with actual command from kernel for role connection info - Response response = CmdDispatcher.requestAndResponse(ModuleE.KE.abbr,"roleInfo",params); - if(response.isSuccess()){ - ConcurrentMap connectionInfoMap = new ConcurrentHashMap<>(2); - Object data = response.getResponseData(); - //TODO parse entity to get connection information - ClientRuntime.ROLE_MAP.put(subscriber,connectionInfoMap); - ClientRuntime.WS_CLIENT_MAP.remove(ClientRuntime.getRemoteUri(subscriber)); - ClientRuntime.getWsClient(ClientRuntime.getRemoteUri(subscriber)); - }else{ - Log.error(response.getResponseComment()); - } - }catch (Exception e){ - Log.error("Couldn't get connection info from kernel for the role:"+subscriber); - } - } - private void getRoleConnectionInfo(String subscriber){ - Log.info("Get connection info for the role :"+subscriber); - try{ - Response response = CmdDispatcher.requestAndResponse(ModuleE.KE.abbr,"registerAPI",JSONUtils.json2map(JSONUtils.obj2json(ServerRuntime.LOCAL))); - if(response.isSuccess()){ - Map responseData = (Map)response.getResponseData(); - Map methodMap = (Map)responseData.get("registerAPI"); - Map dependMap = (Map)methodMap.get("Dependencies"); - Map map = (Map)dependMap.get(subscriber); - if(null != map){ - Log.info("Connection Info for Role:"+subscriber +" -> "+map.toString()); - ClientRuntime.ROLE_MAP.put(subscriber, map); - ClientRuntime.WS_CLIENT_MAP.remove(ClientRuntime.getRemoteUri(subscriber)); - ClientRuntime.getWsClient(ClientRuntime.getRemoteUri(subscriber)); - } - } - }catch (Exception e){ - Log.error(e.getMessage()); - } - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/EventDispatchProcessor.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/EventDispatchProcessor.java deleted file mode 100644 index a77618a21f..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/EventDispatchProcessor.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.nuls.eventbus.rpc.processor; - -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Subscriber; - -import static io.nuls.eventbus.util.EbLog.Log; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * Queue for all the published events. - *

Dispatch of the event is handled by separate thread.And separate thread for handling send,retry process for each subscriber

- * @author naveen - */ -@SuppressWarnings("unused") -public class EventDispatchProcessor implements Runnable { - - private Object[] objects; - - public EventDispatchProcessor(Object[] objects){ - this.objects = objects; - } - /** - * Event dispatch thread - */ - @Override - public void run() { - try{ - if(null != objects){ - Log.info("Processing the published event starts.."); - Object data = objects[0]; - Set subscribers =(Set) objects[1]; - for (Subscriber subscriber : subscribers){ - Map params = new HashMap<>(1); - params.put(EbConstants.CMD_PARAM_DATA,data); - EbConstants.SEND_RETRY_THREAD_POOL.execute(new SendRetryProcessor(new Object[]{subscriber,params})); - } - Log.info("Processing the published event Ends.."); - } - }catch (Exception e){ - Log.error(e); - } - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/SendRetryProcessor.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/SendRetryProcessor.java deleted file mode 100644 index 6ccce5ca0f..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/rpc/processor/SendRetryProcessor.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.nuls.eventbus.rpc.processor; - -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Subscriber; -import io.nuls.eventbus.rpc.invoke.EventAuditInvoke; -import io.nuls.rpc.client.CmdDispatcher; -import io.nuls.rpc.info.Constants; -import static io.nuls.eventbus.util.EbLog.Log; - -import java.util.Map; - -/** Separate thread for each subscriber to perform send & retry process in case event entity is not sent successfully. - * subscriber has to send acknowledgement for the retry process. - * @author naveen - */ -class SendRetryProcessor implements Runnable { - - private final Object[] subscriberEvent; - - SendRetryProcessor(Object[] obj){ - this.subscriberEvent = obj; - } - - /** - * Separate thread for send & retry process for each subscriber - */ - @Override - public void run() { - try{ - if(null != subscriberEvent){ - Subscriber subscriber = (Subscriber)subscriberEvent[0]; - Log.info("SendAndRetry thread running for Subscriber : "+subscriber.getModuleAbbr()); - Map params = (Map)subscriberEvent[1]; - String messageId = sendEvent(subscriber,params); - int retryAttempt = 0; - Log.debug("Acknowledgement for send event messageId: "+messageId +" received"); - while (retryAttempt < EbConstants.EVENT_DISPATCH_RETRY_COUNT && messageId == null){ - Thread.sleep(EbConstants.EVENT_RETRY_WAIT_TIME); - retryAttempt = retryAttempt + 1; - Log.debug("Retry for Subscriber : "+subscriber.getModuleAbbr() +" --> "+"Retry Attempt:"+retryAttempt); - messageId = sendEvent(subscriber,params); - } - } - }catch (Exception e){ - Log.error(e.getMessage()); - } - } - - private String sendEvent(Subscriber subscriber,Map params){ - try{ - return CmdDispatcher.requestAndInvokeWithAck(subscriber.getModuleAbbr(),subscriber.getCallBackCmd(),params,Constants.ZERO,Constants.ZERO,new EventAuditInvoke()); - }catch (Exception e){ - Log.error("Exception in sending event to subscriber :"+subscriber.getModuleAbbr()+" ->"+e.getMessage()); - //get latest connection info from Kernel for the role - EbConstants.CLIENT_SYNC_POOL.submit(new ClientSyncProcessor(new Object[]{subscriber.getModuleAbbr(), EbConstants.SUBSCRIBE})); - } - return null; - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageService.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageService.java deleted file mode 100644 index bfdfef84bc..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageService.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.nuls.eventbus.service; - -import io.nuls.eventbus.model.Topic; - -import java.util.concurrent.ConcurrentMap; - -/** - * Service to handle all DB operations for event bus - * @author naveen - */ -public interface EbStorageService { - - /** - * Initializes Rocks DB - * Creates table for Topic store - */ - void init(); - - /** - * loads topics from RcoskDB table - * @return ConcurrentMap - */ - ConcurrentMap loadTopics(); - - /** - * Stores the given topic in RocksDB - * @param topic topic to store - */ - void putTopic(Topic topic); - - /** - * gets topic for the given key - * @param key topic key to get Topic from DB - * @return Topic topic by topic name - */ - Topic getTopic(byte[] key); - -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageServiceImpl.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageServiceImpl.java deleted file mode 100644 index c3c544f82c..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/service/EbStorageServiceImpl.java +++ /dev/null @@ -1,69 +0,0 @@ -package io.nuls.eventbus.service; - -import io.nuls.db.service.RocksDBService; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Topic; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.ObjectUtils; -import io.nuls.core.model.StringUtils; -import static io.nuls.eventbus.util.EbLog.Log; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -/** - * Implementation class for {@code EbStorageService} - * @author naveen - */ -@Component -public class EbStorageServiceImpl implements EbStorageService { - - @Override - public void init() { - try{ - RocksDBService.init("../../eventbus"); - if(!RocksDBService.existTable(EbConstants.TB_EB_TOPIC)){ - RocksDBService.createTable(EbConstants.TB_EB_TOPIC); - } - }catch (Exception e){ - Log.error("RocksDb init failed"); - } - } - - @Override - public ConcurrentMap loadTopics() { - ConcurrentMap topicMap = new ConcurrentHashMap<>(); - try{ - List keys = RocksDBService.keyList(EbConstants.TB_EB_TOPIC); - if(!keys.isEmpty()){ - Map map = RocksDBService.multiGet(EbConstants.TB_EB_TOPIC,keys); - Set> entrySet = map.entrySet(); - for(Map.Entry entry : entrySet){ - topicMap.put(new String(entry.getKey(),EbConstants.MODULE_CONFIG_MAP.get(EbConstants.ENCODING)),ObjectUtils.bytesToObject(entry.getValue())); - } - } - }catch (Exception e){ - Log.error("Error while loading Topics from DB"); - } - return topicMap; - } - - @Override - public void putTopic(Topic topic) { - try{ - if(null != topic && StringUtils.isNotBlank(topic.getTopicId())){ - RocksDBService.put(EbConstants.TB_EB_TOPIC,topic.getTopicId().getBytes(EbConstants.MODULE_CONFIG_MAP.get(EbConstants.ENCODING)),ObjectUtils.objectToBytes(topic)); - } - }catch (Exception e){ - Log.error("Topic save failed :"+e.getMessage()); - } - } - - @Override - public Topic getTopic(byte[] key) { - return ObjectUtils.bytesToObject(RocksDBService.get(EbConstants.TB_EB_TOPIC,key)); - } -} diff --git a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/util/EbLog.java b/module/nuls-event-bus/src/main/java/io/nuls/eventbus/util/EbLog.java deleted file mode 100644 index 906e5b942e..0000000000 --- a/module/nuls-event-bus/src/main/java/io/nuls/eventbus/util/EbLog.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.nuls.eventbus.util; - -import io.nuls.core.log.logback.LoggerBuilder; -import io.nuls.core.log.logback.NulsLogger; - -/** - * @author naveen - */ -public class EbLog { - public static NulsLogger Log = LoggerBuilder.getLogger("eventbus"); -} diff --git a/module/nuls-event-bus/src/main/resources/languages/en.properties b/module/nuls-event-bus/src/main/resources/languages/en.properties deleted file mode 100644 index 5ca3f72e17..0000000000 --- a/module/nuls-event-bus/src/main/resources/languages/en.properties +++ /dev/null @@ -1,25 +0,0 @@ -10000=Success -10001=Failed -10002=Unkown Error -10003=Data parse error -10004=Parameters missing -10005=Lauguage type not set -10006=IO error -10007=Data length error -10008=Configure error -10009=Signature error -10010=Request denied -10011=The data size is too large, Recommend the single transaction amount is -10012=Parameter error -10013=Parameter can not be null -10014=Data error -10015=Data not found - -20000=Topic not found -20009=data table exist -20010=data table not exist -20011=Create DB area error -20012=data batch saving exceptions -20013=data saving exceptions -20014=data update exceptions -20015=data query exceptions \ No newline at end of file diff --git a/module/nuls-event-bus/src/main/resources/languages/zh-CHS.properties b/module/nuls-event-bus/src/main/resources/languages/zh-CHS.properties deleted file mode 100644 index 5ca3f72e17..0000000000 --- a/module/nuls-event-bus/src/main/resources/languages/zh-CHS.properties +++ /dev/null @@ -1,25 +0,0 @@ -10000=Success -10001=Failed -10002=Unkown Error -10003=Data parse error -10004=Parameters missing -10005=Lauguage type not set -10006=IO error -10007=Data length error -10008=Configure error -10009=Signature error -10010=Request denied -10011=The data size is too large, Recommend the single transaction amount is -10012=Parameter error -10013=Parameter can not be null -10014=Data error -10015=Data not found - -20000=Topic not found -20009=data table exist -20010=data table not exist -20011=Create DB area error -20012=data batch saving exceptions -20013=data saving exceptions -20014=data update exceptions -20015=data query exceptions \ No newline at end of file diff --git a/module/nuls-event-bus/src/main/resources/modules.ini b/module/nuls-event-bus/src/main/resources/modules.ini deleted file mode 100644 index e1e9fc2876..0000000000 --- a/module/nuls-event-bus/src/main/resources/modules.ini +++ /dev/null @@ -1,11 +0,0 @@ -[system] -language=en -encoding=UTF-8 -kernelUrl=ws://127.0.0.1:7771 - -[db] -rocksdb.path=../../../../data/eventbus - -[retry] -retry.count=5 -retry.wait.time=10 \ No newline at end of file diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/KernelMockTest.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/KernelMockTest.java deleted file mode 100644 index d01bf87aac..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/KernelMockTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ⁣⁣ - * MIT License - * ⁣⁣ - * Copyright (C) 2017 - 2018 nuls.io - * ⁣⁣ - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * ⁣⁣ - */ -package io.nuls.eventbus.test; - -import io.nuls.rpc.info.NoUse; -import org.junit.Before; -import org.junit.Test; - -public class KernelMockTest { - - @Before - public void before() { - - } - - @Test - public void test() { - try { - NoUse.mockKernel(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/PublisherTest.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/PublisherTest.java deleted file mode 100644 index e0fef36d70..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/PublisherTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.nuls.eventbus.test; - -import io.nuls.rpc.client.CmdDispatcher; -import io.nuls.rpc.model.ModuleE; -import io.nuls.rpc.model.message.Response; -import io.nuls.rpc.server.WsServer; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -public class PublisherTest { - - @Before - public void before(){ - try { - WsServer.getInstance(ModuleE.AC.abbr, "module", "test.com") - .moduleRoles(ModuleE.AC.abbr, new String[]{"1.0"}) - .moduleVersion("1.0") - .dependencies(ModuleE.EB.abbr, "1.0") - .connect("ws://127.0.0.1:7771"); - - // Get information from kernel - CmdDispatcher.syncKernel(); - }catch (Exception e){ - e.printStackTrace(); - } - } - - @Test - public void sendEvent(){ - Map params = new HashMap<>(); - params.put("entity","This is test event entity"); - params.put("topic","ac_create"); - try { - Response response = CmdDispatcher.requestAndResponse(ModuleE.EB.abbr,"eb_send",params); - System.out.println(response.toString()); - Assert.assertEquals("1",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/SubscriberTest.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/SubscriberTest.java deleted file mode 100644 index 3f6b8670b6..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/SubscriberTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.nuls.eventbus.test; - -import io.nuls.rpc.client.CmdDispatcher; -import io.nuls.rpc.model.ModuleE; -import io.nuls.rpc.model.message.Response; -import io.nuls.rpc.server.WsServer; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -public class SubscriberTest { - - @Before - public void before(){ - try { - WsServer.getInstance(ModuleE.LG.abbr, "module", "test.com") - .moduleRoles(ModuleE.LG.abbr, new String[]{"1.0"}) - .moduleVersion("1.0") - .dependencies(ModuleE.EB.abbr, "1.0") - .connect("ws://127.0.0.1:7771"); - - // Get information from kernel - CmdDispatcher.syncKernel(); - }catch (Exception e){ - e.printStackTrace(); - } - } - - @Test - public void subscribe(){ - Map params = new HashMap<>(); - params.put("role",ModuleE.LG.abbr); - params.put("topic","ac_create"); - params.put("callBackCmd","receiveEvent"); - try { - Response response = CmdDispatcher.requestAndResponse(ModuleE.EB.abbr,"eb_subscribe",params); - System.out.println(response.toString()); - Assert.assertEquals("1",response.getResponseStatus()); - Thread.sleep(Integer.MAX_VALUE); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventBusCmdTest.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventBusCmdTest.java deleted file mode 100644 index fc5fad1e6e..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventBusCmdTest.java +++ /dev/null @@ -1,127 +0,0 @@ -package io.nuls.eventbus.test.rpc.cmd; - -import io.nuls.db.service.RocksDBService; -import io.nuls.eventbus.EventBus; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Topic; -import io.nuls.eventbus.rpc.cmd.EventBusCmd; -import io.nuls.rpc.model.ModuleE; -import io.nuls.rpc.model.message.Response; -import io.nuls.core.core.inteceptor.ModularServiceMethodInterceptor; -import io.nuls.core.core.ioc.SpringLiteContext; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -public class EventBusCmdTest { - - private final EventBusCmd eventBusCmd = new EventBusCmd(); - - @BeforeClass - public static void set() throws Exception { - SpringLiteContext.init(EbConstants.EB_BASE_PACKAGE, new ModularServiceMethodInterceptor()); - } - - @Before - public void before(){ - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.ENCODING,"UTF-8"); - RocksDBService.init("../../eventbus"); - if(!RocksDBService.existTable(EbConstants.TB_EB_TOPIC)){ - try { - RocksDBService.createTable(EbConstants.TB_EB_TOPIC); - } catch (Exception e) { - e.printStackTrace(); - } - } - ConcurrentMap topicMap = new ConcurrentHashMap<>(); - Topic topic = new Topic("ac_create",ModuleE.AC.abbr,"Account","io.nuls"); - topicMap.put("ac_create",topic); - EventBus.getInstance().setTopicMap(topicMap); - } - - @Test - public void subscribe(){ - Map params = new HashMap<>(); - params.put("topic","ac_create"); - params.put("role", ModuleE.LG.abbr); - params.put("callBackCmd", "eventReceive"); - try { - Response response = (Response) eventBusCmd.subscribe(params); - System.out.println("Response:"+response); - Assert.assertEquals("1",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void subscribeParamMissing(){ - Map params = new HashMap<>(); - params.put("topic","ac_create"); - params.put("role", ModuleE.LG.abbr); - try { - Response response = (Response) eventBusCmd.subscribe(params); - System.out.println("Response:"+response); - Assert.assertEquals("0",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void subscribeTopicNotFound(){ - Map params = new HashMap<>(); - params.put("topic","demo_topic"); - params.put("role", ModuleE.LG.abbr); - try { - Response response = (Response) eventBusCmd.subscribe(params); - Assert.assertEquals("0",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void unsubscribe(){ - Map params = new HashMap<>(); - params.put("topic","ac_create"); - params.put("role", ModuleE.LG.abbr); - try { - Response response = (Response) eventBusCmd.unsubscribe(params); - Assert.assertEquals("1",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void unsubscribeTopicNotFound(){ - Map params = new HashMap<>(); - params.put("topic","demo_topic"); - params.put("role", ModuleE.LG.abbr); - try { - Response response = (Response) eventBusCmd.unsubscribe(params); - Assert.assertEquals("0",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void sendParamMissing(){ - Map params = new HashMap<>(); - params.put("role", ModuleE.LG.abbr); - try { - Response response = (Response) eventBusCmd.send(params); - Assert.assertEquals("0",response.getResponseStatus()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventDataReceiveCmd.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventDataReceiveCmd.java deleted file mode 100644 index 1ed9f87f60..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/rpc/cmd/EventDataReceiveCmd.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.nuls.eventbus.test.rpc.cmd; - -import io.nuls.rpc.cmd.BaseCmd; -import io.nuls.rpc.model.CmdAnnotation; - -import java.util.Map; - -public class EventDataReceiveCmd extends BaseCmd { - - @CmdAnnotation(cmd = "receiveEvent", version = 1.0, description = "Event receive") - public void receiveEvent(Map params){ - System.out.println("Call back is called"); - String data = (String)params.get("entity"); - System.out.println("Received event: "+data); - } -} diff --git a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/service/EbStorageServiceTest.java b/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/service/EbStorageServiceTest.java deleted file mode 100644 index 66b5792f6c..0000000000 --- a/module/nuls-event-bus/src/test/java/io/nuls/eventbus/test/service/EbStorageServiceTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.nuls.eventbus.test.service; - -import io.nuls.db.service.RocksDBService; -import io.nuls.eventbus.constant.EbConstants; -import io.nuls.eventbus.model.Subscriber; -import io.nuls.eventbus.model.Topic; -import io.nuls.eventbus.service.EbStorageService; -import io.nuls.eventbus.service.EbStorageServiceImpl; -import io.nuls.rpc.model.ModuleE; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.concurrent.ConcurrentMap; - -public class EbStorageServiceTest { - - private final EbStorageService ebStorageService = new EbStorageServiceImpl(); - - @Before - public void before(){ - EbConstants.MODULE_CONFIG_MAP.put(EbConstants.ENCODING,"UTF-8"); - RocksDBService.init("../../eventbus"); - if(!RocksDBService.existTable(EbConstants.TB_EB_TOPIC)){ - try { - RocksDBService.createTable(EbConstants.TB_EB_TOPIC); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - @Test - public void storeTopic(){ - Topic topic = new Topic("ac_create", ModuleE.AC.abbr,"account","nuls.io"); - Subscriber subscriber = new Subscriber(ModuleE.LG.abbr,"Ledger","nuls.io"); - Subscriber subscriber1 = new Subscriber(ModuleE.BL.abbr,"block","nuls.io"); - topic.addSubscriber(subscriber); - topic.addSubscriber(subscriber1); - ebStorageService.putTopic(topic); - - } - - @Test - public void getTopic(){ - Topic fromStorage = ebStorageService.getTopic("ac_create".getBytes()); - System.out.println("Topic id:"+fromStorage.getTopicId()); - for(Subscriber sub : fromStorage.getSubscribers()){ - System.out.println("Subscriber module:"+sub.getModuleAbbr()); - } - Assert.assertEquals("ac_create",fromStorage.getTopicId()); - } - - @Test - public void loadAllTopics(){ - ConcurrentMap topicMap = ebStorageService.loadTopics(); - System.out.println(topicMap.keySet().toString()); - Assert.assertNotNull(topicMap); - } -} From f66b77491803a22063b5d3e062e39262644217ea Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 30 Jun 2020 14:12:38 +0800 Subject: [PATCH 021/304] update public-service add cross tx query --- genesis-block.json | 2995 ++++++++++++++++- module.ncf | 52 +- .../service/impl/ProtocolServiceImpl.java | 3 + .../io/nuls/api/analysis/AnalysisHandler.java | 2 + .../io/nuls/api/constant/DBTableConstant.java | 2 + .../java/io/nuls/api/db/ChainService.java | 2 + .../io/nuls/api/db/TransactionService.java | 2 + .../api/db/mongo/MongoChainServiceImpl.java | 13 + .../api/db/mongo/MongoDBTableServiceImpl.java | 2 + .../db/mongo/MongoTransactionServiceImpl.java | 35 + .../api/model/po/CrossTxRelationInfo.java | 163 + .../api/rpc/controller/AccountController.java | 8 +- .../api/rpc/controller/ChainController.java | 23 +- .../java/io/nuls/api/service/SyncService.java | 23 +- 14 files changed, 3265 insertions(+), 60 deletions(-) create mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java diff --git a/genesis-block.json b/genesis-block.json index 1e9468faa2..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,54 +3,3013 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 1000000000000000, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 1000000000000000, + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 1000000000000000, + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, + "lockTime": 0 + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, + "lockTime": 0 + }, + { + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, + "lockTime": 0 + }, + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, "lockTime": 0 }, { "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 1000000000000000, + "amount": 6003107334889, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 1000000000000000, + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, "lockTime": 0 }, { "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 1000000000000000, + "amount": 5964220175225, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1000000000000000, + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, "lockTime": 0 }, { - "address": "tNULSeBaMmTNYqywL5ZSHbyAQ662uE3wibrgD1", - "amount": 1000000000000000, + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, "lockTime": 0 }, { - "address": "tNULSeBaMoNnKitV28JeuUdBaPSR6n1xHfKLj2", - "amount": 1000000000000000, + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 1000000000000000, + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, "lockTime": 0 + }, + { + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, + "lockTime": 0 + }, + { + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, + "lockTime": 0 + }, + { + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, + "lockTime": 0 + }, + { + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, + "lockTime": 0 + }, + { + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, + "lockTime": 0 + }, + { + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, + "lockTime": 0 + }, + { + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, + "lockTime": 0 + }, + { + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, + "lockTime": 0 + }, + { + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, + "lockTime": 0 + }, + { + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", diff --git a/module.ncf b/module.ncf index 54ed2821e3..54745012f5 100644 --- a/module.ncf +++ b/module.ncf @@ -1,21 +1,21 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs +logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG -dataPath=../../../../data +dataPath=E:/work/src/nuls-v2/data #默认本链ID chainId=2 #地址前缀 addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -28,18 +28,19 @@ blackHolePublicKey=0000000000000000000000000000000000000000000000000000000000000 port=18001 crossPort=18002 #魔法参数 -packetMagic=2020051201 +packetMagic=20200120 #种子节点 -selfSeedIps=192.168.1.139:18001,192.168.1.137:18001,192.168.1.140:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.139:18002,192.168.1.137:18002,192.168.1.140:18002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup +dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -49,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -62,7 +63,7 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMsWM1DWppv2H5AUjoxRALv8Rx1JL1V,tNULSeBaMgn16tSzn3Tr6EobmZ9UAfAwD9gPXt,tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -77,14 +78,14 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 -initTime=1585897200 +initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=10 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 -deflationTimeInterval=300 +deflationTimeInterval=2592000 dataPath=../../../../../data logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain @@ -92,7 +93,9 @@ dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 @@ -119,28 +122,35 @@ dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.139:18002,192.168.1.137:18002,192.168.1.140:18002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=tNULSeBaMsWM1DWppv2H5AUjoxRALv8Rx1JL1V,tNULSeBaMgn16tSzn3Tr6EobmZ9UAfAwD9gPXt,tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dependent=protocol-update +dependent=protocol-update,smart-contract + +[chain-manager] +dependent=protocol-update,smart-contract [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 +serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=5 \ No newline at end of file +interval=10 +dependent=smart-contract,cross-chain + +[transaction] +dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-protocol-update/src/main/java/io/nuls/protocol/service/impl/ProtocolServiceImpl.java b/module/nuls-protocol-update/src/main/java/io/nuls/protocol/service/impl/ProtocolServiceImpl.java index f376fe67a4..31ad756b93 100644 --- a/module/nuls-protocol-update/src/main/java/io/nuls/protocol/service/impl/ProtocolServiceImpl.java +++ b/module/nuls-protocol-update/src/main/java/io/nuls/protocol/service/impl/ProtocolServiceImpl.java @@ -79,6 +79,7 @@ public void init(int chainId) { list.sort(ProtocolVersionPo.COMPARATOR.reversed()); ProtocolVersionPo protocolVersionPo = list.get(0); ProtocolVersion protocolVersion = PoUtil.getProtocolVersion(protocolVersionPo); + System.out.println("---------init currentVersion----------," + protocolVersion.getVersion()); context.setCurrentProtocolVersion(protocolVersion); VersionChangeNotifier.notify(chainId, protocolVersion.getVersion()); VersionChangeNotifier.reRegister(chainId, context, protocolVersion.getVersion()); @@ -149,6 +150,7 @@ private boolean saveGenesisBlock(int chainId, BlockHeader blockHeader) { logger.info("height-0, save-" + b + ", new statisticsInfo-" + statisticsInfo); //设置新协议版本 context.setCurrentProtocolVersion(genesisProtocolVersion); + System.out.println("---------genesisProtocolVersion----------," + genesisProtocolVersion.getVersion()); context.setCurrentProtocolVersionCount(statisticsInfo.getCount()); protocolService.saveCurrentProtocolVersionCount(chainId, context.getCurrentProtocolVersionCount()); VersionChangeNotifier.notify(chainId, genesisProtocolVersion.getVersion()); @@ -236,6 +238,7 @@ public boolean save(int chainId, BlockHeader blockHeader) { } //设置新协议版本 context.setCurrentProtocolVersion(statictisProtocolVersion); + System.out.println("---------协议升级 save block statictisProtocolVersion----------," + statictisProtocolVersion.getVersion()); context.setCurrentProtocolVersionCount(statisticsInfo.getCount()); protocolService.saveCurrentProtocolVersionCount(chainId, context.getCurrentProtocolVersionCount()); context.getProtocolVersionHistory().push(statictisProtocolVersion); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index 0dea40193e..91555a1625 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -823,12 +823,14 @@ private static ChainInfo toChainInfo(Transaction tx) throws NulsException { io.nuls.api.model.entity.v5.TxChain txChain = new io.nuls.api.model.entity.v5.TxChain(); txChain.parse(tx.getTxData(), 0); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); + chainInfo.setChainName(txChain.getName()); AssetInfo assetInfo = new AssetInfo(); assetInfo.setAssetId(txChain.getDefaultAsset().getAssetId()); assetInfo.setChainId(txChain.getDefaultAsset().getChainId()); assetInfo.setSymbol(txChain.getDefaultAsset().getSymbol()); assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); + assetInfo.setDecimals(txChain.getDefaultAsset().getDecimalPlaces()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java index 94934fa8fb..fe115aa371 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java @@ -29,6 +29,8 @@ public interface DBTableConstant { String TX_TABLE = "tx_table_"; //交易关系记录表 String TX_RELATION_TABLE = "tx_relation_table_"; + + String CROSS_TX_RELATION_TABLE = "cross_tx_relation_table_"; //交易关系记录表 String TX_UNCONFIRM_RELATION_TABLE = "tx_unconfirm_relation_table_"; //交易表 diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java index 6cacbe2710..ac6c9e55ca 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java @@ -12,6 +12,8 @@ public interface ChainService { List getChainInfoList(); + List getOtherChainInfoList(int chainId); + SyncInfo getSyncInfo(int chainId); void addChainInfo(ChainInfo chainInfo); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java index c82f552b3e..bb48510421 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java @@ -16,6 +16,8 @@ public interface TransactionService { PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, boolean isHidden, long startTime, long endTime); + void saveCrossTxRelationList(int chainId, Set relationInfos); + List getUnConfirmList(int chainId); void deleteTxs(int chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java index c5de15f625..bbb843766e 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java @@ -47,6 +47,19 @@ public List getChainInfoList() { return chainList; } + public List getOtherChainInfoList(int chainId) { + Bson filter = Filters.ne("_id", chainId); + List documentList = mongoDBService.query(CHAIN_INFO_TABLE, filter); + if (documentList.isEmpty()) { + return null; + } + List chainList = new ArrayList<>(); + for (Document document : documentList) { + chainList.add(ChainInfo.toInfo(document)); + } + return chainList; + } + public void addChainInfo(ChainInfo chainInfo) { if (getChainInfo(chainInfo.getChainId()) == null) { Document document = chainInfo.toDocument(); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java index f18b3bf3c2..8577447253 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java @@ -139,6 +139,8 @@ private void initTablesIndex(int chainId) { mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("time")); mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","fromAddress")); mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","toAddress")); + //跨链交易表索引 + mongoDBService.createIndex(DBTableConstant.CROSS_TX_RELATION_TABLE + chainId, Indexes.ascending("address")); } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index 5d6a56ac91..b27f685386 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -221,6 +221,41 @@ public PageInfo getTxList(int chainId, int pageIndex, int p return pageInfo; } + + public void saveCrossTxRelationList(int chainId, Set relationInfos) { + if (relationInfos.isEmpty()) { + return; + } + List documentList = new ArrayList<>(); + for (CrossTxRelationInfo relationInfo : relationInfos) { + Document document = relationInfo.toDocument(); + documentList.add(document); + } + + InsertManyOptions options = new InsertManyOptions(); + options.ordered(false); + mongoDBService.insertMany(CROSS_TX_RELATION_TABLE + chainId , documentList, options); +// List saveList = new ArrayList(); +// for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { +// saveList.clear(); +// List documentList = relationMap.get("relation_" + i); +// if (documentList.size() == 0) { +// continue; +// } +// for (Document document : documentList) { +// saveList.add(document); +// if (saveList.size() == 1000) { +// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); +// saveList.clear(); +// } +// } +// if (saveList.size() != 0) { +// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); +// } +// } + } + + @Override public List getUnConfirmList(int chainId) { List docList = mongoDBService.query(TX_UNCONFIRM_TABLE + chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java new file mode 100644 index 0000000000..0ce9e1436b --- /dev/null +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java @@ -0,0 +1,163 @@ +package io.nuls.api.model.po; + +import org.bson.Document; + +import java.math.BigInteger; + +import static io.nuls.api.constant.ApiConstant.TRANSFER_FROM_TYPE; +import static io.nuls.api.constant.ApiConstant.TRANSFER_TO_TYPE; + + +public class CrossTxRelationInfo { + + private String txHash; + + private String address; + + private long createTime; + + private int chainId; + + private int assetId; + + private String symbol; + + private BigInteger values; + + // -1 : from , 1: to + private int transferType; + + private int status; + + public CrossTxRelationInfo() { + + } + + public CrossTxRelationInfo(String address, String txHash) { + this.address = address; + this.txHash = txHash; + } + + public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx) { + this.address = output.getAddress(); + this.chainId = output.getChainId(); + this.assetId = output.getAssetsId(); + this.symbol = output.getSymbol(); + this.values = output.getAmount(); + this.txHash = tx.getHash(); + this.createTime = tx.getCreateTime(); + this.transferType = TRANSFER_TO_TYPE; + } + + public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx) { + this.address = input.getAddress(); + this.chainId = input.getChainId(); + this.assetId = input.getAssetsId(); + this.symbol = input.getSymbol(); + this.values = input.getAmount(); + this.txHash = tx.getHash(); + this.createTime = tx.getCreateTime(); + this.transferType = TRANSFER_FROM_TYPE; + } + + public Document toDocument() { + Document document = new Document(); + document.append("address", address).append("txHash", txHash).append("createTime", createTime) + .append("chainId", chainId).append("assetId", assetId).append("symbol", symbol) + .append("values", values.toString()).append("transferType", transferType); + return document; + } + + public static CrossTxRelationInfo toInfo(Document document) { + try { + CrossTxRelationInfo relationInfo = new CrossTxRelationInfo(); + relationInfo.setAddress(document.getString("address")); + relationInfo.setTxHash(document.getString("txHash")); + relationInfo.setCreateTime(document.getLong("createTime")); + relationInfo.setChainId(document.getInteger("chainId")); + relationInfo.setAssetId(document.getInteger("assetId")); + relationInfo.setSymbol(document.getString("symbol")); + relationInfo.setTransferType(document.getInteger("transferType")); + relationInfo.setValues(new BigInteger(document.getString("values"))); + return relationInfo; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + public String getTxHash() { + return txHash; + } + + public void setTxHash(String txHash) { + this.txHash = txHash; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public long getCreateTime() { + return createTime; + } + + public void setCreateTime(long createTime) { + this.createTime = createTime; + } + + + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public BigInteger getValues() { + return values; + } + + public void setValues(BigInteger values) { + this.values = values; + } + + public int getTransferType() { + return transferType; + } + + public void setTransferType(int transferType) { + this.transferType = transferType; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } + +} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 4816e7c503..0afeb4b68b 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -590,10 +590,10 @@ public RpcResult getAccountCrossLedgerList(List params) { } List list = accountLedgerService.getAccountCrossLedgerInfoList(chainId, address); for (AccountLedgerInfo ledgerInfo : list) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); - ledgerInfo.setBalance(balanceInfo.getBalance()); - ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); - ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); +// BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); +// ledgerInfo.setBalance(balanceInfo.getBalance()); +// ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); +// ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(ledgerInfo.getAssetKey()); if (assetInfo != null) { ledgerInfo.setSymbol(assetInfo.getSymbol()); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index b701d6d1c8..98075a8b41 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -42,6 +42,8 @@ public class ChainController { private StatisticalService statisticalService; @Autowired private AgentService agentService; + @Autowired + private ChainService chainService; @RpcMethod("getChainInfo") public RpcResult getChainInfo(List params) { @@ -58,15 +60,18 @@ public RpcResult getOtherChainList(List params) { return RpcResult.paramError("[chainId] is invalid"); } - List> chainInfoList = new ArrayList<>(); - for (ChainInfo chainInfo : CacheManager.getChainInfoMap().values()) { - if (chainInfo.getChainId() != chainId) { - Map map = new HashMap<>(); - map.put("chainId", chainInfo.getChainId()); - map.put("chainName", chainInfo.getChainName()); - chainInfoList.add(map); - } - } + List chainInfoList = chainService.getOtherChainInfoList(chainId); +// +// +// List> chainInfoList = new ArrayList<>(); +// for (ChainInfo chainInfo : CacheManager.getChainInfoMap().values()) { +// if (chainInfo.getChainId() != chainId) { +// Map map = new HashMap<>(); +// map.put("chainId", chainInfo.getChainId()); +// map.put("chainName", chainInfo.getChainName()); +// chainInfoList.add(map); +// } +// } return RpcResult.success(chainInfoList); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 0d1d433dc5..4e821806d5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -59,6 +59,8 @@ public class SyncService { private List agentInfoList = new ArrayList<>(); //记录每个区块交易和账户地址的关系 private Set txRelationInfoSet = new HashSet<>(); + //记录每个跨链交易和账户地址的关系 + private Set crossTxRelationInfoSet = new HashSet<>(); //记录每个区块设置别名信息 private List aliasInfoList = new ArrayList<>(); //记录每个区块委托共识的信息 @@ -307,8 +309,8 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { continue; } addressSet.add(input.getAddress()); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); + calcBalance(chainId, input); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx)); } } @@ -320,11 +322,11 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { continue; } addressSet.add(output.getAddress()); - if(nrc20CrossTransferBack && output.getAssetsId() != ApiContext.defaultAssetId) { + if (nrc20CrossTransferBack && output.getAssetsId() != ApiContext.defaultAssetId) { txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO)); } else { AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx)); } } } @@ -345,7 +347,7 @@ private void processCrossTransferTxForNRC20TransferOut(int chainId, TransactionI continue; } addressSet.add(input.getAddress()); - if(input.getAssetsId() == ApiContext.defaultAssetId) { + if (input.getAssetsId() == ApiContext.defaultAssetId) { AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); } else { @@ -377,7 +379,7 @@ private void processLedgerAssetRegTransferTx(int chainId, TransactionInfo tx) { } private void processCrossTransferTxForNRC20TransferBack(int chainId, TransactionInfo tx) { - if(tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo) { + if (tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo) { ContractCallInfo callInfo = (ContractCallInfo) tx.getTxData(); ContractInfo contractInfo = queryContractInfo(chainId, callInfo.getContractAddress()); contractInfo.setTxCount(contractInfo.getTxCount() + 1); @@ -711,8 +713,9 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(to, tx, ledgerInfo.getTotalBalance())); } } - - chainInfoList.add((ChainInfo) tx.getTxData()); + ChainInfo chainInfo =(ChainInfo) tx.getTxData(); + chainInfo.setNew(true); + chainInfoList.add(chainInfo); } private void processDestroyChainTx(int chainId, TransactionInfo tx) { @@ -757,6 +760,7 @@ private void processAddAssetTx(int chainId, TransactionInfo tx) { AssetInfo assetInfo = (AssetInfo) tx.getTxData(); ChainInfo chainInfo = chainService.getChainInfo(chainId); if (chainInfo != null) { + chainInfo.setNew(false); chainInfo.getAssets().add(assetInfo); chainInfoList.add(chainInfo); } @@ -924,6 +928,8 @@ public void save(int chainId, BlockInfo blockInfo) { // time2 = System.currentTimeMillis(); // System.out.println("-----------saveTxRelationList, use: " + (time2 - time1) ); // time1 = System.currentTimeMillis(); + //存储跨链交易和地址关系记录 + txService.saveCrossTxRelationList(chainId, crossTxRelationInfoSet); //存储别名记录 aliasService.saveAliasList(chainId, aliasInfoList); @@ -1086,6 +1092,7 @@ private void clear(int chainId) { accountLedgerInfoMap.clear(); agentInfoList.clear(); txRelationInfoSet.clear(); + crossTxRelationInfoSet.clear(); aliasInfoList.clear(); depositInfoList.clear(); punishLogList.clear(); From 1c4dde417b051dd8c71b653884cef67b9f6464d9 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 30 Jun 2020 15:36:42 +0800 Subject: [PATCH 022/304] fixed NPE --- .../java/io/nuls/contract/rpc/resource/ContractResource.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 3b4aa087bf..3e93c2e1e6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -1064,6 +1064,9 @@ public Response contractResultList(Map params) { continue; } ContractBaseTransaction tx1 = ContractUtil.convertContractTx(chainId, tx); + if (tx1 == null) { + continue; + } contractResultDto = this.makeContractResultDto(chainId, tx1, txHash); if (contractResultDto == null) { continue; From 9b688405b118032b637d1d3ae58ab660874194ac Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 30 Jun 2020 15:53:50 +0800 Subject: [PATCH 023/304] update public-service add cross tx query --- genesis-block.json | 3010 +---------------- module.ncf | 60 +- .../io/nuls/api/analysis/AnalysisHandler.java | 21 +- .../nuls/api/analysis/WalletRpcHandler.java | 5 +- .../api/db/mongo/MongoBlockServiceImpl.java | 1 + .../io/nuls/api/model/po/BlockHeaderInfo.java | 10 + .../rpc/controller/TransactionController.java | 12 +- .../controller/runner/QueueContractRun.java | 3 +- .../java/io/nuls/api/service/SyncService.java | 4 +- 9 files changed, 67 insertions(+), 3059 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index a27d624510..b10b9fec1f 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,12 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgZaT3KuXGuMomS1yGPTzMgedAMwjCF", + "amount": 1000000000000000, "lockTime": 0 - }, - { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, - "lockTime": 0 - }, - { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, - "lockTime": 0 - }, - { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, - "lockTime": 0 - }, - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, - "lockTime": 0 - }, - { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, - "lockTime": 0 - }, - { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, - "lockTime": 0 - }, - { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, - "lockTime": 0 - }, - { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, - "lockTime": 0 - }, - { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, - "lockTime": 0 - }, - { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, - "lockTime": 0 - }, - { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, - "lockTime": 0 - }, - { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, - "lockTime": 0 - }, - { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, - "lockTime": 0 - }, - { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, - "lockTime": 0 - }, - { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, - "lockTime": 0 - }, - { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, - "lockTime": 0 - }, - { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, - "lockTime": 0 - }, - { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, - "lockTime": 0 - }, - { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, - "lockTime": 0 - } - ], - "alias": [ - { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" - }, - { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" - }, - { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" - }, - { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" - }, - { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" - }, - { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" - }, - { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" - }, - { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" - }, - { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" - }, - { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" - }, - { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" - }, - { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" - }, - { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" - }, - { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" - }, - { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" - }, - { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" - }, - { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" - }, - { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" - }, - { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" - }, - { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" - }, - { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" - }, - { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" - }, - { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" - }, - { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" - }, - { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" - }, - { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" - }, - { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" - }, - { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" - }, - { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" - }, - { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" - }, - { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" - }, - { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" - }, - { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" - }, - { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" - }, - { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" - }, - { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" - }, - { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" - }, - { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" - }, - { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" - }, - { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" - }, - { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" - }, - { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" - }, - { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" - }, - { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" - }, - { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" - }, - { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" - }, - { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" - }, - { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" - }, - { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" - }, - { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" - }, - { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" - }, - { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" - }, - { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" - }, - { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" - }, - { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" - }, - { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" - }, - { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" - }, - { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} diff --git a/module.ncf b/module.ncf index 54745012f5..19524cf470 100644 --- a/module.ncf +++ b/module.ncf @@ -5,19 +5,19 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,16 +25,17 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=100 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=192.168.1.119:8001,192.168.1.120:8001,192.168.1.121:8001 +#selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=192.168.1.119:8001,192.168.1.120:8001,192.168.1.121:8001 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 @@ -63,13 +64,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6HgcjSWUbG4SSPYsvQysbsT5R3Rvmbom,NULSd6HgUxj3weGguFo3sbPu5cqStBAsxy8ZP,NULSd6HgVK1WCJercC8DvKCmHHNycEtsrKeW1 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,28 +79,25 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -112,25 +110,25 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=192.168.1.119:8002,192.168.1.120:8002,192.168.1.121:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6HgcjSWUbG4SSPYsvQysbsT5R3Rvmbom,NULSd6HgUxj3weGguFo3sbPu5cqStBAsxy8ZP,NULSd6HgVK1WCJercC8DvKCmHHNycEtsrKeW1 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 @@ -149,7 +147,7 @@ dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain [transaction] diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index 91555a1625..c40f4285d9 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -161,6 +161,7 @@ public static BlockHeaderInfo toBlockHeaderInfo(BlockHeader blockHeader, int cha info.setPackingIndexOfRound(extendsData.getPackingIndexOfRound()); info.setScriptSign(HexUtil.encode(blockHeader.getBlockSignature().serialize())); info.setAgentVersion(extendsData.getBlockVersion()); + info.setMainVersion(extendsData.getMainVersion()); info.setRoundStartTime(extendsData.getRoundStartTime()); //是否是种子节点打包的区块 ApiCache apiCache = CacheManager.getCache(chainId); @@ -175,7 +176,7 @@ public static List toTxs(int chainId, List txList, for (int i = 0; i < txList.size(); i++) { Transaction tx = txList.get(i); tx.setStatus(TxStatusEnum.CONFIRMED); - TransactionInfo txInfo = toTransaction(chainId, tx, resultInfoMap); + TransactionInfo txInfo = toTransaction(chainId, tx, resultInfoMap, blockHeader.getMainVersion()); if (txInfo.getType() == TxType.RED_PUNISH) { PunishLogInfo punishLog = (PunishLogInfo) txInfo.getTxData(); punishLog.setRoundIndex(blockHeader.getRoundIndex()); @@ -193,7 +194,7 @@ public static List toTxs(int chainId, List txList, return txs; } - public static TransactionInfo toTransaction(int chainId, Transaction tx) throws Exception { + public static TransactionInfo toTransaction(int chainId, Transaction tx, int version) throws Exception { TransactionInfo info = new TransactionInfo(); info.setHash(tx.getHash().toHex()); info.setHeight(tx.getBlockHeight()); @@ -221,14 +222,14 @@ public static TransactionInfo toTransaction(int chainId, Transaction tx) throws if (info.getType() == TxType.YELLOW_PUNISH) { info.setTxDataList(toYellowPunish(tx)); } else { - info.setTxData(toTxData(chainId, tx)); + info.setTxData(toTxData(chainId, tx, version)); } info.calcValue(); info.calcFee(chainId); return info; } - public static TransactionInfo toTransaction(int chainId, Transaction tx, Map resultInfoMap) throws Exception { + public static TransactionInfo toTransaction(int chainId, Transaction tx, Map resultInfoMap, int version) throws Exception { TransactionInfo info = new TransactionInfo(); info.setHash(tx.getHash().toHex()); info.setHeight(tx.getBlockHeight()); @@ -256,7 +257,7 @@ public static TransactionInfo toTransaction(int chainId, Transaction tx, Map toCoinToList(CoinData coinData) { return toInfoList; } - public static TxDataInfo toTxData(int chainId, Transaction tx) throws NulsException { + public static TxDataInfo toTxData(int chainId, Transaction tx, int version) throws NulsException { if (tx.getType() == TxType.ACCOUNT_ALIAS) { return toAlias(tx); } else if (tx.getType() == TxType.REGISTER_AGENT || tx.getType() == TxType.CONTRACT_CREATE_AGENT) { @@ -334,7 +335,7 @@ public static TxDataInfo toTxData(int chainId, Transaction tx) throws NulsExcept } else if (tx.getType() == TxType.CONTRACT_TRANSFER) { return toContractTransferInfo(tx); } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET || tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { - return toChainInfo(tx); + return toChainInfo(tx, version); } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN || tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { return toAssetInfo(tx); } @@ -793,9 +794,9 @@ private static ContractTransferInfo toContractTransferInfo(Transaction tx) throw return info; } - private static ChainInfo toChainInfo(Transaction tx) throws NulsException { + private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsException { ChainInfo chainInfo = new ChainInfo(); - if (ApiContext.protocolVersion < 4) { + if (version < 4) { TxChain txChain = new TxChain(); txChain.parse(new NulsByteBuffer(tx.getTxData())); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); @@ -807,7 +808,7 @@ private static ChainInfo toChainInfo(Transaction tx) throws NulsException { assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); - } else if (ApiContext.protocolVersion == 4) { + } else if (version == 4) { io.nuls.api.model.entity.v4.TxChain txChain = new io.nuls.api.model.entity.v4.TxChain(); txChain.parse(new NulsByteBuffer(tx.getTxData())); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 06fc2a73e8..8f58ebc442 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -185,7 +185,7 @@ public static Result getTx(int chainId, String hash) { tx.setStatus(TxStatusEnum.CONFIRMED); } tx.setBlockHeight(height); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); return Result.getSuccess(null).setData(txInfo); } catch (NulsException e) { @@ -293,8 +293,9 @@ public static Result getContractConstructor(int chainId, String contractCod } private static String crossTokenSystemContract = null; + public static String getCrossTokenSystemContract(int chainId) throws NulsException { - if(StringUtils.isBlank(crossTokenSystemContract)) { + if (StringUtils.isBlank(crossTokenSystemContract)) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.GET_CROSS_TOKEN_SYSTEM_CONTRACT, params); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java index b52a4c0ee4..0206dcddb7 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java @@ -68,6 +68,7 @@ public BlockHeaderInfo getBlockHeaderByHash(int chainId, String hash) { public void saveBLockHeaderInfo(int chainId, BlockHeaderInfo blockHeaderInfo) { Document document = DocumentTransferTool.toDocument(blockHeaderInfo, "height"); + document.remove("mainVersion"); mongoDBService.insertOne(BLOCK_HEADER_TABLE + chainId, document); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java index ff5d954f24..8592d54339 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java @@ -71,6 +71,8 @@ public class BlockHeaderInfo { private int agentVersion; + private int mainVersion; + public void setByAgentInfo(AgentInfo agentInfo) { this.agentHash = agentInfo.getTxHash(); this.agentId = agentInfo.getAgentId(); @@ -236,4 +238,12 @@ public int getAgentVersion() { public void setAgentVersion(int agentVersion) { this.agentVersion = agentVersion; } + + public int getMainVersion() { + return mainVersion; + } + + public void setMainVersion(int mainVersion) { + this.mainVersion = mainVersion; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 33c7189aa2..b74ab83250 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -171,7 +171,7 @@ public RpcResult getTxList(List params) { } try { - endTime = Long.parseLong(params.get(6).toString()); + endTime = Long.parseLong(params.get(6).toString()); } catch (Exception e) { } @@ -389,7 +389,7 @@ public RpcResult broadcastTx(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -430,7 +430,7 @@ public RpcResult broadcastTxWithoutAnyValidation(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -471,12 +471,12 @@ public RpcResult sendCrossTx(List params) { return RpcResult.dataNotFound(); } try { - Result result = WalletRpcHandler.sendCrossTx(chainId, txHex); + Result result = WalletRpcHandler.sendCrossTx(chainId, txHex); if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -515,7 +515,7 @@ public RpcResult broadcastTxWithNoContractValidation(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java index ce7e676b24..c783eb80e1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java @@ -23,6 +23,7 @@ */ package io.nuls.api.rpc.controller.runner; +import io.nuls.api.ApiContext; import io.nuls.api.analysis.AnalysisHandler; import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.db.TransactionService; @@ -58,7 +59,7 @@ public void run() { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); LoggerUtil.commonLog.info("排队广播指定合约交易[{}]成功", txInfo.getHash()); txService.saveUnConfirmTx(chainId, txInfo, txHex); // 休眠10秒 diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 4e821806d5..63d5e8394f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -906,8 +906,8 @@ public void save(int chainId, BlockInfo blockInfo) { long time1, time2; - SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader().getAgentVersion()); - ApiContext.protocolVersion = syncInfo.getVersion(); + SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader().getMainVersion()); + //存储区块头信息 time1 = System.currentTimeMillis(); blockService.saveBLockHeaderInfo(chainId, blockInfo.getHeader()); From 5f5caa52885e60c2c4f61bd9302bd97616f12508 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 30 Jun 2020 16:18:40 +0800 Subject: [PATCH 024/304] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/base/protocol/ProtocolLoader.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java index fe018b1ea4..426fecf811 100644 --- a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java +++ b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolLoader.java @@ -1,10 +1,8 @@ package io.nuls.base.protocol; -import io.nuls.core.core.annotation.Value; import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.io.IoUtils; -import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; import java.util.*; @@ -25,12 +23,10 @@ public class ProtocolLoader { /** * 默认的初始协议号 */ - static final String DEFAULT_BEGIN_PROTOCOL_VERSION = "1"; + static final short DEFAULT_BEGIN_PROTOCOL_VERSION = 1; public static void load(int chainId, String protocolConfigJson) throws Exception { ConfigurationLoader configurationLoader = SpringLiteContext.getBean(ConfigurationLoader.class); - String beginProtocolVersionStr = configurationLoader.getValueForOptional("beginProtocolVersion").orElse(DEFAULT_BEGIN_PROTOCOL_VERSION); - Short beginProtocolVersion = Short.parseShort(beginProtocolVersionStr); if (ProtocolGroupManager.isLoadProtocol()) { List protocolConfigs = JSONUtils.json2list(protocolConfigJson, ProtocolConfigJson.class); protocolConfigs.sort(PROTOCOL_CONFIG_COMPARATOR); @@ -76,9 +72,9 @@ public static void load(int chainId, String protocolConfigJson) throws Exception protocol.setInvalidMsgs(discardMsgs); protocolsMap.put(protocol.getVersion(), protocol); } - ProtocolGroupManager.init(chainId, protocolsMap, beginProtocolVersion); + ProtocolGroupManager.init(chainId, protocolsMap, DEFAULT_BEGIN_PROTOCOL_VERSION); } else { - ProtocolGroupManager.init(chainId, null, beginProtocolVersion); + ProtocolGroupManager.init(chainId, null, DEFAULT_BEGIN_PROTOCOL_VERSION); } } From c68fd89cb41e71dcff026dcc58fd9fcdc00f04bf Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 30 Jun 2020 16:19:15 +0800 Subject: [PATCH 025/304] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=AF=B9chainid?= =?UTF-8?q?=E5=BC=BA=E8=BD=ACshort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/poc/utils/manager/PunishManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java index cd542c1a30..7ffc621816 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java @@ -160,7 +160,7 @@ public void addDoubleSpendRecord(Chain chain, List txs, Block block 找到双花交易的节点 Find the bifurcated nodes */ - byte[] packingAddress = AddressTool.getAddress(block.getHeader().getBlockSignature().getPublicKey(), (short) chain.getConfig().getChainId()); + byte[] packingAddress = AddressTool.getAddress(block.getHeader().getBlockSignature().getPublicKey(), chain.getConfig().getChainId()); List agentList = chain.getAgentList(); Agent agent = null; for (Agent a : agentList) { From 3d32cc1377e5364a5b4714385d68debefc34ac1f Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 30 Jun 2020 18:19:22 +0800 Subject: [PATCH 026/304] update public-service add cross tx query --- .../io/nuls/api/analysis/AnalysisHandler.java | 20 ++++++++++--------- .../rpc/controller/TransactionController.java | 16 +++++++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index c40f4285d9..13bea912f2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -58,12 +58,14 @@ public static BlockInfo toBlockInfo(String blockHex, int chainId) throws Excepti //提取智能合约相关交易的hash,查询合约执行结果 //Extract the hash of smart contract related transactions and query the contract execution results List contactHashList = new ArrayList<>(); - for (Transaction tx : block.getTxs()) { - if (tx.getType() == TxType.CREATE_CONTRACT || - tx.getType() == TxType.CALL_CONTRACT || - tx.getType() == TxType.DELETE_CONTRACT || - tx.getType() == TxType.CROSS_CHAIN) { - contactHashList.add(tx.getHash().toHex()); + if(ApiContext.isRunSmartContract) { + for (Transaction tx : block.getTxs()) { + if (tx.getType() == TxType.CREATE_CONTRACT || + tx.getType() == TxType.CALL_CONTRACT || + tx.getType() == TxType.DELETE_CONTRACT || + tx.getType() == TxType.CROSS_CHAIN) { + contactHashList.add(tx.getHash().toHex()); + } } } @@ -337,7 +339,7 @@ public static TxDataInfo toTxData(int chainId, Transaction tx, int version) thro } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET || tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { return toChainInfo(tx, version); } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN || tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { - return toAssetInfo(tx); + return toAssetInfo(tx, version); } return null; } @@ -840,9 +842,9 @@ private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsExc return chainInfo; } - private static AssetInfo toAssetInfo(Transaction tx) throws NulsException { + private static AssetInfo toAssetInfo(Transaction tx, int version) throws NulsException { AssetInfo assetInfo = new AssetInfo(); - if (ApiContext.protocolVersion >= 4) { + if (version >= 4) { io.nuls.api.model.entity.v4.TxAsset txAsset = new io.nuls.api.model.entity.v4.TxAsset(); txAsset.parse(new NulsByteBuffer(tx.getTxData())); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index b74ab83250..780cae5533 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -526,4 +526,20 @@ public RpcResult broadcastTxWithNoContractValidation(List params) { return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); } } + + @RpcMethod("getCrossTxList") + public RpcResult getCrossTxList(List params) { + if (!ApiContext.isReady) { + return RpcResult.chainNotReady(); + } + VerifyUtils.verifyParams(params, 1); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + + return null; + } } From 81689d99932b75976138f5bf79b782a5a8ab83cb Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 30 Jun 2020 20:32:09 +0800 Subject: [PATCH 027/304] update public-service add cross tx query --- genesis-block.json | 3010 ++++++++++++++++- module.ncf | 58 +- .../io/nuls/api/db/TransactionService.java | 2 + .../db/mongo/MongoTransactionServiceImpl.java | 27 +- .../api/model/po/CrossTxRelationInfo.java | 20 +- .../api/rpc/controller/ChainController.java | 19 + .../rpc/controller/TransactionController.java | 30 +- .../java/io/nuls/api/service/SyncService.java | 9 +- 8 files changed, 3129 insertions(+), 46 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index b10b9fec1f..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,12 +3,3016 @@ "time": "1568131200", "txs": [ { - "address": "NULSd6HgZaT3KuXGuMomS1yGPTzMgedAMwjCF", - "amount": 1000000000000000, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 + }, + { + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, + "lockTime": 0 + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, + "lockTime": 0 + }, + { + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, + "lockTime": 0 + }, + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, + "lockTime": 0 + }, + { + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, + "lockTime": 0 + }, + { + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, + "lockTime": 0 + }, + { + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, + "lockTime": 0 + }, + { + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, + "lockTime": 0 + }, + { + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, + "lockTime": 0 + }, + { + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, + "lockTime": 0 + }, + { + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, + "lockTime": 0 + }, + { + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, + "lockTime": 0 + }, + { + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} +} \ No newline at end of file diff --git a/module.ncf b/module.ncf index 19524cf470..cf4ddbd364 100644 --- a/module.ncf +++ b/module.ncf @@ -5,19 +5,19 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=1 +chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id -mainChainId=1 +mainChainId=2 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,17 +25,16 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=100 +packetMagic=20200120 #种子节点 -selfSeedIps=192.168.1.119:8001,192.168.1.120:8001,192.168.1.121:8001 -#selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.119:8001,192.168.1.120:8001,192.168.1.121:8001 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 @@ -64,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=NULSd6HgcjSWUbG4SSPYsvQysbsT5R3Rvmbom,NULSd6HgUxj3weGguFo3sbPu5cqStBAsxy8ZP,NULSd6HgVK1WCJercC8DvKCmHHNycEtsrKeW1 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -79,12 +78,12 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain @@ -92,12 +91,13 @@ dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,25 +110,25 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +developerNodeAddress= +ambassadorNodeAddress= +mappingAddress= +businessAddress= +teamAddress= +communityAddress= dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.119:8002,192.168.1.120:8002,192.168.1.121:8002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=NULSd6HgcjSWUbG4SSPYsvQysbsT5R3Rvmbom,NULSd6HgUxj3weGguFo3sbPu5cqStBAsxy8ZP,NULSd6HgVK1WCJercC8DvKCmHHNycEtsrKeW1 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 @@ -147,7 +147,7 @@ dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=1000 +interval=10 dependent=smart-contract,cross-chain [transaction] diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java index bb48510421..d0e62fca1c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java @@ -16,6 +16,8 @@ public interface TransactionService { PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, boolean isHidden, long startTime, long endTime); + PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime); + void saveCrossTxRelationList(int chainId, Set relationInfos); List getUnConfirmList(int chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index b27f685386..975e6193ba 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -4,7 +4,9 @@ import com.mongodb.client.model.Filters; import com.mongodb.client.model.InsertManyOptions; import com.mongodb.client.model.Sorts; +import io.nuls.api.ApiContext; import io.nuls.api.analysis.WalletRpcHandler; +import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.TransactionService; import io.nuls.api.model.po.*; import io.nuls.api.model.po.mini.MiniTransactionInfo; @@ -221,6 +223,29 @@ public PageInfo getTxList(int chainId, int pageIndex, int p return pageInfo; } + @Override + public PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime) { + Bson filter = null; + if (startTime > 0 && endTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); + } else if (startTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime)); + } else if (endTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.lte("createTime", endTime)); + } else { + filter = Filters.eq("chainId", chainId); + } + long totalCount = mongoDBService.getCount(CROSS_TX_RELATION_TABLE + chainId, filter); + List docList = this.mongoDBService.pageQuery(CROSS_TX_RELATION_TABLE + ApiContext.defaultChainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); + List txList = new ArrayList<>(); + for (Document document : docList) { + txList.add(CrossTxRelationInfo.toInfo(document)); + } + + PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, txList); + return pageInfo; + } + public void saveCrossTxRelationList(int chainId, Set relationInfos) { if (relationInfos.isEmpty()) { @@ -234,7 +259,7 @@ public void saveCrossTxRelationList(int chainId, Set relati InsertManyOptions options = new InsertManyOptions(); options.ordered(false); - mongoDBService.insertMany(CROSS_TX_RELATION_TABLE + chainId , documentList, options); + mongoDBService.insertMany(CROSS_TX_RELATION_TABLE + chainId, documentList, options); // List saveList = new ArrayList(); // for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { // saveList.clear(); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java index 0ce9e1436b..e22d510996 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java @@ -20,6 +20,8 @@ public class CrossTxRelationInfo { private int assetId; + private int decimal; + private String symbol; private BigInteger values; @@ -33,12 +35,7 @@ public CrossTxRelationInfo() { } - public CrossTxRelationInfo(String address, String txHash) { - this.address = address; - this.txHash = txHash; - } - - public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx) { + public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx, int decimal) { this.address = output.getAddress(); this.chainId = output.getChainId(); this.assetId = output.getAssetsId(); @@ -47,9 +44,10 @@ public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx) { this.txHash = tx.getHash(); this.createTime = tx.getCreateTime(); this.transferType = TRANSFER_TO_TYPE; + this.decimal = decimal; } - public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx) { + public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx, int decimal) { this.address = input.getAddress(); this.chainId = input.getChainId(); this.assetId = input.getAssetsId(); @@ -58,6 +56,7 @@ public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx) { this.txHash = tx.getHash(); this.createTime = tx.getCreateTime(); this.transferType = TRANSFER_FROM_TYPE; + this.decimal = decimal; } public Document toDocument() { @@ -160,4 +159,11 @@ public void setSymbol(String symbol) { this.symbol = symbol; } + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index 98075a8b41..257ae3d609 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -73,9 +73,28 @@ public RpcResult getOtherChainList(List params) { // } // } return RpcResult.success(chainInfoList); + } + @RpcMethod("getOtherChainInfo") + public RpcResult getOtherChainInfo(List params) { + VerifyUtils.verifyParams(params, 1); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } +// if(chainId == ApiContext.defaultChainId) { +// +// }else { +// +// } + + ChainInfo chainInfo = chainService.getChainInfo(chainId); + return RpcResult.success(chainInfo); } + @RpcMethod("getInfo") public RpcResult getInfo(List params) { VerifyUtils.verifyParams(params, 1); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 780cae5533..37bf9418e4 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -532,14 +532,38 @@ public RpcResult getCrossTxList(List params) { if (!ApiContext.isReady) { return RpcResult.chainNotReady(); } - VerifyUtils.verifyParams(params, 1); - int chainId; + VerifyUtils.verifyParams(params, 5); + int chainId, pageNumber, pageSize; + long startTime = 0, endTime = 0; try { chainId = (int) params.get(0); } catch (Exception e) { return RpcResult.paramError("[chainId] is inValid"); } + try { + pageNumber = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[pageNumber] is inValid"); + } + try { + pageSize = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[pageSize] is inValid"); + } + try { + startTime = Long.parseLong(params.get(3).toString()); + } catch (Exception e) { - return null; + } + try { + endTime = Long.parseLong(params.get(4).toString()); + } catch (Exception e) { + + } + PageInfo pageInfo; + pageInfo = txService.getCrossTxList(chainId, pageNumber, pageSize, startTime, endTime); + RpcResult rpcResult = new RpcResult(); + rpcResult.setResult(pageInfo); + return rpcResult; } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 63d5e8394f..986666e614 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -310,7 +310,9 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { } addressSet.add(input.getAddress()); calcBalance(chainId, input); - crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx)); + + AssetInfo assetInfo = CacheManager.getRegisteredAsset(input.getAssetKey()); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx, assetInfo.getDecimals())); } } @@ -326,7 +328,8 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO)); } else { AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); - crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx)); + AssetInfo assetInfo = CacheManager.getRegisteredAsset(output.getAssetKey()); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx, assetInfo.getDecimals())); } } } @@ -713,7 +716,7 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(to, tx, ledgerInfo.getTotalBalance())); } } - ChainInfo chainInfo =(ChainInfo) tx.getTxData(); + ChainInfo chainInfo = (ChainInfo) tx.getTxData(); chainInfo.setNew(true); chainInfoList.add(chainInfo); } From 4b4038febc6c98e28181a049dd8a13644d41f800 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 1 Jul 2020 11:07:43 +0800 Subject: [PATCH 028/304] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20=E5=8C=BA=E5=9D=97=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=85=8D=E7=BD=AE=E7=9A=84=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E4=BF=9D=E5=AD=98=E5=8C=BA=E5=9D=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/block/service/impl/BlockServiceImpl.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java index 938f9173e0..a9b5f52595 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java +++ b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java @@ -44,6 +44,7 @@ import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.core.annotation.Value; import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; @@ -76,6 +77,14 @@ */ @Component public class BlockServiceImpl implements BlockService { + + /** + * 快照高度 + * 如果配置了此参数,大于此高度的区块将不会同步,节点的高度将会停止在指定高度 + */ + @Value("snapshotHeight") + private Long snapshotHeight; + @Autowired private ConfigurationLoader configurationLoader; @Autowired @@ -291,6 +300,10 @@ private boolean saveBlock(int chainId, Block block, boolean localInit, int downl NulsLogger logger = context.getLogger(); BlockHeader header = block.getHeader(); long height = header.getHeight(); + if(snapshotHeight != null && height > snapshotHeight){ + Log.info("到达快照高度,放弃保存区块"); + return false; + } NulsHash hash = header.getHash(); StampedLock lock = context.getLock(); long l = 0; From f2e738a447ca4b07f2de35a4628fc7e1ad8de31b Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 2 Jul 2020 16:48:35 +0800 Subject: [PATCH 029/304] update public-service add cross tx query --- .../io/nuls/api/model/po/CrossTxRelationInfo.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java index e22d510996..304ed553fe 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java @@ -16,6 +16,8 @@ public class CrossTxRelationInfo { private long createTime; + private long height; + private int chainId; private int assetId; @@ -39,6 +41,7 @@ public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx, int decimal) { this.address = output.getAddress(); this.chainId = output.getChainId(); this.assetId = output.getAssetsId(); + this.height = tx.getHeight(); this.symbol = output.getSymbol(); this.values = output.getAmount(); this.txHash = tx.getHash(); @@ -51,6 +54,7 @@ public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx, int decimal) this.address = input.getAddress(); this.chainId = input.getChainId(); this.assetId = input.getAssetsId(); + this.height = tx.getHeight(); this.symbol = input.getSymbol(); this.values = input.getAmount(); this.txHash = tx.getHash(); @@ -62,7 +66,7 @@ public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx, int decimal) public Document toDocument() { Document document = new Document(); document.append("address", address).append("txHash", txHash).append("createTime", createTime) - .append("chainId", chainId).append("assetId", assetId).append("symbol", symbol) + .append("chainId", chainId).append("assetId", assetId).append("symbol", symbol).append("height", height) .append("values", values.toString()).append("transferType", transferType); return document; } @@ -78,6 +82,7 @@ public static CrossTxRelationInfo toInfo(Document document) { relationInfo.setSymbol(document.getString("symbol")); relationInfo.setTransferType(document.getInteger("transferType")); relationInfo.setValues(new BigInteger(document.getString("values"))); + relationInfo.setHeight(document.getLong("height")); return relationInfo; } catch (Exception e) { e.printStackTrace(); @@ -166,4 +171,12 @@ public int getDecimal() { public void setDecimal(int decimal) { this.decimal = decimal; } + + public long getHeight() { + return height; + } + + public void setHeight(long height) { + this.height = height; + } } From f1866f1a13a4a9b9f93acfa5ef00c627f75dc886 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 2 Jul 2020 17:18:44 +0800 Subject: [PATCH 030/304] update public-service add cross tx query --- .../io/nuls/api/rpc/controller/AccountController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 7ae92a3d65..cc976df839 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -598,10 +598,10 @@ public RpcResult getAccountCrossLedgerList(List params) { } List list = accountLedgerService.getAccountCrossLedgerInfoList(chainId, address); for (AccountLedgerInfo ledgerInfo : list) { -// BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); -// ledgerInfo.setBalance(balanceInfo.getBalance()); -// ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); -// ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); + BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); + ledgerInfo.setBalance(balanceInfo.getBalance()); + ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); + ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(ledgerInfo.getAssetKey()); if (assetInfo != null) { ledgerInfo.setSymbol(assetInfo.getSymbol()); From 8440a5efd5f6527748a914f2e2b5ad851c207096 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 2 Jul 2020 18:45:35 +0800 Subject: [PATCH 031/304] api module add query Assets interface --- .../java/io/nuls/provider/ApiBootstrap.java | 30 +++++++- .../io/nuls/provider/api/config/Config.java | 20 +++++ .../io/nuls/provider/api/config/Context.java | 14 +++- .../jsonrpc/controller/BlockController.java | 25 ------- .../jsonrpc/controller/ChainController.java | 73 +++++++++++++++++++ .../io/nuls/provider/api/model/AssetInfo.java | 57 +++++++++++++++ .../io/nuls/provider/api/model/ChainInfo.java | 41 +++++++++++ .../provider/task/QueryChainInfoTask.java | 61 ++++++++++++++++ .../nuls/provider/task/ScheduleManager.java | 16 ++++ 9 files changed, 310 insertions(+), 27 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/model/AssetInfo.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/model/ChainInfo.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/task/QueryChainInfoTask.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/task/ScheduleManager.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index fb700728a9..78d25daf02 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -1,5 +1,6 @@ package io.nuls.provider; +import com.sun.net.httpserver.Filter; import io.nuls.core.exception.NulsException; import io.nuls.core.parse.I18nUtils; import io.nuls.provider.api.RpcServerManager; @@ -17,7 +18,13 @@ import io.nuls.core.rpc.modulebootstrap.NulsRpcModuleBootstrap; import io.nuls.core.rpc.modulebootstrap.RpcModule; import io.nuls.core.rpc.modulebootstrap.RpcModuleState; +import io.nuls.provider.api.config.Config; +import io.nuls.provider.api.config.Context; +import io.nuls.provider.api.model.AssetInfo; +import io.nuls.provider.api.model.ChainInfo; +import io.nuls.provider.task.ScheduleManager; import io.nuls.v2.NulsSDKBootStrap; +import org.checkerframework.checker.units.qual.A; import java.util.Map; @@ -35,6 +42,8 @@ public class ApiBootstrap extends RpcModule { @Autowired MyModule myModule; + @Autowired + private Config config; public static void main(String[] args) { boolean isOffline = false; @@ -43,7 +52,7 @@ public static void main(String[] args) { //args = new String[]{"ws://192.168.1.40:7771"}; } else { String arg1 = args[0]; - if(StringUtils.isNotBlank(arg1)) { + if (StringUtils.isNotBlank(arg1)) { arg1 = arg1.trim().toLowerCase(); } if ("offline".equals(arg1)) { @@ -115,6 +124,25 @@ public boolean doStart() { @Override public RpcModuleState onDependenciesReady() { + if (hasDependent(ModuleE.CC)) { + Context.isRunCrossChain = true; + } + + ChainInfo chainInfo = new ChainInfo(); + chainInfo.setChainId(config.getChainId()); + chainInfo.setChainName(config.getChainName()); + + AssetInfo assetInfo = new AssetInfo(); + assetInfo.setChainId(config.getChainId()); + assetInfo.setAssetId(config.getAssetsId()); + assetInfo.setSymbol(config.getSymbol()); + assetInfo.setDecimals(config.getDecimals()); + + chainInfo.getAssets().add(assetInfo); + Context.defaultChain = chainInfo; + + ScheduleManager scheduleManager = SpringLiteContext.getBean(ScheduleManager.class); + scheduleManager.start(); return myModule.startModule(moduleName); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java index e466457ca1..d5973efbc0 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java @@ -26,12 +26,16 @@ public class Config implements ModuleConfig { @Value.NotNull private Integer assetsId; + private String chainName; + private String language; private String addressPrefix; private String symbol; + private int decimals; + public String getAddressPrefix() { return addressPrefix; } @@ -91,4 +95,20 @@ public String getProviderType() { public void setProviderType(String providerType) { this.providerType = providerType; } + + public String getChainName() { + return chainName; + } + + public void setChainName(String chainName) { + this.chainName = chainName; + } + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java index ae847c5786..6fe407f1b8 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java @@ -24,6 +24,10 @@ package io.nuls.provider.api.config; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.provider.api.model.AssetInfo; +import io.nuls.provider.api.model.ChainInfo; + +import java.util.List; /** * @author: PierreLuo @@ -33,7 +37,15 @@ public class Context { private static Config config; - private Context(){}; + public static boolean isRunCrossChain; + + public static List chainList; + + public static List assetList; + + public static ChainInfo defaultChain; + + public static Integer getChainId() { if(config == null) { diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java index 6c45b10b9e..32b4c4c86f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java @@ -64,31 +64,6 @@ public class BlockController { @Autowired BlockTools blockTools; - @RpcMethod("info") - @ApiOperation(description = "获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产", order = 001) - @ResponseData(name = "返回值", description = "返回本链信息", responseType = @TypeDescriptor(value = Map.class, mapKeys = { - @Key(name = "chainId", description = "本链的ID"), - @Key(name = "assetId", description = "本链默认主资产的ID"), - @Key(name = "inflationAmount", description = "本链默认主资产的初始数量"), - @Key(name = "agentChainId", description = "本链共识资产的链ID"), - @Key(name = "agentAssetId", description = "本链共识资产的ID"), - @Key(name = "addressPrefix", description = "本链地址前缀"), - @Key(name = "symbol", description = "本链主资产符号") - })) - public RpcResult getInfo(List params) { - Result result = blockTools.getInfo(config.getChainId()); - if (result.isSuccess()) { - Map map = result.getData(); - map.put("chainId", config.getChainId()); - map.put("assetId", config.getAssetsId()); - map.put("addressPrefix", config.getAddressPrefix()); - map.put("symbol", config.getSymbol()); - map.remove("awardAssetId"); - map.remove("seedNodes"); - } - return ResultUtil.getJsonRpcResult(result); - } - @RpcMethod("getHeaderByHeight") @ApiOperation(description = "根据区块高度查询区块头", order = 201) @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java new file mode 100644 index 0000000000..cefc0fa8e6 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java @@ -0,0 +1,73 @@ +package io.nuls.provider.api.jsonrpc.controller; + + +import io.nuls.base.api.provider.Result; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Controller; +import io.nuls.core.core.annotation.RpcMethod; +import io.nuls.core.rpc.model.Key; +import io.nuls.core.rpc.model.ResponseData; +import io.nuls.core.rpc.model.TypeDescriptor; +import io.nuls.provider.api.config.Config; +import io.nuls.provider.api.config.Context; +import io.nuls.provider.model.jsonrpc.RpcResult; +import io.nuls.provider.rpctools.BlockTools; +import io.nuls.provider.utils.ResultUtil; +import io.nuls.v2.model.annotation.Api; +import io.nuls.v2.model.annotation.ApiOperation; +import io.nuls.v2.model.annotation.ApiType; + +import java.util.List; +import java.util.Map; + +@Controller +@Api(type = ApiType.JSONRPC) +public class ChainController { + + @Autowired + private Config config; + @Autowired + BlockTools blockTools; + + @RpcMethod("info") + @ApiOperation(description = "获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产", order = 001) + @ResponseData(name = "返回值", description = "返回本链信息", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "chainId", description = "本链的ID"), + @Key(name = "assetId", description = "本链默认主资产的ID"), + @Key(name = "inflationAmount", description = "本链默认主资产的初始数量"), + @Key(name = "agentChainId", description = "本链共识资产的链ID"), + @Key(name = "agentAssetId", description = "本链共识资产的ID"), + @Key(name = "addressPrefix", description = "本链地址前缀"), + @Key(name = "symbol", description = "本链主资产符号") + })) + public RpcResult getInfo(List params) { + Result result = blockTools.getInfo(config.getChainId()); + if (result.isSuccess()) { + Map map = result.getData(); + map.put("chainId", config.getChainId()); + map.put("assetId", config.getAssetsId()); + map.put("addressPrefix", config.getAddressPrefix()); + map.put("symbol", config.getSymbol()); + map.remove("awardAssetId"); + map.remove("seedNodes"); + } + return ResultUtil.getJsonRpcResult(result); + } + + + /** + * 获取资产信息 + * + * @param params + * @return + */ + @RpcMethod("assetsInfo") + public RpcResult getAssetsInfo(List params) { + if (Context.isRunCrossChain) { + return RpcResult.success(Context.assetList); + } else { + return RpcResult.success(Context.defaultChain.getAssets()); + } + } + +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/model/AssetInfo.java b/module/nuls-api/src/main/java/io/nuls/provider/api/model/AssetInfo.java new file mode 100644 index 0000000000..48f7a92a5f --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/model/AssetInfo.java @@ -0,0 +1,57 @@ +package io.nuls.provider.api.model; + +public class AssetInfo { + + + private int chainId; + + private int assetId; + + private String symbol; + + private int decimals; + + + public AssetInfo() { + } + + public AssetInfo(int chainId, int assetId, String symbol, int decimals) { + this.chainId = chainId; + this.assetId = assetId; + this.symbol = symbol; + this.decimals = decimals; + } + + + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/model/ChainInfo.java b/module/nuls-api/src/main/java/io/nuls/provider/api/model/ChainInfo.java new file mode 100644 index 0000000000..0947470f0a --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/model/ChainInfo.java @@ -0,0 +1,41 @@ +package io.nuls.provider.api.model; + +import java.util.ArrayList; +import java.util.List; + +public class ChainInfo { + + private int chainId; + + private String chainName; + + private List assets; + + public ChainInfo() { + assets = new ArrayList<>(); + } + + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public String getChainName() { + return chainName; + } + + public void setChainName(String chainName) { + this.chainName = chainName; + } + + public List getAssets() { + return assets; + } + + public void setAssets(List assets) { + this.assets = assets; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/task/QueryChainInfoTask.java b/module/nuls-api/src/main/java/io/nuls/provider/task/QueryChainInfoTask.java new file mode 100644 index 0000000000..bbf9419bda --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/task/QueryChainInfoTask.java @@ -0,0 +1,61 @@ +package io.nuls.provider.task; + +import io.nuls.core.exception.NulsException; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.util.RpcCall; +import io.nuls.provider.api.config.Context; +import io.nuls.provider.api.constant.CommandConstant; +import io.nuls.provider.api.model.AssetInfo; +import io.nuls.provider.api.model.ChainInfo; +import io.nuls.provider.utils.Log; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class QueryChainInfoTask implements Runnable { + + @Override + public void run() { + if (Context.isRunCrossChain) { + queryRegisteredChainInfoList(); + } + } + + public void queryRegisteredChainInfoList() { + try { + Map map = (Map) RpcCall.request(ModuleE.CC.abbr, CommandConstant.GET_REGISTERED_CHAIN, new HashMap()); + List> resultList = (List>) map.get("list"); + + List chainInfoList = new ArrayList<>(); + List assetInfoList = new ArrayList<>(); + + for (Map resultMap : resultList) { + ChainInfo chainInfo = new ChainInfo(); + chainInfo.setChainId((Integer) resultMap.get("chainId")); + chainInfo.setChainName((String) resultMap.get("chainName")); + + List> assetList = (List>) resultMap.get("assetInfoList"); + if (assetList != null) { + for (Map assetMap : assetList) { + AssetInfo assetInfo = new AssetInfo(); + assetInfo.setChainId((Integer) resultMap.get("chainId")); + assetInfo.setAssetId((Integer) assetMap.get("assetId")); + assetInfo.setSymbol((String) assetMap.get("symbol")); + assetInfo.setDecimals((Integer) assetMap.get("decimalPlaces")); + + chainInfo.getAssets().add(assetInfo); + assetInfoList.add(assetInfo); + } + } + chainInfoList.add(chainInfo); + } + + Context.chainList = chainInfoList; + Context.assetList = assetInfoList; + } catch (NulsException e) { + Log.error(e); + } + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/task/ScheduleManager.java b/module/nuls-api/src/main/java/io/nuls/provider/task/ScheduleManager.java new file mode 100644 index 0000000000..a66b2bf9a5 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/task/ScheduleManager.java @@ -0,0 +1,16 @@ +package io.nuls.provider.task; + +import io.nuls.core.core.annotation.Component; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Component +public class ScheduleManager { + + public void start() { + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); + executorService.scheduleAtFixedRate(new QueryChainInfoTask(), 1, 60, TimeUnit.SECONDS); + } +} From 739ff3c8cdebf16a575e8a17787d018293c09b83 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 3 Jul 2020 10:19:48 +0800 Subject: [PATCH 032/304] =?UTF-8?q?=E5=A2=9E=E5=8A=A0beta=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/genesis-block.beta.json | 3018 ++++++++++++++++++++++++++++++++ config/nuls.beta.ncf | 145 ++ 2 files changed, 3163 insertions(+) create mode 100755 config/genesis-block.beta.json create mode 100755 config/nuls.beta.ncf diff --git a/config/genesis-block.beta.json b/config/genesis-block.beta.json new file mode 100755 index 0000000000..21aedfb614 --- /dev/null +++ b/config/genesis-block.beta.json @@ -0,0 +1,3018 @@ +{ + "height": 0, + "time": "1568131200", + "txs": [ + { + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, + "lockTime": 0 + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, + "lockTime": 0 + }, + { + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, + "lockTime": 0 + }, + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, + "lockTime": 0 + }, + { + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, + "lockTime": 0 + }, + { + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, + "lockTime": 0 + }, + { + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, + "lockTime": 0 + }, + { + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, + "lockTime": 0 + }, + { + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, + "lockTime": 0 + }, + { + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, + "lockTime": 0 + }, + { + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, + "lockTime": 0 + }, + { + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, + "lockTime": 0 + }, + { + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" + } + ], + "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", + "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" +} \ No newline at end of file diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf new file mode 100755 index 0000000000..321f939c98 --- /dev/null +++ b/config/nuls.beta.ncf @@ -0,0 +1,145 @@ +[global] +encoding=UTF-8 +language=en +logPath=Logs +logLevel=INFO +dataPath=data +#默认本链ID +chainId=2 +#地址前缀 +addressPrefix=tNULS +#默认本链主资产ID +assetId=1 +#默认链名称 +chainName=nuls2 +#本链默认资产符号 +symbol=NULS +#默认资产的小数精确位数 +decimals=8 +#主网链id +mainChainId=2 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 + +[network] +port=18001 +crossPort=18002 +#魔法参数 +packetMagic=20200120 +#种子节点 +selfSeedIps=161.117.11.137:18001,149.129.251.238:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +#主网的跨链种子连接节点 +moonSeedIps=161.117.11.137:18002,149.129.251.238:18002,47.254.234.223:18002,47.74.86.85:18002,47.252.86.42:18002 +#最大入网连接数 +maxInCount=100 +#最大出网连接数 +maxOutCount=20 + + +[account] +keystoreFolder=/keystore/backup + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=2 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json + +[consensus] +#种子节点列表 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=2 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/265*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=99.6 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 + + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=18003 +#数据库url地址 +databaseUrl=127.0.0.1 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接超时时间 +connectTimeOut=30000 +developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri +ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE +mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm +businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL +teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH +communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS + +[cross-chain] +#跨链节点链接的最小值 +minNodeAmount=2 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +#主网验证人列表 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 + + + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=10 + +[nuls-api] +#httpServer的启动ip +server_ip=0.0.0.0 +#httpServer的启动port +serverPort=18004 + +[cmd-client] +clientVersion=2.6.0 From 97678ba0065a2f53368a736275c31f8dc3a86f4b Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 3 Jul 2020 10:54:29 +0800 Subject: [PATCH 033/304] api module add query Assets interface --- .../src/main/java/io/nuls/api/service/SyncService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 986666e614..395babf84f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -309,8 +309,8 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { continue; } addressSet.add(input.getAddress()); - calcBalance(chainId, input); - + AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); + txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); AssetInfo assetInfo = CacheManager.getRegisteredAsset(input.getAssetKey()); crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx, assetInfo.getDecimals())); } @@ -328,6 +328,7 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO)); } else { AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); + txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); AssetInfo assetInfo = CacheManager.getRegisteredAsset(output.getAssetKey()); crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx, assetInfo.getDecimals())); } From 5a3c8c1cd8c152de23f1ede568744104f1d8ed08 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 3 Jul 2020 13:59:28 +0800 Subject: [PATCH 034/304] =?UTF-8?q?ps=E5=A2=9E=E5=8A=A0NRC20=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=BF=AB=E7=85=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/rpc/controller/AccountController.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 4816e7c503..8636315e53 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -41,6 +41,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author Niels @@ -59,6 +60,9 @@ public class AccountController { @Autowired private AliasService aliasService; + @Autowired + TokenService tokenService; + @RpcMethod("getAccountList") public RpcResult getAccountList(List params) { VerifyUtils.verifyParams(params, 3); @@ -609,4 +613,28 @@ public RpcResult getAllAddressPrefix(List params) { Result result = WalletRpcHandler.getAllAddressPrefix(); return RpcResult.success(result.getData()); } + + @RpcMethod("getNRC20Snapshot") + public RpcResult getNRC20Snapshot(List params){ + VerifyUtils.verifyParams(params, 2); + int chainId; + String address; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + PageInfo pageInfo = tokenService.getContractTokens(chainId,address,1,Integer.MAX_VALUE); + return RpcResult.success(pageInfo.getList().stream().map(d-> Map.of("address",d.getAddress(),"balance",d.getBalance())).collect(Collectors.toList())); + } + + } From 91d519f02423f0803bca142f4f9f764c9633df04 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 7 Jul 2020 13:47:40 +0800 Subject: [PATCH 035/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=93=E5=8C=85?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/nulstar/start.bat | 14 + build/nulstar/start.sh | 12 + build/nulstar/stop.bat | 2 + build/nulstar/stop.sh | 37 + config/genesis-block.beta.json | 3018 ++++++++++++++++++++++++++++++++ config/nuls.beta.ncf | 145 ++ package | 45 +- 7 files changed, 3249 insertions(+), 24 deletions(-) create mode 100644 build/nulstar/start.bat create mode 100755 build/nulstar/start.sh create mode 100644 build/nulstar/stop.bat create mode 100755 build/nulstar/stop.sh create mode 100755 config/genesis-block.beta.json create mode 100755 config/nuls.beta.ncf diff --git a/build/nulstar/start.bat b/build/nulstar/start.bat new file mode 100644 index 0000000000..00ca038d32 --- /dev/null +++ b/build/nulstar/start.bat @@ -0,0 +1,14 @@ +@echo off +SET CONFIG="nuls.ncf" +if exist "%CONFIG%" goto start +attrib .default-config.ncf -h +ren .default-config.ncf nuls.ncf +echo "nuls.ncf is created by default-config.ncf." +echo "Please re-excute the startup program." +goto end +:start +@echo off +SET ROOT_PATH=%~dp0 +SET PATH=%ROOT_PATH%Libraries\CPP\Nulstar\0.1.0;%ROOT_PATH%Libraries\CPP\Qt\5.12.3;%PATH% +call %ROOT_PATH%Modules\Nulstar\Nulstar\0.1.0\Nulstar.exe +:end diff --git a/build/nulstar/start.sh b/build/nulstar/start.sh new file mode 100755 index 0000000000..c5f76d7a0c --- /dev/null +++ b/build/nulstar/start.sh @@ -0,0 +1,12 @@ +#!/bin/bash +cd `dirname $0` +export NERVE_STOP_FILE=`pwd`/.nerve-stop +CONFIG="./nuls.ncf" +if [ ! -f "${CONFIG}" ] ; then + mv ./.default-config.ncf nuls.ncf + echo "nuls.ncf is created by default-config.ncf." + echo "Please re-excute the startup program." + exit 0 +fi + +LD_LIBRARY_PATH=Libraries/CPP/Nulstar/0.1.0:Libraries/CPP/Qt/5.12.3 `pwd`/Modules/Nulstar/Nulstar/0.1.0/Nulstar & diff --git a/build/nulstar/stop.bat b/build/nulstar/stop.bat new file mode 100644 index 0000000000..dcb4eb21ad --- /dev/null +++ b/build/nulstar/stop.bat @@ -0,0 +1,2 @@ +@echo off +TASKKILL /F /IM Nulstar.exe /T diff --git a/build/nulstar/stop.sh b/build/nulstar/stop.sh new file mode 100755 index 0000000000..2423a38b11 --- /dev/null +++ b/build/nulstar/stop.sh @@ -0,0 +1,37 @@ +#!/bin/bash +cd `dirname $0` + +echo "do stop" >> ./Logs/stop +KILL_WAIT_COUNT=120 +stop(){ + pid=$1; + kill $pid > /dev/null 2>&1 + COUNT=0 + while [ $COUNT -lt ${KILL_WAIT_COUNT} ]; do + echo -e ".\c" + sleep 1 + let COUNT=$COUNT+1 + PID_EXIST=`ps -f -p $pid | grep -w $2` + if [ -z "$PID_EXIST" ]; then +# echo -e "\n" +# echo "stop ${pid} success." + return 0; + fi + done + + echo "stop ${pid} failure,dump and kill -9 it." + kill -9 $pid > /dev/null 2>&1 +} +BIN_PATH=`pwd` +APP_PID=`ps -ef|grep -w "${BIN_PATH}/Modules/Nulstar"|grep -v grep|awk '{print $2}'` +if [ -z "${APP_PID}" ]; then + echo "Nuls wallet not running" + exit 0 +fi +echo "stoping" +for pid in $APP_PID +do + stop $pid "`pwd`/Modules/Nulstar" +done +echo "" +echo "shutdown success" diff --git a/config/genesis-block.beta.json b/config/genesis-block.beta.json new file mode 100755 index 0000000000..21aedfb614 --- /dev/null +++ b/config/genesis-block.beta.json @@ -0,0 +1,3018 @@ +{ + "height": 0, + "time": "1568131200", + "txs": [ + { + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, + "lockTime": 0 + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, + "lockTime": 0 + }, + { + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, + "lockTime": 0 + }, + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, + "lockTime": 0 + }, + { + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, + "lockTime": 0 + }, + { + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, + "lockTime": 0 + }, + { + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, + "lockTime": 0 + }, + { + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, + "lockTime": 0 + }, + { + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, + "lockTime": 0 + }, + { + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, + "lockTime": 0 + }, + { + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, + "lockTime": 0 + }, + { + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, + "lockTime": 0 + }, + { + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" + } + ], + "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", + "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" +} \ No newline at end of file diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf new file mode 100755 index 0000000000..321f939c98 --- /dev/null +++ b/config/nuls.beta.ncf @@ -0,0 +1,145 @@ +[global] +encoding=UTF-8 +language=en +logPath=Logs +logLevel=INFO +dataPath=data +#默认本链ID +chainId=2 +#地址前缀 +addressPrefix=tNULS +#默认本链主资产ID +assetId=1 +#默认链名称 +chainName=nuls2 +#本链默认资产符号 +symbol=NULS +#默认资产的小数精确位数 +decimals=8 +#主网链id +mainChainId=2 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 + +[network] +port=18001 +crossPort=18002 +#魔法参数 +packetMagic=20200120 +#种子节点 +selfSeedIps=161.117.11.137:18001,149.129.251.238:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +#主网的跨链种子连接节点 +moonSeedIps=161.117.11.137:18002,149.129.251.238:18002,47.254.234.223:18002,47.74.86.85:18002,47.252.86.42:18002 +#最大入网连接数 +maxInCount=100 +#最大出网连接数 +maxOutCount=20 + + +[account] +keystoreFolder=/keystore/backup + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=2 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json + +[consensus] +#种子节点列表 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=2 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/265*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=99.6 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 + + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=18003 +#数据库url地址 +databaseUrl=127.0.0.1 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接超时时间 +connectTimeOut=30000 +developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri +ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE +mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm +businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL +teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH +communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS + +[cross-chain] +#跨链节点链接的最小值 +minNodeAmount=2 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +#主网验证人列表 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 + + + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=10 + +[nuls-api] +#httpServer的启动ip +server_ip=0.0.0.0 +#httpServer的启动port +serverPort=18004 + +[cmd-client] +clientVersion=2.6.0 diff --git a/package b/package index 0d760d1871..2116b27b74 100755 --- a/package +++ b/package @@ -60,7 +60,8 @@ PACKAGE_CONFIG="`pwd`/.package.ncf" if [ ! -f "$PACKAGE_CONFIG" ]; then cp "${BUILD_PATH}/package-base.ncf" $PACKAGE_CONFIG fi - +NULS_NCF=${PROJECT_PATH}/config/nuls.ncf +GENESIS_BLOCK=${PROJECT_PATH}/config/genesis-block.json #编辑.package.ncf updatePackage(){ c="sed -n '/^$1/p' $PACKAGE_CONFIG" @@ -137,6 +138,9 @@ do s) showPackageModule exit 0 ;; + B) NULS_NCF=${PROJECT_PATH}/config/nuls.beta.ncf + GENESIS_BLOCK=${PROJECT_PATH}/config/genesis-block.beta.json + ;; ?) exit 2;; esac done @@ -247,6 +251,8 @@ if [ -n "${DOPULL}" ];then log "git pull origin $GIT_BRANCH" git pull origin "$GIT_BRANCH" fi +echo "`cat version`-`git rev-parse --short HEAD`" > .package-version +PACKAGE_VERSION=`cat .package-version` #0.download Nulstar if [ -n "${BUILD_NULSTAR}" ]; then @@ -267,30 +273,20 @@ if [ -n "${BUILD_NULSTAR}" ]; then cp -Rf "${BUILD_PATH}/tmp/Nulstar/Libraries" ${RELEASE_PATH} if [ "${TARGET_OS}" == "window" ]; then - cp "${BUILD_PATH}/start-nulstar-window" "$BUILD_PATH/tmp/start-nulstar" - echo "" >> "$BUILD_PATH/tmp/start-nulstar" - while read -r line - do - echo $line >> "$BUILD_PATH/tmp/start-nulstar" - done < ${BUILD_PATH}/tmp/Nulstar/start.bat - echo ":end" >> "$BUILD_PATH/tmp/start-nulstar" - cp "$BUILD_PATH/tmp/start-nulstar" "${RELEASE_PATH}/start.bat" - cp "${BUILD_PATH}/tmp/Nulstar/stop.bat" "${RELEASE_PATH}/" + cp "${BUILD_PATH}/nulstar/start.bat" "${RELEASE_PATH}/start.bat" + cp "${BUILD_PATH}/nulstar/stop.bat" "${RELEASE_PATH}/stop.bat" else - cp "${BUILD_PATH}/start-nulstar-linux" "$BUILD_PATH/tmp/start-nulstar" - while read -r line - do - echo $line >> "$BUILD_PATH/tmp/start-nulstar" - done < ${BUILD_PATH}/tmp/Nulstar/start -# echo `cat ${BUILD_PATH}/tmp/Nulstar/start` >> "$BUILD_PATH/tmp/start-nulstar" - cp "$BUILD_PATH/tmp/start-nulstar" "${RELEASE_PATH}/start" + cp "${BUILD_PATH}/nulstar/start.sh" "$RELEASE_PATH/start" + cp "${BUILD_PATH}/nulstar/stop.sh" "$RELEASE_PATH/stop" chmod +x "${RELEASE_PATH}/start" + chmod +x "${RELEASE_PATH}/stop" fi fi log "build Nulstar done" fi +rm -rf ${COMMON_LIBS_PATH}/* doMvn "clean package" "nuls-project" #检查module.ncf指定配置项是否存在 @@ -397,8 +393,10 @@ copyJarToModules(){ # if [ -n "$isPriDependent" ]; then # cp "./target/libs/${jar}" "${modulePriLibPath}" # else -# #statements - cp "./target/libs/${jar}" "${COMMON_LIBS_PATH}" +# #statement + if [ ! -f ${COMMON_LIBS_PATH}/${jar} ]; then + cp "./target/libs/${jar}" "${COMMON_LIBS_PATH}" + fi # fi done cp "$dependentListConf" "${MODULES_PATH}/${moduleName}/${version}/dependent.conf" @@ -642,8 +640,8 @@ log "============ COPY JRE TO libs done ============" fi log "================ COPY SCRIPT ===============" - cp "${BUILD_PATH}/default-config.ncf" "${MODULES_BIN_PATH}/.default-config.ncf" - chmod u+r "${MODULES_BIN_PATH}/.default-config.ncf" + eval "sed -e 's/%PACKAGE_VERSION%/${PACKAGE_VERSION}/g' ${NULS_NCF} > ${MODULES_BIN_PATH}/nuls.ncf" + cp $GENESIS_BLOCK ${MODULES_BIN_PATH}/genesis-block.json cp "${BUILD_PATH}/cmd" "${MODULES_BIN_PATH}/" cp "${BUILD_PATH}/cmd.bat" "${MODULES_BIN_PATH}/" chmod u+x "${MODULES_BIN_PATH}/cmd" @@ -659,9 +657,6 @@ log "================ COPY SCRIPT ===============" tempModuleList+=" \"${m}\"" done eval "sed -e 's/%MODULES%/${tempModuleList}/g' ${BUILD_PATH}/check-status > ${BUILD_PATH}/tmp/check-status-temp" - eval "sed -e 's/%MODULES%/${tempModuleList}/g' ${BUILD_PATH}/shutdown-nulstar > ${BUILD_PATH}/tmp/shutdown-nulstar" - cp "${BUILD_PATH}/tmp/shutdown-nulstar" "${MODULES_BIN_PATH}/stop" - chmod u+x "${MODULES_BIN_PATH}/stop" cp "${BUILD_PATH}/tmp/check-status-temp" "${MODULES_BIN_PATH}/check-status" chmod u+x "${MODULES_BIN_PATH}/check-status" cp ${PROJECT_PATH}/version ${MODULES_BIN_PATH}/version @@ -690,4 +685,6 @@ if [ -n "${BUILDTAR}" ]; then tar -zcPf "${NULS_WALLET_TAR_NAME}_${TARGET_OS}.tar.gz" ${NULS_WALLET_TAR_NAME} log "============ BUILD ${NULS_WALLET_TAR_NAME}_${TARGET_OS}.tar.gz FINISH===================" fi +cd $PROJECT_PATH +echo "package version : $PACKAGE_VERSION" log "============ ${RELEASE_PATH} PACKAGE FINISH 🍺🍺🍺🎉🎉🎉 ===============" \ No newline at end of file From 01a550c7bd480f34f6d7ca5472b3b2fee47da5e6 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 7 Jul 2020 14:47:17 +0800 Subject: [PATCH 036/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=93=E5=8C=85?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/check-status | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/check-status b/build/check-status index 102497f676..53a5f60c8e 100755 --- a/build/check-status +++ b/build/check-status @@ -1,7 +1,7 @@ #!/bin/bash cd `dirname $0` . func - +ROOT=`pwd` declare -a modules while read module do @@ -35,7 +35,7 @@ isReady=1 for module in ${modules[@]} do #判断是否已经运行 - APP=`ps -ef|grep -w "name=${module} "|grep -v grep|wc -l` + APP=`ps -ef|grep -w "name=${module} "|grep "${ROOT}"|grep -v grep|wc -l` if [ $APP -eq 1 ]; then echoGreen "${module} PROCESS IS START"; From 86da475af88a68388a072e574b121ef9d39e7cd2 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 7 Jul 2020 17:29:14 +0800 Subject: [PATCH 037/304] =?UTF-8?q?nuls-api=E5=A2=9E=E5=8A=A0=E9=93=BE?= =?UTF-8?q?=E5=86=85=E5=B9=B3=E8=A1=8C=E9=93=BE=E8=B5=84=E4=BA=A7=E8=BD=AC?= =?UTF-8?q?=E8=B4=A6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TransactionController.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index da368fa549..33a5dbed7e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -339,6 +339,91 @@ public RpcResult broadcastTxWithoutAnyValidation(List params) { } } + + + @RpcMethod("transferOtherChainAsset") + @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易,转账资产为链内的其他平行链资产") + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链id"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产id"), + @Parameter(parameterName = "address", parameterDes = "转出账户地址"), + @Parameter(parameterName = "toAddress", parameterDes = "转入账户地址"), + @Parameter(parameterName = "password", parameterDes = "转出账户密码"), + @Parameter(parameterName = "amount", parameterDes = "转出金额"), + @Parameter(parameterName = "remark", parameterDes = "备注"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash") + })) + public RpcResult transferOtherChainAsset(List params) { + VerifyUtils.verifyParams(params, 8); + int chainId, assetChainId, assetId; + String address, toAddress, password, amount, remark; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + assetChainId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is inValid"); + } + try { + assetId = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + try { + address = (String) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + try { + toAddress = (String) params.get(4); + } catch (Exception e) { + return RpcResult.paramError("[toAddress] is inValid"); + } + try { + password = (String) params.get(5); + } catch (Exception e) { + return RpcResult.paramError("[password] is inValid"); + } + try { + amount = params.get(6).toString(); + } catch (Exception e) { + return RpcResult.paramError("[amount] is inValid"); + } + try { + remark = (String) params.get(7); + } catch (Exception e) { + return RpcResult.paramError("[remark] is inValid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + if (!AddressTool.validAddress(chainId, toAddress)) { + return RpcResult.paramError("[toAddress] is inValid"); + } + if (!ValidateUtil.validateBigInteger(amount)) { + return RpcResult.paramError("[amount] is inValid"); + } + TransferReq.TransferReqBuilder builder = + new TransferReq.TransferReqBuilder(chainId, assetId) + .addForm(assetChainId,assetId, address, password, new BigInteger(amount)) + .addTo(assetChainId,assetId, toAddress, new BigInteger(amount)).setRemark(remark); + Result result = transferService.transfer(builder.build(new TransferReq())); + if (result.isSuccess()) { + Map resultMap = new HashMap(2); + resultMap.put("hash", result.getData()); + return RpcResult.success(resultMap); + } else { + return RpcResult.failed(ErrorCode.init(result.getStatus()), result.getMessage()); + } + } + + @RpcMethod("transfer") @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易") @Parameters({ From fe5021fc613364bfca7d0e5a1e7b4ca81d2013ad Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 8 Jul 2020 11:50:26 +0800 Subject: [PATCH 038/304] update public-service query other chainInfo --- .../jsonrpc/controller/AccountController.java | 16 ++++++++++++++++ .../java/io/nuls/api/PublicServiceBootstrap.java | 14 ++++++++++++++ .../nuls/api/db/mongo/MongoTokenServiceImpl.java | 2 +- .../java/io/nuls/api/manager/CacheManager.java | 3 +++ .../io/nuls/api/manager/ScheduleManager.java | 4 ++-- .../java/io/nuls/api/service/SyncService.java | 3 +++ 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index e8d751e5f3..d0eb80768c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -43,6 +43,7 @@ import io.nuls.provider.model.jsonrpc.RpcResultError; import io.nuls.provider.rpctools.AccountTools; import io.nuls.provider.rpctools.LegderTools; +import io.nuls.provider.rpctools.vo.Account; import io.nuls.provider.rpctools.vo.AccountBalance; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; @@ -56,6 +57,7 @@ import io.nuls.v2.model.dto.MultiSignAliasDto; import io.nuls.v2.model.dto.SignDto; import io.nuls.v2.util.NulsSDKTool; +import org.checkerframework.checker.units.qual.A; import java.io.IOException; import java.util.ArrayList; @@ -960,4 +962,18 @@ public RpcResult getAddressByPriKey(List params) { } + @RpcMethod("getAddressList") + @ApiOperation(description = "查询钱包内创建的账户列表", order = 161) + public RpcResult getAddressList(List params) { + Result result = accountService.getAccountList(); + if (result.isSuccess()) { + List addressList = new ArrayList<>(); + for (Object o : result.getList()) { + AccountInfo acc = (AccountInfo) o; + addressList.add(acc.getAddress()); + } + result.setList(addressList); + } + return ResultUtil.getJsonRpcResult(result); + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java index 9bbd2f7419..29badfc5c5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java @@ -21,11 +21,14 @@ package io.nuls.api; import com.fasterxml.jackson.core.JsonParser; +import com.google.common.cache.Cache; import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.constant.config.ApiConfig; import io.nuls.api.db.mongo.MongoChainServiceImpl; import io.nuls.api.db.mongo.MongoDBTableServiceImpl; +import io.nuls.api.manager.CacheManager; import io.nuls.api.manager.ScheduleManager; +import io.nuls.api.model.po.AssetInfo; import io.nuls.api.model.po.ChainInfo; import io.nuls.api.model.po.SyncInfo; import io.nuls.api.rpc.jsonRpc.JsonRpcServer; @@ -195,6 +198,7 @@ public RpcModuleState onDependenciesReady() { LoggerUtil.commonLog.error(e); System.exit(-1); } + ApiContext.isReady = true; return RpcModuleState.Running; } @@ -216,6 +220,16 @@ private void initDB() { if (syncInfo != null) { ApiContext.protocolVersion = syncInfo.getVersion(); } + + List chainInfoList = chainService.getChainInfoList(); + if (chainInfoList != null) { + for (ChainInfo chainInfo : chainInfoList) { + CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); + for (AssetInfo assetInfo : chainInfo.getAssets()) { + CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); + } + } + } } @Override diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java index 2f5628addb..1f20dc0d83 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java @@ -43,7 +43,7 @@ public void saveAccountTokens(int chainId, Map account List> modelList = new ArrayList<>(); for (AccountTokenInfo tokenInfo : accountTokenInfos.values()) { Document document = DocumentTransferTool.toDocument(tokenInfo, "key"); - document.put("totalBalance", BigIntegerUtils.bigIntegerToString(tokenInfo.getBalance(), 32)); + document.put("balance", BigIntegerUtils.bigIntegerToString(tokenInfo.getBalance(), 32)); if (tokenInfo.isNew()) { modelList.add(new InsertOneModel(document)); } else { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java index ffdc340c0a..bfa5afc610 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java @@ -37,6 +37,9 @@ public static void initCache(ChainInfo chainInfo, ChainConfigInfo configInfo) { ApiCache apiCache = new ApiCache(); apiCache.setChainInfo(chainInfo); apiCache.setConfigInfo(configInfo); + chainInfoMap.put(chainInfo.getChainId(), chainInfo); + assetInfoMap.put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); + CoinContextInfo contextInfo = new CoinContextInfo(); apiCache.setCoinContextInfo(contextInfo); apiCacheMap.put(chainInfo.getChainId(), apiCache); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java index 52c4d61e86..b9e3b5555a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java @@ -27,9 +27,9 @@ public void start() { // executorService.scheduleAtFixedRate(new UnConfirmTxTask(apiCache.getChainInfo().getChainId()), 1, 10, TimeUnit.MINUTES); // } - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(6); + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(7); executorService.scheduleAtFixedRate(new DeleteTxsTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); +// executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new SyncBlockTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 0, 20, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new StatisticalTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 395babf84f..cbe4e756d9 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -720,6 +720,8 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { ChainInfo chainInfo = (ChainInfo) tx.getTxData(); chainInfo.setNew(true); chainInfoList.add(chainInfo); + CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); + CacheManager.getAssetInfoMap().put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); } private void processDestroyChainTx(int chainId, TransactionInfo tx) { @@ -768,6 +770,7 @@ private void processAddAssetTx(int chainId, TransactionInfo tx) { chainInfo.getAssets().add(assetInfo); chainInfoList.add(chainInfo); } + CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); } private void processCancelAssetTx(int chainId, TransactionInfo tx) { From 7ae21c70bd795b7c099523decbecfaccdc34a335 Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Thu, 9 Jul 2020 11:02:25 +0800 Subject: [PATCH 039/304] Fix a bug where you get the chainId by address --- .../src/main/java/io/nuls/base/data/Address.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/common/nuls-base/src/main/java/io/nuls/base/data/Address.java b/common/nuls-base/src/main/java/io/nuls/base/data/Address.java index 326906eb85..0ddb9dfb66 100644 --- a/common/nuls-base/src/main/java/io/nuls/base/data/Address.java +++ b/common/nuls-base/src/main/java/io/nuls/base/data/Address.java @@ -26,6 +26,8 @@ package io.nuls.base.data; import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.log.Log; import io.nuls.core.model.ByteUtils; @@ -122,7 +124,14 @@ public static Address fromHashs(byte[] hashs) { throw new NulsRuntimeException(new Exception()); } - int chainId = ByteUtils.bytesToShort(hashs); + NulsByteBuffer byteBuffer = new NulsByteBuffer(hashs); + int chainId; + try { + chainId = byteBuffer.readUint16(); + } catch (NulsException e) { + Log.error(e); + throw new NulsRuntimeException(e); + } byte addressType = hashs[2]; byte[] content = new byte[RIPEMD160_LENGTH]; System.arraycopy(hashs, 3, content, 0, RIPEMD160_LENGTH); From 47202406d63f5229cf750ce9ac5c67bf2ce5390e Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 10 Jul 2020 10:58:27 +0800 Subject: [PATCH 040/304] update public-service query acctTxs --- .../java/io/nuls/api/db/AccountService.java | 2 +- .../api/db/mongo/MongoAccountServiceImpl.java | 39 +++++++-------- .../api/rpc/controller/AccountController.java | 47 ++++++++++++------- 3 files changed, 50 insertions(+), 38 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java index f593e7ebf3..1b8cb70c0c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java @@ -20,7 +20,7 @@ public interface AccountService { PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight); - PageInfo getAcctTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startTime, long endTime); + PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, int type, long startTime, long endTime, int pageIndex, int pageSize); PageInfo getCoinRanking(int pageIndex, int pageSize, int chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index ceb1783b57..a2ed9d16c2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -17,6 +17,7 @@ import io.nuls.core.model.BigIntegerUtils; import org.bson.Document; import org.bson.conversions.Bson; +import org.checkerframework.checker.units.qual.A; import java.math.BigInteger; import java.util.ArrayList; @@ -168,27 +169,27 @@ public PageInfo getAccountTxs(int chainId, String address, int p return pageInfo; } - public PageInfo getAcctTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startTime, long endTime) { - Bson filter; - Bson addressFilter = Filters.eq("address", address); + public PageInfo getAcctTxs(int chainId, int assetChainId, int assetId,String address, + int type, long startTime, long endTime, int pageIndex, int pageSize) { - if (type > 0 && startTime > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (type > 0 && startTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("createTime", startTime)); - } else if (type > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.lte("createTime", endTime)); - } else if (startTime > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (startTime > 0) { - filter = Filters.and(addressFilter, Filters.gte("createTime", startTime)); - } else if (endTime > 0) { - filter = Filters.and(addressFilter, Filters.lte("createTime", endTime)); - } else if (type > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type)); - } else { - filter = addressFilter; + List filters = new ArrayList<>(); + Bson addressFilter = Filters.eq("address", address); + filters.add(addressFilter); + if (type > 0) { + filters.add(Filters.eq("type", type)); + } + if (assetChainId > 0 && assetId > 0) { + filters.add(Filters.eq("chainId", assetChainId)); + filters.add(Filters.eq("assetId", assetId)); + } + if (startTime > 0) { + filters.add(Filters.gte("createTime", startTime)); } + if (endTime > 0) { + filters.add(Filters.lte("createTime", endTime)); + } + + Bson filter = Filters.and(filters); int start = (pageIndex - 1) * pageSize; int end = pageIndex * pageSize; int index = DBUtil.getShardNumber(address); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 85895e6236..878ac9a8bf 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -157,11 +157,12 @@ public RpcResult getAccountTxs(List params) { PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight); - result.setResult(new PageInfo<>(pageNumber, pageSize,pageInfo.getTotalCount(),pageInfo.getList().stream().map(d->{ - Map res = MapUtils.beanToMap(d);AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); + result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { + Map res = MapUtils.beanToMap(d); + AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); if (assetInfo != null) { - res.put("symbol",assetInfo.getSymbol()); - res.put("decimals",assetInfo.getDecimals()); + res.put("symbol", assetInfo.getSymbol()); + res.put("decimals", assetInfo.getDecimals()); } return res; }).collect(Collectors.toList()))); @@ -177,7 +178,7 @@ public RpcResult getAccountTxs(List params) { @RpcMethod("getAcctTxs") public RpcResult getAcctTxs(List params) { VerifyUtils.verifyParams(params, 7); - int chainId, pageNumber, pageSize, type; + int chainId, assetChainId, assetId, pageNumber, pageSize, type; String address; long startTime, endTime; try { @@ -186,24 +187,24 @@ public RpcResult getAcctTxs(List params) { return RpcResult.paramError("[chainId] is inValid"); } try { - pageNumber = (int) params.get(1); + address = (String) params.get(1); } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); + return RpcResult.paramError("[address] is inValid"); } try { - pageSize = (int) params.get(2); + type = (int) params.get(2); } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); + return RpcResult.paramError("[type] is inValid"); } try { - address = (String) params.get(3); + assetChainId = (int) params.get(3); } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); + return RpcResult.paramError("[assetChainId] is inValid"); } try { - type = (int) params.get(4); + assetId = (int) params.get(4); } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); + return RpcResult.paramError("[assetId] is inValid"); } try { startTime = Long.parseLong("" + params.get(5)); @@ -216,6 +217,16 @@ public RpcResult getAcctTxs(List params) { return RpcResult.paramError("[endTime] is invalid"); } + try { + pageNumber = (int) params.get(7); + } catch (Exception e) { + return RpcResult.paramError("[pageNumber] is inValid"); + } + try { + pageSize = (int) params.get(8); + } catch (Exception e) { + return RpcResult.paramError("[pageSize] is inValid"); + } if (!AddressTool.validAddress(chainId, address)) { return RpcResult.paramError("[address] is inValid"); @@ -230,7 +241,7 @@ public RpcResult getAcctTxs(List params) { RpcResult result = new RpcResult(); PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAcctTxs(chainId, address, pageNumber, pageSize, type, startTime, endTime); + pageInfo = accountService.getAcctTxs(chainId, assetChainId, assetId, address, type, startTime, endTime, pageNumber, pageSize); } else { pageInfo = new PageInfo<>(pageNumber, pageSize); } @@ -495,7 +506,7 @@ public RpcResult getAccountsBalance(List params) { } String[] addressList = address.split(","); - Map balanceInfoList = new HashMap<>(); + Map balanceInfoList = new HashMap<>(); for (int i = 0; i < addressList.length; i++) { address = addressList[i]; BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, assetChainId, assetId); @@ -622,7 +633,7 @@ public RpcResult getAllAddressPrefix(List params) { } @RpcMethod("getNRC20Snapshot") - public RpcResult getNRC20Snapshot(List params){ + public RpcResult getNRC20Snapshot(List params) { VerifyUtils.verifyParams(params, 2); int chainId; String address; @@ -639,8 +650,8 @@ public RpcResult getNRC20Snapshot(List params){ if (!AddressTool.validAddress(chainId, address)) { return RpcResult.paramError("[address] is inValid"); } - PageInfo pageInfo = tokenService.getContractTokens(chainId,address,1,Integer.MAX_VALUE); - return RpcResult.success(pageInfo.getList().stream().map(d-> Map.of("address",d.getAddress(),"balance",d.getBalance())).collect(Collectors.toList())); + PageInfo pageInfo = tokenService.getContractTokens(chainId, address, 1, Integer.MAX_VALUE); + return RpcResult.success(pageInfo.getList().stream().map(d -> Map.of("address", d.getAddress(), "balance", d.getBalance())).collect(Collectors.toList())); } From 1cffc8bc717670d567a1f29c48afef9ab1bef134 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 10 Jul 2020 15:14:43 +0800 Subject: [PATCH 041/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E3=80=82=20=E4=BF=AE=E6=94=B9=E6=89=8B?= =?UTF-8?q?=E7=BB=AD=E8=B4=B9=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/stop-temp | 3 +++ .../account/service/impl/TransactionServiceImpl.java | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/build/stop-temp b/build/stop-temp index e53129ff0d..ae41d4fc82 100755 --- a/build/stop-temp +++ b/build/stop-temp @@ -1,6 +1,9 @@ #!/bin/bash cd `dirname $0` APP_NAME="%APP_NAME%" +. func +chainName=`getModuleItem ./nuls.ncf "chainName"` +APP_NAME="${chainName}_kernel" VERSION="%VERSION%"; # %Version 注入 JAR_FILE="`pwd`/${APP_NAME}-${VERSION}.jar" KILL_WAIT_COUNT=120 diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java index b289c8eb57..b5a33c65c3 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java @@ -707,10 +707,18 @@ private BigInteger getFeeDirect(Chain chain, List listFrom, BigInteger */ private boolean getFeeIndirect(Chain chain, List listFrom, int txSize, BigInteger targetFee, BigInteger actualFee) throws NulsException { ListIterator iterator = listFrom.listIterator(); + out: while (iterator.hasNext()) { CoinFrom coinFrom = iterator.next(); //如果不为当前链主资产 if (!TxUtil.isChainAssetExist(chain, coinFrom)) { + //如果FROM中有相同地址有本链资产的coin, 说明前面计算并支出过手续费但余额不足. + for (CoinFrom coin : listFrom) { + if (Arrays.equals(coin.getAddress(), coinFrom.getAddress()) + && TxUtil.isChainAssetExist(chain, coin)) { + continue out; + } + } int assetsChainId = chain.getConfig().getChainId(); int assetsId = chain.getConfig().getAssetId(); //查询该地址在当前链的主资产余额 @@ -730,10 +738,7 @@ private boolean getFeeIndirect(Chain chain, List listFrom, int txSize, //当前还差的手续费 BigInteger current = targetFee.subtract(actualFee); //此账户可以支付的手续费 - //可用余额=当前余额减去本次转出 - mainAsset = mainAsset.subtract(coinFrom.getAmount()); BigInteger fee = BigIntegerUtils.isEqualOrGreaterThan(mainAsset, current) ? current : mainAsset; - feeCoinFrom.setLocked(AccountConstant.NORMAL_TX_LOCKED); feeCoinFrom.setAssetsChainId(assetsChainId); feeCoinFrom.setAssetsId(assetsId); From b3fa969e9beab1493663ffa03a25d1b2bbc757ea Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 10 Jul 2020 16:43:09 +0800 Subject: [PATCH 042/304] merge from 2.6.1-beta public service --- .../io/nuls/api/PublicServiceBootstrap.java | 14 ++ .../io/nuls/api/analysis/AnalysisHandler.java | 43 +++-- .../nuls/api/analysis/WalletRpcHandler.java | 5 +- .../io/nuls/api/constant/DBTableConstant.java | 2 + .../java/io/nuls/api/db/AccountService.java | 2 +- .../java/io/nuls/api/db/ChainService.java | 2 + .../io/nuls/api/db/TransactionService.java | 4 + .../api/db/mongo/MongoAccountServiceImpl.java | 39 ++-- .../api/db/mongo/MongoBlockServiceImpl.java | 1 + .../api/db/mongo/MongoChainServiceImpl.java | 13 ++ .../api/db/mongo/MongoDBTableServiceImpl.java | 2 + .../api/db/mongo/MongoTokenServiceImpl.java | 2 + .../db/mongo/MongoTransactionServiceImpl.java | 60 ++++++ .../io/nuls/api/manager/CacheManager.java | 3 + .../io/nuls/api/manager/ScheduleManager.java | 4 +- .../io/nuls/api/model/po/BlockHeaderInfo.java | 10 + .../api/model/po/CrossTxRelationInfo.java | 182 ++++++++++++++++++ .../api/rpc/controller/AccountController.java | 52 +++-- .../api/rpc/controller/ChainController.java | 42 +++- .../rpc/controller/TransactionController.java | 52 ++++- .../controller/runner/QueueContractRun.java | 3 +- .../java/io/nuls/api/service/SyncService.java | 28 ++- 22 files changed, 482 insertions(+), 83 deletions(-) create mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java index 9bbd2f7419..29badfc5c5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java @@ -21,11 +21,14 @@ package io.nuls.api; import com.fasterxml.jackson.core.JsonParser; +import com.google.common.cache.Cache; import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.constant.config.ApiConfig; import io.nuls.api.db.mongo.MongoChainServiceImpl; import io.nuls.api.db.mongo.MongoDBTableServiceImpl; +import io.nuls.api.manager.CacheManager; import io.nuls.api.manager.ScheduleManager; +import io.nuls.api.model.po.AssetInfo; import io.nuls.api.model.po.ChainInfo; import io.nuls.api.model.po.SyncInfo; import io.nuls.api.rpc.jsonRpc.JsonRpcServer; @@ -195,6 +198,7 @@ public RpcModuleState onDependenciesReady() { LoggerUtil.commonLog.error(e); System.exit(-1); } + ApiContext.isReady = true; return RpcModuleState.Running; } @@ -216,6 +220,16 @@ private void initDB() { if (syncInfo != null) { ApiContext.protocolVersion = syncInfo.getVersion(); } + + List chainInfoList = chainService.getChainInfoList(); + if (chainInfoList != null) { + for (ChainInfo chainInfo : chainInfoList) { + CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); + for (AssetInfo assetInfo : chainInfo.getAssets()) { + CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); + } + } + } } @Override diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index 0dea40193e..13bea912f2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -58,12 +58,14 @@ public static BlockInfo toBlockInfo(String blockHex, int chainId) throws Excepti //提取智能合约相关交易的hash,查询合约执行结果 //Extract the hash of smart contract related transactions and query the contract execution results List contactHashList = new ArrayList<>(); - for (Transaction tx : block.getTxs()) { - if (tx.getType() == TxType.CREATE_CONTRACT || - tx.getType() == TxType.CALL_CONTRACT || - tx.getType() == TxType.DELETE_CONTRACT || - tx.getType() == TxType.CROSS_CHAIN) { - contactHashList.add(tx.getHash().toHex()); + if(ApiContext.isRunSmartContract) { + for (Transaction tx : block.getTxs()) { + if (tx.getType() == TxType.CREATE_CONTRACT || + tx.getType() == TxType.CALL_CONTRACT || + tx.getType() == TxType.DELETE_CONTRACT || + tx.getType() == TxType.CROSS_CHAIN) { + contactHashList.add(tx.getHash().toHex()); + } } } @@ -161,6 +163,7 @@ public static BlockHeaderInfo toBlockHeaderInfo(BlockHeader blockHeader, int cha info.setPackingIndexOfRound(extendsData.getPackingIndexOfRound()); info.setScriptSign(HexUtil.encode(blockHeader.getBlockSignature().serialize())); info.setAgentVersion(extendsData.getBlockVersion()); + info.setMainVersion(extendsData.getMainVersion()); info.setRoundStartTime(extendsData.getRoundStartTime()); //是否是种子节点打包的区块 ApiCache apiCache = CacheManager.getCache(chainId); @@ -175,7 +178,7 @@ public static List toTxs(int chainId, List txList, for (int i = 0; i < txList.size(); i++) { Transaction tx = txList.get(i); tx.setStatus(TxStatusEnum.CONFIRMED); - TransactionInfo txInfo = toTransaction(chainId, tx, resultInfoMap); + TransactionInfo txInfo = toTransaction(chainId, tx, resultInfoMap, blockHeader.getMainVersion()); if (txInfo.getType() == TxType.RED_PUNISH) { PunishLogInfo punishLog = (PunishLogInfo) txInfo.getTxData(); punishLog.setRoundIndex(blockHeader.getRoundIndex()); @@ -193,7 +196,7 @@ public static List toTxs(int chainId, List txList, return txs; } - public static TransactionInfo toTransaction(int chainId, Transaction tx) throws Exception { + public static TransactionInfo toTransaction(int chainId, Transaction tx, int version) throws Exception { TransactionInfo info = new TransactionInfo(); info.setHash(tx.getHash().toHex()); info.setHeight(tx.getBlockHeight()); @@ -221,14 +224,14 @@ public static TransactionInfo toTransaction(int chainId, Transaction tx) throws if (info.getType() == TxType.YELLOW_PUNISH) { info.setTxDataList(toYellowPunish(tx)); } else { - info.setTxData(toTxData(chainId, tx)); + info.setTxData(toTxData(chainId, tx, version)); } info.calcValue(); info.calcFee(chainId); return info; } - public static TransactionInfo toTransaction(int chainId, Transaction tx, Map resultInfoMap) throws Exception { + public static TransactionInfo toTransaction(int chainId, Transaction tx, Map resultInfoMap, int version) throws Exception { TransactionInfo info = new TransactionInfo(); info.setHash(tx.getHash().toHex()); info.setHeight(tx.getBlockHeight()); @@ -256,7 +259,7 @@ public static TransactionInfo toTransaction(int chainId, Transaction tx, Map toCoinToList(CoinData coinData) { return toInfoList; } - public static TxDataInfo toTxData(int chainId, Transaction tx) throws NulsException { + public static TxDataInfo toTxData(int chainId, Transaction tx, int version) throws NulsException { if (tx.getType() == TxType.ACCOUNT_ALIAS) { return toAlias(tx); } else if (tx.getType() == TxType.REGISTER_AGENT || tx.getType() == TxType.CONTRACT_CREATE_AGENT) { @@ -334,9 +337,9 @@ public static TxDataInfo toTxData(int chainId, Transaction tx) throws NulsExcept } else if (tx.getType() == TxType.CONTRACT_TRANSFER) { return toContractTransferInfo(tx); } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET || tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { - return toChainInfo(tx); + return toChainInfo(tx, version); } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN || tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { - return toAssetInfo(tx); + return toAssetInfo(tx, version); } return null; } @@ -793,9 +796,9 @@ private static ContractTransferInfo toContractTransferInfo(Transaction tx) throw return info; } - private static ChainInfo toChainInfo(Transaction tx) throws NulsException { + private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsException { ChainInfo chainInfo = new ChainInfo(); - if (ApiContext.protocolVersion < 4) { + if (version < 4) { TxChain txChain = new TxChain(); txChain.parse(new NulsByteBuffer(tx.getTxData())); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); @@ -807,7 +810,7 @@ private static ChainInfo toChainInfo(Transaction tx) throws NulsException { assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); - } else if (ApiContext.protocolVersion == 4) { + } else if (version == 4) { io.nuls.api.model.entity.v4.TxChain txChain = new io.nuls.api.model.entity.v4.TxChain(); txChain.parse(new NulsByteBuffer(tx.getTxData())); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); @@ -823,12 +826,14 @@ private static ChainInfo toChainInfo(Transaction tx) throws NulsException { io.nuls.api.model.entity.v5.TxChain txChain = new io.nuls.api.model.entity.v5.TxChain(); txChain.parse(tx.getTxData(), 0); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); + chainInfo.setChainName(txChain.getName()); AssetInfo assetInfo = new AssetInfo(); assetInfo.setAssetId(txChain.getDefaultAsset().getAssetId()); assetInfo.setChainId(txChain.getDefaultAsset().getChainId()); assetInfo.setSymbol(txChain.getDefaultAsset().getSymbol()); assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); + assetInfo.setDecimals(txChain.getDefaultAsset().getDecimalPlaces()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); } @@ -837,9 +842,9 @@ private static ChainInfo toChainInfo(Transaction tx) throws NulsException { return chainInfo; } - private static AssetInfo toAssetInfo(Transaction tx) throws NulsException { + private static AssetInfo toAssetInfo(Transaction tx, int version) throws NulsException { AssetInfo assetInfo = new AssetInfo(); - if (ApiContext.protocolVersion >= 4) { + if (version >= 4) { io.nuls.api.model.entity.v4.TxAsset txAsset = new io.nuls.api.model.entity.v4.TxAsset(); txAsset.parse(new NulsByteBuffer(tx.getTxData())); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 06fc2a73e8..8f58ebc442 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -185,7 +185,7 @@ public static Result getTx(int chainId, String hash) { tx.setStatus(TxStatusEnum.CONFIRMED); } tx.setBlockHeight(height); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); return Result.getSuccess(null).setData(txInfo); } catch (NulsException e) { @@ -293,8 +293,9 @@ public static Result getContractConstructor(int chainId, String contractCod } private static String crossTokenSystemContract = null; + public static String getCrossTokenSystemContract(int chainId) throws NulsException { - if(StringUtils.isBlank(crossTokenSystemContract)) { + if (StringUtils.isBlank(crossTokenSystemContract)) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.GET_CROSS_TOKEN_SYSTEM_CONTRACT, params); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java index 94934fa8fb..fe115aa371 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java @@ -29,6 +29,8 @@ public interface DBTableConstant { String TX_TABLE = "tx_table_"; //交易关系记录表 String TX_RELATION_TABLE = "tx_relation_table_"; + + String CROSS_TX_RELATION_TABLE = "cross_tx_relation_table_"; //交易关系记录表 String TX_UNCONFIRM_RELATION_TABLE = "tx_unconfirm_relation_table_"; //交易表 diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java index f593e7ebf3..1b8cb70c0c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java @@ -20,7 +20,7 @@ public interface AccountService { PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight); - PageInfo getAcctTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startTime, long endTime); + PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, int type, long startTime, long endTime, int pageIndex, int pageSize); PageInfo getCoinRanking(int pageIndex, int pageSize, int chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java index 6cacbe2710..ac6c9e55ca 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java @@ -12,6 +12,8 @@ public interface ChainService { List getChainInfoList(); + List getOtherChainInfoList(int chainId); + SyncInfo getSyncInfo(int chainId); void addChainInfo(ChainInfo chainInfo); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java index c82f552b3e..d0e62fca1c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java @@ -16,6 +16,10 @@ public interface TransactionService { PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, boolean isHidden, long startTime, long endTime); + PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime); + + void saveCrossTxRelationList(int chainId, Set relationInfos); + List getUnConfirmList(int chainId); void deleteTxs(int chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index ceb1783b57..a2ed9d16c2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -17,6 +17,7 @@ import io.nuls.core.model.BigIntegerUtils; import org.bson.Document; import org.bson.conversions.Bson; +import org.checkerframework.checker.units.qual.A; import java.math.BigInteger; import java.util.ArrayList; @@ -168,27 +169,27 @@ public PageInfo getAccountTxs(int chainId, String address, int p return pageInfo; } - public PageInfo getAcctTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startTime, long endTime) { - Bson filter; - Bson addressFilter = Filters.eq("address", address); + public PageInfo getAcctTxs(int chainId, int assetChainId, int assetId,String address, + int type, long startTime, long endTime, int pageIndex, int pageSize) { - if (type > 0 && startTime > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (type > 0 && startTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("createTime", startTime)); - } else if (type > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.lte("createTime", endTime)); - } else if (startTime > 0 && endTime > 0) { - filter = Filters.and(addressFilter, Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (startTime > 0) { - filter = Filters.and(addressFilter, Filters.gte("createTime", startTime)); - } else if (endTime > 0) { - filter = Filters.and(addressFilter, Filters.lte("createTime", endTime)); - } else if (type > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type)); - } else { - filter = addressFilter; + List filters = new ArrayList<>(); + Bson addressFilter = Filters.eq("address", address); + filters.add(addressFilter); + if (type > 0) { + filters.add(Filters.eq("type", type)); + } + if (assetChainId > 0 && assetId > 0) { + filters.add(Filters.eq("chainId", assetChainId)); + filters.add(Filters.eq("assetId", assetId)); + } + if (startTime > 0) { + filters.add(Filters.gte("createTime", startTime)); } + if (endTime > 0) { + filters.add(Filters.lte("createTime", endTime)); + } + + Bson filter = Filters.and(filters); int start = (pageIndex - 1) * pageSize; int end = pageIndex * pageSize; int index = DBUtil.getShardNumber(address); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java index b52a4c0ee4..0206dcddb7 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java @@ -68,6 +68,7 @@ public BlockHeaderInfo getBlockHeaderByHash(int chainId, String hash) { public void saveBLockHeaderInfo(int chainId, BlockHeaderInfo blockHeaderInfo) { Document document = DocumentTransferTool.toDocument(blockHeaderInfo, "height"); + document.remove("mainVersion"); mongoDBService.insertOne(BLOCK_HEADER_TABLE + chainId, document); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java index c5de15f625..bbb843766e 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java @@ -47,6 +47,19 @@ public List getChainInfoList() { return chainList; } + public List getOtherChainInfoList(int chainId) { + Bson filter = Filters.ne("_id", chainId); + List documentList = mongoDBService.query(CHAIN_INFO_TABLE, filter); + if (documentList.isEmpty()) { + return null; + } + List chainList = new ArrayList<>(); + for (Document document : documentList) { + chainList.add(ChainInfo.toInfo(document)); + } + return chainList; + } + public void addChainInfo(ChainInfo chainInfo) { if (getChainInfo(chainInfo.getChainId()) == null) { Document document = chainInfo.toDocument(); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java index f18b3bf3c2..8577447253 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java @@ -139,6 +139,8 @@ private void initTablesIndex(int chainId) { mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("time")); mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","fromAddress")); mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","toAddress")); + //跨链交易表索引 + mongoDBService.createIndex(DBTableConstant.CROSS_TX_RELATION_TABLE + chainId, Indexes.ascending("address")); } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java index 2ebe537d0e..1f20dc0d83 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java @@ -8,6 +8,7 @@ import io.nuls.api.utils.DocumentTransferTool; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.StringUtils; import org.bson.Document; import org.bson.conversions.Bson; @@ -42,6 +43,7 @@ public void saveAccountTokens(int chainId, Map account List> modelList = new ArrayList<>(); for (AccountTokenInfo tokenInfo : accountTokenInfos.values()) { Document document = DocumentTransferTool.toDocument(tokenInfo, "key"); + document.put("balance", BigIntegerUtils.bigIntegerToString(tokenInfo.getBalance(), 32)); if (tokenInfo.isNew()) { modelList.add(new InsertOneModel(document)); } else { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index 5d6a56ac91..975e6193ba 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -4,7 +4,9 @@ import com.mongodb.client.model.Filters; import com.mongodb.client.model.InsertManyOptions; import com.mongodb.client.model.Sorts; +import io.nuls.api.ApiContext; import io.nuls.api.analysis.WalletRpcHandler; +import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.TransactionService; import io.nuls.api.model.po.*; import io.nuls.api.model.po.mini.MiniTransactionInfo; @@ -221,6 +223,64 @@ public PageInfo getTxList(int chainId, int pageIndex, int p return pageInfo; } + @Override + public PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime) { + Bson filter = null; + if (startTime > 0 && endTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); + } else if (startTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime)); + } else if (endTime > 0) { + filter = Filters.and(Filters.eq("chainId", chainId), Filters.lte("createTime", endTime)); + } else { + filter = Filters.eq("chainId", chainId); + } + long totalCount = mongoDBService.getCount(CROSS_TX_RELATION_TABLE + chainId, filter); + List docList = this.mongoDBService.pageQuery(CROSS_TX_RELATION_TABLE + ApiContext.defaultChainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); + List txList = new ArrayList<>(); + for (Document document : docList) { + txList.add(CrossTxRelationInfo.toInfo(document)); + } + + PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, txList); + return pageInfo; + } + + + public void saveCrossTxRelationList(int chainId, Set relationInfos) { + if (relationInfos.isEmpty()) { + return; + } + List documentList = new ArrayList<>(); + for (CrossTxRelationInfo relationInfo : relationInfos) { + Document document = relationInfo.toDocument(); + documentList.add(document); + } + + InsertManyOptions options = new InsertManyOptions(); + options.ordered(false); + mongoDBService.insertMany(CROSS_TX_RELATION_TABLE + chainId, documentList, options); +// List saveList = new ArrayList(); +// for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { +// saveList.clear(); +// List documentList = relationMap.get("relation_" + i); +// if (documentList.size() == 0) { +// continue; +// } +// for (Document document : documentList) { +// saveList.add(document); +// if (saveList.size() == 1000) { +// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); +// saveList.clear(); +// } +// } +// if (saveList.size() != 0) { +// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); +// } +// } + } + + @Override public List getUnConfirmList(int chainId) { List docList = mongoDBService.query(TX_UNCONFIRM_TABLE + chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java index ffdc340c0a..bfa5afc610 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java @@ -37,6 +37,9 @@ public static void initCache(ChainInfo chainInfo, ChainConfigInfo configInfo) { ApiCache apiCache = new ApiCache(); apiCache.setChainInfo(chainInfo); apiCache.setConfigInfo(configInfo); + chainInfoMap.put(chainInfo.getChainId(), chainInfo); + assetInfoMap.put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); + CoinContextInfo contextInfo = new CoinContextInfo(); apiCache.setCoinContextInfo(contextInfo); apiCacheMap.put(chainInfo.getChainId(), apiCache); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java index 52c4d61e86..b9e3b5555a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java @@ -27,9 +27,9 @@ public void start() { // executorService.scheduleAtFixedRate(new UnConfirmTxTask(apiCache.getChainInfo().getChainId()), 1, 10, TimeUnit.MINUTES); // } - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(6); + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(7); executorService.scheduleAtFixedRate(new DeleteTxsTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); +// executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new SyncBlockTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 0, 20, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new StatisticalTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java index ff5d954f24..8592d54339 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java @@ -71,6 +71,8 @@ public class BlockHeaderInfo { private int agentVersion; + private int mainVersion; + public void setByAgentInfo(AgentInfo agentInfo) { this.agentHash = agentInfo.getTxHash(); this.agentId = agentInfo.getAgentId(); @@ -236,4 +238,12 @@ public int getAgentVersion() { public void setAgentVersion(int agentVersion) { this.agentVersion = agentVersion; } + + public int getMainVersion() { + return mainVersion; + } + + public void setMainVersion(int mainVersion) { + this.mainVersion = mainVersion; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java new file mode 100644 index 0000000000..304ed553fe --- /dev/null +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java @@ -0,0 +1,182 @@ +package io.nuls.api.model.po; + +import org.bson.Document; + +import java.math.BigInteger; + +import static io.nuls.api.constant.ApiConstant.TRANSFER_FROM_TYPE; +import static io.nuls.api.constant.ApiConstant.TRANSFER_TO_TYPE; + + +public class CrossTxRelationInfo { + + private String txHash; + + private String address; + + private long createTime; + + private long height; + + private int chainId; + + private int assetId; + + private int decimal; + + private String symbol; + + private BigInteger values; + + // -1 : from , 1: to + private int transferType; + + private int status; + + public CrossTxRelationInfo() { + + } + + public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx, int decimal) { + this.address = output.getAddress(); + this.chainId = output.getChainId(); + this.assetId = output.getAssetsId(); + this.height = tx.getHeight(); + this.symbol = output.getSymbol(); + this.values = output.getAmount(); + this.txHash = tx.getHash(); + this.createTime = tx.getCreateTime(); + this.transferType = TRANSFER_TO_TYPE; + this.decimal = decimal; + } + + public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx, int decimal) { + this.address = input.getAddress(); + this.chainId = input.getChainId(); + this.assetId = input.getAssetsId(); + this.height = tx.getHeight(); + this.symbol = input.getSymbol(); + this.values = input.getAmount(); + this.txHash = tx.getHash(); + this.createTime = tx.getCreateTime(); + this.transferType = TRANSFER_FROM_TYPE; + this.decimal = decimal; + } + + public Document toDocument() { + Document document = new Document(); + document.append("address", address).append("txHash", txHash).append("createTime", createTime) + .append("chainId", chainId).append("assetId", assetId).append("symbol", symbol).append("height", height) + .append("values", values.toString()).append("transferType", transferType); + return document; + } + + public static CrossTxRelationInfo toInfo(Document document) { + try { + CrossTxRelationInfo relationInfo = new CrossTxRelationInfo(); + relationInfo.setAddress(document.getString("address")); + relationInfo.setTxHash(document.getString("txHash")); + relationInfo.setCreateTime(document.getLong("createTime")); + relationInfo.setChainId(document.getInteger("chainId")); + relationInfo.setAssetId(document.getInteger("assetId")); + relationInfo.setSymbol(document.getString("symbol")); + relationInfo.setTransferType(document.getInteger("transferType")); + relationInfo.setValues(new BigInteger(document.getString("values"))); + relationInfo.setHeight(document.getLong("height")); + return relationInfo; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + public String getTxHash() { + return txHash; + } + + public void setTxHash(String txHash) { + this.txHash = txHash; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public long getCreateTime() { + return createTime; + } + + public void setCreateTime(long createTime) { + this.createTime = createTime; + } + + + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public BigInteger getValues() { + return values; + } + + public void setValues(BigInteger values) { + this.values = values; + } + + public int getTransferType() { + return transferType; + } + + public void setTransferType(int transferType) { + this.transferType = transferType; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } + + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } + + public long getHeight() { + return height; + } + + public void setHeight(long height) { + this.height = height; + } +} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 8636315e53..878ac9a8bf 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -36,6 +36,7 @@ import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.MapUtils; import java.util.ArrayList; import java.util.HashMap; @@ -156,21 +157,28 @@ public RpcResult getAccountTxs(List params) { PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight); + result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { + Map res = MapUtils.beanToMap(d); + AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); + if (assetInfo != null) { + res.put("symbol", assetInfo.getSymbol()); + res.put("decimals", assetInfo.getDecimals()); + } + return res; + }).collect(Collectors.toList()))); } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); + result.setResult(new PageInfo<>(pageNumber, pageSize)); } - result.setResult(pageInfo); } catch (Exception e) { LoggerUtil.commonLog.error(e); } return result; - } @RpcMethod("getAcctTxs") public RpcResult getAcctTxs(List params) { VerifyUtils.verifyParams(params, 7); - int chainId, pageNumber, pageSize, type; + int chainId, assetChainId, assetId, pageNumber, pageSize, type; String address; long startTime, endTime; try { @@ -179,24 +187,24 @@ public RpcResult getAcctTxs(List params) { return RpcResult.paramError("[chainId] is inValid"); } try { - pageNumber = (int) params.get(1); + address = (String) params.get(1); } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); + return RpcResult.paramError("[address] is inValid"); } try { - pageSize = (int) params.get(2); + type = (int) params.get(2); } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); + return RpcResult.paramError("[type] is inValid"); } try { - address = (String) params.get(3); + assetChainId = (int) params.get(3); } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); + return RpcResult.paramError("[assetChainId] is inValid"); } try { - type = (int) params.get(4); + assetId = (int) params.get(4); } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); + return RpcResult.paramError("[assetId] is inValid"); } try { startTime = Long.parseLong("" + params.get(5)); @@ -209,6 +217,16 @@ public RpcResult getAcctTxs(List params) { return RpcResult.paramError("[endTime] is invalid"); } + try { + pageNumber = (int) params.get(7); + } catch (Exception e) { + return RpcResult.paramError("[pageNumber] is inValid"); + } + try { + pageSize = (int) params.get(8); + } catch (Exception e) { + return RpcResult.paramError("[pageSize] is inValid"); + } if (!AddressTool.validAddress(chainId, address)) { return RpcResult.paramError("[address] is inValid"); @@ -223,7 +241,7 @@ public RpcResult getAcctTxs(List params) { RpcResult result = new RpcResult(); PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAcctTxs(chainId, address, pageNumber, pageSize, type, startTime, endTime); + pageInfo = accountService.getAcctTxs(chainId, assetChainId, assetId, address, type, startTime, endTime, pageNumber, pageSize); } else { pageInfo = new PageInfo<>(pageNumber, pageSize); } @@ -488,7 +506,7 @@ public RpcResult getAccountsBalance(List params) { } String[] addressList = address.split(","); - Map balanceInfoList = new HashMap<>(); + Map balanceInfoList = new HashMap<>(); for (int i = 0; i < addressList.length; i++) { address = addressList[i]; BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, assetChainId, assetId); @@ -615,7 +633,7 @@ public RpcResult getAllAddressPrefix(List params) { } @RpcMethod("getNRC20Snapshot") - public RpcResult getNRC20Snapshot(List params){ + public RpcResult getNRC20Snapshot(List params) { VerifyUtils.verifyParams(params, 2); int chainId; String address; @@ -632,8 +650,8 @@ public RpcResult getNRC20Snapshot(List params){ if (!AddressTool.validAddress(chainId, address)) { return RpcResult.paramError("[address] is inValid"); } - PageInfo pageInfo = tokenService.getContractTokens(chainId,address,1,Integer.MAX_VALUE); - return RpcResult.success(pageInfo.getList().stream().map(d-> Map.of("address",d.getAddress(),"balance",d.getBalance())).collect(Collectors.toList())); + PageInfo pageInfo = tokenService.getContractTokens(chainId, address, 1, Integer.MAX_VALUE); + return RpcResult.success(pageInfo.getList().stream().map(d -> Map.of("address", d.getAddress(), "balance", d.getBalance())).collect(Collectors.toList())); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index b701d6d1c8..257ae3d609 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -42,6 +42,8 @@ public class ChainController { private StatisticalService statisticalService; @Autowired private AgentService agentService; + @Autowired + private ChainService chainService; @RpcMethod("getChainInfo") public RpcResult getChainInfo(List params) { @@ -58,19 +60,41 @@ public RpcResult getOtherChainList(List params) { return RpcResult.paramError("[chainId] is invalid"); } - List> chainInfoList = new ArrayList<>(); - for (ChainInfo chainInfo : CacheManager.getChainInfoMap().values()) { - if (chainInfo.getChainId() != chainId) { - Map map = new HashMap<>(); - map.put("chainId", chainInfo.getChainId()); - map.put("chainName", chainInfo.getChainName()); - chainInfoList.add(map); - } - } + List chainInfoList = chainService.getOtherChainInfoList(chainId); +// +// +// List> chainInfoList = new ArrayList<>(); +// for (ChainInfo chainInfo : CacheManager.getChainInfoMap().values()) { +// if (chainInfo.getChainId() != chainId) { +// Map map = new HashMap<>(); +// map.put("chainId", chainInfo.getChainId()); +// map.put("chainName", chainInfo.getChainName()); +// chainInfoList.add(map); +// } +// } return RpcResult.success(chainInfoList); + } + @RpcMethod("getOtherChainInfo") + public RpcResult getOtherChainInfo(List params) { + VerifyUtils.verifyParams(params, 1); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } +// if(chainId == ApiContext.defaultChainId) { +// +// }else { +// +// } + + ChainInfo chainInfo = chainService.getChainInfo(chainId); + return RpcResult.success(chainInfo); } + @RpcMethod("getInfo") public RpcResult getInfo(List params) { VerifyUtils.verifyParams(params, 1); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 33c7189aa2..37bf9418e4 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -171,7 +171,7 @@ public RpcResult getTxList(List params) { } try { - endTime = Long.parseLong(params.get(6).toString()); + endTime = Long.parseLong(params.get(6).toString()); } catch (Exception e) { } @@ -389,7 +389,7 @@ public RpcResult broadcastTx(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -430,7 +430,7 @@ public RpcResult broadcastTxWithoutAnyValidation(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -471,12 +471,12 @@ public RpcResult sendCrossTx(List params) { return RpcResult.dataNotFound(); } try { - Result result = WalletRpcHandler.sendCrossTx(chainId, txHex); + Result result = WalletRpcHandler.sendCrossTx(chainId, txHex); if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -515,7 +515,7 @@ public RpcResult broadcastTxWithNoContractValidation(List params) { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); txService.saveUnConfirmTx(chainId, txInfo, txHex); return RpcResult.success(result.getData()); } else { @@ -526,4 +526,44 @@ public RpcResult broadcastTxWithNoContractValidation(List params) { return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); } } + + @RpcMethod("getCrossTxList") + public RpcResult getCrossTxList(List params) { + if (!ApiContext.isReady) { + return RpcResult.chainNotReady(); + } + VerifyUtils.verifyParams(params, 5); + int chainId, pageNumber, pageSize; + long startTime = 0, endTime = 0; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + pageNumber = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[pageNumber] is inValid"); + } + try { + pageSize = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[pageSize] is inValid"); + } + try { + startTime = Long.parseLong(params.get(3).toString()); + } catch (Exception e) { + + } + try { + endTime = Long.parseLong(params.get(4).toString()); + } catch (Exception e) { + + } + PageInfo pageInfo; + pageInfo = txService.getCrossTxList(chainId, pageNumber, pageSize, startTime, endTime); + RpcResult rpcResult = new RpcResult(); + rpcResult.setResult(pageInfo); + return rpcResult; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java index ce7e676b24..c783eb80e1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java @@ -23,6 +23,7 @@ */ package io.nuls.api.rpc.controller.runner; +import io.nuls.api.ApiContext; import io.nuls.api.analysis.AnalysisHandler; import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.db.TransactionService; @@ -58,7 +59,7 @@ public void run() { if (result.isSuccess()) { Transaction tx = new Transaction(); tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx); + TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); LoggerUtil.commonLog.info("排队广播指定合约交易[{}]成功", txInfo.getHash()); txService.saveUnConfirmTx(chainId, txInfo, txHex); // 休眠10秒 diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 0d1d433dc5..cbe4e756d9 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -59,6 +59,8 @@ public class SyncService { private List agentInfoList = new ArrayList<>(); //记录每个区块交易和账户地址的关系 private Set txRelationInfoSet = new HashSet<>(); + //记录每个跨链交易和账户地址的关系 + private Set crossTxRelationInfoSet = new HashSet<>(); //记录每个区块设置别名信息 private List aliasInfoList = new ArrayList<>(); //记录每个区块委托共识的信息 @@ -309,6 +311,8 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { addressSet.add(input.getAddress()); AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); + AssetInfo assetInfo = CacheManager.getRegisteredAsset(input.getAssetKey()); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx, assetInfo.getDecimals())); } } @@ -320,11 +324,13 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { continue; } addressSet.add(output.getAddress()); - if(nrc20CrossTransferBack && output.getAssetsId() != ApiContext.defaultAssetId) { + if (nrc20CrossTransferBack && output.getAssetsId() != ApiContext.defaultAssetId) { txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO)); } else { AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); + AssetInfo assetInfo = CacheManager.getRegisteredAsset(output.getAssetKey()); + crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx, assetInfo.getDecimals())); } } } @@ -345,7 +351,7 @@ private void processCrossTransferTxForNRC20TransferOut(int chainId, TransactionI continue; } addressSet.add(input.getAddress()); - if(input.getAssetsId() == ApiContext.defaultAssetId) { + if (input.getAssetsId() == ApiContext.defaultAssetId) { AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); } else { @@ -377,7 +383,7 @@ private void processLedgerAssetRegTransferTx(int chainId, TransactionInfo tx) { } private void processCrossTransferTxForNRC20TransferBack(int chainId, TransactionInfo tx) { - if(tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo) { + if (tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo) { ContractCallInfo callInfo = (ContractCallInfo) tx.getTxData(); ContractInfo contractInfo = queryContractInfo(chainId, callInfo.getContractAddress()); contractInfo.setTxCount(contractInfo.getTxCount() + 1); @@ -711,8 +717,11 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(to, tx, ledgerInfo.getTotalBalance())); } } - - chainInfoList.add((ChainInfo) tx.getTxData()); + ChainInfo chainInfo = (ChainInfo) tx.getTxData(); + chainInfo.setNew(true); + chainInfoList.add(chainInfo); + CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); + CacheManager.getAssetInfoMap().put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); } private void processDestroyChainTx(int chainId, TransactionInfo tx) { @@ -757,9 +766,11 @@ private void processAddAssetTx(int chainId, TransactionInfo tx) { AssetInfo assetInfo = (AssetInfo) tx.getTxData(); ChainInfo chainInfo = chainService.getChainInfo(chainId); if (chainInfo != null) { + chainInfo.setNew(false); chainInfo.getAssets().add(assetInfo); chainInfoList.add(chainInfo); } + CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); } private void processCancelAssetTx(int chainId, TransactionInfo tx) { @@ -902,8 +913,8 @@ public void save(int chainId, BlockInfo blockInfo) { long time1, time2; - SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader().getAgentVersion()); - ApiContext.protocolVersion = syncInfo.getVersion(); + SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader().getMainVersion()); + //存储区块头信息 time1 = System.currentTimeMillis(); blockService.saveBLockHeaderInfo(chainId, blockInfo.getHeader()); @@ -924,6 +935,8 @@ public void save(int chainId, BlockInfo blockInfo) { // time2 = System.currentTimeMillis(); // System.out.println("-----------saveTxRelationList, use: " + (time2 - time1) ); // time1 = System.currentTimeMillis(); + //存储跨链交易和地址关系记录 + txService.saveCrossTxRelationList(chainId, crossTxRelationInfoSet); //存储别名记录 aliasService.saveAliasList(chainId, aliasInfoList); @@ -1086,6 +1099,7 @@ private void clear(int chainId) { accountLedgerInfoMap.clear(); agentInfoList.clear(); txRelationInfoSet.clear(); + crossTxRelationInfoSet.clear(); aliasInfoList.clear(); depositInfoList.clear(); punishLogList.clear(); From 00eccaf09bc43e40d18b73347d500223c2d147e7 Mon Sep 17 00:00:00 2001 From: vv <251556768@qq.com> Date: Sat, 11 Jul 2020 10:39:33 +0800 Subject: [PATCH 043/304] update public service crossTxList api --- .../java/io/nuls/provider/ApiBootstrap.java | 6 ++++++ .../java/io/nuls/api/db/TransactionService.java | 2 +- .../db/mongo/MongoTransactionServiceImpl.java | 12 ++++++------ .../rpc/controller/TransactionController.java | 17 +++++++++++------ 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index fb700728a9..7b989b1687 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -1,7 +1,9 @@ package io.nuls.provider; +import io.nuls.base.basic.AddressTool; import io.nuls.core.exception.NulsException; import io.nuls.core.parse.I18nUtils; +import io.nuls.core.rpc.util.AddressPrefixDatas; import io.nuls.provider.api.RpcServerManager; import io.nuls.base.api.provider.Provider; import io.nuls.base.api.provider.ServiceManager; @@ -35,6 +37,8 @@ public class ApiBootstrap extends RpcModule { @Autowired MyModule myModule; + @Autowired + private AddressPrefixDatas addressPrefixDatas; public static void main(String[] args) { boolean isOffline = false; @@ -67,6 +71,7 @@ public static void main(String[] args) { SpringLiteContext.init(basePackage); } initRpcServer(configItemMap); + NulsSDKBootStrap.init(defaultChainId, ""); try { I18nUtils.setLanguage("en"); @@ -110,6 +115,7 @@ public Module moduleInfo() { @Override public boolean doStart() { + AddressTool.init(addressPrefixDatas); return true; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java index d0e62fca1c..324a37a4e2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java @@ -16,7 +16,7 @@ public interface TransactionService { PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, boolean isHidden, long startTime, long endTime); - PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime); + PageInfo getCrossTxList(int chainId,int crossChainId, int pageIndex, int pageSize, long startTime, long endTime); void saveCrossTxRelationList(int chainId, Set relationInfos); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index 975e6193ba..233495a8b2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -224,19 +224,19 @@ public PageInfo getTxList(int chainId, int pageIndex, int p } @Override - public PageInfo getCrossTxList(int chainId, int pageIndex, int pageSize, long startTime, long endTime) { + public PageInfo getCrossTxList(int chainId, int crossChainId, int pageIndex, int pageSize, long startTime, long endTime) { Bson filter = null; if (startTime > 0 && endTime > 0) { - filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); + filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); } else if (startTime > 0) { - filter = Filters.and(Filters.eq("chainId", chainId), Filters.gte("createTime", startTime)); + filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.gte("createTime", startTime)); } else if (endTime > 0) { - filter = Filters.and(Filters.eq("chainId", chainId), Filters.lte("createTime", endTime)); + filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.lte("createTime", endTime)); } else { - filter = Filters.eq("chainId", chainId); + filter = Filters.eq("chainId", crossChainId); } long totalCount = mongoDBService.getCount(CROSS_TX_RELATION_TABLE + chainId, filter); - List docList = this.mongoDBService.pageQuery(CROSS_TX_RELATION_TABLE + ApiContext.defaultChainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); + List docList = this.mongoDBService.pageQuery(CROSS_TX_RELATION_TABLE + chainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); List txList = new ArrayList<>(); for (Document document : docList) { txList.add(CrossTxRelationInfo.toInfo(document)); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 37bf9418e4..b9b0d692ec 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -533,7 +533,7 @@ public RpcResult getCrossTxList(List params) { return RpcResult.chainNotReady(); } VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize; + int chainId, crossChainId, pageNumber, pageSize; long startTime = 0, endTime = 0; try { chainId = (int) params.get(0); @@ -541,27 +541,32 @@ public RpcResult getCrossTxList(List params) { return RpcResult.paramError("[chainId] is inValid"); } try { - pageNumber = (int) params.get(1); + crossChainId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + pageNumber = (int) params.get(2); } catch (Exception e) { return RpcResult.paramError("[pageNumber] is inValid"); } try { - pageSize = (int) params.get(2); + pageSize = (int) params.get(3); } catch (Exception e) { return RpcResult.paramError("[pageSize] is inValid"); } try { - startTime = Long.parseLong(params.get(3).toString()); + startTime = Long.parseLong(params.get(4).toString()); } catch (Exception e) { } try { - endTime = Long.parseLong(params.get(4).toString()); + endTime = Long.parseLong(params.get(5).toString()); } catch (Exception e) { } PageInfo pageInfo; - pageInfo = txService.getCrossTxList(chainId, pageNumber, pageSize, startTime, endTime); + pageInfo = txService.getCrossTxList(chainId, crossChainId, pageNumber, pageSize, startTime, endTime); RpcResult rpcResult = new RpcResult(); rpcResult.setResult(pageInfo); return rpcResult; From d351fea06331d019014f624d95a5b4e208e6fcd9 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 13 Jul 2020 10:26:12 +0800 Subject: [PATCH 044/304] update ps calc crossTx fee --- .../io/nuls/api/model/po/TransactionInfo.java | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java index 6f8ce5c11e..9d4494bbd6 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java @@ -100,37 +100,37 @@ public FeeInfo calcFee(int chainId) { type == TxType.CONTRACT_CREATE_AGENT || type == TxType.CONTRACT_DEPOSIT) { //系统交易没有手续费 feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - } else if (type == TxType.CROSS_CHAIN) { - //取出转出链和接收链的id - int fromChainId = AddressTool.getChainIdByAddress(coinFroms.get(0).getAddress()); - int toChainId = AddressTool.getChainIdByAddress(coinTos.get(0).getAddress()); - - //如果当前链是NULS主链,手续费是收取主网主资产NULS - if (chainId == ApiContext.mainChainId) { - feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); - if (toChainId == ApiContext.mainChainId) { - //如果接收地址是主链,则收取NULS的100%作为手续费 - BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); - feeInfo.setValue(feeValue); - } else { - //其他情况,主链收取NULS的60%作为手续费 - BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); - feeValue = feeValue.multiply(new BigInteger("60")).divide(new BigInteger("100")); - feeInfo.setValue(feeValue); - } - } else { //如果当前链不是NULS主链 - //如果资产是从本链发起的,则收取本链的默认资产作为手续费 - if (fromChainId == chainId) { - feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - feeInfo.setValue(calcFeeValue(assetInfo.getChainId(), assetInfo.getAssetId())); - } else { - //如果本链是接收转账交易的目标链,则收取主网NULS资产的40%作为手续费 - feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); - BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); - feeValue = feeValue.multiply(new BigInteger("40")).divide(new BigInteger("100")); - feeInfo.setValue(feeValue); - } - } +// } else if (type == TxType.CROSS_CHAIN) { +// //取出转出链和接收链的id +// int fromChainId = AddressTool.getChainIdByAddress(coinFroms.get(0).getAddress()); +// int toChainId = AddressTool.getChainIdByAddress(coinTos.get(0).getAddress()); +// +// //如果当前链是NULS主链,手续费是收取主网主资产NULS +// if (chainId == ApiContext.mainChainId) { +// feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); +// if (toChainId == ApiContext.mainChainId) { +// //如果接收地址是主链,则收取NULS的100%作为手续费 +// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); +// feeInfo.setValue(feeValue); +// } else { +// //其他情况,主链收取NULS的60%作为手续费 +// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); +// feeValue = feeValue.multiply(new BigInteger("60")).divide(new BigInteger("100")); +// feeInfo.setValue(feeValue); +// } +// } else { //如果当前链不是NULS主链 +// //如果资产是从本链发起的,则收取本链的默认资产作为手续费 +// if (fromChainId == chainId) { +// feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); +// feeInfo.setValue(calcFeeValue(assetInfo.getChainId(), assetInfo.getAssetId())); +// } else { +// //如果本链是接收转账交易的目标链,则收取主网NULS资产的40%作为手续费 +// feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); +// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); +// feeValue = feeValue.multiply(new BigInteger("40")).divide(new BigInteger("100")); +// feeInfo.setValue(feeValue); +// } +// } } else if (type == TxType.REGISTER_AGENT || type == TxType.DEPOSIT || type == TxType.CANCEL_DEPOSIT || type == TxType.STOP_AGENT) { //如果是共识相关的交易,收取共识配置的手续费 assetInfo = CacheManager.getRegisteredAsset(DBUtil.getAssetKey(configInfo.getChainId(), configInfo.getAwardAssetId())); From 285f42b8057eb05ac995f05720cc890b84f14373 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 13 Jul 2020 15:19:52 +0800 Subject: [PATCH 045/304] update ps calc crossTx fee --- .../main/java/io/nuls/api/analysis/AnalysisHandler.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index 13bea912f2..5954c539e1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -58,7 +58,7 @@ public static BlockInfo toBlockInfo(String blockHex, int chainId) throws Excepti //提取智能合约相关交易的hash,查询合约执行结果 //Extract the hash of smart contract related transactions and query the contract execution results List contactHashList = new ArrayList<>(); - if(ApiContext.isRunSmartContract) { + if (ApiContext.isRunSmartContract) { for (Transaction tx : block.getTxs()) { if (tx.getType() == TxType.CREATE_CONTRACT || tx.getType() == TxType.CALL_CONTRACT || @@ -190,6 +190,9 @@ public static List toTxs(int chainId, List txList, punishLog.setPackageIndex(blockHeader.getPackingIndexOfRound()); } } + if (i != 0) { + txInfo.setCreateTime(blockHeader.getCreateTime() - (txs.size() - i)); + } txs.add(txInfo); blockHeader.getTxHashList().add(txInfo.getHash()); } @@ -822,7 +825,7 @@ private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsExc assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); - } else { + } else { io.nuls.api.model.entity.v5.TxChain txChain = new io.nuls.api.model.entity.v5.TxChain(); txChain.parse(tx.getTxData(), 0); chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); From 80245c757d59c1bdc9c08d991a7e2eec3a0f3f88 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 13 Jul 2020 18:30:02 +0800 Subject: [PATCH 046/304] update ps get cross asset info --- genesis-block.json | 2995 ++++++++++++++++- module.ncf | 54 +- .../jsonrpc/controller/BlockController.java | 16 + .../io/nuls/ledger/constant/CmdConstant.java | 2 +- .../io/nuls/ledger/rpc/cmd/ChainAssetCmd.java | 34 + .../nuls/api/analysis/WalletRpcHandler.java | 13 + .../io/nuls/api/constant/CommandConstant.java | 5 + .../api/rpc/controller/ChainController.java | 11 + 8 files changed, 3088 insertions(+), 42 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index 1e9468faa2..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,54 +3,3013 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 1000000000000000, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 1000000000000000, + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 1000000000000000, + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, + "lockTime": 0 + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, + "lockTime": 0 + }, + { + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, + "lockTime": 0 + }, + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, "lockTime": 0 }, { "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 1000000000000000, + "amount": 6003107334889, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 1000000000000000, + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, "lockTime": 0 }, { "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 1000000000000000, + "amount": 5964220175225, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1000000000000000, + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, "lockTime": 0 }, { - "address": "tNULSeBaMmTNYqywL5ZSHbyAQ662uE3wibrgD1", - "amount": 1000000000000000, + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, "lockTime": 0 }, { - "address": "tNULSeBaMoNnKitV28JeuUdBaPSR6n1xHfKLj2", - "amount": 1000000000000000, + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 1000000000000000, + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, "lockTime": 0 + }, + { + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, + "lockTime": 0 + }, + { + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, + "lockTime": 0 + }, + { + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, + "lockTime": 0 + }, + { + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, + "lockTime": 0 + }, + { + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, + "lockTime": 0 + }, + { + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, + "lockTime": 0 + }, + { + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, + "lockTime": 0 + }, + { + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, + "lockTime": 0 + }, + { + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, + "lockTime": 0 + }, + { + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, + "lockTime": 0 + }, + { + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, + "lockTime": 0 + }, + { + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, + "lockTime": 0 + }, + { + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, + "lockTime": 0 + }, + { + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, + "lockTime": 0 + }, + { + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, + "lockTime": 0 + }, + { + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, + "lockTime": 0 + }, + { + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, + "lockTime": 0 + }, + { + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, + "lockTime": 0 + }, + { + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, + "lockTime": 0 + }, + { + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, + "lockTime": 0 + }, + { + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, + "lockTime": 0 + }, + { + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, + "lockTime": 0 + }, + { + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, + "lockTime": 0 + }, + { + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, + "lockTime": 0 + }, + { + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, + "lockTime": 0 + }, + { + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, + "lockTime": 0 + }, + { + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, + "lockTime": 0 + }, + { + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" + }, + { + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" + }, + { + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" + }, + { + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" + }, + { + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" + }, + { + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" + }, + { + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" + }, + { + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" + }, + { + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" + }, + { + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" + }, + { + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" + }, + { + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" + }, + { + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" + }, + { + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" + }, + { + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" + }, + { + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" + }, + { + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" + }, + { + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" + }, + { + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" + }, + { + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" + }, + { + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" + }, + { + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" + }, + { + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" + }, + { + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" + }, + { + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" + }, + { + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" + }, + { + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" + }, + { + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" + }, + { + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" + }, + { + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" + }, + { + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" + }, + { + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" + }, + { + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" + }, + { + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" + }, + { + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" + }, + { + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" + }, + { + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" + }, + { + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" + }, + { + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" + }, + { + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" + }, + { + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" + }, + { + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" + }, + { + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" + }, + { + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" + }, + { + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" + }, + { + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" + }, + { + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" + }, + { + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" + }, + { + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" + }, + { + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" + }, + { + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" + }, + { + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" + }, + { + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" + }, + { + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" + }, + { + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" + }, + { + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" + }, + { + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" + }, + { + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", diff --git a/module.ncf b/module.ncf index 54ed2821e3..cf4ddbd364 100644 --- a/module.ncf +++ b/module.ncf @@ -1,21 +1,21 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs +logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG -dataPath=../../../../data +dataPath=E:/work/src/nuls-v2/data #默认本链ID chainId=2 #地址前缀 addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -28,18 +28,19 @@ blackHolePublicKey=0000000000000000000000000000000000000000000000000000000000000 port=18001 crossPort=18002 #魔法参数 -packetMagic=2020051201 +packetMagic=20200120 #种子节点 -selfSeedIps=192.168.1.139:18001,192.168.1.137:18001,192.168.1.140:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.139:18002,192.168.1.137:18002,192.168.1.140:18002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup +dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -49,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -62,7 +63,7 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMsWM1DWppv2H5AUjoxRALv8Rx1JL1V,tNULSeBaMgn16tSzn3Tr6EobmZ9UAfAwD9gPXt,tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -77,22 +78,22 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 -initTime=1585897200 +initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=10 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 -deflationTimeInterval=300 -dataPath=../../../../../data -logPath=../../../../../Logs +deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 @@ -119,28 +120,35 @@ dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.139:18002,192.168.1.137:18002,192.168.1.140:18002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=tNULSeBaMsWM1DWppv2H5AUjoxRALv8Rx1JL1V,tNULSeBaMgn16tSzn3Tr6EobmZ9UAfAwD9gPXt,tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dependent=protocol-update +dependent=protocol-update,smart-contract + +[chain-manager] +dependent=protocol-update,smart-contract [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 +serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=5 \ No newline at end of file +interval=10 +dependent=smart-contract,cross-chain + +[transaction] +dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java index 6c45b10b9e..525463c764 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/BlockController.java @@ -397,4 +397,20 @@ public RpcResult getLatestHeight(List params) { return ResultUtil.getJsonRpcResult(result); } + @RpcMethod("testGetBlock") + public RpcResult testGetBlock(List params) { + while (true) { + Result result = blockTools.getBestBlock(1); + if(result.isFailed()) { + System.out.println(result.getStatus()); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + } + } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java index f2208b418e..cd0acf4d1b 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java @@ -142,5 +142,5 @@ public interface CmdConstant { */ String CMD_GET_ASSETS_BY_ID = "getAssetsById"; - + String CMD_GET_ASSET_BY_ID = "getAssetById"; } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java index a1769418d0..67642c71b1 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java @@ -81,4 +81,38 @@ public Response getAssetsById(Map params) { rtMap.put("assets", rtAssetList); return success(rtMap); } + + + @CmdAnnotation(cmd = CmdConstant.CMD_GET_ASSET_BY_ID, version = 1.0, + description = "查询链下指定资产集合的金额信息") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterValidRange = "[1-65535]", parameterDes = "运行的链Id,取值区间[1-65535]"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链id"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产id") + }) + @ResponseData(name = "返回值", description = "返回一个List对象", + responseType = @TypeDescriptor(value = List.class, collectionElement = Map.class, mapKeys = { + @Key(name = "assetId", valueType = Integer.class, description = "资产id"), + @Key(name = "availableAmount", valueType = BigInteger.class, description = "可用金额"), + @Key(name = "freeze", valueType = BigInteger.class, description = "冻结金额") + }) + ) + public Response getAssetById(Map params) { + List> rtAssetList = new ArrayList<>(); + int chainId = (Integer) params.get("chainId"); + int assetChainId = (Integer) params.get("assetChainId"); + int assetId = (Integer) params.get("assetId"); + if (!chainHanlder(chainId)) { + return failed(LedgerErrorCode.CHAIN_INIT_FAIL); + } + String assetIds = assetId + ""; + String[] assetIdList = assetIds.split(LedgerConstant.COMMA); + for (String assetIdStr : assetIdList) { + Map map = chainAssetsService.getAssetByChainAssetId(chainId, assetChainId, Integer.valueOf(assetIdStr)); + rtAssetList.add(map); + } + Map rtMap = new HashMap<>(); + rtMap.put("assets", rtAssetList); + return success(rtMap); + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 8f58ebc442..ea0e3a81c2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -625,4 +625,17 @@ public static Result contractPreviewCall(int chainId, String sender, BigInteger } } + + public static Result getChainAssetInfo(int assetChainId, int assetId) { + try { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, ApiContext.defaultChainId); + params.put("assetChainId", assetChainId); + params.put("assetId", assetId); + Map map = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.CMD_GET_ASSET_BY_ID, params); + return Result.getSuccess(null).setData(map); + } catch (NulsException e) { + return Result.getFailed(e.getErrorCode()); + } + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java index 1249b8ea4b..df22367a84 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java @@ -90,4 +90,9 @@ public interface CommandConstant { String GET_NETWORK_GROUP = "nw_getGroupByChainId"; String PREVIEW_CALL = "sc_preview_call"; + + /** + * 获取资产信息 + */ + String CMD_GET_ASSET_BY_ID = "getAssetById"; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index 257ae3d609..bc341721e6 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -91,6 +91,17 @@ public RpcResult getOtherChainInfo(List params) { // } ChainInfo chainInfo = chainService.getChainInfo(chainId); + if (chainInfo != null) { + if (chainInfo.getChainId() == 9) { + chainInfo.setChainName("NerveNetwork"); + } + Result result = WalletRpcHandler.getChainAssetInfo(chainInfo.getDefaultAsset().getChainId(), chainInfo.getDefaultAsset().getAssetId()); + if(result.isSuccess()) { + + } + System.out.println(result); + } + return RpcResult.success(chainInfo); } From cb7dcb63e2d5b881780b9557397bf2f7df32755c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 14 Jul 2020 15:28:46 +0800 Subject: [PATCH 047/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/rpc/cmd/CrossChainTxInfoCmd.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java new file mode 100644 index 0000000000..6b3ae31ffe --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java @@ -0,0 +1,61 @@ +package network.nerve.rpc.cmd; + +import io.nuls.base.data.NulsHash; +import io.nuls.base.data.Transaction; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.rpc.cmd.BaseCmd; +import io.nuls.core.rpc.model.*; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; +import io.nuls.crosschain.nuls.model.po.CtxStatusPO; +import io.nuls.crosschain.nuls.srorage.ConvertCtxService; +import io.nuls.crosschain.nuls.srorage.CtxStatusService; + +import java.io.IOException; +import java.util.Map; + +/** + * @Author: zhoulijun + * @Time: 2020/7/14 11:14 + * @Description: 功能描述 + */ +@Component +public class CrossChainTxInfoCmd extends BaseCmd { + + @Autowired + private ConvertCtxService convertCtxService; + + @Autowired + private CtxStatusService ctxStatusService; + + @Autowired + NulsCrossChainConfig config; + + /** + * 区块模块高度变化通知跨链模块 + * */ + @CmdAnnotation(cmd = "getCrossChainTxInfoForConverterTable", version = 1.0, description = "通过交易hash在跨链模块查询交易详情") + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") + @Parameter(parameterName = "txHash", parameterType = "String", parameterDes = "交易hash") + @ResponseData(description = "") + public io.nuls.core.rpc.model.message.Response getCrossChainTxInfoForConverterTable(Map params) throws IOException { + Transaction transaction = convertCtxService.get(new NulsHash(HexUtil.decode((String) params.get("txHash"))),config.getChainId()); + return success(HexUtil.encode(transaction.serialize())); + } + + @CmdAnnotation(cmd = "getCrossChainTxInfoForCtxStatusPO", version = 1.0, description = "通过交易hash在跨链模块查询交易详情") + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") + @Parameter(parameterName = "txHash", parameterType = "String", parameterDes = "交易hash") + @ResponseData(description = "") + public Response getCrossChainTxInfoForCtxStatusPO(Map params) throws IOException { + CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("txHash"))),config.getChainId()); + if(transaction == null || transaction.getTx() == null){ + return failed("not found tx"); + } + return success(HexUtil.encode(transaction.getTx().serialize())); + } + +} From dedb9856db5c6d6e685404f5fa5f0ef468dfe3e2 Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Tue, 14 Jul 2020 15:36:02 +0800 Subject: [PATCH 048/304] update --- .../account/service/impl/TransactionServiceImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java index b289c8eb57..b5a33c65c3 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/impl/TransactionServiceImpl.java @@ -707,10 +707,18 @@ private BigInteger getFeeDirect(Chain chain, List listFrom, BigInteger */ private boolean getFeeIndirect(Chain chain, List listFrom, int txSize, BigInteger targetFee, BigInteger actualFee) throws NulsException { ListIterator iterator = listFrom.listIterator(); + out: while (iterator.hasNext()) { CoinFrom coinFrom = iterator.next(); //如果不为当前链主资产 if (!TxUtil.isChainAssetExist(chain, coinFrom)) { + //如果FROM中有相同地址有本链资产的coin, 说明前面计算并支出过手续费但余额不足. + for (CoinFrom coin : listFrom) { + if (Arrays.equals(coin.getAddress(), coinFrom.getAddress()) + && TxUtil.isChainAssetExist(chain, coin)) { + continue out; + } + } int assetsChainId = chain.getConfig().getChainId(); int assetsId = chain.getConfig().getAssetId(); //查询该地址在当前链的主资产余额 @@ -730,10 +738,7 @@ private boolean getFeeIndirect(Chain chain, List listFrom, int txSize, //当前还差的手续费 BigInteger current = targetFee.subtract(actualFee); //此账户可以支付的手续费 - //可用余额=当前余额减去本次转出 - mainAsset = mainAsset.subtract(coinFrom.getAmount()); BigInteger fee = BigIntegerUtils.isEqualOrGreaterThan(mainAsset, current) ? current : mainAsset; - feeCoinFrom.setLocked(AccountConstant.NORMAL_TX_LOCKED); feeCoinFrom.setAssetsChainId(assetsChainId); feeCoinFrom.setAssetsId(assetsId); From dbe15aee9c693097c2cc07e458996c0278a78533 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 14 Jul 2020 15:47:20 +0800 Subject: [PATCH 049/304] update ps get cross asset info --- .../io/nuls/ledger/rpc/cmd/ChainAssetCmd.java | 12 +---- .../java/io/nuls/api/db/AccountService.java | 2 +- .../api/db/mongo/MongoAccountServiceImpl.java | 45 +++++++++---------- .../api/rpc/controller/AccountController.java | 23 +++++++--- .../api/rpc/controller/ChainController.java | 5 --- 5 files changed, 42 insertions(+), 45 deletions(-) diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java index 67642c71b1..f4dafc3a6b 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java @@ -98,21 +98,13 @@ public Response getAssetsById(Map params) { }) ) public Response getAssetById(Map params) { - List> rtAssetList = new ArrayList<>(); int chainId = (Integer) params.get("chainId"); int assetChainId = (Integer) params.get("assetChainId"); int assetId = (Integer) params.get("assetId"); if (!chainHanlder(chainId)) { return failed(LedgerErrorCode.CHAIN_INIT_FAIL); } - String assetIds = assetId + ""; - String[] assetIdList = assetIds.split(LedgerConstant.COMMA); - for (String assetIdStr : assetIdList) { - Map map = chainAssetsService.getAssetByChainAssetId(chainId, assetChainId, Integer.valueOf(assetIdStr)); - rtAssetList.add(map); - } - Map rtMap = new HashMap<>(); - rtMap.put("assets", rtAssetList); - return success(rtMap); + Map map = chainAssetsService.getAssetByChainAssetId(chainId, assetChainId, assetId); + return success(map); } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java index 1b8cb70c0c..1abf1f9a20 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java @@ -18,7 +18,7 @@ public interface AccountService { PageInfo pageQuery(int chainId, int pageNumber, int pageSize); - PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight); + PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight, int assetChainId, int assetId); PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, int type, long startTime, long endTime, int pageIndex, int pageSize); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index a2ed9d16c2..93af68faa2 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -128,48 +128,45 @@ public PageInfo pageQuery(int chainId, int pageNumber, int pageSize return pageInfo; } - public PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight) { - Bson filter; - Bson addressFilter = Filters.eq("address", address); - - if (type > 0 && startHeight > -1 && endHeight > -1) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("height", startHeight), Filters.lte("height", endHeight)); - } else if (type > 0 && startHeight > -1) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.gte("height", startHeight)); - } else if (type > 0 && endHeight > -1) { - filter = Filters.and(addressFilter, Filters.eq("type", type), Filters.lte("height", endHeight)); - } else if (startHeight > -1 && endHeight > -1) { - filter = Filters.and(addressFilter, Filters.gte("height", startHeight), Filters.lte("height", endHeight)); - } else if (startHeight > -1) { - filter = Filters.and(addressFilter, Filters.gte("height", startHeight)); - } else if (endHeight > -1) { - filter = Filters.and(addressFilter, Filters.lte("height", endHeight)); - } else if (type > 0) { - filter = Filters.and(addressFilter, Filters.eq("type", type)); - } else { - filter = addressFilter; + public PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight, int assetChainId, int assetId) { + List filters = new ArrayList<>(); + filters.add(Filters.eq("address", address)); + if (type > 0) { + filters.add(Filters.eq("type", type)); + } + if (assetChainId > 0 && assetId > 0) { + filters.add(Filters.eq("chainId", assetChainId)); + filters.add(Filters.eq("assetId", assetId)); + } + if (startHeight >= 0) { + filters.add(Filters.gte("height", startHeight)); + } + if (endHeight > 0) { + filters.add(Filters.lte("height", endHeight)); } + int start = (pageIndex - 1) * pageSize; int end = pageIndex * pageSize; int index = DBUtil.getShardNumber(address); - long unConfirmCount = mongoDBService.getCount(TX_UNCONFIRM_RELATION_TABLE + chainId, addressFilter); + Bson filter = Filters.and(filters); + long unConfirmCount = mongoDBService.getCount(TX_UNCONFIRM_RELATION_TABLE + chainId, filter); long confirmCount = mongoDBService.getCount(TX_RELATION_TABLE + chainId + "_" + index, filter); List txRelationInfoList; if (end <= unConfirmCount) { txRelationInfoList = unConfirmLimitQuery(chainId, filter, start, pageSize); - } else if (start > unConfirmCount) { + } else if (start > unConfirmCount || unConfirmCount == 0) { start = (int) (start - unConfirmCount); txRelationInfoList = confirmLimitQuery(chainId, index, filter, start, pageSize); } else { - txRelationInfoList = relationLimitQuery(chainId, index, addressFilter, filter, start, pageSize); + txRelationInfoList = relationLimitQuery(chainId, index, filter, filter, start, pageSize); } PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, unConfirmCount + confirmCount, txRelationInfoList); return pageInfo; } - public PageInfo getAcctTxs(int chainId, int assetChainId, int assetId,String address, + public PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, int type, long startTime, long endTime, int pageIndex, int pageSize) { List filters = new ArrayList<>(); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 878ac9a8bf..5d875c56e0 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -105,7 +105,7 @@ public RpcResult getAccountList(List params) { @RpcMethod("getAccountTxs") public RpcResult getAccountTxs(List params) { VerifyUtils.verifyParams(params, 7); - int chainId, pageNumber, pageSize, type; + int chainId, assetChainId, assetId, pageNumber, pageSize, type; String address; long startHeight, endHeight; try { @@ -143,6 +143,16 @@ public RpcResult getAccountTxs(List params) { } catch (Exception e) { return RpcResult.paramError("[endHeight] is invalid"); } + try { + assetChainId = (int) params.get(7); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is invalid"); + } + try { + assetId = (int) params.get(8); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is invalid"); + } if (!AddressTool.validAddress(chainId, address)) { return RpcResult.paramError("[address] is inValid"); } @@ -156,7 +166,7 @@ public RpcResult getAccountTxs(List params) { try { PageInfo pageInfo; if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight); + pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight, assetChainId, assetId); result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { Map res = MapUtils.beanToMap(d); AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); @@ -462,10 +472,13 @@ public RpcResult getAccountBalance(List params) { assetId = defaultAsset.getAssetId(); } BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, assetChainId, assetId); - AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo != null) { - balanceInfo.setConsensusLock(accountInfo.getConsensusLock()); + if (assetChainId == ApiContext.defaultChainId && assetId == ApiContext.defaultAssetId) { + AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); + if (accountInfo != null) { + balanceInfo.setConsensusLock(accountInfo.getConsensusLock()); + } } + return RpcResult.success(balanceInfo); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index bc341721e6..022788e30a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -84,11 +84,6 @@ public RpcResult getOtherChainInfo(List params) { } catch (Exception e) { return RpcResult.paramError("[chainId] is invalid"); } -// if(chainId == ApiContext.defaultChainId) { -// -// }else { -// -// } ChainInfo chainInfo = chainService.getChainInfo(chainId); if (chainInfo != null) { From a051831e7e8a2eb872f9b1d78f2b22236750b765 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 14 Jul 2020 17:58:53 +0800 Subject: [PATCH 050/304] test --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 317fbeeaf3..d804449bb3 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ landing. ## Getting Started - +test ### Download Release From b8273c3a7b42b9b67bf62c3b3c3fcf1235d3d683 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 16 Jul 2020 09:44:02 +0800 Subject: [PATCH 051/304] update ps get cross asset info --- .../nuls/api/analysis/WalletRpcHandler.java | 9 ++- .../io/nuls/api/db/AccountLedgerService.java | 2 + .../mongo/MongoAccountLedgerServiceImpl.java | 14 ++++ .../java/io/nuls/api/model/po/AssetInfo.java | 11 +++ .../main/java/io/nuls/api/rpc/RpcCall.java | 3 +- .../api/rpc/controller/ChainController.java | 7 +- .../java/io/nuls/api/service/SyncService.java | 77 ++++++++++++++++++- 7 files changed, 111 insertions(+), 12 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index ea0e3a81c2..adc61a7708 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -12,6 +12,7 @@ import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.data.Transaction; import io.nuls.core.basic.Result; +import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.constant.TxStatusEnum; import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; @@ -425,7 +426,13 @@ public static Result getContractResultInfo(int chainId, Stri } private static Result getContractResultInfo(Map params) throws NulsException { - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT, params); + Map map = null; + try { + map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT, params); + } catch (NulsException e) { + return Result.getFailed(CommonCodeConstanst.DATA_NOT_FOUND); + } + map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT, params); map = (Map) map.get("data"); if (map == null || map.isEmpty()) { return Result.getFailed(ApiErrorCode.DATA_NOT_FOUND); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java index a37ef09d99..22e90c3ae1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java @@ -17,4 +17,6 @@ public interface AccountLedgerService { List getAccountCrossLedgerInfoList(int chainId, String address); + List getAccountLedgerInfoList(int assetChainId, int assetId); + } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java index e9fbea7c6e..02293f1aa5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java @@ -1,6 +1,7 @@ package io.nuls.api.db.mongo; import com.mongodb.client.model.*; +import io.nuls.api.ApiContext; import io.nuls.api.cache.ApiCache; import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.AccountLedgerService; @@ -130,4 +131,17 @@ public List getAccountCrossLedgerInfoList(int chainId, String } return accountLedgerInfoList; } + + @Override + public List getAccountLedgerInfoList(int assetChainId, int assetId) { + Bson filter = Filters.and(Filters.eq("chainId", assetChainId), Filters.eq("assetId", assetId)); + List documentList = mongoDBService.query(DBTableConstant.ACCOUNT_LEDGER_TABLE + ApiContext.defaultChainId, filter); + List accountLedgerInfoList = new ArrayList<>(); + + for (Document document : documentList) { + AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); + accountLedgerInfoList.add(ledgerInfo); + } + return accountLedgerInfoList; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java index d0152f8161..64872e7d10 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java @@ -2,6 +2,7 @@ import io.nuls.api.constant.ApiConstant; import io.nuls.api.utils.DBUtil; +import org.bson.codecs.pojo.annotations.BsonIgnore; import java.math.BigInteger; @@ -22,6 +23,8 @@ public class AssetInfo extends TxDataInfo { private String address; private int status; + //该资产在当前链的总量 + private BigInteger localTotalCoins; public AssetInfo() { this.status = ApiConstant.ENABLE; @@ -102,4 +105,12 @@ public int getDecimals() { public void setDecimals(int decimals) { this.decimals = decimals; } + + public BigInteger getLocalTotalCoins() { + return localTotalCoins; + } + + public void setLocalTotalCoins(BigInteger localTotalCoins) { + this.localTotalCoins = localTotalCoins; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java index 0b1b44436a..0c98a2f41c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java @@ -48,7 +48,7 @@ public static Object request(String moduleCode, String cmd, Map params, Long tim } String errorCode = response.getResponseErrorCode(); - LoggerUtil.commonLog.error("Call interface [{}] error, ErrorCode is {}, ResponseComment:{}", cmd, errorCode, response.getResponseComment()); + // LoggerUtil.commonLog.error("Call interface [{}] error, ErrorCode is {}, ResponseComment:{}", cmd, errorCode, response.getResponseComment()); if(response.getResponseStatus() == Response.FAIL){ //business error if(StringUtils.isBlank(errorCode)){ @@ -65,7 +65,6 @@ public static Object request(String moduleCode, String cmd, Map params, Long tim Map data = (Map)response.getResponseData(); return data.get(cmd); } catch (Exception e) { - LoggerUtil.commonLog.error(e); if(e instanceof NulsException) { throw (NulsException) e; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index 022788e30a..a77d99bd8a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -37,6 +37,8 @@ public class ChainController { @Autowired private AccountService accountService; @Autowired + private AccountLedgerService ledgerService; + @Autowired private ContractService contractService; @Autowired private StatisticalService statisticalService; @@ -90,11 +92,6 @@ public RpcResult getOtherChainInfo(List params) { if (chainInfo.getChainId() == 9) { chainInfo.setChainName("NerveNetwork"); } - Result result = WalletRpcHandler.getChainAssetInfo(chainInfo.getDefaultAsset().getChainId(), chainInfo.getDefaultAsset().getAssetId()); - if(result.isSuccess()) { - - } - System.out.println(result); } return RpcResult.success(chainInfo); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index cbe4e756d9..74f2bb4ace 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -313,6 +313,26 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); AssetInfo assetInfo = CacheManager.getRegisteredAsset(input.getAssetKey()); crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx, assetInfo.getDecimals())); + + if (assetInfo.getChainId() != ApiContext.defaultChainId) { + //资产跨链转出后,修改资产在本链的总余额 + ChainInfo chainInfo = queryChainInfo(assetInfo.getChainId()); + if (chainInfo != null) { + AssetInfo asset = chainInfo.getDefaultAsset(); + if (asset.getAssetId() == assetInfo.getAssetId()) { + asset.setLocalTotalCoins(asset.getLocalTotalCoins().subtract(input.getAmount())); + if (asset.getChainId() == 123) { + + System.out.println("from:" + input.getAmount() + ",total:" + asset.getLocalTotalCoins()); + } + } + for (AssetInfo ass : chainInfo.getAssets()) { + if (ass.getAssetId() == assetInfo.getAssetId()) { + ass.setLocalTotalCoins(ass.getLocalTotalCoins().subtract(input.getAmount())); + } + } + } + } } } @@ -331,6 +351,25 @@ private void processCrossTransferTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); AssetInfo assetInfo = CacheManager.getRegisteredAsset(output.getAssetKey()); crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx, assetInfo.getDecimals())); + + //资产跨链转入后,修改资产在本链的总余额 + if (assetInfo.getChainId() != ApiContext.defaultChainId) { + ChainInfo chainInfo = queryChainInfo(assetInfo.getChainId()); + if (chainInfo != null) { + AssetInfo asset = chainInfo.getDefaultAsset(); + if (asset.getAssetId() == assetInfo.getAssetId()) { + asset.setLocalTotalCoins(asset.getLocalTotalCoins().add(output.getAmount())); + if (asset.getChainId() == 123) { + System.out.println("to:" + output.getAmount() + ",total:" + asset.getLocalTotalCoins()); + } + } + for (AssetInfo ass : chainInfo.getAssets()) { + if (ass.getAssetId() == assetInfo.getAssetId()) { + ass.setLocalTotalCoins(ass.getLocalTotalCoins().add(output.getAmount())); + } + } + } + } } } } @@ -717,8 +756,24 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(to, tx, ledgerInfo.getTotalBalance())); } } + + ChainInfo chainInfo = (ChainInfo) tx.getTxData(); - chainInfo.setNew(true); + ChainInfo info = queryChainInfo(chainInfo.getChainId()); + if (info != null) { + chainInfo.setNew(false); + chainInfo.getDefaultAsset().setLocalTotalCoins(info.getDefaultAsset().getLocalTotalCoins()); + for (AssetInfo assetInfo1 : chainInfo.getAssets()) { + for (AssetInfo assetInfo2 : info.getAssets()) { + if (assetInfo1.getAssetId() == assetInfo2.getAssetId()) { + assetInfo1.setLocalTotalCoins(assetInfo2.getLocalTotalCoins()); + } + } + } + } else { + chainInfo.setNew(true); + } + chainInfoList.add(chainInfo); CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); CacheManager.getAssetInfoMap().put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); @@ -732,7 +787,8 @@ private void processDestroyChainTx(int chainId, TransactionInfo tx) { AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - ChainInfo chainInfo = chainService.getChainInfo(chainId); + ChainInfo chainInfo = (ChainInfo) tx.getTxData(); + chainInfo = chainService.getChainInfo(chainInfo.getChainId()); chainInfo.setStatus(DISABLE); for (AssetInfo assetInfo : chainInfo.getAssets()) { assetInfo.setStatus(DISABLE); @@ -764,7 +820,7 @@ private void processAddAssetTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(chainId); + ChainInfo chainInfo = chainService.getChainInfo(assetInfo.getChainId()); if (chainInfo != null) { chainInfo.setNew(false); chainInfo.getAssets().add(assetInfo); @@ -782,7 +838,7 @@ private void processCancelAssetTx(int chainId, TransactionInfo tx) { txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(chainId); + ChainInfo chainInfo = chainService.getChainInfo(assetInfo.getChainId()); chainInfo.getAsset(assetInfo.getAssetId()).setStatus(DISABLE); chainInfo.setNew(false); chainInfoList.add(chainInfo); @@ -1094,6 +1150,19 @@ private AccountTokenInfo queryAccountTokenInfo(int chainId, String key) { return accountTokenInfo; } + private ChainInfo queryChainInfo(int chainId) { + for (ChainInfo chainInfo : chainInfoList) { + if (chainInfo != null) { + return chainInfo; + } + } + ChainInfo chainInfo = chainService.getChainInfo(chainId); + if (chainInfo != null) { + chainInfoList.add(chainInfo); + } + return chainInfo; + } + private void clear(int chainId) { accountInfoMap.clear(); accountLedgerInfoMap.clear(); From d0bdea9f48a515e326e7e2381d5a86e2622d7ae8 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 16 Jul 2020 10:36:54 +0800 Subject: [PATCH 052/304] update ps get cross asset info --- .../src/main/java/io/nuls/api/service/SyncService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 74f2bb4ace..b3cd4ea892 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -841,6 +841,9 @@ private void processCancelAssetTx(int chainId, TransactionInfo tx) { ChainInfo chainInfo = chainService.getChainInfo(assetInfo.getChainId()); chainInfo.getAsset(assetInfo.getAssetId()).setStatus(DISABLE); chainInfo.setNew(false); + if (assetInfo.getAssetId() == chainInfo.getDefaultAsset().getAssetId()) { + chainInfo.getDefaultAsset().setStatus(DISABLE); + } chainInfoList.add(chainInfo); } From 290509c46d48c0beb8c2aef4b18f853d5278ac2b Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 17 Jul 2020 15:37:26 +0800 Subject: [PATCH 053/304] update getAccountCrossLedgerList --- .../io/nuls/api/rpc/controller/AccountController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index a0aecccbcd..5d875c56e0 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -625,10 +625,10 @@ public RpcResult getAccountCrossLedgerList(List params) { } List list = accountLedgerService.getAccountCrossLedgerInfoList(chainId, address); for (AccountLedgerInfo ledgerInfo : list) { -// BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); -// ledgerInfo.setBalance(balanceInfo.getBalance()); -// ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); -// ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); + BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); + ledgerInfo.setBalance(balanceInfo.getBalance()); + ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); + ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(ledgerInfo.getAssetKey()); if (assetInfo != null) { ledgerInfo.setSymbol(assetInfo.getSymbol()); From cec923795ab87c14a2ed78942ccd1962bed5ee04 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 20 Jul 2020 11:33:38 +0800 Subject: [PATCH 054/304] update documents --- module/nuls-api/documents/nuls-api_JSONRPC.md | 45 ++++++++++++++++++- .../documents/NULS2.0-Public-PRC.md | 5 ++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/module/nuls-api/documents/nuls-api_JSONRPC.md b/module/nuls-api/documents/nuls-api_JSONRPC.md index 5d2df43e85..4dd7e533e8 100644 --- a/module/nuls-api/documents/nuls-api_JSONRPC.md +++ b/module/nuls-api/documents/nuls-api_JSONRPC.md @@ -1881,7 +1881,7 @@ _**详细描述: 广播离线组装的交易(不验证),成功返回true,失败 } ``` -### 3.6 单笔转账 +### 3.6 单笔转账(只能转账本链资产) #### Cmd: transfer _**详细描述: 发起单账户单资产的转账交易**_ @@ -1923,6 +1923,49 @@ _**详细描述: 发起单账户单资产的转账交易**_ } ``` +### 3.6.1 单笔转账(能转账任意链资产) +#### Cmd: transferOtherChainAsset +_**详细描述: 发起单账户单资产的转账交易**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------- |:------:| ------ |:----:| +| chainId | int | 链id | 是 | +| assetChainId | int | 资产链id | 是 | +| assetId | int | 资产id | 是 | +| address | string | 转出账户地址 | 是 | +| toAddress | string | 转入账户地址 | 是 | +| password | string | 转出账户密码 | 是 | +| amount | string | 转出金额 | 是 | +| remark | string | 备注 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ---- |:------:| ------ | +| hash | string | 交易hash | +#### Example request data: + +```json +{ + "jsonrpc" : "2.0", + "method" : "transfer", + "params" : [ 2, 1, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], + "id" : 1234 +} +``` + +#### Example response data: + +```json +{ + "jsonrpc" : "2.0", + "id" : "1234", + "result" : { + "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" + } +} +``` + ### 3.7 离线组装转账交易 #### Cmd: createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ diff --git a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md index 988c5bff5f..f791826a71 100644 --- a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md +++ b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md @@ -989,7 +989,7 @@ txType:int //交易类型(txType),type=0时查询所有交易 { "jsonrpc":"2.0", "method":"getAccountTxs", - "params":[chainId,pageNumber,pageSize,address,txType,startHeight, endHeight], + "params":[chainId,pageNumber,pageSize,address,txType,startHeight, endHeight,assetChainId, assetId], "id":1234 } //参数说明 @@ -999,8 +999,9 @@ pageSize:int //每页显示条数,取值[1-1000] address: string //账户地址 txType:int //交易类型(txType),type=0时查询所有交易 startHeight:long //打包交易的块起始高度,默认为-1,不限制 - endHeight:long //交易的块截止高度,默认为-1,不限制 +assetChainId:int //资产chainId,默认为0 +assetId:int //资产ID,默认为0 ``` 返回: From 112e162cf654d1721d52666ef9cfab484e1c9f78 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 20 Jul 2020 17:58:05 +0800 Subject: [PATCH 055/304] update public-service getTxlist --- .../io/nuls/api/model/po/TransactionInfo.java | 19 ++++++++++++++++--- .../model/po/mini/MiniTransactionInfo.java | 12 +++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java index 9d4494bbd6..8690d50cbd 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java @@ -41,12 +41,16 @@ public class TransactionInfo { private int status; + private String symbol; + public void calcValue() { BigInteger value = BigInteger.ZERO; - if (coinTos != null) { + if (coinTos != null && !coinTos.isEmpty()) { for (CoinToInfo output : coinTos) { value = value.add(output.getAmount()); } + CoinToInfo output = coinTos.get(0); + this.symbol = output.getSymbol(); } this.value = value; // if (type == TxType.COIN_BASE || @@ -147,7 +151,7 @@ public FeeInfo calcFee(int chainId) { resultInfo = callInfo.getResultInfo(); } feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - if(resultInfo != null) { + if (resultInfo != null) { BigInteger feeValue = new BigInteger(resultInfo.getActualContractFee()).add(new BigInteger(resultInfo.getTxSizeFee())); feeInfo.setValue(feeValue); } @@ -182,7 +186,7 @@ private BigInteger calcFeeValue(int chainId, int assetId) { public Document toDocument() { Document document = new Document(); document.append("_id", hash).append("height", height).append("createTime", createTime).append("type", type) - .append("value", value.toString()).append("fee", DocumentTransferTool.toDocument(fee)).append("status", status); + .append("value", value.toString()).append("fee", DocumentTransferTool.toDocument(fee)).append("status", status).append("symbol", symbol); return document; } @@ -195,6 +199,7 @@ public static TransactionInfo fromDocument(Document document) { info.setFee(DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class)); info.setValue(new BigInteger(document.getString("value"))); info.setStatus(document.getInteger("status")); + info.setSymbol(document.getString("symbol")); return info; } @@ -309,4 +314,12 @@ public int getStatus() { public void setStatus(int status) { this.status = status; } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java index 84ed053fb2..5f9a8fe173 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java @@ -22,6 +22,8 @@ public class MiniTransactionInfo { private int status; + private String symbol; + public static MiniTransactionInfo toInfo(Document document) { MiniTransactionInfo info = new MiniTransactionInfo(); info.hash = document.getString("_id"); @@ -31,7 +33,7 @@ public static MiniTransactionInfo toInfo(Document document) { info.value = new BigInteger(document.getString("value")); info.status = document.getInteger("status"); info.fee = DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class); - + info.symbol = document.getString("symbol"); return info; } @@ -90,4 +92,12 @@ public int getStatus() { public void setStatus(int status) { this.status = status; } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } } From 1c1a47f65b8575397d207bd79418e02d4642f602 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 22 Jul 2020 12:31:18 +0800 Subject: [PATCH 056/304] update balance of contract token --- .../io/nuls/api/analysis/WalletRpcHandler.java | 18 ++++++++++++++++++ .../api/db/mongo/MongoContractServiceImpl.java | 2 +- .../api/rpc/controller/ContractController.java | 7 ++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index adc61a7708..172545998b 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -418,6 +418,24 @@ public static Result invokeView(int chainId, Object contractAddress, Object return Result.getSuccess(null).setData(map); } + public static Result tokenBalance(int chainid, Object contractAddress, Object address) { + try { + Result result = invokeView(chainid, contractAddress, "balanceOf", null, new Object[]{address}); + Map map = result.getData(); + if (map == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + Object balance = map.get("result"); + if (balance == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + return Result.getSuccess(null).setData(new BigInteger(balance.toString())); + } catch (NulsException e) { + Log.error(e.format()); + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + } + public static Result getContractResultInfo(int chainId, String hash) throws NulsException { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java index 09e2bfbcc3..3ca17d7821 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java @@ -223,7 +223,7 @@ public List getContractList(int chainId, List addressL fields.append("_id", 1).append("remark", 1).append("txCount", 1).append("status", 1) .append("createTime", 1).append("balance", 1).append("tokenName", 1).append("symbol", 1) - .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1); + .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1).append("tokenType", 1); List docsList = this.mongoDBService.pageQuery(CONTRACT_TABLE + chainId, filter, fields, sort, 1, addressList.size()); List contractInfos = new ArrayList<>(); for (Document document : docsList) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index ec53243fbd..aa660097c5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -160,7 +160,12 @@ public RpcResult getAccountTokens(List params) { } else { pageInfo = tokenService.getAccountTokens(chainId, address, pageNumber, pageSize); } - + if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) { + List list = pageInfo.getList(); + for (AccountTokenInfo tokenInfo : list) { + tokenInfo.setBalance(WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData()); + } + } RpcResult result = new RpcResult(); result.setResult(pageInfo); From c5501b0cbe9b30e9774f6263eca9601f891bf377 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 24 Jul 2020 11:31:43 +0800 Subject: [PATCH 057/304] update createOfflineAccount signOffline --- module/nuls-api/pom.xml | 2 +- .../nuls-api/src/main/assembly/assembly.xml | 2 +- .../jsonrpc/controller/AccountController.java | 8 +-- .../api/resources/AccountResource.java | 19 ++++++- .../model/form/EncryptedPriKeySignForm.java | 19 +++++++ .../model/form/EncryptedPriKeysSignForm.java | 51 +++++++++++++++++++ 6 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index c3f603a941..874fe4c546 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -40,7 +40,7 @@ io.nuls.v2 sdk4j - 1.0.7.RELEASE + 1.1.0.RELEASE org.glassfish.jersey.containers diff --git a/module/nuls-api/src/main/assembly/assembly.xml b/module/nuls-api/src/main/assembly/assembly.xml index 693f13b816..820171130c 100644 --- a/module/nuls-api/src/main/assembly/assembly.xml +++ b/module/nuls-api/src/main/assembly/assembly.xml @@ -53,7 +53,7 @@ - ${user.home}/Nuls/JRE_ENV/LINUX/V11/JAVA + E:/work/JAVA /JAVA **/.DS_Store diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index e8d751e5f3..bc0bce06cd 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -574,14 +574,14 @@ public RpcResult createAccountOffline(List params) { if (!FormatValidUtils.validPassword(password)) { return RpcResult.paramError("[password] is inValid"); } - if (!Context.isChainExist(chainId)) { - return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); - } +// if (!Context.isChainExist(chainId)) { +// return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); +// } io.nuls.core.basic.Result> result; if (StringUtils.isBlank(prefix)) { result = NulsSDKTool.createOffLineAccount(count, password); } else { - result = NulsSDKTool.createOffLineAccount(count, prefix, password); + result = NulsSDKTool.createOffLineAccount(chainId, count, prefix, password); } return ResultUtil.getJsonRpcResult(result); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java index 58e125045c..b56a2c7927 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java @@ -443,7 +443,7 @@ public RpcClientResult createOffline(AccountCreateForm form) { if (StringUtils.isBlank(form.getPrefix())) { result = NulsSDKTool.createOffLineAccount(form.getCount(), form.getPassword()); } else { - result = NulsSDKTool.createOffLineAccount(form.getCount(), form.getPrefix(), form.getPassword()); + result = NulsSDKTool.createOffLineAccount(form.getChainId(), form.getCount(), form.getPrefix(), form.getPassword()); } return ResultUtil.getRpcClientResult(result); } @@ -526,6 +526,23 @@ public RpcClientResult encryptedPriKeySign(EncryptedPriKeySignForm form) { return ResultUtil.getRpcClientResult(result); } + @POST + @Path("/encryptedPriKeys/sign") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "多账号密文私钥摘要签名", order = 156) + @Parameters({ + @Parameter(parameterName = "form", parameterDes = "密文私钥摘要签名表单", requestType = @TypeDescriptor(value = EncryptedPriKeySignForm.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash"), + @Key(name = "txHex", description = "签名后的交易16进制字符串") + })) + public RpcClientResult encryptedPriKeysSign(EncryptedPriKeysSignForm form) { +// io.nuls.core.basic.Result result = NulsSDKTool.sign(form.getTxHex(), form.getAddress(), form.getEncryptedPriKey(), form.getPassword()); +// return ResultUtil.getRpcClientResult(result); + return null; + } + @POST @Path("/multiSign/create") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeySignForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeySignForm.java index 3468686416..e04832d271 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeySignForm.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeySignForm.java @@ -14,6 +14,10 @@ public class EncryptedPriKeySignForm { private String encryptedPriKey; @ApiModelProperty(description = "账户密码") private String password; + @ApiModelProperty(description = "地址链ID") + private int chainId; + @ApiModelProperty(description = "地址前缀") + private String prefix; public String getEncryptedPriKey() { return encryptedPriKey; @@ -47,4 +51,19 @@ public void setAddress(String address) { this.address = address; } + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java new file mode 100644 index 0000000000..7169ecb8c8 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java @@ -0,0 +1,51 @@ +package io.nuls.provider.model.form; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +import java.util.List; + +@ApiModel(description = "单账户签名表单") +public class EncryptedPriKeysSignForm { + + @ApiModelProperty(description = "交易序列化Hex字符串") + private String txHex; + @ApiModelProperty(description = "地址链ID") + private int chainId; + @ApiModelProperty(description = "地址前缀") + private String prefix; + + private List encryptedPriKeys; + + public String getTxHex() { + return txHex; + } + + public void setTxHex(String txHex) { + this.txHex = txHex; + } + + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public List getEncryptedPriKeys() { + return encryptedPriKeys; + } + + public void setEncryptedPriKeys(List encryptedPriKeys) { + this.encryptedPriKeys = encryptedPriKeys; + } +} From 2e824d7bb18b278aa48e411c9115cffed49f6c8c Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 24 Jul 2020 15:14:27 +0800 Subject: [PATCH 058/304] locked balance of nrc20 --- .../java/io/nuls/api/model/po/AccountTokenInfo.java | 10 ++++++++++ .../io/nuls/api/rpc/controller/ContractController.java | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java index 3aba135a04..e90935b4b6 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java @@ -18,6 +18,8 @@ public class AccountTokenInfo { private BigInteger balance; + private BigInteger lockedBalance; + private int status; private int decimals; @@ -39,6 +41,14 @@ public AccountTokenInfo(String address, String contractAddress, String tokenName this.isNew = true; } + public BigInteger getLockedBalance() { + return lockedBalance; + } + + public void setLockedBalance(BigInteger lockedBalance) { + this.lockedBalance = lockedBalance; + } + public String getKey() { return key; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index aa660097c5..f8aabaf74f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -163,7 +163,11 @@ public RpcResult getAccountTokens(List params) { if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) { List list = pageInfo.getList(); for (AccountTokenInfo tokenInfo : list) { - tokenInfo.setBalance(WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData()); + BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); + BigInteger total = tokenInfo.getBalance(); + BigInteger locked = total.subtract(available); + tokenInfo.setBalance(available); + tokenInfo.setLockedBalance(locked); } } From f034bcdbc42b006de64ab4045c458c89c2c3a0b7 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 24 Jul 2020 16:50:23 +0800 Subject: [PATCH 059/304] update createOfflineAccount signOffline --- module.ncf | 2 +- module/nuls-api/module.ncf | 2 +- module/nuls-api/pom.xml | 6 +----- .../nuls/provider/api/resources/AccountResource.java | 6 +++++- .../nuls/provider/model/form/AccountCreateForm.java | 11 ++++++++++- .../provider/model/form/EncryptedPriKeysSignForm.java | 11 ++++++----- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/module.ncf b/module.ncf index cf4ddbd364..325f5c84fc 100644 --- a/module.ncf +++ b/module.ncf @@ -142,7 +142,7 @@ dependent=protocol-update,smart-contract #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] diff --git a/module/nuls-api/module.ncf b/module/nuls-api/module.ncf index cafb8c0ab7..22b8ea8159 100644 --- a/module/nuls-api/module.ncf +++ b/module/nuls-api/module.ncf @@ -19,4 +19,4 @@ moduleDynamicDependent=smart-contract,cross-chain #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=18004 +serverPort=8004 diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 874fe4c546..e45163190b 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -32,11 +32,7 @@ nuls-base ${nuls.v2.version} - - io.nuls.v2 - nuls-base-api-provider - ${nuls.v2.version} - + io.nuls.v2 sdk4j diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java index b56a2c7927..465d35b3ee 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java @@ -52,6 +52,7 @@ import io.nuls.v2.model.dto.AccountDto; import io.nuls.v2.model.dto.AliasDto; import io.nuls.v2.model.dto.MultiSignAliasDto; +import io.nuls.v2.model.dto.SignDto; import io.nuls.v2.util.NulsSDKTool; import org.glassfish.jersey.media.multipart.FormDataParam; @@ -61,6 +62,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -540,7 +542,9 @@ public RpcClientResult encryptedPriKeySign(EncryptedPriKeySignForm form) { public RpcClientResult encryptedPriKeysSign(EncryptedPriKeysSignForm form) { // io.nuls.core.basic.Result result = NulsSDKTool.sign(form.getTxHex(), form.getAddress(), form.getEncryptedPriKey(), form.getPassword()); // return ResultUtil.getRpcClientResult(result); - return null; +// return null; + io.nuls.core.basic.Result result = NulsSDKTool.sign(form.getChainId(), form.getPrefix(), form.getSignDtoList(), form.getTxHex()); + return ResultUtil.getRpcClientResult(result); } @POST diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java index 9b867c121c..3d953be90c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java @@ -33,7 +33,9 @@ * @author: Charlie */ @ApiModel(name = "创建账户表单数据") -public class AccountCreateForm extends Base{ +public class AccountCreateForm{ + + private int chainId; @ApiModelProperty(description = "新建账户数量") private int count; @@ -68,4 +70,11 @@ public void setPrefix(String prefix) { this.prefix = prefix; } + public int getChainId() { + return chainId; + } + + public void setChainId(int chainId) { + this.chainId = chainId; + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java index 7169ecb8c8..0db5d815a6 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/EncryptedPriKeysSignForm.java @@ -2,6 +2,7 @@ import io.nuls.core.rpc.model.ApiModel; import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.v2.model.dto.SignDto; import java.util.List; @@ -15,7 +16,7 @@ public class EncryptedPriKeysSignForm { @ApiModelProperty(description = "地址前缀") private String prefix; - private List encryptedPriKeys; + private List signDtoList; public String getTxHex() { return txHex; @@ -41,11 +42,11 @@ public void setPrefix(String prefix) { this.prefix = prefix; } - public List getEncryptedPriKeys() { - return encryptedPriKeys; + public List getSignDtoList() { + return signDtoList; } - public void setEncryptedPriKeys(List encryptedPriKeys) { - this.encryptedPriKeys = encryptedPriKeys; + public void setSignDtoList(List signDtoList) { + this.signDtoList = signDtoList; } } From f31f1e40fbdf2641f525cb3c0144d071370610b7 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 30 Jul 2020 17:11:59 +0800 Subject: [PATCH 060/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E9=93=BE=E5=92=8C=E4=B8=AD=E9=97=B4=E9=93=BE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/bo/txdata/CrossTransferData.java | 101 ++++++++++++++++++ .../io/nuls/crosschain/nuls/utils/TxUtil.java | 18 ++++ .../io/nuls/test/datacheck/SignCheck.java | 30 ++++++ release.sh | 2 +- 4 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java new file mode 100644 index 0000000000..2b56adfb0f --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java @@ -0,0 +1,101 @@ +package io.nuls.crosschain.base.model.bo.txdata; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.base.data.NulsHash; +import io.nuls.core.constant.TxType; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.model.ByteUtils; +import io.nuls.core.parse.SerializeUtils; +import org.bouncycastle.util.Integers; +import org.checkerframework.checker.units.qual.C; + +import java.io.IOException; +import java.nio.Buffer; + +/** + * @Author: zhoulijun + * @Time: 2020/7/30 13:38 + * @Description: 功能描述 + */ +public class CrossTransferData extends BaseNulsData { + + Integer sourceType; + + NulsHash sourceHash; + + NulsHash hubHash; + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint32(sourceType); + stream.write(sourceHash.getBytes()); + stream.write(hubHash.getBytes()); + } + + @Override + public void parse(NulsByteBuffer buffer) throws NulsException { + try { + if (!buffer.isFinished()){ + this.sourceType = buffer.readInt32(); + } + if (!buffer.isFinished()){ + this.sourceHash = buffer.readHash(); + } + if (!buffer.isFinished()){ + this.hubHash = buffer.readHash(); + } + } catch (Exception e) { + throw new NulsException(e); + } + } + + @Override + public int size() { + int s = 0; + s += SerializeUtils.sizeOfUint32(); + s += SerializeUtils.sizeOfBytes(sourceHash.getBytes()); + s += SerializeUtils.sizeOfBytes(hubHash.getBytes()); + return s; + } + + public Integer getSourceType() { + return sourceType; + } + + public void setSourceType(Integer sourceType) { + this.sourceType = sourceType; + } + + public NulsHash getSourceHash() { + return sourceHash; + } + + public void setSourceHash(NulsHash sourceHash) { + this.sourceHash = sourceHash; + } + + public NulsHash getHubHash() { + return hubHash; + } + + public void setHubHash(NulsHash hubHash) { + this.hubHash = hubHash; + } + + public static void main(String[] args) throws NulsException { + CrossTransferData crossTransferData = new CrossTransferData(); + byte[] byts = ByteUtils.intToBytes(TxType.CONTRACT_TOKEN_CROSS_TRANSFER); + crossTransferData.parse(byts,0); + Log.info("{}",crossTransferData.sourceType); + crossTransferData = new CrossTransferData(); + crossTransferData.setSourceType(26); + crossTransferData.setHubHash(NulsHash.fromHex("3bb11b164b14f09362a3b7ad7020257fadf91a6ac0b4af81cd284e6ce178a117")); + Log.info("{}",crossTransferData.sourceType); + Log.info("{}",crossTransferData.hubHash.toHex()); + Log.info("{}",crossTransferData.sourceHash.toHex()); + } + +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 823f9945ef..25773a41ea 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -14,6 +14,7 @@ import io.nuls.crosschain.base.message.BroadCtxSignMessage; import io.nuls.crosschain.base.message.GetCtxStateMessage; import io.nuls.crosschain.base.model.bo.ChainInfo; +import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; import io.nuls.crosschain.base.model.bo.txdata.RegisteredChainChangeData; import io.nuls.crosschain.base.model.bo.txdata.VerifierChangeData; import io.nuls.crosschain.base.model.bo.txdata.VerifierInitData; @@ -220,6 +221,23 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { String password = (String) packerInfo.get(ParamConstant.PARAM_PASSWORD); String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); List packers = (List) packerInfo.get(ParamConstant.PARAM_PACK_ADDRESS_LIST); + //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 + CrossTransferData crossTransferData = new CrossTransferData(); + crossTransferData.parse(ctx.getTxData(),0); + //NRC20跨链时,交易类型是CONTRACT_TOKEN_CROSS_TRANSFER = 26 + if(crossTransferData.getSourceType() == null){ + crossTransferData.setSourceType(TxType.CROSS_CHAIN); + } + //如果当前是来源链,设置来源链交易hash + CoinData coinData = ctx.getCoinDataInstance(); + int fromChainId = AddressTool.getChainIdByAddress(coinData.getFrom().get(0).getAddress()); + if(fromChainId == chainId){ + crossTransferData.setSourceHash(hash); + } + //如果当前是nuls主网,设置主网hash + if(config.isMainNet()){ + crossTransferData.setHubHash(hash); + } NulsHash convertHash = hash; if (!config.isMainNet()) { Transaction mainCtx = TxUtil.friendConvertToMain(chain, ctx, TxType.CROSS_CHAIN); diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java new file mode 100644 index 0000000000..694292ebb6 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java @@ -0,0 +1,30 @@ +package io.nuls.test.datacheck; + +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; + +/** + * @Author: zhoulijun + * @Time: 2020/7/28 16:25 + * @Description: 功能描述 + */ +public class SignCheck { + + public static void main(String[] args) throws NulsException { + String signStr = "2102b036e93c63a1e591435e9021b76a9f38db9e766f2a38af0f91a3ded3c42f553746304402203510f127e542125b10ad6b1ff7887aee25ec41cb5e07fa9d62d6c47061518bad022009926a36b9ea7dae33e7c52cc4d3b40262024df623413c0d4458eca450fdc053"; + + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(HexUtil.decode(signStr),0); + Log.info("size:{}",transactionSignature.getSignersCount()); + transactionSignature.getP2PHKSignatures().forEach(d->{ + Log.info("{}",HexUtil.encode(d.getPublicKey())); + if (!ECKey.verify(HexUtil.decode("9811ebbed10ee09b3098a1d33210dc47e9ddf6612753341e4da5bb558969ac5e"), d.getSignData().getSignBytes(), d.getPublicKey())) { + Log.error("sign fail :{} ",HexUtil.encode(d.getPublicKey())); + } + }); + } + +} diff --git a/release.sh b/release.sh index c916532ce2..1bea9022d6 100755 --- a/release.sh +++ b/release.sh @@ -21,5 +21,5 @@ echo "" >> NULS_WALLET/nuls.ncf echo "[cmd-client]" >> NULS_WALLET/nuls.ncf echo "clientVersion=`cat NULS_WALLET/version`" >> NULS_WALLET/nuls.ncf cp config/genesis-block.json NULS_Wallet/genesis-block.json -tar -czf NULS_Wallet_${OS}_v2.1.0.tar NULS_Wallet +tar -czf NULS_Wallet_${OS}_v2.6.0.1.tar NULS_Wallet rm -rf NULS_Wallet From 06292ef7e70f01896daa73524cdc0d328ef36428 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 30 Jul 2020 17:32:35 +0800 Subject: [PATCH 061/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E9=93=BE=E5=92=8C=E4=B8=AD=E9=97=B4=E9=93=BE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 1 + .../nuls/test/datacheck/TransactionCheck.java | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 25773a41ea..f69997ba5e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -238,6 +238,7 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { if(config.isMainNet()){ crossTransferData.setHubHash(hash); } + ctx.setTxData(crossTransferData.serialize()); NulsHash convertHash = hash; if (!config.isMainNet()) { Transaction mainCtx = TxUtil.friendConvertToMain(chain, ctx, TxType.CROSS_CHAIN); diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java new file mode 100644 index 0000000000..24b3fbbb15 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java @@ -0,0 +1,27 @@ +package io.nuls.test.datacheck; + +import io.nuls.base.data.Transaction; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; + +/** + * @Author: zhoulijun + * @Time: 2020/7/30 17:30 + * @Description: 功能描述 + */ +public class TransactionCheck { + + public static void main(String[] args) throws NulsException { + String txHex = "0a005892225f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf01000100c0d8a7000000000000000000000000000000000000000000000000000000000008b94d88ec1095f9b80001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef01000100809698000000000000000000000000000000000000000000000000000000000000000000000000006921037bec7cda4a8359bf3df2eba389c50ceb75581eda20f149b10a46a35651431cea463044022012c4086c614aac6c21b1248bdc9f58179a60eb65dd7b918a6a4414ada1b912090220496b5cb5e69b6e7c9edf1dcaff65dd46ee00c80ca5a89fbc06291867a1a90f11"; + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(txHex),0); + byte[] txData = tx.getTxData(); + if(txData != null){ + CrossTransferData crossTransferData = new CrossTransferData(); + + } + + } + +} From b6783bcaadd0f2240f36fdd7f8765365707786cf Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 31 Jul 2020 14:45:58 +0800 Subject: [PATCH 062/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E9=93=BE=E5=92=8C=E4=B8=AD=E9=97=B4=E9=93=BE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/bo/txdata/CrossTransferData.java | 65 +++++++++++-------- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 4 +- .../nuls/test/datacheck/TransactionCheck.java | 7 +- 3 files changed, 46 insertions(+), 30 deletions(-) diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java index 2b56adfb0f..04dd6ac7b7 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java @@ -5,15 +5,13 @@ import io.nuls.base.data.BaseNulsData; import io.nuls.base.data.NulsHash; import io.nuls.core.constant.TxType; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; import io.nuls.core.model.ByteUtils; import io.nuls.core.parse.SerializeUtils; -import org.bouncycastle.util.Integers; -import org.checkerframework.checker.units.qual.C; import java.io.IOException; -import java.nio.Buffer; /** * @Author: zhoulijun @@ -24,28 +22,32 @@ public class CrossTransferData extends BaseNulsData { Integer sourceType; - NulsHash sourceHash; + byte[] hubHash; - NulsHash hubHash; + byte[] sourceHash; @Override protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeUint32(sourceType); - stream.write(sourceHash.getBytes()); - stream.write(hubHash.getBytes()); + if (sourceType == null) { + stream.writeUint32(10); + } else { + stream.writeUint32(sourceType); + } + stream.writeBytesWithLength(hubHash); + stream.writeBytesWithLength(sourceHash); } @Override public void parse(NulsByteBuffer buffer) throws NulsException { try { - if (!buffer.isFinished()){ + if (!buffer.isFinished()) { this.sourceType = buffer.readInt32(); } - if (!buffer.isFinished()){ - this.sourceHash = buffer.readHash(); + if (!buffer.isFinished()) { + this.hubHash = buffer.readByLengthByte(); } - if (!buffer.isFinished()){ - this.hubHash = buffer.readHash(); + if (!buffer.isFinished()) { + this.sourceHash = buffer.readByLengthByte(); } } catch (Exception e) { throw new NulsException(e); @@ -56,8 +58,8 @@ public void parse(NulsByteBuffer buffer) throws NulsException { public int size() { int s = 0; s += SerializeUtils.sizeOfUint32(); - s += SerializeUtils.sizeOfBytes(sourceHash.getBytes()); - s += SerializeUtils.sizeOfBytes(hubHash.getBytes()); + s += SerializeUtils.sizeOfBytes(sourceHash); + s += SerializeUtils.sizeOfBytes(hubHash); return s; } @@ -69,33 +71,42 @@ public void setSourceType(Integer sourceType) { this.sourceType = sourceType; } - public NulsHash getSourceHash() { + public byte[] getSourceHash() { return sourceHash; } - public void setSourceHash(NulsHash sourceHash) { + public void setSourceHash(byte[] sourceHash) { this.sourceHash = sourceHash; } - public NulsHash getHubHash() { + public byte[] getHubHash() { return hubHash; } - public void setHubHash(NulsHash hubHash) { + public void setHubHash(byte[] hubHash) { this.hubHash = hubHash; } - public static void main(String[] args) throws NulsException { + public static void main(String[] args) throws NulsException, IOException { CrossTransferData crossTransferData = new CrossTransferData(); byte[] byts = ByteUtils.intToBytes(TxType.CONTRACT_TOKEN_CROSS_TRANSFER); - crossTransferData.parse(byts,0); - Log.info("{}",crossTransferData.sourceType); + crossTransferData.parse(byts, 0); + Log.info("hex:{}", HexUtil.encode(crossTransferData.serialize())); + Log.info("{}", crossTransferData.sourceType); crossTransferData = new CrossTransferData(); crossTransferData.setSourceType(26); - crossTransferData.setHubHash(NulsHash.fromHex("3bb11b164b14f09362a3b7ad7020257fadf91a6ac0b4af81cd284e6ce178a117")); - Log.info("{}",crossTransferData.sourceType); - Log.info("{}",crossTransferData.hubHash.toHex()); - Log.info("{}",crossTransferData.sourceHash.toHex()); - } + crossTransferData.setSourceHash(HexUtil.decode("792dc5108df2f3ab3575cff3cd1f1cfd7137ecbd05a813b6c255260e38c4d36c")); + crossTransferData.setHubHash(HexUtil.decode("3bb11b164b14f09362a3b7ad7020257fadf91a6ac0b4af81cd284e6ce178a117")); + byte[] hex = crossTransferData.serialize(); + crossTransferData = new CrossTransferData(); + crossTransferData.parse(hex,0); + Log.info("{}", crossTransferData.sourceType); + if(crossTransferData.hubHash != null){ + Log.info("hubHash:{}", HexUtil.encode(crossTransferData.hubHash)); + } + if(crossTransferData.sourceHash != null){ + Log.info("sourceHash:{}", HexUtil.encode(crossTransferData.sourceHash)); + } + } } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index f69997ba5e..d26e7c5229 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -232,11 +232,11 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { CoinData coinData = ctx.getCoinDataInstance(); int fromChainId = AddressTool.getChainIdByAddress(coinData.getFrom().get(0).getAddress()); if(fromChainId == chainId){ - crossTransferData.setSourceHash(hash); + crossTransferData.setSourceHash(hash.getBytes()); } //如果当前是nuls主网,设置主网hash if(config.isMainNet()){ - crossTransferData.setHubHash(hash); + crossTransferData.setHubHash(hash.getBytes()); } ctx.setTxData(crossTransferData.serialize()); NulsHash convertHash = hash; diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java index 24b3fbbb15..d28812eb56 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java @@ -1,8 +1,10 @@ package io.nuls.test.datacheck; import io.nuls.base.data.Transaction; +import io.nuls.base.signture.TransactionSignature; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; /** @@ -13,9 +15,12 @@ public class TransactionCheck { public static void main(String[] args) throws NulsException { - String txHex = "0a005892225f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf01000100c0d8a7000000000000000000000000000000000000000000000000000000000008b94d88ec1095f9b80001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef01000100809698000000000000000000000000000000000000000000000000000000000000000000000000006921037bec7cda4a8359bf3df2eba389c50ceb75581eda20f149b10a46a35651431cea463044022012c4086c614aac6c21b1248bdc9f58179a60eb65dd7b918a6a4414ada1b912090220496b5cb5e69b6e7c9edf1dcaff65dd46ee00c80ca5a89fbc06291867a1a90f11"; + String txHex = "0a005394235f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf0100010040261b5402000000000000000000000000000000000000000000000000000000081aaddd62fd42b0d60001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef0100010000e40b5402000000000000000000000000000000000000000000000000000000000000000000000069210223ba61d911074569ab7a33b94af6115bbf4d55669edf4f3c926bfd829631cffd4630440220332523dbc6ad60cb5f791e6b674510dbc2d978f1a9eb4ade134954065a7b58fc022062eaf1cc4c8444fdb3b99e66c3d774bf59e58946115d58634fc03c9c6bfef796"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(txHex),0); + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(HexUtil.decode("210223ba61d911074569ab7a33b94af6115bbf4d55669edf4f3c926bfd829631cffd4630440220332523dbc6ad60cb5f791e6b674510dbc2d978f1a9eb4ade134954065a7b58fc022062eaf1cc4c8444fdb3b99e66c3d774bf59e58946115d58634fc03c9c6bfef796"),0); + Log.info("{}",transactionSignature.getSignersCount()); byte[] txData = tx.getTxData(); if(txData != null){ CrossTransferData crossTransferData = new CrossTransferData(); From 960bf419d0cd841d923ce4e0a823c308f328302c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 31 Jul 2020 17:27:52 +0800 Subject: [PATCH 063/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E9=93=BE=E5=92=8C=E4=B8=AD=E9=97=B4=E9=93=BE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/utils/MessageUtil.java | 8 ++++++++ .../io/nuls/crosschain/nuls/utils/TxUtil.java | 20 ++++--------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index c27b8916d5..82bfb9d702 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -20,6 +20,7 @@ import io.nuls.crosschain.base.message.BroadCtxSignMessage; import io.nuls.crosschain.base.message.GetOtherCtxMessage; import io.nuls.crosschain.base.model.bo.ChainInfo; +import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; import io.nuls.crosschain.base.model.bo.txdata.VerifierChangeData; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; @@ -453,6 +454,13 @@ private static boolean handleOtherChainCrossTransferTx(Chain chain, Transaction if (chain.getChainId() == toChainId) { if (!config.isMainNet()) { packCtx = TxUtil.mainConvertToFriend(ctx, config.getCrossCtxType()); + CrossTransferData crossTransferData = new CrossTransferData(); + crossTransferData.parse(ctx.getTxData(),0); + if(crossTransferData.getSourceHash() == null){ + crossTransferData.setSourceHash(ctx.getHash().getBytes()); + } + crossTransferData.setHubHash(ctx.getHash().getBytes()); + packCtx.setTxData(crossTransferData.serialize()); packCtx.setTransactionSignature(signature.serialize()); convertCtxService.save(packCtx.getHash(), ctx, chain.getChainId()); chain.getLogger().info("接收到的主网协议跨链交易hash:{}对应的本链协议跨链交易hash:{}", crossTxHashHex, packCtx.getHash().toHex()); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index d26e7c5229..386734014a 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -222,26 +222,14 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); List packers = (List) packerInfo.get(ParamConstant.PARAM_PACK_ADDRESS_LIST); //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 - CrossTransferData crossTransferData = new CrossTransferData(); - crossTransferData.parse(ctx.getTxData(),0); - //NRC20跨链时,交易类型是CONTRACT_TOKEN_CROSS_TRANSFER = 26 - if(crossTransferData.getSourceType() == null){ - crossTransferData.setSourceType(TxType.CROSS_CHAIN); - } //如果当前是来源链,设置来源链交易hash - CoinData coinData = ctx.getCoinDataInstance(); - int fromChainId = AddressTool.getChainIdByAddress(coinData.getFrom().get(0).getAddress()); - if(fromChainId == chainId){ - crossTransferData.setSourceHash(hash.getBytes()); - } - //如果当前是nuls主网,设置主网hash - if(config.isMainNet()){ - crossTransferData.setHubHash(hash.getBytes()); - } - ctx.setTxData(crossTransferData.serialize()); NulsHash convertHash = hash; if (!config.isMainNet()) { Transaction mainCtx = TxUtil.friendConvertToMain(chain, ctx, TxType.CROSS_CHAIN); + CrossTransferData crossTransferData = new CrossTransferData(); + crossTransferData.parse(ctx.getTxData(),0); + crossTransferData.setSourceHash(hash.getBytes()); + mainCtx.setTxData(crossTransferData.serialize()); convertHash = mainCtx.getHash(); convertCtxService.save(hash, mainCtx, chainId); } From 432d55fb2628f3c4f05ae64194b74c7ce53de99e Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 31 Jul 2020 17:32:44 +0800 Subject: [PATCH 064/304] update query ledger raking --- .../io/nuls/api/db/AccountLedgerService.java | 4 ++ .../java/io/nuls/api/db/AccountService.java | 2 + .../mongo/MongoAccountLedgerServiceImpl.java | 53 +++++++++++++++++-- .../api/db/mongo/MongoAccountServiceImpl.java | 24 +++++++++ .../api/model/po/mini/MiniAccountInfo.java | 50 ++++++++++++----- .../api/rpc/controller/AccountController.java | 49 +++++++++++++++++ 6 files changed, 165 insertions(+), 17 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java index 22e90c3ae1..487a2529b8 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java @@ -1,6 +1,8 @@ package io.nuls.api.db; import io.nuls.api.model.po.AccountLedgerInfo; +import io.nuls.api.model.po.PageInfo; +import io.nuls.api.model.po.mini.MiniAccountInfo; import java.util.List; import java.util.Map; @@ -13,6 +15,8 @@ public interface AccountLedgerService { void saveLedgerList(int chainId, Map accountLedgerInfoMap); + PageInfo getAssetRanking(int chainId, int assetChainId, int assetId, int pageNumber, int pageSize); + List getAccountLedgerInfoList(int chainId, String address); List getAccountCrossLedgerInfoList(int chainId, String address); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java index 1abf1f9a20..777cf4c84c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java @@ -14,6 +14,8 @@ public interface AccountService { AccountInfo getAccountInfo(int chainId, String address); + MiniAccountInfo getMiniAccountInfo(int chainId, String address); + void saveAccounts(int chainId, Map accountInfoMap); PageInfo pageQuery(int chainId, int pageNumber, int pageSize); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java index 02293f1aa5..0a81ae7853 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java @@ -5,15 +5,23 @@ import io.nuls.api.cache.ApiCache; import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.AccountLedgerService; +import io.nuls.api.db.AccountService; import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AccountLedgerInfo; -import io.nuls.api.model.po.AssetInfo; +import io.nuls.api.model.po.*; +import io.nuls.api.model.po.mini.MiniAccountInfo; +import io.nuls.api.model.rpc.BalanceInfo; import io.nuls.api.utils.DocumentTransferTool; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.model.BigIntegerUtils; +import io.nuls.core.model.DoubleUtils; import org.bson.Document; import org.bson.conversions.Bson; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -24,10 +32,12 @@ public class MongoAccountLedgerServiceImpl implements AccountLedgerService { @Autowired private MongoDBService mongoDBService; + @Autowired + private AccountService accountService; private List keyList = new LinkedList<>(); - private static int cacheSize = 30000; + private static int cacheSize = 20000; public void initCache() { for (ApiCache apiCache : CacheManager.getApiCaches().values()) { @@ -70,6 +80,7 @@ public void saveLedgerList(int chainId, Map accountLe int i = 0; for (AccountLedgerInfo ledgerInfo : accountLedgerInfoMap.values()) { Document document = DocumentTransferTool.toDocument(ledgerInfo, "key"); + document.put("totalBalance", BigIntegerUtils.bigIntegerToString(ledgerInfo.getTotalBalance(), 32)); if (ledgerInfo.isNew()) { modelList.add(new InsertOneModel(document)); ledgerInfo.setNew(false); @@ -116,6 +127,42 @@ public List getAccountLedgerInfoList(int chainId, String addr return accountLedgerInfoList; } + DecimalFormat format = new DecimalFormat("###.#####"); + + public PageInfo getAssetRanking(int chainId, int assetChainId, int assetId, int pageNumber, int pageSize) { + AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(assetChainId + "-" + assetId); + if (assetInfo == null) { + return new PageInfo<>(); + } else if (assetInfo.getChainId() == ApiContext.defaultChainId && assetInfo.getAssetId() == ApiContext.defaultAssetId) { + ApiCache apiCache = CacheManager.getCache(chainId); + CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); + assetInfo.setLocalTotalCoins(coinContextInfo.getCirculation()); + } + Bson filter = Filters.and(Filters.eq("chainId", assetChainId), Filters.eq("assetId", assetId)); + long totalCount = mongoDBService.getCount(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter); + Bson sort = Sorts.descending("totalBalance"); + List documentList = mongoDBService.pageQuery(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter, sort, pageNumber, pageSize); + List list = new ArrayList<>(); + for (int i = 0; i < documentList.size(); i++) { + AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(documentList.get(i), "key", AccountLedgerInfo.class); + + MiniAccountInfo accountInfo = accountService.getMiniAccountInfo(chainId, ledgerInfo.getAddress()); + accountInfo.setTotalBalance(ledgerInfo.getTotalBalance()); + accountInfo.setLocked(ledgerInfo.getConsensusLock().add(ledgerInfo.getTimeLock())); + accountInfo.setDecimal(ledgerInfo.getDecimals()); + BigDecimal b1 = new BigDecimal(accountInfo.getTotalBalance()); + BigDecimal b2 = new BigDecimal(assetInfo.getLocalTotalCoins()); + + double prop = b1.divide(b2, 5, RoundingMode.HALF_UP).doubleValue() * 100; + + accountInfo.setProportion(format.format(prop) + "%"); + list.add(accountInfo); + } + + PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, list); + return pageInfo; + } + @Override public List getAccountCrossLedgerInfoList(int chainId, String address) { Bson filter = Filters.eq("address", address); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index 93af68faa2..733b2b1784 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -71,6 +71,30 @@ public AccountInfo getAccountInfo(int chainId, String address) { return accountInfo.copy(); } + public MiniAccountInfo getMiniAccountInfo(int chainId, String address) { + ApiCache apiCache = CacheManager.getCache(chainId); + if (apiCache == null) { + return null; + } + AccountInfo accountInfo = apiCache.getAccountInfo(address); + if (accountInfo == null) { + Document document = mongoDBService.findOne(ACCOUNT_TABLE + chainId, Filters.eq("_id", address)); + if (document == null) { + return null; + } + accountInfo = DocumentTransferTool.toInfo(document, "address", AccountInfo.class); + while (addressList.size() >= cacheSize) { + address = addressList.remove(0); + apiCache.getAccountMap().remove(address); + } + apiCache.addAccountInfo(accountInfo); + addressList.add(accountInfo.getAddress()); + } + + return new MiniAccountInfo(accountInfo); + } + + public void saveAccounts(int chainId, Map accountInfoMap) { if (accountInfoMap.isEmpty()) { return; diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java index 121581fc29..be05b239f3 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java @@ -1,5 +1,7 @@ package io.nuls.api.model.po.mini; +import io.nuls.api.model.po.AccountInfo; + import java.math.BigInteger; public class MiniAccountInfo { @@ -12,9 +14,21 @@ public class MiniAccountInfo { private BigInteger totalBalance; - private BigInteger totalOut; + private BigInteger locked; + + private String proportion; + + private int decimal; + + public MiniAccountInfo() { + + } - private BigInteger totalIn; + public MiniAccountInfo(AccountInfo accountInfo) { + this.address = accountInfo.getAddress(); + this.alias = accountInfo.getAlias(); + this.type = accountInfo.getType(); + } public String getAddress() { return address; @@ -40,27 +54,35 @@ public void setTotalBalance(BigInteger totalBalance) { this.totalBalance = totalBalance; } - public BigInteger getTotalOut() { - return totalOut; + public int getType() { + return type; } - public void setTotalOut(BigInteger totalOut) { - this.totalOut = totalOut; + public void setType(int type) { + this.type = type; } - public BigInteger getTotalIn() { - return totalIn; + public int getDecimal() { + return decimal; } - public void setTotalIn(BigInteger totalIn) { - this.totalIn = totalIn; + public void setDecimal(int decimal) { + this.decimal = decimal; } - public int getType() { - return type; + public BigInteger getLocked() { + return locked; } - public void setType(int type) { - this.type = type; + public void setLocked(BigInteger locked) { + this.locked = locked; + } + + public String getProportion() { + return proportion; + } + + public void setProportion(String proportion) { + this.proportion = proportion; } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index 5d875c56e0..eca8ee86a3 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -373,6 +373,55 @@ public RpcResult getCoinRanking(List params) { return new RpcResult().setResult(pageInfo); } + + @RpcMethod("getAssetRanking") + public RpcResult getAssetRanking(List params) { + VerifyUtils.verifyParams(params, 5); + int chainId, assetChainId, assetId, pageNumber, pageSize; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + assetChainId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is inValid"); + } + try { + assetId = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + + try { + pageNumber = (int) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[pageNumber] is inValid"); + } + try { + pageSize = (int) params.get(4); + } catch (Exception e) { + return RpcResult.paramError("[pageSize] is inValid"); + } + + if (pageNumber <= 0) { + pageNumber = 1; + } + if (pageSize <= 0 || pageSize > 100) { + pageSize = 10; + } + + PageInfo pageInfo; + if (CacheManager.isChainExist(chainId)) { + pageInfo = accountLedgerService.getAssetRanking(chainId, assetChainId, assetId, pageNumber, pageSize); + } else { + pageInfo = new PageInfo<>(pageNumber, pageSize); + } + return new RpcResult().setResult(pageInfo); + } + + @RpcMethod("getAccountFreezes") public RpcResult getAccountFreezes(List params) { VerifyUtils.verifyParams(params, 6); From 2dc9fe5e631bfeda6ca03fb8dee1a12fafb4af68 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 31 Jul 2020 17:59:21 +0800 Subject: [PATCH 065/304] update createOfflineAccount signOffline --- .../src/main/java/io/nuls/api/manager/ScheduleManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java index b9e3b5555a..47843e6fc9 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java @@ -31,7 +31,7 @@ public void start() { executorService.scheduleAtFixedRate(new DeleteTxsTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); // executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new SyncBlockTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 0, 20, TimeUnit.MINUTES); + executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 1, 10, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new StatisticalTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new UnConfirmTxTask(ApiContext.defaultChainId), 1, 2, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new StatisticalRewardTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); From 6ffde8074e66ad47120d68be4bcf5a2d4281eef2 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 3 Aug 2020 11:10:09 +0800 Subject: [PATCH 066/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/bo/txdata/CrossTransferData.java | 24 ++++--------------- .../impl/NulsCrossChainServiceImpl.java | 1 + .../io/nuls/crosschain/nuls/utils/TxUtil.java | 3 +-- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java index 04dd6ac7b7..20593d6c13 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/CrossTransferData.java @@ -3,7 +3,6 @@ import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.basic.NulsOutputStreamBuffer; import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; import io.nuls.core.constant.TxType; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; @@ -22,8 +21,11 @@ public class CrossTransferData extends BaseNulsData { Integer sourceType; - byte[] hubHash; - + /** + * 来源链交易hash + * 只有在发起链为平行链的情况下,这个字段才有值 + * 如果来源链交易hash为空,则来源链为nuls主网链,这种情况下,来源链,nuls主网链,接收链的交易hash完全一样。 + */ byte[] sourceHash; @Override @@ -33,7 +35,6 @@ protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOExcepti } else { stream.writeUint32(sourceType); } - stream.writeBytesWithLength(hubHash); stream.writeBytesWithLength(sourceHash); } @@ -43,9 +44,6 @@ public void parse(NulsByteBuffer buffer) throws NulsException { if (!buffer.isFinished()) { this.sourceType = buffer.readInt32(); } - if (!buffer.isFinished()) { - this.hubHash = buffer.readByLengthByte(); - } if (!buffer.isFinished()) { this.sourceHash = buffer.readByLengthByte(); } @@ -59,7 +57,6 @@ public int size() { int s = 0; s += SerializeUtils.sizeOfUint32(); s += SerializeUtils.sizeOfBytes(sourceHash); - s += SerializeUtils.sizeOfBytes(hubHash); return s; } @@ -79,13 +76,6 @@ public void setSourceHash(byte[] sourceHash) { this.sourceHash = sourceHash; } - public byte[] getHubHash() { - return hubHash; - } - - public void setHubHash(byte[] hubHash) { - this.hubHash = hubHash; - } public static void main(String[] args) throws NulsException, IOException { CrossTransferData crossTransferData = new CrossTransferData(); @@ -96,14 +86,10 @@ public static void main(String[] args) throws NulsException, IOException { crossTransferData = new CrossTransferData(); crossTransferData.setSourceType(26); crossTransferData.setSourceHash(HexUtil.decode("792dc5108df2f3ab3575cff3cd1f1cfd7137ecbd05a813b6c255260e38c4d36c")); - crossTransferData.setHubHash(HexUtil.decode("3bb11b164b14f09362a3b7ad7020257fadf91a6ac0b4af81cd284e6ce178a117")); byte[] hex = crossTransferData.serialize(); crossTransferData = new CrossTransferData(); crossTransferData.parse(hex,0); Log.info("{}", crossTransferData.sourceType); - if(crossTransferData.hubHash != null){ - Log.info("hubHash:{}", HexUtil.encode(crossTransferData.hubHash)); - } if(crossTransferData.sourceHash != null){ Log.info("sourceHash:{}", HexUtil.encode(crossTransferData.sourceHash)); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java index 7eadd6448c..c8d01aa431 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java @@ -289,6 +289,7 @@ public boolean commitCrossTx(int chainId, List txs, BlockHeader blo ctxStatusList.add(ctxHash); chain.getLogger().debug("跨链交易提交完成,对跨链转账交易做拜占庭验证:{}", ctxHash.toHex()); //发起拜占庭验证 + ctx.setTransactionSignature(null); chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, ctx, syncStatus)); } } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 386734014a..fd2a65a121 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -221,10 +221,9 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { String password = (String) packerInfo.get(ParamConstant.PARAM_PASSWORD); String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); List packers = (List) packerInfo.get(ParamConstant.PARAM_PACK_ADDRESS_LIST); - //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 - //如果当前是来源链,设置来源链交易hash NulsHash convertHash = hash; if (!config.isMainNet()) { + //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 Transaction mainCtx = TxUtil.friendConvertToMain(chain, ctx, TxType.CROSS_CHAIN); CrossTransferData crossTransferData = new CrossTransferData(); crossTransferData.parse(ctx.getTxData(),0); From aa2f77b662d2fa32b1d93e25e0edc970d8316f79 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 3 Aug 2020 11:13:43 +0800 Subject: [PATCH 067/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/crosschain/nuls/utils/MessageUtil.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index 82bfb9d702..8a501f2319 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -454,13 +454,6 @@ private static boolean handleOtherChainCrossTransferTx(Chain chain, Transaction if (chain.getChainId() == toChainId) { if (!config.isMainNet()) { packCtx = TxUtil.mainConvertToFriend(ctx, config.getCrossCtxType()); - CrossTransferData crossTransferData = new CrossTransferData(); - crossTransferData.parse(ctx.getTxData(),0); - if(crossTransferData.getSourceHash() == null){ - crossTransferData.setSourceHash(ctx.getHash().getBytes()); - } - crossTransferData.setHubHash(ctx.getHash().getBytes()); - packCtx.setTxData(crossTransferData.serialize()); packCtx.setTransactionSignature(signature.serialize()); convertCtxService.save(packCtx.getHash(), ctx, chain.getChainId()); chain.getLogger().info("接收到的主网协议跨链交易hash:{}对应的本链协议跨链交易hash:{}", crossTxHashHex, packCtx.getHash().toHex()); From 21fb4d8d1875de588740ae8f7bfb6f94151c7048 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 3 Aug 2020 17:15:14 +0800 Subject: [PATCH 068/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/stop-temp | 2 +- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/build/stop-temp b/build/stop-temp index ae41d4fc82..8869f5c6b1 100755 --- a/build/stop-temp +++ b/build/stop-temp @@ -3,7 +3,7 @@ cd `dirname $0` APP_NAME="%APP_NAME%" . func chainName=`getModuleItem ./nuls.ncf "chainName"` -APP_NAME="${chainName}_kernel" +APP_NAME="${chainName}_${APP_NAME}" VERSION="%VERSION%"; # %Version 注入 JAR_FILE="`pwd`/${APP_NAME}-${VERSION}.jar" KILL_WAIT_COUNT=120 diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index fd2a65a121..5b41f8f377 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -82,7 +82,16 @@ public static Transaction friendConvertToMain(Chain chain, Transaction friendCtx CoinData realCoinData = friendCtx.getCoinDataInstance(); restoreCoinData(realCoinData); mainCtx.setCoinData(realCoinData.serialize()); - + int fromChainId = AddressTool.getChainIdByAddress(realCoinData.getFrom().get(0).getAddress()); + //如果是发起链则需要重构txData,将发起链的交易hash设置到txData中 + if(chain.getChainId() == fromChainId){ + CrossTransferData crossTransferData = new CrossTransferData(); + crossTransferData.parse(friendCtx.getTxData(),0); + crossTransferData.setSourceHash(friendCtx.getHash().getBytes()); + mainCtx.setTxData(crossTransferData.serialize()); + }else{ + mainCtx.setTxData(friendCtx.getTxData()); + } if(needSign){ mainCtx.setTransactionSignature(friendCtx.getTransactionSignature()); } @@ -225,10 +234,6 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { if (!config.isMainNet()) { //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 Transaction mainCtx = TxUtil.friendConvertToMain(chain, ctx, TxType.CROSS_CHAIN); - CrossTransferData crossTransferData = new CrossTransferData(); - crossTransferData.parse(ctx.getTxData(),0); - crossTransferData.setSourceHash(hash.getBytes()); - mainCtx.setTxData(crossTransferData.serialize()); convertHash = mainCtx.getHash(); convertCtxService.save(hash, mainCtx, chainId); } From b7591bbc6d8a2a61abaa03c9ecfa00d5ae0cf4bb Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 5 Aug 2020 14:48:43 +0800 Subject: [PATCH 069/304] test --- .../test/java/io/nuls/test/datacheck/SignCheck.java | 2 +- .../java/io/nuls/test/datacheck/TransactionCheck.java | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java index 694292ebb6..4ca1fb09e8 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java @@ -14,7 +14,7 @@ public class SignCheck { public static void main(String[] args) throws NulsException { - String signStr = "2102b036e93c63a1e591435e9021b76a9f38db9e766f2a38af0f91a3ded3c42f553746304402203510f127e542125b10ad6b1ff7887aee25ec41cb5e07fa9d62d6c47061518bad022009926a36b9ea7dae33e7c52cc4d3b40262024df623413c0d4458eca450fdc053"; + String signStr = "2102b036e93c63a1e591435e9021b76a9f38db9e766f2a38af0f91a3ded3c42f5537473045022100cf9234366129869b84b2880696937c0caa1607e7c56d67d85957fa357fd42cb1022029db4f15eae5946b23c6fa73ca9b941d3d5cdee5b25868161a5e03a650b5d82f"; TransactionSignature transactionSignature = new TransactionSignature(); transactionSignature.parse(HexUtil.decode(signStr),0); diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java index d28812eb56..d294d685c2 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java @@ -1,5 +1,6 @@ package io.nuls.test.datacheck; +import io.nuls.base.basic.AddressTool; import io.nuls.base.data.Transaction; import io.nuls.base.signture.TransactionSignature; import io.nuls.core.crypto.HexUtil; @@ -15,18 +16,16 @@ public class TransactionCheck { public static void main(String[] args) throws NulsException { - String txHex = "0a005394235f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf0100010040261b5402000000000000000000000000000000000000000000000000000000081aaddd62fd42b0d60001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef0100010000e40b5402000000000000000000000000000000000000000000000000000000000000000000000069210223ba61d911074569ab7a33b94af6115bbf4d55669edf4f3c926bfd829631cffd4630440220332523dbc6ad60cb5f791e6b674510dbc2d978f1a9eb4ade134954065a7b58fc022062eaf1cc4c8444fdb3b99e66c3d774bf59e58946115d58634fc03c9c6bfef796"; + String txHex = "0a0018cb275f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf01000100402a8648170000000000000000000000000000000000000000000000000000000810c60b7692c457010001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef0100010000e876481700000000000000000000000000000000000000000000000000000000000000000000006921026cee524ab370d0fa9761e42d6f7c451365d7829fa354f7126b0e93735aff1c8146304402207c90042ab532779f4dcc4bdf3b471e23787276651c4ba090de058793b5cc7c2302202efefd6026523d1292f303ab4bae35ca0709fbdcd37a5c370f169ab8333b14e1"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(txHex),0); - TransactionSignature transactionSignature = new TransactionSignature(); - transactionSignature.parse(HexUtil.decode("210223ba61d911074569ab7a33b94af6115bbf4d55669edf4f3c926bfd829631cffd4630440220332523dbc6ad60cb5f791e6b674510dbc2d978f1a9eb4ade134954065a7b58fc022062eaf1cc4c8444fdb3b99e66c3d774bf59e58946115d58634fc03c9c6bfef796"),0); - Log.info("{}",transactionSignature.getSignersCount()); byte[] txData = tx.getTxData(); if(txData != null){ CrossTransferData crossTransferData = new CrossTransferData(); - + crossTransferData.parse(txData,0); + Log.info("sourceHash:{}",HexUtil.encode(crossTransferData.getSourceHash())); } - + Log.info("{}",AddressTool.getChainIdByAddress("TNVTdTSPMsBqXoEVtkAyPBVyduftKvZVQopFD")); } } From 436e5174310d707b4e06336c35e3f4fdedc723fd Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 5 Aug 2020 22:47:35 +0800 Subject: [PATCH 070/304] update calc totalsSupply --- .../java/io/nuls/api/db/ChainService.java | 3 +- .../api/db/mongo/MongoChainServiceImpl.java | 31 ++++++++++++------- .../java/io/nuls/api/model/po/SyncInfo.java | 19 ++++++++++-- .../java/io/nuls/api/service/SyncService.java | 2 +- .../io/nuls/api/task/StatisticalNulsTask.java | 11 ++++++- .../nuls/api/task/StatisticalRewardTask.java | 1 + 6 files changed, 49 insertions(+), 18 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java index ac6c9e55ca..1d50f13641 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java @@ -1,5 +1,6 @@ package io.nuls.api.db; +import io.nuls.api.model.po.BlockHeaderInfo; import io.nuls.api.model.po.ChainConfigInfo; import io.nuls.api.model.po.ChainInfo; import io.nuls.api.model.po.SyncInfo; @@ -26,7 +27,7 @@ public interface ChainService { ChainInfo getChainInfo(int chainId); - SyncInfo saveNewSyncInfo(int chainId, long newHeight, int version); + SyncInfo saveNewSyncInfo(int chainId, long newHeight, BlockHeaderInfo headerInfo); void updateStep(SyncInfo syncInfo); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java index bbb843766e..e9ac1fbf73 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java @@ -5,6 +5,7 @@ import io.nuls.api.cache.ApiCache; import io.nuls.api.db.ChainService; import io.nuls.api.manager.CacheManager; +import io.nuls.api.model.po.BlockHeaderInfo; import io.nuls.api.model.po.ChainConfigInfo; import io.nuls.api.model.po.ChainInfo; import io.nuls.api.model.po.SyncInfo; @@ -147,19 +148,25 @@ public SyncInfo getSyncInfo(int chainId) { return DocumentTransferTool.toInfo(document, "chainId", SyncInfo.class); } - public SyncInfo saveNewSyncInfo(int chainId, long newHeight, int version) { - SyncInfo syncInfo = new SyncInfo(chainId, newHeight, version, 0); - Document document = DocumentTransferTool.toDocument(syncInfo, "chainId"); - if (newHeight == 0) { - Bson query = Filters.eq("_id", chainId); - Document document1 = mongoDBService.findOne(SYNC_INFO_TABLE, query); - if (document1 != null) { - mongoDBService.updateOne(SYNC_INFO_TABLE, query, document); - } else { - mongoDBService.insertOne(SYNC_INFO_TABLE, document); - } + public SyncInfo saveNewSyncInfo(int chainId, long newHeight, BlockHeaderInfo headerInfo) { + Bson query = Filters.eq("_id", chainId); + Document document = mongoDBService.findOne(SYNC_INFO_TABLE, query); + SyncInfo syncInfo; + boolean isNew = false; + if (document == null) { + isNew = true; + syncInfo = new SyncInfo(chainId, newHeight, headerInfo); + } else { + syncInfo = DocumentTransferTool.toInfo(document, "chainId", SyncInfo.class); + syncInfo.setVersion(headerInfo.getMainVersion()); + syncInfo.setBestHeight(headerInfo.getHeight()); + syncInfo.setTotalSupply(syncInfo.getTotalSupply().add(headerInfo.getReward()).subtract(headerInfo.getTotalFee())); + } + document = DocumentTransferTool.toDocument(syncInfo, "chainId"); + if (isNew) { + mongoDBService.insertOne(SYNC_INFO_TABLE, document); + } else { - Bson query = Filters.eq("_id", chainId); mongoDBService.updateOne(SYNC_INFO_TABLE, query, document); } return syncInfo; diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java index e3024822ea..82edbe86b1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java @@ -1,5 +1,7 @@ package io.nuls.api.model.po; +import java.math.BigInteger; + public class SyncInfo { private int chainId; @@ -8,16 +10,19 @@ public class SyncInfo { private int version; + private BigInteger totalSupply; + private int step; public SyncInfo() { } - public SyncInfo(int chainId, long bestHeight, int version, int step) { + public SyncInfo(int chainId, long bestHeight, BlockHeaderInfo headerInfo) { this.chainId = chainId; this.bestHeight = bestHeight; - this.version = version; - this.step = step; + this.version = headerInfo.getMainVersion(); + this.totalSupply = headerInfo.getReward(); + this.step = 0; } public boolean isFinish() { @@ -55,4 +60,12 @@ public int getVersion() { public void setVersion(int version) { this.version = version; } + + public BigInteger getTotalSupply() { + return totalSupply; + } + + public void setTotalSupply(BigInteger totalSupply) { + this.totalSupply = totalSupply; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index b3cd4ea892..7cb0638432 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -972,7 +972,7 @@ public void save(int chainId, BlockInfo blockInfo) { long time1, time2; - SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader().getMainVersion()); + SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader()); //存储区块头信息 time1 = System.currentTimeMillis(); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java index c408e8be03..d159d43192 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java @@ -6,10 +6,12 @@ import io.nuls.api.cache.ApiCache; import io.nuls.api.db.AccountService; import io.nuls.api.db.AgentService; +import io.nuls.api.db.ChainService; import io.nuls.api.manager.CacheManager; import io.nuls.api.model.po.AssetInfo; import io.nuls.api.model.po.CoinContextInfo; import io.nuls.api.model.po.DestroyInfo; +import io.nuls.api.model.po.SyncInfo; import io.nuls.api.model.rpc.BalanceInfo; import io.nuls.api.utils.AssetTool; import io.nuls.api.utils.LoggerUtil; @@ -30,17 +32,24 @@ public class StatisticalNulsTask implements Runnable { private AgentService agentService; + private ChainService chainService; public StatisticalNulsTask(int chainId) { this.chainId = chainId; accountService = SpringLiteContext.getBean(AccountService.class); agentService = SpringLiteContext.getBean(AgentService.class); + chainService = SpringLiteContext.getBean(ChainService.class); } @Override public void run() { try { - BigInteger totalCoin = accountService.getAllAccountBalance(chainId); + + BigInteger totalCoin = BigInteger.ZERO; + SyncInfo syncInfo = chainService.getSyncInfo(chainId); + if (syncInfo != null) { + totalCoin = syncInfo.getTotalSupply(); + } BigInteger consensusTotal = agentService.getConsensusCoinTotal(chainId); ApiCache apiCache = CacheManager.getCache(chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java index fcd315f9c2..bb69c34690 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java @@ -2,6 +2,7 @@ import io.nuls.api.cache.ApiCache; import io.nuls.api.db.BlockService; +import io.nuls.api.db.ChainService; import io.nuls.api.db.StatisticalService; import io.nuls.api.manager.CacheManager; import io.nuls.api.model.po.BlockHeaderInfo; From 432fa0f3bdc2a9a7d3c2a5de031b1a874ee77ec3 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 14 Aug 2020 10:13:41 +0800 Subject: [PATCH 071/304] add crossTx transfer api --- .../java/io/nuls/provider/ApiBootstrap.java | 3 +- .../controller/TransactionController.java | 89 +++++++++++++- .../api/resources/AccountLedgerResource.java | 32 +++++ .../model/form/CrossTransferForm.java | 115 ++++++++++++++++++ 4 files changed, 234 insertions(+), 5 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/form/CrossTransferForm.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index 7b989b1687..4f9c879645 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -104,7 +104,8 @@ public Module[] declareDependent() { new Module(ModuleE.BL.abbr, ROLE), new Module(ModuleE.AC.abbr, ROLE), new Module(ModuleE.TX.abbr, ROLE), - new Module(ModuleE.LG.abbr, ROLE) + new Module(ModuleE.LG.abbr, ROLE), + new Module(ModuleE.CC.abbr, ROLE) }; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 33a5dbed7e..0350b8369b 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -26,6 +26,9 @@ import io.nuls.base.api.provider.block.BlockService; import io.nuls.base.api.provider.block.facade.BlockHeaderData; import io.nuls.base.api.provider.block.facade.GetBlockHeaderByHeightReq; +import io.nuls.base.api.provider.crosschain.CrossChainProvider; +import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; +import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; import io.nuls.base.RPCUtil; import io.nuls.base.api.provider.Result; @@ -79,7 +82,8 @@ @Controller @Api(type = ApiType.JSONRPC) public class TransactionController { - + @Autowired + Config config; @Autowired private TransactionTools transactionTools; @Autowired @@ -87,6 +91,8 @@ public class TransactionController { TransferService transferService = ServiceManager.get(TransferService.class); + CrossChainProvider crossChainProvider = ServiceManager.get(CrossChainProvider.class); + BlockService blockService = ServiceManager.get(BlockService.class); @RpcMethod("getTx") @@ -340,7 +346,6 @@ public RpcResult broadcastTxWithoutAnyValidation(List params) { } - @RpcMethod("transferOtherChainAsset") @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易,转账资产为链内的其他平行链资产") @Parameters({ @@ -411,8 +416,8 @@ public RpcResult transferOtherChainAsset(List params) { } TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(chainId, assetId) - .addForm(assetChainId,assetId, address, password, new BigInteger(amount)) - .addTo(assetChainId,assetId, toAddress, new BigInteger(amount)).setRemark(remark); + .addForm(assetChainId, assetId, address, password, new BigInteger(amount)) + .addTo(assetChainId, assetId, toAddress, new BigInteger(amount)).setRemark(remark); Result result = transferService.transfer(builder.build(new TransferReq())); if (result.isSuccess()) { Map resultMap = new HashMap(2); @@ -500,6 +505,82 @@ public RpcResult transfer(List params) { } } + @RpcMethod("crossTransfer") + @ApiOperation(description = "单笔跨链转账", order = 306, detailDesc = "发起单账户单资产的跨链转账交易") + @Parameters({ + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链id"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产id"), + @Parameter(parameterName = "address", parameterDes = "转出账户地址"), + @Parameter(parameterName = "toAddress", parameterDes = "转入账户地址"), + @Parameter(parameterName = "password", parameterDes = "转出账户密码"), + @Parameter(parameterName = "amount", parameterDes = "转出金额"), + @Parameter(parameterName = "remark", parameterDes = "备注"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash") + })) + public RpcResult crossTransfer(List params) { + VerifyUtils.verifyParams(params, 7); + int chainId, assetId; + String address, toAddress, password, amount, remark; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + assetId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + try { + address = (String) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + try { + toAddress = (String) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[toAddress] is inValid"); + } + try { + password = (String) params.get(4); + } catch (Exception e) { + return RpcResult.paramError("[password] is inValid"); + } + try { + amount = params.get(5).toString(); + } catch (Exception e) { + return RpcResult.paramError("[amount] is inValid"); + } + try { + remark = (String) params.get(6); + } catch (Exception e) { + return RpcResult.paramError("[remark] is inValid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + if (!ValidateUtil.validateBigInteger(amount)) { + return RpcResult.paramError("[amount] is inValid"); + } + + CreateCrossTxReq.CreateCrossTxReqBuilder builder = new CreateCrossTxReq.CreateCrossTxReqBuilder(config.getChainId()) + .addForm(chainId, assetId, address, password, new BigInteger(amount)) + .addTo(chainId, assetId, toAddress, new BigInteger(amount)) + .setRemark(remark); + + Result result = crossChainProvider.createCrossTx(builder.build()); + if (result.isSuccess()) { + Map resultMap = new HashMap(2); + resultMap.put("hash", result.getData()); + return RpcResult.success(resultMap); + } else { + return RpcResult.failed(ErrorCode.init(result.getStatus()), result.getMessage()); + } + } + + @RpcMethod("createTransferTxOffline") @ApiOperation(description = "离线组装转账交易", order = 350, detailDesc = "根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。" + "交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 7802055e89..415911ae3e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -23,6 +23,8 @@ */ package io.nuls.provider.api.resources; +import io.nuls.base.api.provider.crosschain.CrossChainProvider; +import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; import io.nuls.provider.api.config.Config; import io.nuls.base.RPCUtil; import io.nuls.base.api.provider.Result; @@ -43,6 +45,7 @@ import io.nuls.provider.model.RpcClientResult; import io.nuls.provider.model.dto.AccountBalanceDto; import io.nuls.provider.model.form.BalanceForm; +import io.nuls.provider.model.form.CrossTransferForm; import io.nuls.provider.model.form.TransferForm; import io.nuls.provider.model.form.TxForm; import io.nuls.provider.rpctools.ContractTools; @@ -88,6 +91,9 @@ public class AccountLedgerResource { Config config; TransferService transferService = ServiceManager.get(TransferService.class); + + CrossChainProvider crossChainProvider = ServiceManager.get(CrossChainProvider.class); + LedgerProvider ledgerProvider = ServiceManager.get(LedgerProvider.class); @Autowired TransactionTools transactionTools; @@ -289,6 +295,32 @@ public RpcClientResult transfer(TransferForm form) { return clientResult; } + @POST + @Path("/crossTransfer") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "跨链转账", order = 306, detailDesc = "发起单账户单资产的跨链转账交易") + @Parameters({ + @Parameter(parameterName = "跨链转账", parameterDes = "跨链转账表单", requestType = @TypeDescriptor(value = CrossTransferForm.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", description = "交易hash") + })) + public RpcClientResult crossTransfer(CrossTransferForm form) { + if (form == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form is empty")); + } + CreateCrossTxReq.CreateCrossTxReqBuilder builder = new CreateCrossTxReq.CreateCrossTxReqBuilder(config.getChainId()) + .addForm(form.getAssetChainId(), form.getAssetId(), form.getAddress(), form.getPassword(), form.getAmount()) + .addTo(form.getAssetChainId(), form.getAssetId(), form.getToAddress(), form.getAmount()) + .setRemark(form.getRemark()); + Result result = crossChainProvider.createCrossTx(builder.build()); + RpcClientResult clientResult = ResultUtil.getRpcClientResult(result); + if (clientResult.isSuccess()) { + return clientResult.resultMap().map("txHash", clientResult.getData()).mapToData(); + } + return clientResult; + } + @POST @Path("/createTransferTxOffline") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/CrossTransferForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/CrossTransferForm.java new file mode 100644 index 0000000000..8f8a3d1a42 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/CrossTransferForm.java @@ -0,0 +1,115 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.provider.model.form; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +import java.math.BigInteger; + +/** + * @author Facjas + */ +@ApiModel(name = "转账表单数据") +public class CrossTransferForm { + + @ApiModelProperty(description = "账户地址") + private String address; + + @ApiModelProperty(description = "账户地址") + private String toAddress; + + @ApiModelProperty(description = "账户密码") + private String password; + + @ApiModelProperty(description = "资产chainId") + private int assetChainId; + + @ApiModelProperty(description = "资产Id") + private int assetId; + + @ApiModelProperty(description = "金额") + private BigInteger amount; + + @ApiModelProperty(description = "备注", required = false) + private String remark; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getToAddress() { + return toAddress; + } + + public void setToAddress(String toAddress) { + this.toAddress = toAddress; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public BigInteger getAmount() { + return amount; + } + + public void setAmount(BigInteger amount) { + this.amount = amount; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } +} From e8f9707dbd54546806d64899a6b6f36bc5e37fab Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Sun, 16 Aug 2020 09:37:22 +0800 Subject: [PATCH 072/304] add crossTx transfer api --- .../controller/TransactionController.java | 11 +++++----- .../api/resources/AccountLedgerResource.java | 13 +++++++++-- .../provider/model/form/TransferForm.java | 22 +++++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 0350b8369b..abfdd4f36d 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -428,11 +428,10 @@ public RpcResult transferOtherChainAsset(List params) { } } - @RpcMethod("transfer") - @ApiOperation(description = "单笔转账", order = 306, detailDesc = "发起单账户单资产的转账交易") + @ApiOperation(description = "单笔链内转账", order = 306, detailDesc = "发起单账户单资产的转账交易") @Parameters({ - @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链id"), @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产id"), @Parameter(parameterName = "address", parameterDes = "转出账户地址"), @Parameter(parameterName = "toAddress", parameterDes = "转入账户地址"), @@ -492,9 +491,9 @@ public RpcResult transfer(List params) { return RpcResult.paramError("[amount] is inValid"); } TransferReq.TransferReqBuilder builder = - new TransferReq.TransferReqBuilder(chainId, assetId) - .addForm(address, password, new BigInteger(amount)) - .addTo(toAddress, new BigInteger(amount)).setRemark(remark); + new TransferReq.TransferReqBuilder(config.getChainId(), assetId) + .addForm(chainId, assetId, address, password, new BigInteger(amount)) + .addTo(chainId, assetId, toAddress, new BigInteger(amount)).setRemark(remark); Result result = transferService.transfer(builder.build(new TransferReq())); if (result.isSuccess()) { Map resultMap = new HashMap(2); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 415911ae3e..e03876aaa5 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -283,11 +283,20 @@ public RpcClientResult transfer(TransferForm form) { if (form == null) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form is empty")); } + if (form.getAssetChainId() == 0) { + form.setAssetChainId(config.getChainId()); + } + if (form.getAssetId() == 0) { + form.setAssetId(config.getAssetsId()); + } TransferReq.TransferReqBuilder builder = - new TransferReq.TransferReqBuilder(config.getChainId(), config.getAssetsId()) + new TransferReq.TransferReqBuilder(config.getChainId(), form.getAssetId()) .addForm(form.getAddress(), form.getPassword(), form.getAmount()) .addTo(form.getToAddress(), form.getAmount()).setRemark(form.getRemark()); - Result result = transferService.transfer(builder.build(new TransferReq())); + TransferReq req = builder.build(new TransferReq()); + req.getInputs().get(0).setAssetsChainId(form.getAssetChainId()); + req.getOutputs().get(0).setAssetsChainId(form.getAssetChainId()); + Result result = transferService.transfer(req); RpcClientResult clientResult = ResultUtil.getRpcClientResult(result); if (clientResult.isSuccess()) { return clientResult.resultMap().map("value", clientResult.getData()).mapToData(); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/TransferForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/TransferForm.java index bc8d7fa056..e814fe3c8e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/TransferForm.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/TransferForm.java @@ -45,6 +45,12 @@ public class TransferForm { @ApiModelProperty(description = "账户密码", required = true) private String password; + @ApiModelProperty(description = "资产链ID", required = false) + private int assetChainId; + + @ApiModelProperty(description = "资产ID", required = false) + private int assetId; + @ApiModelProperty(description = "金额", required = true) private BigInteger amount; @@ -90,4 +96,20 @@ public String getRemark() { public void setRemark(String remark) { this.remark = remark; } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } } From 6f8f9d6c3d329424dbc6b7ddecf58aa949c6ca16 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 17 Aug 2020 15:05:35 +0800 Subject: [PATCH 073/304] add crossTx transfer api --- module/nuls-api/pom.xml | 2 +- .../controller/TransactionController.java | 124 ++++++++++++++++++ .../api/resources/AccountLedgerResource.java | 43 +++++- 3 files changed, 164 insertions(+), 5 deletions(-) diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index e45163190b..e7636852cb 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -36,7 +36,7 @@ io.nuls.v2 sdk4j - 1.1.0.RELEASE + 1.1.2.RELEASE org.glassfish.jersey.containers diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index abfdd4f36d..8ffc0d5bb1 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -641,6 +641,68 @@ public RpcResult createTransferTxOffline(List params) { } } + @RpcMethod("createCrossTxOffline") + @ApiOperation(description = "离线组装转账交易", order = 350, detailDesc = "根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的跨链转账交易。" + + "交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,加上跨链转账手续费(NULS)") + @Parameters({ + @Parameter(parameterName = "transferDto", parameterDes = "转账交易表单", requestType = @TypeDescriptor(value = TransferDto.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash"), + @Key(name = "txHex", description = "交易序列化16进制字符串") + })) + public RpcResult createCrossTxOffline(List params) { + List inputList, outputList; + String remark; + + List froms = new ArrayList<>(); + List tos = new ArrayList<>(); + try { + inputList = (List) params.get(0); + for (Map map : inputList) { + String amount = map.get("amount").toString(); + map.put("amount", new BigInteger(amount)); + CoinFromDto fromDto = JSONUtils.map2pojo(map, CoinFromDto.class); + froms.add(fromDto); + } + } catch (Exception e) { + return RpcResult.paramError("[inputList] is inValid"); + } + try { + outputList = (List) params.get(1); + for (Map map : outputList) { + String amount = map.get("amount").toString(); + map.put("amount", new BigInteger(amount)); + CoinToDto toDto = JSONUtils.map2pojo(map, CoinToDto.class); + tos.add(toDto); + } + } catch (Exception e) { + return RpcResult.paramError("[outputList] is inValid"); + } + try { + remark = (String) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[remark] is inValid"); + } + + try { + TransferDto transferDto = new TransferDto(); + transferDto.setInputs(froms); + transferDto.setOutputs(tos); + transferDto.setRemark(remark); + CommonValidator.checkTransferDto(transferDto); + io.nuls.core.basic.Result result = NulsSDKTool.createCrossTransferTxOffline(transferDto); + if (result.isSuccess()) { + return RpcResult.success(result.getData()); + } else { + return RpcResult.failed(result.getErrorCode(), result.getMsg()); + } + } catch (NulsException e) { + return RpcResult.failed(e.getErrorCode(), e.format()); + } + } + + @RpcMethod("calcTransferTxFee") @ApiOperation(description = "计算离线创建转账交易所需手续费", order = 351) @Parameters({ @@ -694,6 +756,68 @@ public RpcResult calcTransferTxFee(List params) { return RpcResult.success(map); } + + @RpcMethod("calcCrossTxFee") + @ApiOperation(description = "计算离线创建跨链转账交易所需手续费", order = 351) + @Parameters({ + @Parameter(parameterName = "TransferTxFeeDto", parameterDes = "转账交易手续费", requestType = @TypeDescriptor(value = TransferTxFeeDto.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", description = "交易手续费"), + })) + public RpcResult calcCrossTxFee(List params) { + int assetChainId, assetId, addressCount, fromLength, toLength; + String remark; + try { + assetChainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is inValid"); + } + try { + assetId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + try { + addressCount = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[addressCount] is inValid"); + } + try { + fromLength = (int) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[fromLength] is inValid"); + } + try { + toLength = (int) params.get(4); + } catch (Exception e) { + return RpcResult.paramError("[toLength] is inValid"); + } + try { + remark = (String) params.get(5); + } catch (Exception e) { + return RpcResult.paramError("[remark] is inValid"); + } +// try { +// price = (String) params.get(4); +// } catch (Exception e) { +// return RpcResult.paramError("[price] is inValid"); +// } +// if (!ValidateUtil.validateBigInteger(price)) { +// return RpcResult.paramError("[price] is inValid"); +// } + CrossTransferTxFeeDto dto = new CrossTransferTxFeeDto(); + dto.setAssetChainId(assetChainId); + dto.setAssetId(assetId); + dto.setAddressCount(addressCount); + dto.setFromLength(fromLength); + dto.setToLength(toLength); + dto.setRemark(remark); + + Map map = NulsSDKTool.calcCrossTransferTxFee(dto); + return RpcResult.success(map); + } + @RpcMethod("createMultiSignTransferTxOffline") @ApiOperation(description = "离线组装转账交易", order = 352, detailDesc = "根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。" + "交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index e03876aaa5..156198a614 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -56,10 +56,7 @@ import io.nuls.provider.utils.ResultUtil; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; -import io.nuls.v2.model.dto.MultiSignTransferDto; -import io.nuls.v2.model.dto.MultiSignTransferTxFeeDto; -import io.nuls.v2.model.dto.TransferDto; -import io.nuls.v2.model.dto.TransferTxFeeDto; +import io.nuls.v2.model.dto.*; import io.nuls.v2.txdata.CallContractData; import io.nuls.v2.txdata.CreateContractData; import io.nuls.v2.txdata.DeleteContractData; @@ -352,6 +349,28 @@ public RpcClientResult createTransferTxOffline(TransferDto transferDto) { } } + @POST + @Path("/createCrossTxOffline") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "离线组装跨链转账交易", order = 350, detailDesc = "根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的转账交易。" + + "交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,再加上跨链转账的NULS手续费") + @Parameters({ + @Parameter(parameterName = "transferDto", parameterDes = "跨链转账交易表单", requestType = @TypeDescriptor(value = TransferDto.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "hash", description = "交易hash"), + @Key(name = "txHex", description = "交易序列化16进制字符串") + })) + public RpcClientResult createCrossTxOffline(TransferDto transferDto) { + try { + CommonValidator.checkTransferDto(transferDto); + io.nuls.core.basic.Result result = NulsSDKTool.createCrossTransferTxOffline(transferDto); + return ResultUtil.getRpcClientResult(result); + } catch (NulsException e) { + return RpcClientResult.getFailed(new ErrorData(e.getErrorCode().getCode(), e.getMessage())); + } + } + @POST @Path("/calcTransferTxFee") @Produces(MediaType.APPLICATION_JSON) @@ -370,6 +389,22 @@ public RpcClientResult calcTransferTxFee(TransferTxFeeDto dto) { return result; } + @POST + @Path("/calcCrossTxFee") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "计算离线创建跨链转账交易所需手续费", order = 351) + @Parameters({ + @Parameter(parameterName = "TransferTxFeeDto", parameterDes = "转账交易手续费", requestType = @TypeDescriptor(value = TransferTxFeeDto.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", description = "交易手续费"), + })) + public RpcClientResult calcCrossTxFee(CrossTransferTxFeeDto dto) { + Map map = NulsSDKTool.calcCrossTransferTxFee(dto); + RpcClientResult result = RpcClientResult.getSuccess(map); + return result; + } + @POST @Path("/createMultiSignTransferTxOffline") @Produces(MediaType.APPLICATION_JSON) From 9a8d07c4b4d98c5a36847b5fce4fe9c08bcb2a69 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 17 Aug 2020 15:48:24 +0800 Subject: [PATCH 074/304] add x --- module/nuls-api/start_offline.sh | 0 module/nuls-api/stop_offline.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 module/nuls-api/start_offline.sh mode change 100644 => 100755 module/nuls-api/stop_offline.sh diff --git a/module/nuls-api/start_offline.sh b/module/nuls-api/start_offline.sh old mode 100644 new mode 100755 diff --git a/module/nuls-api/stop_offline.sh b/module/nuls-api/stop_offline.sh old mode 100644 new mode 100755 From dd304dc24779ce951cafe258768c4948c5605ce4 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 17 Aug 2020 17:05:45 +0800 Subject: [PATCH 075/304] update api offline.sh --- module/nuls-api/start_offline.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/module/nuls-api/start_offline.sh b/module/nuls-api/start_offline.sh index 12f74764d4..26a290d4a8 100755 --- a/module/nuls-api/start_offline.sh +++ b/module/nuls-api/start_offline.sh @@ -5,9 +5,15 @@ cd "${MODULE_PATH}" echo "MODULE_PATH is ${MODULE_PATH}" LOGS_DIR="${MODULE_PATH}/log" - +JAVA_FILE_NAME="${MODULE_PATH}/JAVA/JRE/11.0.2/bin/java" APP_NAME="nuls-api-offline" # %APP_NAME 注入 +if test -x $JAVA_FILE_NAME ; then + echo "java file permission ok" +else + chmod +x $JAVA_FILE_NAME +fi + if [ -d ./JAVA/JRE/11.0.2 ]; then JAVA_HOME=`dirname "./JAVA/JRE/11.0.2/bin"`; JAVA_HOME=`cd $JAVA_HOME; pwd` From 5964a2c7f283b86172c42e78b117f469a3d2b389 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 21 Aug 2020 10:52:46 +0800 Subject: [PATCH 076/304] locked balance of nrc20 --- .../io/nuls/api/analysis/WalletRpcHandler.java | 18 ++++++++++++++++++ .../api/db/mongo/MongoContractServiceImpl.java | 2 +- .../io/nuls/api/model/po/AccountTokenInfo.java | 10 ++++++++++ .../api/rpc/controller/ContractController.java | 11 ++++++++++- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index adc61a7708..172545998b 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -418,6 +418,24 @@ public static Result invokeView(int chainId, Object contractAddress, Object return Result.getSuccess(null).setData(map); } + public static Result tokenBalance(int chainid, Object contractAddress, Object address) { + try { + Result result = invokeView(chainid, contractAddress, "balanceOf", null, new Object[]{address}); + Map map = result.getData(); + if (map == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + Object balance = map.get("result"); + if (balance == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + return Result.getSuccess(null).setData(new BigInteger(balance.toString())); + } catch (NulsException e) { + Log.error(e.format()); + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + } + public static Result getContractResultInfo(int chainId, String hash) throws NulsException { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java index 09e2bfbcc3..3ca17d7821 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java @@ -223,7 +223,7 @@ public List getContractList(int chainId, List addressL fields.append("_id", 1).append("remark", 1).append("txCount", 1).append("status", 1) .append("createTime", 1).append("balance", 1).append("tokenName", 1).append("symbol", 1) - .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1); + .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1).append("tokenType", 1); List docsList = this.mongoDBService.pageQuery(CONTRACT_TABLE + chainId, filter, fields, sort, 1, addressList.size()); List contractInfos = new ArrayList<>(); for (Document document : docsList) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java index 3aba135a04..e90935b4b6 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java @@ -18,6 +18,8 @@ public class AccountTokenInfo { private BigInteger balance; + private BigInteger lockedBalance; + private int status; private int decimals; @@ -39,6 +41,14 @@ public AccountTokenInfo(String address, String contractAddress, String tokenName this.isNew = true; } + public BigInteger getLockedBalance() { + return lockedBalance; + } + + public void setLockedBalance(BigInteger lockedBalance) { + this.lockedBalance = lockedBalance; + } + public String getKey() { return key; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index ec53243fbd..f8aabaf74f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -160,7 +160,16 @@ public RpcResult getAccountTokens(List params) { } else { pageInfo = tokenService.getAccountTokens(chainId, address, pageNumber, pageSize); } - + if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) { + List list = pageInfo.getList(); + for (AccountTokenInfo tokenInfo : list) { + BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); + BigInteger total = tokenInfo.getBalance(); + BigInteger locked = total.subtract(available); + tokenInfo.setBalance(available); + tokenInfo.setLockedBalance(locked); + } + } RpcResult result = new RpcResult(); result.setResult(pageInfo); From af914936cb9d434b42a00ce78cd4640fbff2e847 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 21 Aug 2020 16:03:05 +0800 Subject: [PATCH 077/304] update ps getAssetRanking --- .../db/mongo/MongoAccountLedgerServiceImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java index 0a81ae7853..6e527f2349 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java @@ -2,6 +2,7 @@ import com.mongodb.client.model.*; import io.nuls.api.ApiContext; +import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.cache.ApiCache; import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.AccountLedgerService; @@ -145,16 +146,18 @@ public PageInfo getAssetRanking(int chainId, int assetChainId, List list = new ArrayList<>(); for (int i = 0; i < documentList.size(); i++) { AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(documentList.get(i), "key", AccountLedgerInfo.class); - MiniAccountInfo accountInfo = accountService.getMiniAccountInfo(chainId, ledgerInfo.getAddress()); accountInfo.setTotalBalance(ledgerInfo.getTotalBalance()); - accountInfo.setLocked(ledgerInfo.getConsensusLock().add(ledgerInfo.getTimeLock())); - accountInfo.setDecimal(ledgerInfo.getDecimals()); + BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, accountInfo.getAddress(), ledgerInfo.getChainId(), ledgerInfo.getAssetId()); + accountInfo.setLocked(balanceInfo.getConsensusLock().add(balanceInfo.getTimeLock())); + accountInfo.setDecimal(assetInfo.getDecimals()); + BigDecimal b1 = new BigDecimal(accountInfo.getTotalBalance()); BigDecimal b2 = new BigDecimal(assetInfo.getLocalTotalCoins()); - - double prop = b1.divide(b2, 5, RoundingMode.HALF_UP).doubleValue() * 100; - + double prop = 0; + if (b2.compareTo(BigDecimal.ZERO) > 0) { + prop = b1.divide(b2, 5, RoundingMode.HALF_UP).doubleValue() * 100; + } accountInfo.setProportion(format.format(prop) + "%"); list.add(accountInfo); } From 5a78a703ab9c6e4d63055ccf752125f65b345187 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 24 Aug 2020 10:26:37 +0800 Subject: [PATCH 078/304] update total balance of nrc20 in ps --- .../main/java/io/nuls/api/rpc/controller/ContractController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index f8aabaf74f..86646837f6 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -166,7 +166,6 @@ public RpcResult getAccountTokens(List params) { BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); BigInteger total = tokenInfo.getBalance(); BigInteger locked = total.subtract(available); - tokenInfo.setBalance(available); tokenInfo.setLockedBalance(locked); } } From c3161007edbd3cb3e87d8ba3500e7b950912684e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 24 Aug 2020 13:47:22 +0800 Subject: [PATCH 079/304] account token balance --- .../rpc/controller/ContractController.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index 86646837f6..e03939ca8a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -175,6 +175,42 @@ public RpcResult getAccountTokens(List params) { return result; } + @RpcMethod("getAccountToken") + public RpcResult getAccountToken(List params) { + VerifyUtils.verifyParams(params, 3); + int chainId; + String address, contract; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is invalid"); + } + try { + contract = (String) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[contract] is invalid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is invalid"); + } + if (!AddressTool.validContractAddress(AddressTool.getAddress(contract), chainId)) { + return RpcResult.paramError("[contract] is invalid"); + } + AccountTokenInfo tokenInfo = tokenService.getAccountTokenInfo(chainId, address + contract); + BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); + BigInteger total = tokenInfo.getBalance(); + BigInteger locked = total.subtract(available); + tokenInfo.setLockedBalance(locked); + RpcResult result = new RpcResult(); + result.setResult(tokenInfo); + return result; + } + @RpcMethod("getContractTokens") public RpcResult getContractTokens(List params) { VerifyUtils.verifyParams(params, 4); From 1fda1c9b9aaf52a9baf9b45bb2fb2fe6a0dc4f89 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 24 Aug 2020 14:02:58 +0800 Subject: [PATCH 080/304] dev --- .../io/nuls/test/datacheck/SignCheck.java | 2 +- .../nuls/test/datacheck/TransactionCheck.java | 29 ++++++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java index 4ca1fb09e8..1db75dd22b 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/SignCheck.java @@ -14,7 +14,7 @@ public class SignCheck { public static void main(String[] args) throws NulsException { - String signStr = "2102b036e93c63a1e591435e9021b76a9f38db9e766f2a38af0f91a3ded3c42f5537473045022100cf9234366129869b84b2880696937c0caa1607e7c56d67d85957fa357fd42cb1022029db4f15eae5946b23c6fa73ca9b941d3d5cdee5b25868161a5e03a650b5d82f"; + String signStr = "2103a16be2cb8826ab8ea0c53745ebb7962069d542d278cd64482e2b86c178582fdf483046022100fb21c54f4bdc458489813caf8e8e28713145363f99aa1fd0e842b5f99131e3200221009d46983c3929fe4b5f957f87e4e5c2e2ba2168fb3e1302e5b2085f2247a45c72"; TransactionSignature transactionSignature = new TransactionSignature(); transactionSignature.parse(HexUtil.decode(signStr),0); diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java index d294d685c2..cec67fb30d 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/datacheck/TransactionCheck.java @@ -7,6 +7,7 @@ import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; +import io.nuls.crosschain.base.model.bo.txdata.VerifierChangeData; /** * @Author: zhoulijun @@ -15,17 +16,29 @@ */ public class TransactionCheck { + public static void verifierChangeTx(Transaction tx) throws NulsException { + byte[] txData = tx.getTxData(); + VerifierChangeData verifierChangeData = new VerifierChangeData(); + verifierChangeData.parse(txData,0); + Log.info("{}",verifierChangeData); + } + public static void main(String[] args) throws NulsException { - String txHex = "0a0018cb275f00008c01170100015cd6524cecf1f83de0e626ec7b9a9267487c5bbf01000100402a8648170000000000000000000000000000000000000000000000000000000810c60b7692c457010001175fea019b2df4ee82fd35e59339f607df8abd69fc224eef0100010000e876481700000000000000000000000000000000000000000000000000000000000000000000006921026cee524ab370d0fa9761e42d6f7c451365d7829fa354f7126b0e93735aff1c8146304402207c90042ab532779f4dcc4bdf3b471e23787276651c4ba090de058793b5cc7c2302202efefd6026523d1292f303ab4bae35ca0709fbdcd37a5c370f169ab8333b14e1"; + String txHex = "1800fee42b5f002b0200000126744e554c536542614d6f42645946556d366664463867423733636732335955767a635753596d006921037fae74d15153c3b55857ca0abd5c34c865dfa1c0d0232997c545bae5541a086346304402204529682f745e033977a278b7bdc2f2fd400d83182b7f0c0b8e68736810578f6702206f19b18ec0cbfbe5bd7a585fc78b80ef306a5a19902580b9c6f2d70b08a9a0e7"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(txHex),0); - byte[] txData = tx.getTxData(); - if(txData != null){ - CrossTransferData crossTransferData = new CrossTransferData(); - crossTransferData.parse(txData,0); - Log.info("sourceHash:{}",HexUtil.encode(crossTransferData.getSourceHash())); - } - Log.info("{}",AddressTool.getChainIdByAddress("TNVTdTSPMsBqXoEVtkAyPBVyduftKvZVQopFD")); + verifierChangeTx(tx); + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(tx.getTransactionSignature(),0); + Log.info("size:{}",transactionSignature.getSignersCount()); + +// byte[] txData = tx.getTxData(); +// if(txData != null){ +// CrossTransferData crossTransferData = new CrossTransferData(); +// crossTransferData.parse(txData,0); +// Log.info("sourceHash:{}",HexUtil.encode(crossTransferData.getSourceHash())); +// } +// Log.info("{}",AddressTool.getChainIdByAddress("TNVTdTSPMsBqXoEVtkAyPBVyduftKvZVQopFD")); } } From 9e1a46fadc70c58f7c7b55e612036314c7d75c8d Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 24 Aug 2020 14:22:09 +0800 Subject: [PATCH 081/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9nerve=E9=93=BE?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/api/rpc/controller/ChainController.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java index a77d99bd8a..cb3deca775 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Controller public class ChainController { @@ -74,7 +75,13 @@ public RpcResult getOtherChainList(List params) { // chainInfoList.add(map); // } // } - return RpcResult.success(chainInfoList); + ; + return RpcResult.success(chainInfoList.stream().map(d->{ + if(d.getChainId() == 9){ + d.setChainName("NerveNetwork"); + } + return d; + }).collect(Collectors.toList())); } @RpcMethod("getOtherChainInfo") From a2f381e4ecb49473de5b744a38d0c573e781f826 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 24 Aug 2020 15:10:20 +0800 Subject: [PATCH 082/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=A1=E5=9D=97BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/api/db/mongo/MongoChainServiceImpl.java | 5 ++++- .../src/main/java/io/nuls/api/model/po/SyncInfo.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java index e9ac1fbf73..655e425f9c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java @@ -15,6 +15,7 @@ import org.bson.Document; import org.bson.conversions.Bson; +import java.math.BigInteger; import java.util.ArrayList; import java.util.List; @@ -160,7 +161,9 @@ public SyncInfo saveNewSyncInfo(int chainId, long newHeight, BlockHeaderInfo hea syncInfo = DocumentTransferTool.toInfo(document, "chainId", SyncInfo.class); syncInfo.setVersion(headerInfo.getMainVersion()); syncInfo.setBestHeight(headerInfo.getHeight()); - syncInfo.setTotalSupply(syncInfo.getTotalSupply().add(headerInfo.getReward()).subtract(headerInfo.getTotalFee())); + BigInteger reward = headerInfo.getReward() == null ? BigInteger.ZERO : headerInfo.getReward(); + BigInteger totalFee = headerInfo.getTotalFee() == null ? BigInteger.ZERO : headerInfo.getTotalFee(); + syncInfo.setTotalSupply(syncInfo.getTotalSupply().add(reward).subtract(totalFee)); } document = DocumentTransferTool.toDocument(syncInfo, "chainId"); if (isNew) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java index 82edbe86b1..3a6dc5977c 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java @@ -10,7 +10,7 @@ public class SyncInfo { private int version; - private BigInteger totalSupply; + private BigInteger totalSupply = BigInteger.ZERO; private int step; From aae1ca13a291c5cd5523fa611e359206f8586293 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 24 Aug 2020 15:47:34 +0800 Subject: [PATCH 083/304] fixed npe --- .../java/io/nuls/api/rpc/controller/ContractController.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index e03939ca8a..039ea5142f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -177,6 +177,7 @@ public RpcResult getAccountTokens(List params) { @RpcMethod("getAccountToken") public RpcResult getAccountToken(List params) { + RpcResult result = new RpcResult(); VerifyUtils.verifyParams(params, 3); int chainId; String address, contract; @@ -202,11 +203,14 @@ public RpcResult getAccountToken(List params) { return RpcResult.paramError("[contract] is invalid"); } AccountTokenInfo tokenInfo = tokenService.getAccountTokenInfo(chainId, address + contract); + if (tokenInfo == null) { + result.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); + return result; + } BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); BigInteger total = tokenInfo.getBalance(); BigInteger locked = total.subtract(available); tokenInfo.setLockedBalance(locked); - RpcResult result = new RpcResult(); result.setResult(tokenInfo); return result; } From c97d3f96647c2b041374a9f7fdac809f571c045c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 24 Aug 2020 16:26:22 +0800 Subject: [PATCH 084/304] =?UTF-8?q?stop=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/nulstar/stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/nulstar/stop.sh b/build/nulstar/stop.sh index 2423a38b11..4aba40f6df 100755 --- a/build/nulstar/stop.sh +++ b/build/nulstar/stop.sh @@ -23,7 +23,7 @@ stop(){ kill -9 $pid > /dev/null 2>&1 } BIN_PATH=`pwd` -APP_PID=`ps -ef|grep -w "${BIN_PATH}/Modules/Nulstar"|grep -v grep|awk '{print $2}'` +APP_PID=`ps -ef|grep -w "${BIN_PATH}/Modules/Nulstar/0.1.0/Nulstar"|grep -v grep|awk '{print $2}'` if [ -z "${APP_PID}" ]; then echo "Nuls wallet not running" exit 0 From da661b69eb62460b1f80a0d99bdfccd923958692 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 25 Aug 2020 13:45:24 +0800 Subject: [PATCH 085/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/stop-temp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/stop-temp b/build/stop-temp index ae41d4fc82..504d8d7b31 100755 --- a/build/stop-temp +++ b/build/stop-temp @@ -2,8 +2,8 @@ cd `dirname $0` APP_NAME="%APP_NAME%" . func -chainName=`getModuleItem ./nuls.ncf "chainName"` -APP_NAME="${chainName}_kernel" +#chainName=`getModuleItem ./nuls.ncf "chainName"` +#APP_NAME="${chainName}_kernel" VERSION="%VERSION%"; # %Version 注入 JAR_FILE="`pwd`/${APP_NAME}-${VERSION}.jar" KILL_WAIT_COUNT=120 From 85136bd5c072f542a389f655e35a47d9161506d2 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 25 Aug 2020 14:16:41 +0800 Subject: [PATCH 086/304] =?UTF-8?q?=E5=81=9C=E6=AD=A2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/nulstar/stop.sh | 4 ++-- build/stop-mykernel | 4 +++- build/stop-temp | 2 -- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build/nulstar/stop.sh b/build/nulstar/stop.sh index 4aba40f6df..2e06b39d04 100755 --- a/build/nulstar/stop.sh +++ b/build/nulstar/stop.sh @@ -23,7 +23,7 @@ stop(){ kill -9 $pid > /dev/null 2>&1 } BIN_PATH=`pwd` -APP_PID=`ps -ef|grep -w "${BIN_PATH}/Modules/Nulstar/0.1.0/Nulstar"|grep -v grep|awk '{print $2}'` +APP_PID=`ps -ef|grep -w "${BIN_PATH}/Modules/Nulstar/Nulstar/0.1.0/Nulstar"|grep -v grep|awk '{print $2}'` if [ -z "${APP_PID}" ]; then echo "Nuls wallet not running" exit 0 @@ -31,7 +31,7 @@ fi echo "stoping" for pid in $APP_PID do - stop $pid "`pwd`/Modules/Nulstar" + stop $pid "`pwd`/Modules/Nulstar/Nulstar/0.1.0/Nulstar" done echo "" echo "shutdown success" diff --git a/build/stop-mykernel b/build/stop-mykernel index cbacc6a835..12855f6fe3 100755 --- a/build/stop-mykernel +++ b/build/stop-mykernel @@ -1,6 +1,8 @@ #!/bin/bash cd `dirname $0` -APP_NAME="mykernel" +. func +chainName=`getModuleItem ./nuls.ncf "chainName"` +APP_NAME="${chainName}_kernel" KILL_WAIT_COUNT=120 MODULE_PATH=`dirname $0` MODULE_PATH=`cd $MODULE_PATH; pwd`; diff --git a/build/stop-temp b/build/stop-temp index 504d8d7b31..84f4f2e306 100755 --- a/build/stop-temp +++ b/build/stop-temp @@ -2,8 +2,6 @@ cd `dirname $0` APP_NAME="%APP_NAME%" . func -#chainName=`getModuleItem ./nuls.ncf "chainName"` -#APP_NAME="${chainName}_kernel" VERSION="%VERSION%"; # %Version 注入 JAR_FILE="`pwd`/${APP_NAME}-${VERSION}.jar" KILL_WAIT_COUNT=120 From 8fb654cdcf5a78521a5a8c7fe6b4b3004edc49a2 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 1 Sep 2020 11:48:55 +0800 Subject: [PATCH 087/304] update ps document --- .../documents/NULS2.0-Public-PRC.md | 65 +++++++++++++++---- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md index f791826a71..c68523dc3a 100644 --- a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md +++ b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md @@ -651,12 +651,14 @@ alias: string //账户别名 ``` { "jsonrpc":"2.0", - "method":"getCoinRanking", - "params":[chainId,pageNumber,pageSize], + "method":"getAssetRanking", + "params":[chainId,assetChainId,assetId,pageNumber,pageSize], "id":1234 } //参数说明 chainId: int //链的id +assetChainId: int //资产链id +assetId: int //资产id pageNumber:int //页码 pageSize:int //每页显示条数,取值[1-1000] ``` @@ -672,14 +674,15 @@ pageSize:int //每页显示条数,取值[1-1000] "pageSize": 10, "totalCount": 1, "list": [ - { - "address": "tNULSeBaMmTNYqywL5ZSHbyAQ662uE3wibrgD1", - "alias": null, - "type": 1, - "totalBalance": 1000000000000000, //余额 - "totalOut": 0, //总支出 - "totalIn": 1000000000000000 //总收入 - } + { + "address": "NULSd6HhGcgkvEjzGU6Zmx2cxonjKQXA26Cth", //账户地址 + "alias": null, //账户别名 + "type": 3, //地址类型,1:普通地址,2:合约地址,3:多签地址 + "totalBalance": 3029296137980, //总余额 + "locked": 0, //锁定金额 + "proportion": "0.159%", //金额总占比 + "decimal": 8 //资产小数位 + } …… ] } @@ -843,6 +846,40 @@ alias:string //别名 } ``` +#### 查询各条链的地址前缀 + +请求: + +``` +{ + "jsonrpc":"2.0", + "method":"getAllAddressPrefix", + "params":[], + "id":1234 +} +``` + +返回: + +``` +{ + "jsonrpc": "2.0", + "id": "1234", + "result": [ + { + "chainId": 1, //链ID + "addressPrefix": "NULS" //地址前缀 + }, + { + "chainId": 9, + "addressPrefix": "NERVE" + } + ] +} +``` + + + ### 交易相关接口[transaction] #### 查询交易详情 @@ -878,8 +915,8 @@ txHash: string //交易hash ``` { "jsonrpc":"2.0", - "method":"getLxList", - "params":[chainId,pageNumber,pageSize,address,txType,startHeight,endHeight], + "method":"getTxList", + "params":[chainId,pageNumber,pageSize,txType,isHidden,startTime,endTime], "id":1234 } //参数说明 @@ -887,7 +924,9 @@ chainId: int //链的id pageNumber:int //页码 pageSize:int //每页显示条数,取值[1-1000] txType:int //交易类型(txType),type=0时查询所有交易 -isHidden:boolean //是否隐藏共识奖励交易,默认是不隐藏,这个参数只能是type=0时有效 +isHidden:boolean //是否隐藏共识奖励交易,默认是不隐藏,这个参数只能是type=0时有效 +startTime:long //区块开始时间(单位:秒),默认为0 +endTime:long //区块结束时间(单位:秒),默认为0 ``` 返回: From 1ec76f9d8e8bf57187394202d9afd82ca0df15b7 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 7 Sep 2020 12:31:09 +0800 Subject: [PATCH 088/304] fix NPE about contract tx rollback --- .../processor/CallContractTxProcessor.java | 3 +++ .../contract/tx/v1/CallContractProcessor.java | 20 +++++++++++++++++-- .../java/org/ethereum/util/DecodeResult.java | 6 +++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java index af9d05d55e..ec7e4b5415 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java @@ -138,6 +138,9 @@ public Result onRollback(int chainId, ContractWrapperTransaction tx) { if (contractResult == null) { contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); } + if (contractResult == null) { + return ContractUtil.getSuccess(); + } try { CallContractData contractData = (CallContractData) tx.getContractData(); Log.info("rollback call tx, contract data is {}, result is {}", JSONUtils.obj2json(new CallContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v1/CallContractProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v1/CallContractProcessor.java index 82f3a390de..ce514bde0b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v1/CallContractProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v1/CallContractProcessor.java @@ -2,7 +2,9 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.model.bo.ContractResult; @@ -11,6 +13,7 @@ import io.nuls.contract.model.tx.CallContractTransaction; import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.processor.CallContractTxProcessor; +import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.validator.CallContractTxValidator; import io.nuls.core.basic.Result; @@ -33,6 +36,8 @@ public class CallContractProcessor implements TransactionProcessor { private CallContractTxValidator callContractTxValidator; @Autowired private ContractHelper contractHelper; + @Autowired + private ChainManager chainManager; @Override public int getType() { @@ -101,8 +106,19 @@ public boolean rollback(int chainId, List txs, BlockHeader blockHea ChainManager.chainHandle(chainId); CallContractData call; for (Transaction tx : txs) { - call = new CallContractData(); - call.parse(tx.getTxData(), 0); + if (tx.getType() == TxType.CROSS_CHAIN) { + // add by pierre at 2019-12-01 处理type10交易的业务回滚, 需要协议升级 done + if(ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { + continue; + } + call = ContractUtil.parseCrossChainTx(tx, chainManager); + if (call == null) { + continue; + } + } else { + call = new CallContractData(); + call.parse(tx.getTxData(), 0); + } callContractTxProcessor.onRollback(chainId, new ContractWrapperTransaction(tx, call)); } return true; diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/util/DecodeResult.java b/module/nuls-smart-contract/src/main/java/org/ethereum/util/DecodeResult.java index e2d5492808..d1ff1b2ad0 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/util/DecodeResult.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/util/DecodeResult.java @@ -51,11 +51,11 @@ private String asString(Object decoded) { } else if (decoded instanceof byte[]) { return HexUtil.encode((byte[]) decoded); } else if (decoded instanceof Object[]) { - String result = ""; + StringBuilder result = new StringBuilder(); for (Object item : (Object[]) decoded) { - result += asString(item); + result.append(asString(item)); } - return result; + return result.toString(); } throw new RuntimeException("Not a valid type. Should not occur"); } From 38a6c98db5c11cf9ce6ff5d879df51294d0b9553 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Mon, 7 Sep 2020 15:21:52 +0800 Subject: [PATCH 089/304] commit local config files --- genesis-block.json | 31787 +++++++++++++++++++++++++++++++++++++++++-- module.ncf | 85 +- 2 files changed, 30603 insertions(+), 1269 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 325f5c84fc..e6e89fdc5e 100644 --- a/module.ncf +++ b/module.ncf @@ -1,23 +1,23 @@ [global] encoding=UTF-8 language=en -logPath=E:/work/src/nuls-v2/Logs -logLevel=DEBUG -dataPath=E:/work/src/nuls-v2/data +logPath=../../../../Logs +logLevel=INFO +dataPath=../../../../data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,22 +25,22 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -63,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,26 +78,33 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,45 +117,45 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] +dataPath=../../../../../data +logPath=../../../../../Logs #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip -serverIp=0.0.0.0 +serverIp=127.0.0.1 #httpServer的启动port serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.5.0 + From a86690a775b7c4f1a706467f0bb3a3040c376d7c Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 7 Sep 2020 16:47:11 +0800 Subject: [PATCH 090/304] update ps coinData decimals --- .../java/io/nuls/api/analysis/AnalysisHandler.java | 8 ++++++-- .../main/java/io/nuls/api/model/po/CoinFromInfo.java | 10 ++++++++++ .../src/main/java/io/nuls/api/model/po/CoinToInfo.java | 10 ++++++++++ .../src/main/java/io/nuls/api/service/SyncService.java | 3 +++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index 5954c539e1..c93c75e53b 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -290,7 +290,9 @@ public static List toCoinFromList(CoinData coinData) { fromInfo.setLocked(from.getLocked()); fromInfo.setAmount(from.getAmount()); fromInfo.setNonce(HexUtil.encode(from.getNonce())); - fromInfo.setSymbol(CacheManager.getRegisteredAsset(fromInfo.getAssetKey()).getSymbol()); + AssetInfo assetInfo = CacheManager.getRegisteredAsset(fromInfo.getAssetKey()); + fromInfo.setSymbol(assetInfo.getSymbol()); + fromInfo.setDecimal(assetInfo.getDecimals()); fromInfoList.add(fromInfo); } return fromInfoList; @@ -308,7 +310,9 @@ public static List toCoinToList(CoinData coinData) { coinToInfo.setChainId(to.getAssetsChainId()); coinToInfo.setLockTime(to.getLockTime()); coinToInfo.setAmount(to.getAmount()); - coinToInfo.setSymbol(CacheManager.getRegisteredAsset(coinToInfo.getAssetKey()).getSymbol()); + AssetInfo assetInfo = CacheManager.getRegisteredAsset(coinToInfo.getAssetKey()); + coinToInfo.setSymbol(assetInfo.getSymbol()); + coinToInfo.setDecimal(assetInfo.getDecimals()); toInfoList.add(coinToInfo); } return toInfoList; diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java index 43bea53468..9a99b28a2a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java @@ -18,6 +18,8 @@ public class CoinFromInfo { private String symbol; + private int decimal; + public String getAddress() { return address; } @@ -77,4 +79,12 @@ public void setSymbol(String symbol) { public String getAssetKey() { return chainId + "-" + assetsId; } + + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java index c430e171e1..901f51190a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java @@ -16,6 +16,8 @@ public class CoinToInfo { private String symbol; + private int decimal; + public String getAddress() { return address; } @@ -67,4 +69,12 @@ public void setSymbol(String symbol) { public String getAssetKey() { return chainId + "-" + assetsId; } + + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index 7cb0638432..deb2f8c4e5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -253,6 +253,9 @@ private void processCoinBaseTx(int chainId, TransactionInfo tx) { accountInfo.setTotalReward(accountInfo.getTotalReward().add(output.getAmount())); accountInfo.setLastReward(output.getAmount()); } +// AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); +// ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); +// txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); } for (String address : addressSet) { AccountInfo accountInfo = queryAccountInfo(chainId, address); From 538d4b7ec10a876975092d04131b8aa3114e0663 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Tue, 8 Sep 2020 14:24:34 +0800 Subject: [PATCH 091/304] commit local config files --- .gitignore | 250 +++++++++--------- .../handler/ForwardSmallBlockHandler.java | 2 +- 2 files changed, 126 insertions(+), 126 deletions(-) diff --git a/.gitignore b/.gitignore index 734568a661..aa26020cdf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,126 +1,126 @@ - -# Created by https://www.gitignore.io/api/macos,maven,jetbrains+iml - -### JetBrains+iml ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.package.ncf -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Ruby plugin and RubyMine -/.rakeTasks - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### JetBrains+iml Patch ### -# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 - -*.iml -modules.xml -.idea/misc.xml -*.ipr - -### JetBrains+all Patch ### -# Ignores the whole idea folder -# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 - -.idea/ - -### macOS ### -*.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### Maven ### -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties - -# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) -!/.mvn/wrapper/maven-wrapper.jar - -# End of https://www.gitignore.io/api/macos,maven,jetbrains+iml - -# Nuls output -# log -logs/ -/data/ -!tools/nuls-tools/base-tools/src/main/java/io/nuls/base/data -keystore/ -Modules/ -NULS-Wallet-linux64-beta* -NULS_Wallet* -config_tmp/ -NULS-Wallet-linux64-alpha* + +# Created by https://www.gitignore.io/api/macos,maven,jetbrains+iml + +### JetBrains+iml ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.package.ncf +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Ruby plugin and RubyMine +/.rakeTasks + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### JetBrains+iml Patch ### +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +### JetBrains+all Patch ### +# Ignores the whole idea folder +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 + +.idea/ + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + +# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) +!/.mvn/wrapper/maven-wrapper.jar + +# End of https://www.gitignore.io/api/macos,maven,jetbrains+iml + +# Nuls output +# log +logs/ +/data-prod/ +!tools/nuls-tools/base-tools/src/main/java/io/nuls/base/data +keystore/ +Modules/ +NULS-Wallet-linux64-beta* +NULS_Wallet* +config_tmp/ +NULS-Wallet-linux64-alpha* .package-version \ No newline at end of file diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/ForwardSmallBlockHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/ForwardSmallBlockHandler.java index 7469d8011c..594db74c3c 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/ForwardSmallBlockHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/ForwardSmallBlockHandler.java @@ -72,7 +72,7 @@ public void process(int chainId, String nodeId, String msgStr) { NetworkCall.setHashAndHeight(chainId, blockHash, height, nodeId); } BlockForwardEnum status = SmallBlockCacher.getStatus(chainId, blockHash); - logger.debug("recieve " + message + " from node-" + nodeId + ", hash:" + blockHash); +// logger.debug("recieve " + message + " from node-" + nodeId + ", hash:" + blockHash); List nodes = context.getOrphanBlockRelatedNodes().get(blockHash); if (nodes != null && !nodes.contains(nodeId)) { nodes.add(nodeId); From b1de8607a0623b936fc462ee4bba5584598d1cfb Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Sep 2020 14:27:39 +0800 Subject: [PATCH 092/304] test code --- .../src/main/java/org/ethereum/trie/TrieImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java index 49251acd33..9031b1ab50 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java @@ -111,10 +111,14 @@ public boolean resolveCheck() { } private void resolve() { - if (!resolveCheck()) { + //TODO pierre test + + logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); + throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); + //TODO pierre - + /*if (!resolveCheck()) { logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); - } + }*/ } public byte[] encode() { From 500c89eaead8368261de85589f452cdf6df5c9e2 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Wed, 9 Sep 2020 10:26:10 +0800 Subject: [PATCH 093/304] commit local config files --- genesis-block_dev.json | 2 +- module-dev.ncf | 161 ++++++++++++++++++ .../main/java/org/ethereum/trie/TrieImpl.java | 8 +- .../nrc20/ContractNRC20TokenSendTxTest.java | 2 +- 4 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 module-dev.ncf diff --git a/genesis-block_dev.json b/genesis-block_dev.json index e6dc069c74..74e38b2c66 100644 --- a/genesis-block_dev.json +++ b/genesis-block_dev.json @@ -3,7 +3,7 @@ "time": "1531152", "txs": [ { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", "amount": 1000000000000000, "lockTime": 0 }, diff --git a/module-dev.ncf b/module-dev.ncf new file mode 100644 index 0000000000..15f2136eb6 --- /dev/null +++ b/module-dev.ncf @@ -0,0 +1,161 @@ +[global] +encoding=UTF-8 +language=en +logPath=../../../../Logs +logLevel=INFO +dataPath=../../../../data +#默认本链ID +chainId=2 +#地址前缀 +addressPrefix=NULS +#默认本链主资产ID +assetId=1 +#默认资产小数位数 +decimals=8 +#默认链名称 +chainName=nuls +#本链默认资产符号 +symbol=NULS +#主网链id +mainChainId=2 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 + +[network] +port=8001 +crossPort=8002 +#魔法参数 +packetMagic=20200908 +#种子节点 +selfSeedIps=192.168.1.37:8001 +#主网的跨链种子连接节点 +moonSeedIps=192.168.1.37:8002 +#最大入网连接数 +maxInCount=300 +#最大出网连接数 +maxOutCount=20 + +[account] +keystoreFolder=/keystore/backup +dependent=protocol-update + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=0 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json +dependent=cross-chain,smart-contract,protocol-update + +[consensus] +#种子节点列表 +seedNodes=tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=1 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/365*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=0.4 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs +dependent=protocol-update,smart-contract,cross-chain + +[transaction] +dependent=protocol-update,smart-contract + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +dependent=protocol-update + +[chain-manager] +dependent=smart-contract,protocol-update + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=8003 +#数据库url地址 +databaseUrl=127.0.0.1 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 +#连接超时时间 +connectTimeOut=30000 +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +dependent=smart-contract,cross-chain + +[cross-chain] +dataPath=../../../../../data +logPath=../../../../../Logs +#跨链节点链接的最小值 +minNodeAmount=3 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=192.168.1.37:8002 +#主网验证人列表 +verifiers=tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 +dependent=protocol-update,smart-contract + +[nuls-api] +#httpServer的启动ip +serverIp=127.0.0.1 +#httpServer的启动port +serverPort=8004 +dependent=smart-contract,cross-chain + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=1000 +dependent=smart-contract,cross-chain + +[cmd-client] +clientVersion=2.5.0 + diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java index 9031b1ab50..dff49a4c1d 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java @@ -112,13 +112,13 @@ public boolean resolveCheck() { private void resolve() { //TODO pierre test + - logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); - throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); +// logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); +// throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); //TODO pierre - - /*if (!resolveCheck()) { + if (!resolveCheck()) { logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); - }*/ + } } public byte[] encode() { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index f2f9db2971..5c02fd791d 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -67,7 +67,7 @@ public void createContract() throws Exception { String symbol = "KongQiBi"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; - Map params = this.makeCreateParams(sender, contractCode, "kqb", remark, name, symbol, amount, decimals); + Map params = this.makeCreateParams("tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", contractCode, "kqb", remark, name, symbol, amount, decimals); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); From 58f1751600d2dd928b88b376b8117a9a14920387 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 9 Sep 2020 13:00:17 +0800 Subject: [PATCH 094/304] contract database prune disabled --- .../src/main/java/org/ethereum/config/SystemProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java index 886bcac298..7e8b326474 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java @@ -153,7 +153,7 @@ public SystemProperties() { values.put("crypto.hash.alg256", "ETH-KECCAK-256"); values.put("crypto.hash.alg512", "ETH-KECCAK-512"); values.put("database.maxOpenFiles", 512); - values.put("database.prune.enabled", true); + values.put("database.prune.enabled", false); values.put("database.prune.maxDepth", 192); values.put("keyvalue.datasource", ""); config = ConfigFactory.parseMap(values); From 1235739efcb2b22b8e7458852624887c35db1926 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 9 Sep 2020 15:07:19 +0800 Subject: [PATCH 095/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E4=B8=8D=E9=AA=8C=E8=AF=81=E7=AD=BE=E5=90=8D=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java index c8d01aa431..d041a0e2d7 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsCrossChainServiceImpl.java @@ -110,7 +110,7 @@ public Result createCrossTx(Map params) { List coinToList = coinDataManager.assemblyCoinTo(crossTxTransferDTO.getListTo(), chain); coinDataManager.verifyCoin(coinFromList, coinToList, chain); int txSize = tx.size(); - txSize += P2PHKSignature.SERIALIZE_LENGTH; +// txSize += P2PHKSignature.SERIALIZE_LENGTH; CoinData coinData = coinDataManager.getCrossCoinData(chain, coinFromList, coinToList, txSize, config.isMainNet()); tx.setCoinData(coinData.serialize()); tx.setHash(NulsHash.calcHash(tx.serializeForHash())); From c9040eeb40932c66ddeb970462ecc687ccf29c3b Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 9 Sep 2020 15:07:56 +0800 Subject: [PATCH 096/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E8=B5=84=E4=BA=A7=E6=98=AF=E5=90=A6=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E6=B3=A8=E5=86=8C=E6=88=90=E8=B7=A8=E9=93=BE=E8=B5=84?= =?UTF-8?q?=E4=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/NulsCrossChainErrorCode.java | 2 ++ .../srorage/RegisteredCrossChainService.java | 9 ++++++ .../imp/RegisteredCrossChainServiceImpl.java | 14 +++++++++ .../utils/validator/CrossTxValidator.java | 29 ++++++++++++++++--- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java index 3ec2c6a023..135a88d2b5 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java @@ -41,4 +41,6 @@ public interface NulsCrossChainErrorCode extends CommonCodeConstanst { ErrorCode CROSS_ASSERT_VALID_ERROR = ErrorCode.init("cc_0028"); ErrorCode TO_ADDRESS_ERROR = ErrorCode.init("cc_0029"); ErrorCode TO_MANY_VERIFIER_EXIT = ErrorCode.init("cc_0030"); + //资产没有注册跨链 + ErrorCode ASSET_NOT_REG_CROSS_CHAIN = ErrorCode.init("cc_0031"); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/RegisteredCrossChainService.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/RegisteredCrossChainService.java index 5cb3b41e0e..3238bb53e7 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/RegisteredCrossChainService.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/RegisteredCrossChainService.java @@ -22,4 +22,13 @@ public interface RegisteredCrossChainService { * @return 已注册跨链的链信息 * */ RegisteredChainMessage get(); + + /** + * 判断指定资产是否可跨链交易 + * @param assetChainId + * @param assetId + * @return + */ + boolean canCross(int assetChainId,int assetId); + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java index a3388e9e44..b05f6e839b 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java @@ -43,4 +43,18 @@ public RegisteredChainMessage get() { } return null; } + + + @Override + public boolean canCross(int assetChainId, int assetId) { + RegisteredChainMessage all = get(); + if(all == null || all.getChainInfoList() == null){ + return false; + } + return all.getChainInfoList().stream(). + anyMatch(chainInfo-> + chainInfo.getAssetInfoList().stream().anyMatch( + assetInfo-> assetInfo.getAssetId() == assetId && chainInfo.getChainId() == assetChainId)); + } + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java index e625672c23..f7bc957e84 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java @@ -8,8 +8,10 @@ import io.nuls.base.signture.TransactionSignature; import io.nuls.core.constant.TxType; import io.nuls.core.crypto.ECKey; +import io.nuls.core.model.ArraysTool; import io.nuls.core.model.ByteUtils; import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.SerializeUtils; import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.message.BroadCtxSignMessage; import io.nuls.crosschain.base.model.bo.ChainInfo; @@ -24,6 +26,7 @@ import io.nuls.crosschain.nuls.rpc.call.NetWorkCall; import io.nuls.crosschain.nuls.srorage.ConvertHashService; import io.nuls.crosschain.nuls.srorage.ConvertCtxService; +import io.nuls.crosschain.nuls.srorage.RegisteredCrossChainService; import io.nuls.crosschain.nuls.utils.CommonUtil; import io.nuls.crosschain.nuls.utils.TxUtil; import io.nuls.core.core.annotation.Autowired; @@ -59,6 +62,9 @@ public class CrossTxValidator { @Autowired private ChainManager chainManager; + @Autowired + RegisteredCrossChainService registeredCrossChainService; + /** * 验证交易 * Verifying transactions @@ -72,19 +78,29 @@ public class CrossTxValidator { public boolean validateTx(Chain chain, Transaction tx, BlockHeader blockHeader) throws NulsException, IOException{ //判断这笔跨链交易是否属于本链 CoinData coinData = tx.getCoinDataInstance(); - if (!coinDataValid(chain, coinData, tx.size())) { - throw new NulsException(NulsCrossChainErrorCode.COINDATA_VERIFY_FAIL); - } //如果本链为发起链且本链不为主链,则需要生成主网协议的跨链交易验证并验证签名 int fromChainId = AddressTool.getChainIdByAddress(coinData.getFrom().get(0).getAddress()); int toChainId = AddressTool.getChainIdByAddress(coinData.getTo().get(0).getAddress()); - if(toChainId == 0){ throw new NulsException(NulsCrossChainErrorCode.TO_ADDRESS_ERROR); } //本链协议跨链交易不需要签名拜占庭验证,只需验证交易签名 if(chain.getChainId() == fromChainId){ if(tx.getType() == TxType.CROSS_CHAIN){ + for (CoinFrom from : coinData.getFrom()) { + //如果是合约地址不加入去重判断 + if (AddressTool.validContractAddress(from.getAddress(),AddressTool.getChainIdByAddress(from.getAddress()))) { + continue; + } + + if (!registeredCrossChainService.canCross(from.getAssetsChainId(),from.getAssetsId())){ + throw new NulsException(NulsCrossChainErrorCode.ASSET_NOT_REG_CROSS_CHAIN); + } + + } + if (!coinDataValid(chain, coinData, tx.size())) { + throw new NulsException(NulsCrossChainErrorCode.COINDATA_VERIFY_FAIL); + } //验证From中地址是否都签了名 Set fromAddressSet = tx.getCoinDataInstance().getFromAddressList(); TransactionSignature transactionSignature = new TransactionSignature(); @@ -109,6 +125,11 @@ public boolean validateTx(Chain chain, Transaction tx, BlockHeader blockHeader) } } }else{ + //验证交易手续费时,不验证签名数据所占的空间 + int validateTxSize = tx.size() - SerializeUtils.sizeOfBytes(tx.getTransactionSignature()); + if (!coinDataValid(chain, coinData, validateTxSize)) { + throw new NulsException(NulsCrossChainErrorCode.COINDATA_VERIFY_FAIL); + } Transaction realCtx = tx; List verifierList; int minPassCount; From 3ffcf1ebe67788b45a9bcd1c56f14fc7b36ceb14 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 9 Sep 2020 15:08:08 +0800 Subject: [PATCH 097/304] test --- .../test/account/TestCreateProcessor.java | 121 +++++++++++++++++- module/nuls-cross-chain/cross-chain/pom.xml | 6 + .../java/io/nuls/test/resend/ReadCtx.java | 105 +++++++++++++++ 3 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java diff --git a/module/nuls-cmd-client/src/test/java/io/nuls/cmd/client/test/account/TestCreateProcessor.java b/module/nuls-cmd-client/src/test/java/io/nuls/cmd/client/test/account/TestCreateProcessor.java index e9b8283406..ce9a52df0c 100644 --- a/module/nuls-cmd-client/src/test/java/io/nuls/cmd/client/test/account/TestCreateProcessor.java +++ b/module/nuls-cmd-client/src/test/java/io/nuls/cmd/client/test/account/TestCreateProcessor.java @@ -1,16 +1,31 @@ package io.nuls.cmd.client.test.account; +import io.nuls.base.api.provider.Provider; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.ServiceManager; import io.nuls.base.api.provider.account.AccountService; import io.nuls.base.api.provider.account.facade.CreateAccountReq; +import io.nuls.base.api.provider.account.facade.ImportAccountByPrivateKeyReq; +import io.nuls.base.api.provider.transaction.TransferService; +import io.nuls.base.api.provider.transaction.facade.TransferReq; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.Address; import io.nuls.cmd.client.CmdClientBootstrap; import io.nuls.cmd.client.CommandResult; import io.nuls.cmd.client.processor.account.CreateProcessor; +import io.nuls.core.constant.BaseConstant; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.log.Log; +import io.nuls.core.parse.SerializeUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.*; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; /** @@ -20,10 +35,12 @@ */ public class TestCreateProcessor { - AccountService accountService = ServiceManager.get(AccountService.class); + AccountService accountService; @Before public void before(){ + ServiceManager.init(1, Provider.ProviderType.RPC); + accountService = ServiceManager.get(AccountService.class); CmdClientBootstrap.main(new String[]{}); try { TimeUnit.SECONDS.sleep(2); @@ -48,5 +65,107 @@ public void testCreate(){ System.out.println(res.getMessage()); } + @Test + public void testMain() throws IOException { + int chainId = 1; + int assetId = 1; + String password = "nuls123456"; + BigInteger amount = BigInteger.valueOf( + 23000000000000L); + String formAddress = "NULSd6HgZaT3KuXGuMomS1yGPTzMgedAMwjCF"; + String prikey = "f2559da1414960b6413938979109262272f9dbae81a704891f0db69edcbdbb30"; + AccountService accountService = ServiceManager.get(AccountService.class); + accountService.importAccountByPrivateKey(new ImportAccountByPrivateKeyReq(password,prikey,true)); + Map ip = new HashMap<>(); + ip.put("nuls130","192.168.1.130"); + ip.put("nuls131","192.168.1.131"); + ip.put("nuls132","192.168.1.132"); + ip.put("nuls133","192.168.1.133"); + ip.put("nuls134","192.168.1.134"); + ip.put("nuls135","192.168.1.135"); + ip.put("nuls136","192.168.1.136"); + ip.put("nuls137","192.168.1.137"); + ip.put("nuls138","192.168.1.138"); + ip.put("nuls139","192.168.1.139"); + ip.put("nuls140","192.168.1.140"); + String file_path = System.getProperty("user.dir") + "/.temp/"; + File file = new File(file_path); + if(!file.exists()){ + file.mkdir(); + } + String addressPrefix = "NULS"; +// BufferedReader ca = new BufferedReader(new FileReader(new File(file_path + "cp"))); +// String line = ca.readLine(); + Map cprikey = new HashMap<>(); +// while(line != null){ +// String[] ary = line.split("="); +// cprikey.put(ary[0],ary[1]); +// line = ca.readLine(); +// } +// ca.close(); + BufferedWriter cp = new BufferedWriter(new FileWriter(new File(file_path + "cp"))); + BufferedWriter pp = new BufferedWriter(new FileWriter(new File(file_path + "pp"))); + BufferedWriter pa = new BufferedWriter(new FileWriter(new File(file_path + "pa"))); + BufferedWriter pascript = new BufferedWriter(new FileWriter(new File(file_path + "pascript"))); + BufferedWriter ccscript = new BufferedWriter(new FileWriter(new File(file_path + "ccscript"))); + BufferedWriter calias = new BufferedWriter(new FileWriter(new File(file_path + "calias"))); + + pascript.write("#!/bin/bash"); + pascript.newLine(); + try{ + int count = ip.size(); + for (int i = 0; i < count; i++) { + String id = String.format("nuls%02d",i+1); + String nk = ip.get(id); +// String agentPrikey = cprikey.get(nk); + ECKey key = new ECKey(); + Address address = new Address(chainId, addressPrefix, BaseConstant.DEFAULT_ADDRESS_TYPE, SerializeUtils.sha256hash160(key.getPubKey())); + cp.write(nk + "=" + key.getPrivateKeyAsHex()); + cp.newLine(); + String caddress = AddressTool.getStringAddressByBytes(address.getAddressBytes(), address.getPrefix()); + TransferService transferService = ServiceManager.get(TransferService.class); + TransferReq.TransferReqBuilder builder = + new TransferReq.TransferReqBuilder(chainId, assetId) + .addForm(chainId, assetId, formAddress, password, amount) + .addTo(chainId, assetId, caddress, amount); + Result result = transferService.transfer(builder.build(new TransferReq())); + if(result.isFailed()){ + Log.error("失败:{}",result.getMessage()); + }else{ + Log.info("{}",result); + } + ImportAccountByPrivateKeyReq req = new ImportAccountByPrivateKeyReq(password,key.getPrivateKeyAsHex(),true); + req.setChainId(chainId); + accountService.importAccountByPrivateKey(req); + key = new ECKey(); + address = new Address(chainId, addressPrefix, BaseConstant.DEFAULT_ADDRESS_TYPE, SerializeUtils.sha256hash160(key.getPubKey())); + pp.write(nk + "=" + key.getPrivateKeyAsHex()); + pp.newLine(); + String paddress = AddressTool.getStringAddressByBytes(address.getAddressBytes(), address.getPrefix()); + pa.write(id + "=" + nk + "=" + paddress); + pa.newLine(); + pascript.write("ssh root@"+nk+" 'bash -s ' < ./remote-import-address " + key.getPrivateKeyAsHex()); + pascript.newLine(); + ccscript.write("createagent " + caddress + " " + paddress + " 200000 " + caddress + " " + password); + ccscript.newLine(); + calias.write("setalias " + caddress + " " + String.format("nuls%02d",i+1) + " " + password); + calias.newLine(); + } + cp.flush(); + pp.flush(); + pa.flush(); + calias.flush(); + pascript.flush(); + ccscript.flush(); + }finally { + cp.close(); +// ca.close(); + pp.close(); + pa.close(); + calias.close(); + pascript.close(); + ccscript.close(); + } + } } diff --git a/module/nuls-cross-chain/cross-chain/pom.xml b/module/nuls-cross-chain/cross-chain/pom.xml index 2fa6e78cfa..bb2a8adc66 100644 --- a/module/nuls-cross-chain/cross-chain/pom.xml +++ b/module/nuls-cross-chain/cross-chain/pom.xml @@ -17,6 +17,12 @@ base-lib ${project.version} + + io.nuls.v2 + nuls-base-api-provider + 1.1.7-beta1 + test + diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java new file mode 100644 index 0000000000..f58146d116 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java @@ -0,0 +1,105 @@ +package io.nuls.test.resend; + +import io.nuls.base.data.NulsHash; +import io.nuls.base.data.Transaction; +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.constant.ErrorCode; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rockdb.service.RocksDBService; +import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.info.NoUse; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.crosschain.base.constant.CommandConstant; +import io.nuls.crosschain.base.message.BroadCtxSignMessage; +import io.nuls.crosschain.nuls.model.po.CtxStatusPO; +import io.nuls.crosschain.nuls.rpc.call.NetWorkCall; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: zhoulijun + * @Time: 2020/8/7 10:29 + * @Description: 功能描述 + */ +public class ReadCtx { + + static int CHAIN_ID = 9; + + public static void main(String[] args) throws Exception { + NoUse.mockModule(); + Log.info("reday"); + RocksDBService.init("/Users/zhoulijun/workspace/nuls/nuls_2.0/NULS_Wallet/cross-chain"); + List hashList = new ArrayList<>(); + hashList.add("8779f82717356ab168b5d44ca341b5103b86819fa8a4f5f15fe535cc6cfd87e0"); + hashList.forEach(hash->{ + resetBroadcast(hash); + }); + } + + public static void reSend(String hash){ + byte[] b = RocksDBService.get("new_ctx_status1", HexUtil.decode(hash)); + Log.info("{}", HexUtil.encode(b)); + CtxStatusPO ctx = new CtxStatusPO(); + try { + ctx.parse(b,0); + Transaction tx = ctx.getTx(); + TransactionSignature signature = new TransactionSignature(); + signature.parse(tx.getTransactionSignature(),0); + Log.info("{}",signature.getSignersCount()); + Log.info("txHex:{}", HexUtil.encode(tx.serialize())); + Log.info("{}",sendTx(HexUtil.encode(tx.serialize()))); + } catch (NulsException | IOException e) { + e.printStackTrace(); + } + } + + public static void resetBroadcast(String hash){ + byte[] b = RocksDBService.get("new_ctx_status1", HexUtil.decode(hash)); + Log.info("{}", HexUtil.encode(b)); + CtxStatusPO ctx = new CtxStatusPO(); + try { + ctx.parse(b,0); + Transaction tx = ctx.getTx(); + TransactionSignature signature = new TransactionSignature(); + signature.parse(tx.getTransactionSignature(),0); + signature.getP2PHKSignatures().forEach(d->{ + Log.info("p:{}",HexUtil.encode(d.getPublicKey())); + }); + BroadCtxSignMessage message = new BroadCtxSignMessage(); + message.setLocalHash(tx.getHash()); + message.setSignature(signature.getP2PHKSignatures().get(0).serialize()); + NetWorkCall.broadcast(1, message, CommandConstant.BROAD_CTX_SIGN_MESSAGE, false); + } catch (NulsException | IOException e) { + e.printStackTrace(); + } + } + + public static String sendTx(String tx) throws NulsException { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, CHAIN_ID); + params.put("tx", tx); + try { + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.TX.abbr, "tx_newTx", params); + if (!cmdResp.isSuccess()) { + String errorCode = cmdResp.getResponseErrorCode(); + Log.error("Call interface [{}] error, ErrorCode is {}, ResponseComment:{}", + "tx_newTx", errorCode, cmdResp.getResponseComment()); + throw new NulsException(ErrorCode.init(errorCode)); + } + return JSONUtils.obj2json(cmdResp.getResponseData()); + }catch (Exception e){ + Log.error("fail",e); + return null; + } + } + +} From b7b557326a3900614613ab3e698ac379365cd8fa Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 9 Sep 2020 16:24:19 +0800 Subject: [PATCH 098/304] add bool --- .../src/main/java/io/nuls/contract/util/ContractUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index 5a39ef1f39..8603359f70 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -161,6 +161,7 @@ public static ContractWrapperTransaction parseContractTransaction(ContractTempTr // add by pierre at 2019-11-02 需要协议升级 done case CROSS_CHAIN: if(ProtocolGroupManager.getCurrentVersion(tx.getChainId()) < ContractContext.UPDATE_VERSION_V250) { + isContractTx = false; break; } contractData = parseCrossChainTx(tx, chainManager); From 2676091da2c31cb2c99d3f645aacb5a54ff5672e Mon Sep 17 00:00:00 2001 From: niels1286 Date: Wed, 9 Sep 2020 17:09:44 +0800 Subject: [PATCH 099/304] update config --- .../main/java/io/nuls/core/rpc/info/Constants.java | 2 +- .../rpc/netty/processor/RequestMessageProcessor.java | 10 ++++++++-- .../io/nuls/block/message/handler/BlockHandler.java | 12 ++++++------ .../nuls/block/message/handler/CompleteHandler.java | 3 +++ .../block/message/handler/SmallBlockHandler.java | 4 ++++ .../io/nuls/block/thread/monitor/BaseMonitor.java | 4 ++-- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/info/Constants.java b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/info/Constants.java index 56c21e8baf..bbad75f8cc 100644 --- a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/info/Constants.java +++ b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/info/Constants.java @@ -217,7 +217,7 @@ public static String nextSequence() { public static final int TRY_COUNT = 3; - public static final int THREAD_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 2; + public static final int THREAD_POOL_SIZE = Runtime.getRuntime().availableProcessors()>=8?Runtime.getRuntime().availableProcessors() * 2:16; public static final int QUEUE_SIZE = 100000; diff --git a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/netty/processor/RequestMessageProcessor.java b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/netty/processor/RequestMessageProcessor.java index e2022fdfc5..6e35014341 100644 --- a/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/netty/processor/RequestMessageProcessor.java +++ b/common/nuls-core-rpc/src/main/java/io/nuls/core/rpc/netty/processor/RequestMessageProcessor.java @@ -514,8 +514,14 @@ private static Response invoke(String invokeClass, String invokeMethod, Map para Method method = clz.getDeclaredMethod(invokeMethod, Map.class); BaseCmd cmd = (BaseCmd) handlerMap.get(invokeClass); if (cmd == null) { - return MessageUtil.newFailResponse("", CMD_NOT_FOUND); + return MessageUtil.newFailResponse("", CMD_NOT_FOUND); } - return (Response) method.invoke(cmd, params); + long start = System.currentTimeMillis(); + Response response = (Response) method.invoke(cmd, params); + long use = System.currentTimeMillis() - start; + if (use > 1000) { + Log.warn(invokeMethod + " , use:{}ms", use); + } + return response; } } diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/BlockHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/BlockHandler.java index eaa197cfd4..2be9b77c9f 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/BlockHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/BlockHandler.java @@ -65,7 +65,7 @@ public void process(int chainId, String nodeId, String msgStr) { if (b && context.getBlockMap().put(height, block) == null) { context.getCachedBlockSize().addAndGet(block.size()); } else { - logger.warn("ignore BlockMessage from node-{}, blockHeight-{}, isNeedSyn-{}, LatestHeight-{}", nodeId, height, context.isNeedSyn(), context.getLatestHeight()); + logger.debug("ignore BlockMessage from node-{}, blockHeight-{}, isNeedSyn-{}, LatestHeight-{}", nodeId, height, context.isNeedSyn(), context.getLatestHeight()); } } else { if (block != null) { @@ -73,11 +73,11 @@ public void process(int chainId, String nodeId, String msgStr) { } SingleBlockCacher.receiveBlock(chainId, message); } - if (block != null) { - logger.debug("recieve BlockMessage from node-" + nodeId + ", hash:" + block.getHeader().getHash() + ", height-" + block.getHeader().getHeight()); - } else { - logger.debug("recieve null BlockMessage from node-" + nodeId); - } +// if (block != null) { +// logger.debug("recieve BlockMessage from node-" + nodeId + ", hash:" + block.getHeader().getHash() + ", height-" + block.getHeader().getHeight()); +// } else { +// logger.debug("recieve null BlockMessage from node-" + nodeId); +// } } diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java index 04c98381ef..d87b9ec3cf 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java @@ -56,6 +56,9 @@ public void process(int chainId, String nodeId, String msgStr) { ChainContext context = ContextManager.getContext(chainId); NulsLogger logger = context.getLogger(); logger.debug("recieve " + message + " from node-" + nodeId); + if(null == context.getDownloaderParams()){ + return; + } Node node = context.getDownloaderParams().getNodeMap().get(nodeId); node.adjustCredit(message.isSuccess()); node.setNodeEnum(NodeEnum.IDLE); diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java index 5a84fe9dee..a7a3e81da7 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java @@ -88,6 +88,10 @@ public void process(int chainId, String nodeId, String msgStr) { } BlockHeader header = smallBlock.getHeader(); + + if(header.getHeight() == 3125788){ + return; + } NulsHash blockHash = header.getHash(); //阻止恶意节点提前出块,拒绝接收未来一定时间外的区块 ChainParameters parameters = context.getParameters(); diff --git a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/BaseMonitor.java b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/BaseMonitor.java index 71cd3856bd..472757f1a2 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/BaseMonitor.java +++ b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/BaseMonitor.java @@ -48,8 +48,8 @@ public void run() { //判断该链的运行状态,只有正常运行时才运行定时监控线程 if (runningStatusEnumList.contains(status)) { process(chainId, context, logger); - } else { - logger.debug("skip process, status is " + status); +// } else { +// logger.debug("skip process, status is " + status); } } catch (Exception e) { context.setStatus(status); From a7413e99709c48274f27d1184a0e6d3a63387cf6 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Wed, 9 Sep 2020 17:11:34 +0800 Subject: [PATCH 100/304] update config --- .../src/main/java/org/ethereum/trie/TrieImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java index dff49a4c1d..49251acd33 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/trie/TrieImpl.java @@ -111,10 +111,6 @@ public boolean resolveCheck() { } private void resolve() { - //TODO pierre test + -// logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); -// throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); - //TODO pierre - if (!resolveCheck()) { logger.error("Invalid Trie state, can't resolve hash " + toHexString(hash)); throw new RuntimeException("Invalid Trie state, can't resolve hash " + toHexString(hash)); From 43eec807cba66834f1f1f7047d5e3d6528c85dbc Mon Sep 17 00:00:00 2001 From: niels1286 Date: Wed, 9 Sep 2020 17:28:51 +0800 Subject: [PATCH 101/304] update config --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index aa26020cdf..1cabefadd9 100644 --- a/.gitignore +++ b/.gitignore @@ -116,6 +116,7 @@ buildNumber.properties # log logs/ /data-prod/ +/data/ !tools/nuls-tools/base-tools/src/main/java/io/nuls/base/data keystore/ Modules/ From f919c6fa80db79f0fecd806902f5fb33c1ed6566 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Wed, 9 Sep 2020 17:48:22 +0800 Subject: [PATCH 102/304] update config --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index e70b4523ae..24ba9a38de 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.6.0 +2.7.0 From 932e545f25bdc7766e2d86a7d3461eb9a195f9a8 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 10 Sep 2020 12:06:31 +0800 Subject: [PATCH 103/304] add test logs --- .../contract/callable/ContractTxCallable.java | 8 +++-- .../service/impl/ContractServiceImpl.java | 30 +++++++++---------- .../src/main/java/io/nuls/contract/vm/VM.java | 11 +++++++ .../vm/program/impl/ProgramExecutorImpl.java | 27 +++++++++++++---- 4 files changed, 54 insertions(+), 22 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java index ff9af1df6e..88d67a8eaa 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java @@ -141,10 +141,14 @@ public ContractResult call() throws Exception { // end code by pierre case CALL_CONTRACT: contractResult = contractExecutor.call(executor, contractData, number, preStateRoot, extractPublicKey(tx)); - if(!makeContractResultAndCheckGasSerial(tx, contractResult, batchInfo)) { + + boolean bool = makeContractResultAndCheckGasSerial(tx, contractResult, batchInfo); + + if(!bool) { break; } checkCallResult(tx, callableResult, contractResult); + break; case DELETE_CONTRACT: contractResult = contractExecutor.delete(executor, contractData, number, preStateRoot); @@ -166,7 +170,7 @@ public ContractResult call() throws Exception { // end code by pierre } //if (Log.isDebugEnabled()) { - // Log.debug("[Per Contract Execution Cost Time] TxType is {}, TxHash is {}, Cost Time is {}", tx.getType(), tx.getHash().toString(), System.currentTimeMillis() - start); + Log.info("[Per Contract Execution Cost Time] TxType is {}, TxHash is {}, Cost Time is {}", tx.getType(), tx.getHash().toString(), System.currentTimeMillis() - start); //} return contractResult; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index 9d08477f15..ba81979271 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -157,13 +157,13 @@ private Result validContractTx(int chainId, Transaction tx) { @Override public Result invokeContractOneByOne(int chainId, ContractTempTransaction tx) { try { - if (Log.isDebugEnabled()) { - Log.debug("[Invoke Contract] TxType is [{}], hash is [{}]", tx.getType(), tx.getHash().toString()); - } +// if (Log.isDebugEnabled()) { + Log.info("[Invoke Contract] TxType is [{}], hash is [{}]", tx.getType(), tx.getHash().toString()); +// } tx.setChainId(chainId); ContractWrapperTransaction wrapperTx = ContractUtil.parseContractTransaction(tx, chainManager); // add by pierre at 2019-10-20 - if(wrapperTx == null) { + if (wrapperTx == null) { return getSuccess(); } // end code by pierre @@ -250,13 +250,13 @@ public Result packageEnd(int chainId, long blockHeight) { ContractPackageDto dto; do { dto = batchInfo.getContractPackageDto(); - if(dto != null) { + if (dto != null) { break; } long beforeEndTime = batchInfo.getBeforeEndTime(); long now0 = System.currentTimeMillis(); long timeOut = 1200 - (now0 - beforeEndTime); - if(timeOut <= 0) { + if (timeOut <= 0) { Log.warn("超过了预留的超时时间[0]: {}", timeOut); break; } @@ -269,23 +269,23 @@ public Result packageEnd(int chainId, long blockHeight) { Log.error("wait end time out[0]", e.getMessage()); } dto = batchInfo.getContractPackageDto(); - if(dto != null) { + if (dto != null) { break; } long now1 = System.currentTimeMillis(); Log.info("第一次花费的时间: {}", now1 - beforeEndTime); // 若超过了区块合约gas或者txCount限制,则中断未执行完的线程 - if(batchInfo.isExceed()) { + if (batchInfo.isExceed()) { Map> contractMap = batchInfo.getContractMap(); - if(!contractMap.isEmpty()) { + if (!contractMap.isEmpty()) { Set>> entries = contractMap.entrySet(); String hash; Future _future; int count = 0; - for(Map.Entry> entry : entries) { + for (Map.Entry> entry : entries) { hash = entry.getKey(); _future = entry.getValue(); - if(_future.isDone()) { + if (_future.isDone()) { continue; } _future.cancel(true); @@ -299,7 +299,7 @@ public Result packageEnd(int chainId, long blockHeight) { long now2 = System.currentTimeMillis(); timeOut = 1500 - (now2 - beforeEndTime); Log.info("预留的超时时间[1]: {}", timeOut); - if(timeOut <= 0) { + if (timeOut <= 0) { Log.warn("超过了预留的超时时间[1]: {}", timeOut); break; } @@ -313,12 +313,12 @@ public Result packageEnd(int chainId, long blockHeight) { BlockHeader currentBlockHeader = batchInfo.getCurrentBlockHeader(); ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); long s = 0L; - if(Log.isDebugEnabled()) { + if (Log.isDebugEnabled()) { s = System.currentTimeMillis(); } Result batchExecuteResult = contractExecutor.commitBatchExecute(batchExecutor); long e; - if(Log.isDebugEnabled()) { + if (Log.isDebugEnabled()) { e = System.currentTimeMillis(); Log.debug("合约提交持久化时间cost: {}", e - s); } @@ -338,7 +338,7 @@ public Result commitProcessor(int chainId, List txDataList, String block ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); if (contractPackageDto != null) { List offlineTxHashList = contractPackageDto.getOfflineTxHashList(); - if(offlineTxHashList != null && !offlineTxHashList.isEmpty()) { + if (offlineTxHashList != null && !offlineTxHashList.isEmpty()) { BlockHeader header = new BlockHeader(); header.parse(RPCUtil.decode(blockHeaderHex), 0); // 保存智能合约链下交易hash diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 60d977d14f..c66a751aa3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -25,6 +25,7 @@ package io.nuls.contract.vm; import io.nuls.contract.model.dto.BlockHeaderDto; +import io.nuls.contract.util.Log; import io.nuls.contract.util.VMContext; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.code.VariableType; @@ -209,12 +210,22 @@ public void run(MethodCode methodCode, Object[] args, boolean pushResult) { public void run(ObjectRef objectRef, MethodCode methodCode, VMContext vmContext, ProgramInvoke programInvoke) { this.vmContext = vmContext; + //todo Niels + long startTime = System.nanoTime(); Object[] runArgs = runArgs(objectRef, methodCode, programInvoke.getArgs()); + long use = System.nanoTime()-startTime; + Log.info("===================================================================step 1: {}ns",use); + startTime = System.nanoTime(); if (isEnd()) { return; } initProgramContext(programInvoke); + use = System.nanoTime()-startTime; + Log.info("===================================================================step 2: {}ns",use); + startTime = System.nanoTime(); run(methodCode, runArgs, true); + use = System.nanoTime()-startTime; + Log.info("===================================================================step 3: {}ns",use); } private Object[] runArgs(ObjectRef objectRef, MethodCode methodCode, String[][] args) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index df7b42c997..7031623ee7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -255,7 +255,10 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setInternalCall(programCall.isInternalCall()); programInvoke.setViewMethod(programCall.isViewMethod()); programInvoke.setSenderPublicKey(programCall.getSenderPublicKey()); - return execute(programInvoke); + long start = System.nanoTime(); + ProgramResult result = execute(programInvoke); + Log.info("=========== total use:{}ns",System.nanoTime()-start); + return result; } private Map>> contractObjects; @@ -264,6 +267,7 @@ public ProgramResult call(ProgramCall programCall) { private Map contractObjectRefCount; private ProgramResult execute(ProgramInvoke programInvoke) { + long startTime = System.nanoTime(); if (programInvoke.getPrice() < 1) { return revert("gas price must be greater than zero"); } @@ -286,7 +290,9 @@ private ProgramResult execute(ProgramInvoke programInvoke) { blockNumber = programInvoke.getNumber(); logTime("start"); - + long use = System.nanoTime()-startTime; + Log.info("================step 0.1 : {}ns",use); + startTime = System.nanoTime(); VM vm = null; try { byte[] contractAddressBytes = programInvoke.getContractAddress(); @@ -333,7 +339,9 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm = VMFactory.createVM(); logTime("load vm"); - + use = System.nanoTime()-startTime; + Log.info("================step 0.2 : {}ns",use); + startTime = System.nanoTime(); vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done @@ -392,7 +400,9 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm.methodArea.loadClassCodes(classCodes); logTime("load classes"); - + use = System.nanoTime()-startTime; + Log.info("================step 0.3 : {}ns",use); + startTime = System.nanoTime(); ClassCode contractClassCode = getContractClassCode(classCodes); String methodDesc = ProgramDescriptors.parseDesc(methodDescBase); MethodCode methodCode = vm.methodArea.loadMethod(contractClassCode.name, methodName, methodDesc); @@ -425,7 +435,9 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } logTime("load method"); - + use = System.nanoTime()-startTime; + Log.info("================step 0.4 : {}ns",use); + startTime = System.nanoTime(); ObjectRef objectRef; if (programInvoke.isCreate()) { objectRef = vm.heap.newContract(contractAddressBytes, contractClassCode, repository); @@ -455,7 +467,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { // end code by pierre logTime("load contract ref"); + use = System.nanoTime()-startTime; + Log.info("================step 0.5 : {}ns",use); + startTime = System.nanoTime(); if (transferValue.compareTo(BigInteger.ZERO) > 0) { getAccount(contractAddressBytes).addBalance(transferValue); } @@ -464,6 +479,8 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm.addGasUsed(contractCodeData == null ? 0 : contractCodeData.length); logTime("load end"); + use = System.nanoTime()-startTime; + Log.info("================step 0.6 : {}ns",use); vm.run(objectRef, methodCode, vmContext, programInvoke); From a8c9cb2469e78f357a13478b9b82c238725f7675 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 10 Sep 2020 12:09:34 +0800 Subject: [PATCH 104/304] add test logs --- .../src/main/java/io/nuls/contract/vm/VM.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index c66a751aa3..5e7107a4de 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -214,18 +214,18 @@ public void run(ObjectRef objectRef, MethodCode methodCode, VMContext vmContext, long startTime = System.nanoTime(); Object[] runArgs = runArgs(objectRef, methodCode, programInvoke.getArgs()); long use = System.nanoTime()-startTime; - Log.info("===================================================================step 1: {}ns",use); + Log.info("===================================================================step 1.1 : {}ns",use); startTime = System.nanoTime(); if (isEnd()) { return; } initProgramContext(programInvoke); use = System.nanoTime()-startTime; - Log.info("===================================================================step 2: {}ns",use); + Log.info("===================================================================step 1.2 : {}ns",use); startTime = System.nanoTime(); run(methodCode, runArgs, true); use = System.nanoTime()-startTime; - Log.info("===================================================================step 3: {}ns",use); + Log.info("===================================================================step 1.3 : {}ns",use); } private Object[] runArgs(ObjectRef objectRef, MethodCode methodCode, String[][] args) { From 0d0a0b68155e9fb4bfc9ab86d7d0f5813e7a0c34 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 10 Sep 2020 12:15:21 +0800 Subject: [PATCH 105/304] add test logs --- .../io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 7031623ee7..0645395b99 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -257,7 +257,7 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setSenderPublicKey(programCall.getSenderPublicKey()); long start = System.nanoTime(); ProgramResult result = execute(programInvoke); - Log.info("=========== total use:{}ns",System.nanoTime()-start); + Log.info("=========== total use:{}ms",(System.nanoTime()-start)/1000000); return result; } From 7651224a54a1601dbfcf72911f71548455154c9b Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 10 Sep 2020 16:55:22 +0800 Subject: [PATCH 106/304] update ps coinData decimals --- module.ncf | 4 ++- .../src/main/java/io/nuls/api/ApiContext.java | 6 ++++ .../io/nuls/api/PublicServiceBootstrap.java | 7 ++++ .../io/nuls/api/analysis/AnalysisHandler.java | 35 +++++++++++-------- .../nuls/api/constant/config/ApiConfig.java | 20 +++++++++++ .../io/nuls/api/manager/ScheduleManager.java | 2 +- .../io/nuls/api/model/po/TransactionInfo.java | 16 +++++++-- .../model/po/mini/MiniTransactionInfo.java | 11 ++++++ .../java/io/nuls/api/service/SyncService.java | 18 +++++++--- .../io/nuls/api/task/QueryChainInfoTask.java | 13 +++++-- 10 files changed, 105 insertions(+), 27 deletions(-) diff --git a/module.ncf b/module.ncf index 325f5c84fc..24ab2931b3 100644 --- a/module.ncf +++ b/module.ncf @@ -92,7 +92,7 @@ dependent=protocol-update,smart-contract,cross-chain #合约视图方法调用最大消耗的Gas maxViewGas=100000000 systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv dependent=protocol-update [public-service] @@ -116,6 +116,8 @@ mappingAddress= businessAddress= teamAddress= communityAddress= +syncCoinBase=true +syncAddress=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp dependent=smart-contract,cross-chain [cross-chain] diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java b/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java index 07102d60a3..e9942a1188 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java @@ -21,7 +21,9 @@ package io.nuls.api; import java.math.BigInteger; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; /** @@ -86,6 +88,10 @@ public class ApiContext { public static long networkHeight; public static int magicNumber; + + public static boolean syncCoinBase; + + public static List syncAddress = new ArrayList<>(); //开发者节点地址 public static Set DEVELOPER_NODE_ADDRESS = new HashSet<>(); //大使节点地址 diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java index 29badfc5c5..d9a66e9f55 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java @@ -41,6 +41,7 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; @@ -145,6 +146,12 @@ private void initCfg() { ApiContext.maxAliveConnect = apiConfig.getMaxAliveConnect(); ApiContext.connectTimeOut = apiConfig.getConnectTimeOut(); ApiContext.socketTimeout = apiConfig.getSocketTimeout(); + ApiContext.syncCoinBase = apiConfig.isSyncCoinBase(); + if (StringUtils.isNotBlank(apiConfig.getSyncAddress())) { + for (String address : apiConfig.getSyncAddress().split(",")) { + ApiContext.syncAddress.add(address); + } + } ApiContext.blackHolePublicKey = Hex.decode(apiConfig.getBlackHolePublicKey()); if (apiConfig.getDeveloperNodeAddress() != null) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java index c93c75e53b..df3c1fb8f3 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java @@ -811,10 +811,12 @@ private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsExc chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); AssetInfo assetInfo = new AssetInfo(); - assetInfo.setAssetId(txChain.getDefaultAsset().getAssetId()); - assetInfo.setChainId(txChain.getDefaultAsset().getChainId()); - assetInfo.setSymbol(txChain.getDefaultAsset().getSymbol()); - assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); + TxAsset txAsset = txChain.getDefaultAsset(); + assetInfo.setAssetId(txAsset.getAssetId()); + assetInfo.setChainId(txAsset.getChainId()); + assetInfo.setSymbol(txAsset.getSymbol()); + assetInfo.setInitCoins(txAsset.getInitNumber()); + assetInfo.setDecimals(txAsset.getDecimalPlaces()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); } else if (version == 4) { @@ -823,10 +825,12 @@ private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsExc chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); AssetInfo assetInfo = new AssetInfo(); - assetInfo.setAssetId(txChain.getDefaultAsset().getAssetId()); - assetInfo.setChainId(txChain.getDefaultAsset().getChainId()); - assetInfo.setSymbol(txChain.getDefaultAsset().getSymbol()); - assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); + io.nuls.api.model.entity.v4.TxAsset txAsset = txChain.getDefaultAsset(); + assetInfo.setAssetId(txAsset.getAssetId()); + assetInfo.setChainId(txAsset.getChainId()); + assetInfo.setSymbol(txAsset.getSymbol()); + assetInfo.setInitCoins(txAsset.getInitNumber()); + assetInfo.setDecimals(txAsset.getDecimalPlaces()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); } else { @@ -836,16 +840,15 @@ private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsExc chainInfo.setChainName(txChain.getName()); AssetInfo assetInfo = new AssetInfo(); - assetInfo.setAssetId(txChain.getDefaultAsset().getAssetId()); - assetInfo.setChainId(txChain.getDefaultAsset().getChainId()); - assetInfo.setSymbol(txChain.getDefaultAsset().getSymbol()); - assetInfo.setInitCoins(txChain.getDefaultAsset().getInitNumber()); - assetInfo.setDecimals(txChain.getDefaultAsset().getDecimalPlaces()); + io.nuls.api.model.entity.v5.TxAsset txAsset = txChain.getDefaultAsset(); + assetInfo.setAssetId(txAsset.getAssetId()); + assetInfo.setChainId(txAsset.getChainId()); + assetInfo.setSymbol(txAsset.getSymbol()); + assetInfo.setInitCoins(txAsset.getInitNumber()); + assetInfo.setDecimals(txAsset.getDecimalPlaces()); chainInfo.setDefaultAsset(assetInfo); chainInfo.getAssets().add(assetInfo); } - - return chainInfo; } @@ -859,6 +862,7 @@ private static AssetInfo toAssetInfo(Transaction tx, int version) throws NulsExc assetInfo.setChainId(txAsset.getChainId()); assetInfo.setSymbol(txAsset.getSymbol()); assetInfo.setInitCoins(txAsset.getInitNumber()); + assetInfo.setDecimals(txAsset.getDecimalPlaces()); assetInfo.setAddress(""); } else { TxAsset txAsset = new TxAsset(); @@ -868,6 +872,7 @@ private static AssetInfo toAssetInfo(Transaction tx, int version) throws NulsExc assetInfo.setChainId(txAsset.getChainId()); assetInfo.setSymbol(txAsset.getSymbol()); assetInfo.setInitCoins(txAsset.getInitNumber()); + assetInfo.setDecimals(txAsset.getDecimalPlaces()); assetInfo.setAddress(AddressTool.getStringAddressByBytes(txAsset.getAddress())); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java index f1cca644e7..8324241f78 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java @@ -72,6 +72,10 @@ public class ApiConfig implements ModuleConfig { private String blackHolePublicKey; + private boolean syncCoinBase; + + private String syncAddress; + public String getEncoding() { return encoding; } @@ -279,4 +283,20 @@ public int getSocketTimeout() { public void setSocketTimeout(int socketTimeout) { this.socketTimeout = socketTimeout; } + + public boolean isSyncCoinBase() { + return syncCoinBase; + } + + public void setSyncCoinBase(boolean syncCoinBase) { + this.syncCoinBase = syncCoinBase; + } + + public String getSyncAddress() { + return syncAddress; + } + + public void setSyncAddress(String syncAddress) { + this.syncAddress = syncAddress; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java index 47843e6fc9..455f345dfe 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java @@ -29,7 +29,7 @@ public void start() { ScheduledExecutorService executorService = Executors.newScheduledThreadPool(7); executorService.scheduleAtFixedRate(new DeleteTxsTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); -// executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); + executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new SyncBlockTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 1, 10, TimeUnit.MINUTES); executorService.scheduleAtFixedRate(new StatisticalTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java index 8690d50cbd..84766d89bf 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java @@ -1,10 +1,8 @@ package io.nuls.api.model.po; -import io.nuls.api.ApiContext; import io.nuls.api.manager.CacheManager; import io.nuls.api.utils.DBUtil; import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.base.basic.AddressTool; import io.nuls.core.constant.TxType; import org.bson.Document; @@ -43,6 +41,8 @@ public class TransactionInfo { private String symbol; + private int decimal; + public void calcValue() { BigInteger value = BigInteger.ZERO; if (coinTos != null && !coinTos.isEmpty()) { @@ -51,6 +51,7 @@ public void calcValue() { } CoinToInfo output = coinTos.get(0); this.symbol = output.getSymbol(); + this.decimal = output.getDecimal(); } this.value = value; // if (type == TxType.COIN_BASE || @@ -185,7 +186,7 @@ private BigInteger calcFeeValue(int chainId, int assetId) { public Document toDocument() { Document document = new Document(); - document.append("_id", hash).append("height", height).append("createTime", createTime).append("type", type) + document.append("_id", hash).append("height", height).append("createTime", createTime).append("type", type).append("decimal", decimal) .append("value", value.toString()).append("fee", DocumentTransferTool.toDocument(fee)).append("status", status).append("symbol", symbol); return document; } @@ -200,6 +201,7 @@ public static TransactionInfo fromDocument(Document document) { info.setValue(new BigInteger(document.getString("value"))); info.setStatus(document.getInteger("status")); info.setSymbol(document.getString("symbol")); + info.setDecimal(document.getInteger("decimal")); return info; } @@ -322,4 +324,12 @@ public String getSymbol() { public void setSymbol(String symbol) { this.symbol = symbol; } + + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java index 5f9a8fe173..06617b62ad 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java @@ -24,6 +24,8 @@ public class MiniTransactionInfo { private String symbol; + private int decimal; + public static MiniTransactionInfo toInfo(Document document) { MiniTransactionInfo info = new MiniTransactionInfo(); info.hash = document.getString("_id"); @@ -34,6 +36,7 @@ public static MiniTransactionInfo toInfo(Document document) { info.status = document.getInteger("status"); info.fee = DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class); info.symbol = document.getString("symbol"); + info.decimal = document.getInteger("decimal"); return info; } @@ -100,4 +103,12 @@ public String getSymbol() { public void setSymbol(String symbol) { this.symbol = symbol; } + + public int getDecimal() { + return decimal; + } + + public void setDecimal(int decimal) { + this.decimal = decimal; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java index deb2f8c4e5..737dc19fa1 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java @@ -253,9 +253,20 @@ private void processCoinBaseTx(int chainId, TransactionInfo tx) { accountInfo.setTotalReward(accountInfo.getTotalReward().add(output.getAmount())); accountInfo.setLastReward(output.getAmount()); } -// AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); -// ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); -// txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); + + if (ApiContext.syncCoinBase) { + if (!ApiContext.syncAddress.isEmpty()) { + if (ApiContext.syncAddress.contains(output.getAddress())) { + AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); + ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); + txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); + } + } else { + AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); + ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); + txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); + } + } } for (String address : addressSet) { AccountInfo accountInfo = queryAccountInfo(chainId, address); @@ -760,7 +771,6 @@ private void processRegChainTx(int chainId, TransactionInfo tx) { } } - ChainInfo chainInfo = (ChainInfo) tx.getTxData(); ChainInfo info = queryChainInfo(chainInfo.getChainId()); if (info != null) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java index 2f1f0b7965..65042683c4 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java @@ -30,8 +30,15 @@ public void run() { if (ApiContext.isRunCrossChain) { Result> result = WalletRpcHandler.getRegisteredChainInfoList(); Map map = result.getData(); - CacheManager.setChainInfoMap((Map) map.get("chainInfoMap")); - CacheManager.setAssetInfoMap((Map) map.get("assetInfoMap")); + chainInfoMap = (Map) map.get("chainInfoMap"); + CacheManager.setChainInfoMap(chainInfoMap); + + assetInfoMap = (Map) map.get("assetInfoMap"); + for (AssetInfo assetInfo : assetInfoMap.values()) { + if (!CacheManager.getAssetInfoMap().containsKey(assetInfo.getKey())) { + CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); + } + } ApiContext.isReady = true; } else { chainInfoMap = new HashMap<>(); @@ -46,7 +53,7 @@ public void run() { ApiContext.isReady = true; } - }catch (Exception e) { + } catch (Exception e) { LoggerUtil.commonLog.error(e); } } From c162352ef1d49a192402e540b49a8c254a42b945 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 11 Sep 2020 14:05:25 +0800 Subject: [PATCH 107/304] single thread pool --- .../contract/service/impl/ContractCallerImpl.java | 11 ++++++----- .../contract/service/impl/ContractServiceImpl.java | 9 +-------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index a7a9c833ac..a28036364e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -60,12 +60,13 @@ public class ContractCallerImpl implements ContractCaller { private static ExecutorService TX_EXECUTOR_SERVICE; static { - int availableProcessors = Runtime.getRuntime().availableProcessors(); + /*int availableProcessors = Runtime.getRuntime().availableProcessors(); int threadCount = 4; // 线程数最大4个,线程核心小于4时,使用线程核心数 if(availableProcessors < threadCount) { threadCount = availableProcessors; - } + }*/ + int threadCount = 1; TX_EXECUTOR_SERVICE = new ThreadPoolExecutor( threadCount, @@ -107,9 +108,9 @@ public Result callTx(int chainId, ContractContainer container, ProgramExecutor b Future contractResultFuture = TX_EXECUTOR_SERVICE.submit(txCallable); String hash = tx.getHash().toHex(); batchInfo.getContractMap().put(hash, contractResultFuture); - //if(Log.isDebugEnabled()) { - // Log.debug("contract-tx-executor-pool put hash [{}]", hash); - //} + if(Log.isDebugEnabled()) { + Log.debug("contract-tx-executor-pool put hash [{}]", hash); + } container.getFutureList().add(contractResultFuture); return getSuccess(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index ba81979271..6b92d42db3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -183,17 +183,10 @@ public Result invokeContractOneByOne(int chainId, ContractTempTransaction tx) { String preStateRoot = batchInfo.getPreStateRoot(); ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); // 等上次的执行完 - container.loadFutureList(); + //container.loadFutureList(); // 多线程执行合约 Result result = contractCaller.callTx(chainId, container, batchExecutor, wrapperTx, preStateRoot); return result; - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - Log.error(e); - return getFailed().setMsg(e.getMessage()); - } catch (ExecutionException e) { - Log.error(e); - return getFailed().setMsg(e.getMessage()); } catch (NulsException e) { Log.error(e); return Result.getFailed(e.getErrorCode() == null ? FAILED : e.getErrorCode()); From 5522f3b0aa623ae1c19ddb341f64376944288c34 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 11 Sep 2020 14:38:34 +0800 Subject: [PATCH 108/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/constant/CommandConstant.java | 5 ++ .../base/message/CrossTxRehandleMessage.java | 59 +++++++++++++++ .../base/utils/HashSetDuplicateProcessor.java | 72 +++++++++++++++++++ .../message/CrossTxRehandleMsgHandler.java | 71 ++++++++++++++++++ .../nuls/utils/thread/CrossTxHandler.java | 1 - 5 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/utils/HashSetDuplicateProcessor.java create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java index 076584a395..a5887361a1 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java @@ -58,4 +58,9 @@ public interface CommandConstant { * */ String CIRCULATION_MESSAGE = "recvCirculat"; + /** + * 对指定跨链交易重新进行拜赞庭签名广播 + */ + String CROSS_TX_REHANDLE_MESSAGE = "crossTxRehandle"; + } diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java new file mode 100644 index 0000000000..04f1c3c2a2 --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java @@ -0,0 +1,59 @@ +package io.nuls.crosschain.base.message; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.NulsHash; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; +import io.nuls.crosschain.base.message.base.BaseMessage; + +import java.io.IOException; + +/** + * @Author: zhoulijun + * @Time: 2020/9/11 11:16 + * @Description: 要求所有节点对指定跨链交易进行重新处理的消息 + * + */ +public class CrossTxRehandleMessage extends BaseMessage { + + /** + * 跨链交易的本地协议交易hash + * */ + private NulsHash ctxHash; + + /** + * 发起广播的高度 + */ + private long blockHeight; + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(ctxHash.getBytes()); + stream.writeInt64(blockHeight); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.ctxHash = byteBuffer.readHash(); + this.blockHeight = byteBuffer.readInt64(); + } + + @Override + public int size() { + int size = 0; + size += NulsHash.HASH_LENGTH; + size += SerializeUtils.sizeOfInt64(); + return size; + } + + public NulsHash getCtxHash() { + return ctxHash; + } + + public void setCtxHash(NulsHash ctxHash) { + this.ctxHash = ctxHash; + } + + +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/utils/HashSetDuplicateProcessor.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/utils/HashSetDuplicateProcessor.java new file mode 100644 index 0000000000..53585655e7 --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/utils/HashSetDuplicateProcessor.java @@ -0,0 +1,72 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.crosschain.base.utils; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author: Niels Wang + * @date: 2018/7/9 + */ +public class HashSetDuplicateProcessor { + + private final int maxSize; + private final int percent90; + private Set set1 = new HashSet<>(); + private Set set2 = new HashSet<>(); + + public HashSetDuplicateProcessor(int maxSize) { + this.maxSize = maxSize; + this.percent90 = maxSize * 9 / 10; + } + + public synchronized boolean insertAndCheck(String hash) { + boolean result = set1.add(hash); + if (!result) { + return result; + } + int size = set1.size(); + if (size >= maxSize) { + set2.add(hash); + set1.clear(); + set1.addAll(set2); + set2.clear(); + } else if (size >= percent90) { + set2.add(hash); + } + return result; + } + + public boolean contains(String hash) { + return set1.contains(hash); + } + + public void remove(String hash) { + set1.remove(hash); + set2.remove(hash); + } +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java new file mode 100644 index 0000000000..b694b8233b --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -0,0 +1,71 @@ +package io.nuls.crosschain.nuls.message; + +import io.nuls.base.RPCUtil; +import io.nuls.base.protocol.MessageProcessor; +import io.nuls.core.constant.TxStatusEnum; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.log.Log; +import io.nuls.crosschain.base.constant.CommandConstant; +import io.nuls.crosschain.base.message.CrossTxRehandleMessage; +import io.nuls.crosschain.base.utils.HashSetDuplicateProcessor; +import io.nuls.crosschain.nuls.model.bo.Chain; +import io.nuls.crosschain.nuls.model.po.CtxStatusPO; +import io.nuls.crosschain.nuls.rpc.call.BlockCall; +import io.nuls.crosschain.nuls.srorage.CtxStatusService; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; +import io.nuls.crosschain.nuls.utils.thread.CrossTxHandler; + +import java.io.IOException; + +/** + * @Author: zhoulijun + * @Time: 2020/9/11 11:19 + * @Description: 处理 跨链重发 消息。 + * 当跨链交易出现在本链已确认,但拜赞庭签名失败,切无法完成时,通过广播此消息实现在当前验证人列表的条件下重新完成拜赞庭签名。 + */ +@Component("CrossTxRehandleMsgHandlerV1") +public class CrossTxRehandleMsgHandler implements MessageProcessor { + + private static HashSetDuplicateProcessor processorOfTx = new HashSetDuplicateProcessor(1000); + + @Autowired + private CtxStatusService ctxStatusService; + + @Autowired + private ChainManager chainManager; + + @Override + public String getCmd() { + return CommandConstant.CROSS_TX_REHANDLE_MESSAGE; + } + + @Override + public void process(int chainId, String nodeId, String messageStr) { + CrossTxRehandleMessage message = RPCUtil.getInstanceRpcStr(messageStr, CrossTxRehandleMessage.class); + String hash; + try { + hash = HexUtil.encode(message.serialize()); + } catch (IOException e) { + Log.error("解析消息CrossTxRehandleMessage消息发生异常"); + return ; + } + //如果没有处理过这个消息才处理 + if(processorOfTx.insertAndCheck(hash)){ + Chain chain = chainManager.getChainMap().get(chainId); + CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); + if(ctxStatusPO != null){ + if(ctxStatusPO.getStatus() == TxStatusEnum.CONFIRMED.getStatus()){ + chain.getLogger().info("该跨链转账交易之前已处理完成,不需重复处理:{}",message.getCtxHash().toHex() ); + return ; + } + } + chain.getLogger().debug("对ctx:[{}]重新进行拜占庭验证:{}", message.getCtxHash().toHex()); + int syncStatus = BlockCall.getBlockStatus(chain); + //发起拜占庭验证 + chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, ctxStatusPO.getTx(), syncStatus)); + } + } + +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/CrossTxHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/CrossTxHandler.java index afb813e064..d15b4aebb4 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/CrossTxHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/CrossTxHandler.java @@ -28,7 +28,6 @@ public void run() { } if(transaction.getType() == TxType.CROSS_CHAIN){ TxUtil.localCtxByzantine(transaction,chain); - }else{ TxUtil.handleNewCtx(transaction,chain,null); } From 126f5d522d2cf30da89a3de7dd3e8534f87eb271 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 11 Sep 2020 15:21:17 +0800 Subject: [PATCH 109/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/CrossChainProvider.java | 7 +++ .../crosschain/CrossChainProviderForRpc.java | 5 ++ .../crosschain/facade/RehandleCtxReq.java | 36 ++++++++++++ .../io/nuls/cmd/client/CommandHandler.java | 1 + .../crosschain/RehandleCrossTxProcessor.java | 57 +++++++++++++++++++ .../base/message/CrossTxRehandleMessage.java | 6 ++ .../message/CrossTxRehandleMsgHandler.java | 3 + ...ainTxInfoCmd.java => CrossChainTxCmd.java} | 43 ++++++++++++-- 8 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/RehandleCtxReq.java create mode 100644 module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/RehandleCrossTxProcessor.java rename module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/{CrossChainTxInfoCmd.java => CrossChainTxCmd.java} (54%) diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java index c469f3542a..9c1343b002 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java @@ -25,4 +25,11 @@ public interface CrossChainProvider { */ Result getCrossTxState(GetCrossTxStateReq req); + /** + * 给全网发信号,对指定跨链交易重新进行拜赞庭验证 + * @param req + * @return + */ + Result rehandleCtx(RehandleCtxReq req); + } diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java index 3c0c434c73..f357a22440 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java @@ -41,6 +41,11 @@ public Result getCrossTxState(GetCrossTxStateReq req) { }); } + @Override + public Result rehandleCtx(RehandleCtxReq req) { + return callReturnString("crossTxRehandle",req,"msg"); + } + private Result _call(String method, Object req, Function callback){ return call(method,req,callback); diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/RehandleCtxReq.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/RehandleCtxReq.java new file mode 100644 index 0000000000..c52064a625 --- /dev/null +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/RehandleCtxReq.java @@ -0,0 +1,36 @@ +package io.nuls.base.api.provider.crosschain.facade; + +import io.nuls.base.api.provider.BaseReq; + +/** + * @Author: zhoulijun + * @Time: 2020/9/11 15:09 + * @Description: 重新对跨链交易进行拜赞庭验证 + */ +public class RehandleCtxReq extends BaseReq { + + private String ctxHash; + + private long blockHeight; + + public RehandleCtxReq(String ctxHash, long blockHeight) { + this.ctxHash = ctxHash; + this.blockHeight = blockHeight; + } + + public String getCtxHash() { + return ctxHash; + } + + public void setCtxHash(String ctxHash) { + this.ctxHash = ctxHash; + } + + public long getBlockHeight() { + return blockHeight; + } + + public void setBlockHeight(long blockHeight) { + this.blockHeight = blockHeight; + } +} diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java index d0356bd7d7..6096282f74 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java @@ -184,6 +184,7 @@ public void afterPropertiesSet() throws NulsException { register(getBean(CrossAssetDisableProcessor.class)); register(getBean(UpdateCrossChainProcessor.class)); register(getBean(CrossLocalAssetAddProcessor.class)); + register(getBean(RehandleCrossTxProcessor.class)); register(getBean(CreateCrossTxProcessor.class)); register(getBean(GetCrossChainsSimpleInfoProcessor.class)); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/RehandleCrossTxProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/RehandleCrossTxProcessor.java new file mode 100644 index 0000000000..26e854c65e --- /dev/null +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/RehandleCrossTxProcessor.java @@ -0,0 +1,57 @@ +package io.nuls.cmd.client.processor.crosschain; + +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.block.BlockService; +import io.nuls.base.api.provider.block.facade.GetBlockHeaderByLastHeightReq; +import io.nuls.base.api.provider.crosschain.facade.GetCrossTxStateReq; +import io.nuls.base.api.provider.crosschain.facade.RehandleCtxReq; +import io.nuls.cmd.client.CommandBuilder; +import io.nuls.cmd.client.CommandResult; +import io.nuls.core.core.annotation.Component; + +/** + * @Author: zhoulijun + * @Time: 2019-05-07 13:47 + * @Description: 功能描述 + */ +@Component +public class RehandleCrossTxProcessor extends CrossChainBaseProcessor { + + BlockService blockService = ServiceManager.get(BlockService.class); + + @Override + public String getCommand() { + return "rehandlectx"; + } + + @Override + public String getHelp() { + return new CommandBuilder() + .newLine(getCommandDescription()) + .newLine("\t tx hash - require") + .toString(); + } + + @Override + public String getCommandDescription() { + return getCommand() + " "; + } + + @Override + public boolean argsValidate(String[] args) { + checkArgsNumber(args,1); + return true; + } + + @Override + public CommandResult execute(String[] args) { + String txHash = args[1]; + long blockHeight = blockService.getBlockHeaderByLastHeight(new GetBlockHeaderByLastHeightReq()).getData().getHeight(); + Result result = crossChainProvider.rehandleCtx(new RehandleCtxReq(txHash,blockHeight)); + if (result.isFailed()) { + return CommandResult.getFailed(result); + } + return CommandResult.getSuccess(result.getData()); + } +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java index 04f1c3c2a2..c3cf72c50d 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/message/CrossTxRehandleMessage.java @@ -55,5 +55,11 @@ public void setCtxHash(NulsHash ctxHash) { this.ctxHash = ctxHash; } + public long getBlockHeight() { + return blockHeight; + } + public void setBlockHeight(long blockHeight) { + this.blockHeight = blockHeight; + } } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index b694b8233b..3d27abe7e3 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -60,6 +60,9 @@ public void process(int chainId, String nodeId, String messageStr) { chain.getLogger().info("该跨链转账交易之前已处理完成,不需重复处理:{}",message.getCtxHash().toHex() ); return ; } + }else { + chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不正确",message.getCtxHash().toHex()); + return ; } chain.getLogger().debug("对ctx:[{}]重新进行拜占庭验证:{}", message.getCtxHash().toHex()); int syncStatus = BlockCall.getBlockStatus(chain); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java similarity index 54% rename from module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java rename to module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index 6b3ae31ffe..ba7280f391 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxInfoCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -1,4 +1,4 @@ -package network.nerve.rpc.cmd; +package io.nuls.crosschain.nuls.rpc.cmd; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; @@ -6,13 +6,19 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; import io.nuls.core.rpc.cmd.BaseCmd; -import io.nuls.core.rpc.model.*; -import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.model.CmdAnnotation; +import io.nuls.core.rpc.model.Parameter; +import io.nuls.core.rpc.model.ResponseData; +import io.nuls.core.rpc.model.TypeDescriptor; import io.nuls.core.rpc.model.message.Response; +import io.nuls.crosschain.base.constant.CommandConstant; +import io.nuls.crosschain.base.message.CrossTxRehandleMessage; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.model.po.CtxStatusPO; +import io.nuls.crosschain.nuls.rpc.call.NetWorkCall; import io.nuls.crosschain.nuls.srorage.ConvertCtxService; import io.nuls.crosschain.nuls.srorage.CtxStatusService; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; import java.io.IOException; import java.util.Map; @@ -23,7 +29,7 @@ * @Description: 功能描述 */ @Component -public class CrossChainTxInfoCmd extends BaseCmd { +public class CrossChainTxCmd extends BaseCmd { @Autowired private ConvertCtxService convertCtxService; @@ -34,6 +40,9 @@ public class CrossChainTxInfoCmd extends BaseCmd { @Autowired NulsCrossChainConfig config; + @Autowired + private ChainManager chainManager; + /** * 区块模块高度变化通知跨链模块 * */ @@ -58,4 +67,30 @@ public Response getCrossChainTxInfoForCtxStatusPO(Map params) thr return success(HexUtil.encode(transaction.getTx().serialize())); } + + @CmdAnnotation(cmd = CommandConstant.CROSS_TX_REHANDLE_MESSAGE, version = 1.0, description = "通过交易hash在跨链模块查询交易详情") + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") + @Parameter(parameterName = "txHash", parameterType = "String", parameterDes = "交易hash") + @Parameter(parameterName = "blockHeight", requestType = @TypeDescriptor(value = long.class), parameterDes = "当前区块高度") + @ResponseData(description = "") + public Response crossTxRehandle(Map params) throws IOException { + CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("txHash"))),config.getChainId()); + if(transaction == null || transaction.getTx() == null){ + return failed("not found ctx"); + } + long height = (long) params.get("blockHeight"); + int chainId = (int)params.get("chainId"); + CrossTxRehandleMessage crossTxRehandleMessage = new CrossTxRehandleMessage(); + crossTxRehandleMessage.setCtxHash(transaction.getTx().getHash()); + crossTxRehandleMessage.setBlockHeight(height); + boolean res = NetWorkCall.broadcast(chainId,crossTxRehandleMessage,CommandConstant.CROSS_TX_REHANDLE_MESSAGE,false); + if(res){ + return success(Map.of("msg","broadcast success")); + }else{ + return success(Map.of("msg","broadcast fail")); + } + } + + + } From e3430f299f27627fbf568aa6549a648dfc40a14d Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 14 Sep 2020 11:02:02 +0800 Subject: [PATCH 110/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index ba7280f391..ebd9bd1146 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -70,11 +70,11 @@ public Response getCrossChainTxInfoForCtxStatusPO(Map params) thr @CmdAnnotation(cmd = CommandConstant.CROSS_TX_REHANDLE_MESSAGE, version = 1.0, description = "通过交易hash在跨链模块查询交易详情") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") - @Parameter(parameterName = "txHash", parameterType = "String", parameterDes = "交易hash") + @Parameter(parameterName = "ctxHash", parameterType = "String", parameterDes = "交易hash") @Parameter(parameterName = "blockHeight", requestType = @TypeDescriptor(value = long.class), parameterDes = "当前区块高度") @ResponseData(description = "") public Response crossTxRehandle(Map params) throws IOException { - CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("txHash"))),config.getChainId()); + CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("ctxHash"))),config.getChainId()); if(transaction == null || transaction.getTx() == null){ return failed("not found ctx"); } From 42187c54553707f49925ad0af3834cea78fc2a2b Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 14 Sep 2020 11:41:07 +0800 Subject: [PATCH 111/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/nuls-cross-chain/cross-chain/pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/pom.xml b/module/nuls-cross-chain/cross-chain/pom.xml index bb2a8adc66..5bd86544c6 100644 --- a/module/nuls-cross-chain/cross-chain/pom.xml +++ b/module/nuls-cross-chain/cross-chain/pom.xml @@ -17,12 +17,12 @@ base-lib ${project.version} - - io.nuls.v2 - nuls-base-api-provider - 1.1.7-beta1 - test - + + + + + + From 6c59427e220eaf7faba211b3d3923a22a6042530 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 14 Sep 2020 14:33:02 +0800 Subject: [PATCH 112/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/CrossChainProviderForRpc.java | 2 +- .../base/constant/CommandConstant.java | 2 +- module/nuls-cross-chain/cross-chain/pom.xml | 11 ++++---- .../crosschain/nuls/CrossChainBootStrap.java | 7 +++++ .../nuls/rpc/cmd/CrossChainTxCmd.java | 27 +++++++++++++++---- 5 files changed, 36 insertions(+), 13 deletions(-) diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java index f357a22440..737ac62b20 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java @@ -43,7 +43,7 @@ public Result getCrossTxState(GetCrossTxStateReq req) { @Override public Result rehandleCtx(RehandleCtxReq req) { - return callReturnString("crossTxRehandle",req,"msg"); + return callReturnString("ctxRehandle",req,"msg"); } diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java index a5887361a1..3d40698c37 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/constant/CommandConstant.java @@ -61,6 +61,6 @@ public interface CommandConstant { /** * 对指定跨链交易重新进行拜赞庭签名广播 */ - String CROSS_TX_REHANDLE_MESSAGE = "crossTxRehandle"; + String CROSS_TX_REHANDLE_MESSAGE = "ctxRehandle"; } diff --git a/module/nuls-cross-chain/cross-chain/pom.xml b/module/nuls-cross-chain/cross-chain/pom.xml index 5bd86544c6..b9dd4d7219 100644 --- a/module/nuls-cross-chain/cross-chain/pom.xml +++ b/module/nuls-cross-chain/cross-chain/pom.xml @@ -17,12 +17,11 @@ base-lib ${project.version} - - - - - - + + io.nuls.v2 + nuls-base-api-provider + 1.0.0-SNAPSHOT + diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java index 7043648080..edc3432107 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java @@ -1,10 +1,13 @@ package io.nuls.crosschain.nuls; +import io.nuls.base.api.provider.Provider; +import io.nuls.base.api.provider.ServiceManager; import io.nuls.base.basic.AddressTool; import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.base.protocol.RegisterHelper; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.log.Log; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.info.HostInfo; @@ -51,6 +54,10 @@ public static void main(String[] args){ if (args == null || args.length == 0) { args = new String[]{"ws://" + HostInfo.getLocalIP() + ":7771"}; } + ConfigurationLoader configurationLoader = new ConfigurationLoader(); + configurationLoader.load(); + int defaultChainId = Integer.parseInt(configurationLoader.getValue("chainId")); + ServiceManager.init(defaultChainId, Provider.ProviderType.RPC); NulsRpcModuleBootstrap.run(CONTEXT_PATH, args); } /** diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index ebd9bd1146..523a7974b2 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -1,7 +1,13 @@ package io.nuls.crosschain.nuls.rpc.cmd; +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.transaction.TransferService; +import io.nuls.base.api.provider.transaction.facade.GetConfirmedTxByHashReq; +import io.nuls.base.api.provider.transaction.facade.GetTxByHashReq; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; @@ -43,6 +49,8 @@ public class CrossChainTxCmd extends BaseCmd { @Autowired private ChainManager chainManager; + TransferService transferService = ServiceManager.get(TransferService.class); + /** * 区块模块高度变化通知跨链模块 * */ @@ -74,14 +82,23 @@ public Response getCrossChainTxInfoForCtxStatusPO(Map params) thr @Parameter(parameterName = "blockHeight", requestType = @TypeDescriptor(value = long.class), parameterDes = "当前区块高度") @ResponseData(description = "") public Response crossTxRehandle(Map params) throws IOException { - CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("ctxHash"))),config.getChainId()); - if(transaction == null || transaction.getTx() == null){ - return failed("not found ctx"); +// CtxStatusPO transaction = ctxStatusService.get(new NulsHash(HexUtil.decode((String) params.get("ctxHash"))),config.getChainId()); +// if(transaction == null || transaction.getTx() == null){ +// return failed("not found ctx"); +// } + String ctxHash = (String) params.get("ctxHash"); + Result tx = transferService.getConfirmedTxByHash(new GetConfirmedTxByHashReq(ctxHash)); + if(tx.isFailed()){ + return failed(tx.getMessage()); + } + Transaction transaction = tx.getData(); + if(transaction.getType() != TxType.CROSS_CHAIN){ + return failed("not a cross chain tx"); } - long height = (long) params.get("blockHeight"); + long height = Long.parseLong(params.get("blockHeight").toString()); int chainId = (int)params.get("chainId"); CrossTxRehandleMessage crossTxRehandleMessage = new CrossTxRehandleMessage(); - crossTxRehandleMessage.setCtxHash(transaction.getTx().getHash()); + crossTxRehandleMessage.setCtxHash(transaction.getHash()); crossTxRehandleMessage.setBlockHeight(height); boolean res = NetWorkCall.broadcast(chainId,crossTxRehandleMessage,CommandConstant.CROSS_TX_REHANDLE_MESSAGE,false); if(res){ From 9e82e548116eeb4d3a5f3c10839ad7e1776d402f Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 14 Sep 2020 15:28:35 +0800 Subject: [PATCH 113/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/CrossTxRehandleMsgHandler.java | 30 ++++++++++++++----- .../src/main/resources/protocol-config.json | 5 ++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index 3d27abe7e3..9043254df5 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -1,8 +1,14 @@ package io.nuls.crosschain.nuls.message; import io.nuls.base.RPCUtil; +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.transaction.TransferService; +import io.nuls.base.api.provider.transaction.facade.GetConfirmedTxByHashReq; +import io.nuls.base.data.Transaction; import io.nuls.base.protocol.MessageProcessor; import io.nuls.core.constant.TxStatusEnum; +import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; @@ -36,6 +42,8 @@ public class CrossTxRehandleMsgHandler implements MessageProcessor { @Autowired private ChainManager chainManager; + TransferService transferService = ServiceManager.get(TransferService.class); + @Override public String getCmd() { return CommandConstant.CROSS_TX_REHANDLE_MESSAGE; @@ -44,15 +52,15 @@ public String getCmd() { @Override public void process(int chainId, String nodeId, String messageStr) { CrossTxRehandleMessage message = RPCUtil.getInstanceRpcStr(messageStr, CrossTxRehandleMessage.class); - String hash; + String messageHash; try { - hash = HexUtil.encode(message.serialize()); + messageHash = HexUtil.encode(message.serialize()); } catch (IOException e) { Log.error("解析消息CrossTxRehandleMessage消息发生异常"); return ; } //如果没有处理过这个消息才处理 - if(processorOfTx.insertAndCheck(hash)){ + if(processorOfTx.insertAndCheck(messageHash) || true){ Chain chain = chainManager.getChainMap().get(chainId); CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); if(ctxStatusPO != null){ @@ -60,14 +68,22 @@ public void process(int chainId, String nodeId, String messageStr) { chain.getLogger().info("该跨链转账交易之前已处理完成,不需重复处理:{}",message.getCtxHash().toHex() ); return ; } - }else { - chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不正确",message.getCtxHash().toHex()); + } + String ctxHash = message.getCtxHash().toHex(); + chain.getLogger().debug("对ctx:[{}]重新进行拜占庭验证", ctxHash); + Result tx = transferService.getConfirmedTxByHash(new GetConfirmedTxByHashReq(ctxHash)); + if(tx.isFailed()){ + chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不正确",ctxHash); + return ; + } + Transaction transaction = tx.getData(); + if(transaction.getType() != TxType.CROSS_CHAIN){ + chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个跨链交易",ctxHash); return ; } - chain.getLogger().debug("对ctx:[{}]重新进行拜占庭验证:{}", message.getCtxHash().toHex()); int syncStatus = BlockCall.getBlockStatus(chain); //发起拜占庭验证 - chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, ctxStatusPO.getTx(), syncStatus)); + chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, tx.getData(), syncStatus)); } } diff --git a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json index 79ed325c96..c8c45aaffe 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json +++ b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json @@ -84,6 +84,11 @@ "name": "io.nuls.crosschain.base.message.NewOtherCtxMessage", "protocolCmd": "recvOtherCtx", "handlers": "NewOtherCtxHandlerV1" + }, + { + "name": "io.nuls.crosschain.base.message.CrossTxRehandleMessage", + "protocolCmd": "ctxRehandle", + "handlers": "CrossTxRehandleMsgHandlerV1" } ], "invalidTxs": "", From a99a64c4fdb0d3bf273d887f241ef0d1226d00ca Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 14 Sep 2020 15:38:08 +0800 Subject: [PATCH 114/304] =?UTF-8?q?=E8=B7=A8=E9=93=BE=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=9C=E8=B5=9E=E5=BA=AD=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/message/CrossTxRehandleMsgHandler.java | 7 ++++--- .../src/test/java/io/nuls/test/resend/ReadCtx.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index 9043254df5..9b28004a25 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -60,8 +60,9 @@ public void process(int chainId, String nodeId, String messageStr) { return ; } //如果没有处理过这个消息才处理 - if(processorOfTx.insertAndCheck(messageHash) || true){ + if(processorOfTx.insertAndCheck(messageHash)){ Chain chain = chainManager.getChainMap().get(chainId); + //检查本地是否已经处理完此消息,并且已经确认 CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); if(ctxStatusPO != null){ if(ctxStatusPO.getStatus() == TxStatusEnum.CONFIRMED.getStatus()){ @@ -70,10 +71,9 @@ public void process(int chainId, String nodeId, String messageStr) { } } String ctxHash = message.getCtxHash().toHex(); - chain.getLogger().debug("对ctx:[{}]重新进行拜占庭验证", ctxHash); Result tx = transferService.getConfirmedTxByHash(new GetConfirmedTxByHashReq(ctxHash)); if(tx.isFailed()){ - chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不正确",ctxHash); + chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个有效的交易hash",ctxHash); return ; } Transaction transaction = tx.getData(); @@ -81,6 +81,7 @@ public void process(int chainId, String nodeId, String messageStr) { chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个跨链交易",ctxHash); return ; } + chain.getLogger().debug("对ctx:[{}]重新进行拜占庭签名验证", ctxHash); int syncStatus = BlockCall.getBlockStatus(chain); //发起拜占庭验证 chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, tx.getData(), syncStatus)); diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java index f58146d116..1cb938cd55 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/resend/ReadCtx.java @@ -39,7 +39,7 @@ public static void main(String[] args) throws Exception { Log.info("reday"); RocksDBService.init("/Users/zhoulijun/workspace/nuls/nuls_2.0/NULS_Wallet/cross-chain"); List hashList = new ArrayList<>(); - hashList.add("8779f82717356ab168b5d44ca341b5103b86819fa8a4f5f15fe535cc6cfd87e0"); + hashList.add("aa7433c8cb9dd86c97be05e0cfe47c9a30423a1e1e1f494fd4b71a389ab73fd7"); hashList.forEach(hash->{ resetBroadcast(hash); }); From 454b4fe4be2d1f4d8eba249cbf74dc910ee4eeee Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 14 Sep 2020 16:15:46 +0800 Subject: [PATCH 115/304] recovery --- .../nuls/contract/service/impl/ContractCallerImpl.java | 5 ++--- .../nuls/contract/service/impl/ContractServiceImpl.java | 9 ++++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index a28036364e..51485d6641 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -60,13 +60,12 @@ public class ContractCallerImpl implements ContractCaller { private static ExecutorService TX_EXECUTOR_SERVICE; static { - /*int availableProcessors = Runtime.getRuntime().availableProcessors(); + int availableProcessors = Runtime.getRuntime().availableProcessors(); int threadCount = 4; // 线程数最大4个,线程核心小于4时,使用线程核心数 if(availableProcessors < threadCount) { threadCount = availableProcessors; - }*/ - int threadCount = 1; + } TX_EXECUTOR_SERVICE = new ThreadPoolExecutor( threadCount, diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index 6b92d42db3..ba81979271 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -183,10 +183,17 @@ public Result invokeContractOneByOne(int chainId, ContractTempTransaction tx) { String preStateRoot = batchInfo.getPreStateRoot(); ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); // 等上次的执行完 - //container.loadFutureList(); + container.loadFutureList(); // 多线程执行合约 Result result = contractCaller.callTx(chainId, container, batchExecutor, wrapperTx, preStateRoot); return result; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + Log.error(e); + return getFailed().setMsg(e.getMessage()); + } catch (ExecutionException e) { + Log.error(e); + return getFailed().setMsg(e.getMessage()); } catch (NulsException e) { Log.error(e); return Result.getFailed(e.getErrorCode() == null ? FAILED : e.getErrorCode()); From a3b7efc03b6fe61464e1295f2c6c05c363bcea5f Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 15 Sep 2020 14:46:50 +0800 Subject: [PATCH 116/304] add boolean of contract cross asset --- module/nuls-public-service/module.ncf | 2 +- .../nuls/api/analysis/WalletRpcHandler.java | 33 +++++++++++++++++++ .../io/nuls/api/constant/CommandConstant.java | 10 ++++++ .../io/nuls/api/model/po/ContractInfo.java | 9 +++++ .../rpc/controller/ContractController.java | 5 +++ 5 files changed, 58 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/module.ncf b/module/nuls-public-service/module.ncf index 526d6ac4f5..1e535fd964 100644 --- a/module/nuls-public-service/module.ncf +++ b/module/nuls-public-service/module.ncf @@ -10,4 +10,4 @@ Managed=1 loadLanguage=1 [public-service] -moduleDynamicDependent=smart-contract,cross-chain +moduleDynamicDependent=smart-contract,cross-chain,chain-manager diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 172545998b..5ac1996675 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -20,6 +20,7 @@ import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import java.math.BigInteger; import java.util.ArrayList; @@ -663,4 +664,36 @@ public static Result getChainAssetInfo(int assetChainId, int assetId) { return Result.getFailed(e.getErrorCode()); } } + + /** + * 查询NRC20的资产ID + */ + public static Integer getAssetIdOfNRC20(String contractAddress) { + try { + Map parameters = new HashMap<>(); + parameters.put("contractAddress", contractAddress); + Map result = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.CMD_CHAIN_ASSET_CONTRACT_ASSETID, parameters); + Integer assetId = Integer.parseInt(result.get("assetId").toString()); + return assetId; + } catch (NulsException e) { + Log.warn("查询NRC20资产ID异常, msg: {}", e.format()); + return null; + } + } + + /** + * 查询是否为跨链资产 + */ + public static boolean isCrossAssets(int chainId, int assetId) { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("assetId", assetId); + try { + Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CM.abbr, CommandConstant.CMD_ASSET, params); + return callResp.isSuccess(); + } catch (Exception e) { + Log.warn("查询是否为跨链资产异常, msg: {}", e.getMessage()); + return false; + } + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java index df22367a84..56b1ffd65f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java @@ -95,4 +95,14 @@ public interface CommandConstant { * 获取资产信息 */ String CMD_GET_ASSET_BY_ID = "getAssetById"; + + /** + * 获取合约资产ID + */ + String CMD_CHAIN_ASSET_CONTRACT_ASSETID = "getAssetContractAssetId"; + + /** + * 获取跨链资产注册信息 + */ + String CMD_ASSET = "cm_asset"; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java index dcb4bd5c26..38ad54cb8a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java @@ -64,6 +64,7 @@ public class ContractInfo extends TxDataInfo { private ContractResultInfo resultInfo; private String args; + private boolean crossAsset; @JsonIgnore private boolean isNew; @@ -338,4 +339,12 @@ public String getArgs() { public void setArgs(String args) { this.args = args; } + + public boolean isCrossAsset() { + return crossAsset; + } + + public void setCrossAsset(boolean crossAsset) { + this.crossAsset = crossAsset; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index 039ea5142f..70bde2fa6e 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -66,6 +66,11 @@ public RpcResult getContract(List params) { if (contractInfo == null) { rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); } else { + Integer assetIdOfNRC20 = WalletRpcHandler.getAssetIdOfNRC20(contractAddress); + if (assetIdOfNRC20 != null) { + boolean crossAssets = WalletRpcHandler.isCrossAssets(chainId, assetIdOfNRC20); + contractInfo.setCrossAsset(crossAssets); + } ApiCache apiCache = CacheManager.getCache(chainId); AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, contractAddress, defaultAsset.getChainId(), defaultAsset.getAssetId()); From 27621e3af339b265b1c7a2670ceae42afe9ce799 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 17 Sep 2020 17:04:58 +0800 Subject: [PATCH 117/304] fix red punish bug --- .../io/nuls/poc/utils/manager/AgentManager.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/AgentManager.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/AgentManager.java index c11dbea434..fb914b4152 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/AgentManager.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/AgentManager.java @@ -115,10 +115,13 @@ public void removeAgent(Chain chain, NulsHash txHash) { /** * 根据节点地址找节点 - * */ - public Agent getAgentByAgentAddress(Chain chain, byte[] agentAddress){ - for (Agent agent : chain.getAgentList()){ - if(Arrays.equals(agentAddress, agent.getAgentAddress())){ + */ + public Agent getAgentByAgentAddress(Chain chain, byte[] agentAddress) { + for (Agent agent : chain.getAgentList()) { + if (agent.getDelHeight() > 0) { + continue; + } + if (Arrays.equals(agentAddress, agent.getAgentAddress())) { return agent; } } @@ -311,9 +314,9 @@ public void fillAgent(Chain chain, Agent agent, MeetingRound round, List Date: Wed, 23 Sep 2020 16:05:25 +0800 Subject: [PATCH 118/304] update ps-module getBlockTxList --- .../io/nuls/api/db/TransactionService.java | 2 +- .../db/mongo/MongoTransactionServiceImpl.java | 31 ++++++++++--------- .../model/po/mini/MiniTransactionInfo.java | 17 ++++++++++ .../rpc/controller/TransactionController.java | 31 +++++-------------- 4 files changed, 41 insertions(+), 40 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java index 324a37a4e2..e89549062d 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java @@ -24,7 +24,7 @@ public interface TransactionService { void deleteTxs(int chainId); - PageInfo getBlockTxList(int chainId, int pageIndex, int pageSize, long blockHeight, int type); + List getBlockTxList(int chainId, long blockHeight, int type); TransactionInfo getTx(int chainId, String txHash); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index 233495a8b2..7e085c1c6a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -5,6 +5,7 @@ import com.mongodb.client.model.InsertManyOptions; import com.mongodb.client.model.Sorts; import io.nuls.api.ApiContext; +import io.nuls.api.analysis.AnalysisHandler; import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.constant.DBTableConstant; import io.nuls.api.db.TransactionService; @@ -14,6 +15,7 @@ import io.nuls.api.utils.DocumentTransferTool; import io.nuls.base.basic.AddressTool; import io.nuls.core.basic.InitializingBean; +import io.nuls.core.basic.Result; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; @@ -293,25 +295,24 @@ public List getUnConfirmList(int chainId) { return txHexInfoList; } - public PageInfo getBlockTxList(int chainId, int pageIndex, int pageSize, long blockHeight, int type) { - Bson filter = null; - if (type == 0) { - filter = eq("height", blockHeight); - } else { - filter = and(eq("type", type), eq("height", blockHeight)); - } + public List getBlockTxList(int chainId, long blockHeight, int type) { + List txList = new ArrayList<>(); BlockHeaderInfo blockInfo = mongoBlockServiceImpl.getBlockHeader(chainId, blockHeight); if (blockInfo == null) { - return null; + return txList; } - long count = mongoDBService.getCount(TX_TABLE + chainId, filter); - List txList = new ArrayList<>(); - List docList = this.mongoDBService.pageQuery(TX_TABLE + chainId, filter, Sorts.descending("height"), pageIndex, pageSize); - for (Document document : docList) { - txList.add(MiniTransactionInfo.toInfo(document)); + Result result = WalletRpcHandler.getBlockInfo(chainId, blockHeight); + if (result.isFailed()) { + return txList; } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, count, txList); - return pageInfo; + for (TransactionInfo tx : result.getData().getTxList()) { + if (type == 0) { + txList.add(new MiniTransactionInfo(tx)); + } else if (tx.getType() == type) { + txList.add(new MiniTransactionInfo(tx)); + } + } + return txList; } public TransactionInfo getTx(int chainId, String txHash) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java index 06617b62ad..ae2784a119 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java @@ -1,6 +1,7 @@ package io.nuls.api.model.po.mini; import io.nuls.api.model.po.FeeInfo; +import io.nuls.api.model.po.TransactionInfo; import io.nuls.api.utils.DocumentTransferTool; import org.bson.Document; @@ -40,6 +41,22 @@ public static MiniTransactionInfo toInfo(Document document) { return info; } + public MiniTransactionInfo() { + + } + + public MiniTransactionInfo(TransactionInfo tx) { + this.hash = tx.getHash(); + this.type = tx.getType(); + this.height = tx.getHeight(); + this.createTime = tx.getCreateTime(); + this.value = tx.getValue(); + this.status = tx.getStatus(); + this.fee = tx.getFee(); + this.symbol = tx.getSymbol(); + this.decimal = tx.getDecimal(); + } + public String getHash() { return hash; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index b9b0d692ec..0774c00ce5 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -195,8 +195,8 @@ public RpcResult getTxList(List params) { @RpcMethod("getBlockTxList") public RpcResult getBlockTxList(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize, type; + VerifyUtils.verifyParams(params, 3); + int chainId, type; long height; try { chainId = (int) params.get(0); @@ -204,37 +204,20 @@ public RpcResult getBlockTxList(List params) { return RpcResult.paramError("[chainId] is inValid"); } try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - height = Long.valueOf(params.get(3).toString()); + height = Long.valueOf(params.get(1).toString()); } catch (Exception e) { return RpcResult.paramError("[height] is inValid"); } try { - type = Integer.parseInt("" + params.get(4)); + type = Integer.parseInt("" + params.get(2)); } catch (Exception e) { return RpcResult.paramError("[type] is inValid"); } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; + List pageInfo; if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); + pageInfo = new ArrayList<>(); } else { - pageInfo = txService.getBlockTxList(chainId, pageNumber, pageSize, height, type); + pageInfo = txService.getBlockTxList(chainId, height, type); } RpcResult rpcResult = new RpcResult(); rpcResult.setResult(pageInfo); From 1b086b64c58660ce2fa64658cc17f3d742ffe4d7 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 23 Sep 2020 16:24:07 +0800 Subject: [PATCH 119/304] update ps-module getBlockTxList --- module/nuls-public-service/documents/NULS2.0-Public-PRC.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md index c68523dc3a..fe5b326712 100644 --- a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md +++ b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md @@ -973,13 +973,11 @@ endTime:long //区块结束时间(单位:秒),默认为0 { "jsonrpc":"2.0", "method":"getBlockTxList", - "params":[chainId,pageNumber,pageSize,blockHeight,txType], + "params":[chainId,blockHeight,txType], "id":1234 } //参数说明 chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] blockHeight:long //区块高度 txType:int //交易类型(txType),type=0时查询所有交易 ``` From a037b63af28662f64f831eb8dd89b3cbb2f4e7c3 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 24 Sep 2020 11:57:59 +0800 Subject: [PATCH 120/304] add boolean of contract cross asset --- module/nuls-public-service/module.ncf | 3 +- .../nuls/api/analysis/WalletRpcHandler.java | 33 +++++++++++++++++++ .../io/nuls/api/constant/CommandConstant.java | 10 ++++++ .../io/nuls/api/model/po/ContractInfo.java | 9 +++++ .../rpc/controller/ContractController.java | 5 +++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/module/nuls-public-service/module.ncf b/module/nuls-public-service/module.ncf index 526d6ac4f5..168b424578 100644 --- a/module/nuls-public-service/module.ncf +++ b/module/nuls-public-service/module.ncf @@ -10,4 +10,5 @@ Managed=1 loadLanguage=1 [public-service] -moduleDynamicDependent=smart-contract,cross-chain +moduleDynamicDependent=smart-contract,cross-chain,chain-manager + diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 172545998b..5ac1996675 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -20,6 +20,7 @@ import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import java.math.BigInteger; import java.util.ArrayList; @@ -663,4 +664,36 @@ public static Result getChainAssetInfo(int assetChainId, int assetId) { return Result.getFailed(e.getErrorCode()); } } + + /** + * 查询NRC20的资产ID + */ + public static Integer getAssetIdOfNRC20(String contractAddress) { + try { + Map parameters = new HashMap<>(); + parameters.put("contractAddress", contractAddress); + Map result = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.CMD_CHAIN_ASSET_CONTRACT_ASSETID, parameters); + Integer assetId = Integer.parseInt(result.get("assetId").toString()); + return assetId; + } catch (NulsException e) { + Log.warn("查询NRC20资产ID异常, msg: {}", e.format()); + return null; + } + } + + /** + * 查询是否为跨链资产 + */ + public static boolean isCrossAssets(int chainId, int assetId) { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("assetId", assetId); + try { + Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CM.abbr, CommandConstant.CMD_ASSET, params); + return callResp.isSuccess(); + } catch (Exception e) { + Log.warn("查询是否为跨链资产异常, msg: {}", e.getMessage()); + return false; + } + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java index df22367a84..56b1ffd65f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java @@ -95,4 +95,14 @@ public interface CommandConstant { * 获取资产信息 */ String CMD_GET_ASSET_BY_ID = "getAssetById"; + + /** + * 获取合约资产ID + */ + String CMD_CHAIN_ASSET_CONTRACT_ASSETID = "getAssetContractAssetId"; + + /** + * 获取跨链资产注册信息 + */ + String CMD_ASSET = "cm_asset"; } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java index dcb4bd5c26..38ad54cb8a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java @@ -64,6 +64,7 @@ public class ContractInfo extends TxDataInfo { private ContractResultInfo resultInfo; private String args; + private boolean crossAsset; @JsonIgnore private boolean isNew; @@ -338,4 +339,12 @@ public String getArgs() { public void setArgs(String args) { this.args = args; } + + public boolean isCrossAsset() { + return crossAsset; + } + + public void setCrossAsset(boolean crossAsset) { + this.crossAsset = crossAsset; + } } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index 039ea5142f..70bde2fa6e 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -66,6 +66,11 @@ public RpcResult getContract(List params) { if (contractInfo == null) { rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); } else { + Integer assetIdOfNRC20 = WalletRpcHandler.getAssetIdOfNRC20(contractAddress); + if (assetIdOfNRC20 != null) { + boolean crossAssets = WalletRpcHandler.isCrossAssets(chainId, assetIdOfNRC20); + contractInfo.setCrossAsset(crossAssets); + } ApiCache apiCache = CacheManager.getCache(chainId); AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, contractAddress, defaultAsset.getChainId(), defaultAsset.getAssetId()); From 2f426f8d23ba1071aa8ddcfc330716261b45178a Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 28 Sep 2020 14:44:00 +0800 Subject: [PATCH 121/304] update ps-module getTxList --- genesis-block.json | 31787 +++++++++++++++- module.ncf | 70 +- .../io/nuls/api/model/po/TransactionInfo.java | 8 +- .../model/po/mini/MiniTransactionInfo.java | 6 +- 4 files changed, 30598 insertions(+), 1273 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 24ab2931b3..81550bf90d 100644 --- a/module.ncf +++ b/module.ncf @@ -5,19 +5,19 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,22 +25,21 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -50,7 +49,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=2 +minNodeAmount=1 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -63,13 +62,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,26 +77,27 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,36 +110,31 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= -syncCoinBase=true -syncAddress=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 @@ -149,8 +144,5 @@ dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain - -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java index 84766d89bf..6bfa0353bb 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java @@ -49,9 +49,11 @@ public void calcValue() { for (CoinToInfo output : coinTos) { value = value.add(output.getAmount()); } - CoinToInfo output = coinTos.get(0); - this.symbol = output.getSymbol(); - this.decimal = output.getDecimal(); + } + if (coinFroms != null && !coinFroms.isEmpty()) { + CoinFromInfo input = coinFroms.get(coinFroms.size() -1); + this.symbol = input.getSymbol(); + this.decimal = input.getDecimal(); } this.value = value; // if (type == TxType.COIN_BASE || diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java index ae2784a119..2bbe078008 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java @@ -37,7 +37,11 @@ public static MiniTransactionInfo toInfo(Document document) { info.status = document.getInteger("status"); info.fee = DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class); info.symbol = document.getString("symbol"); - info.decimal = document.getInteger("decimal"); + try { + info.decimal = document.getInteger("decimal"); + } catch (Exception e) { + info.decimal = 8; + } return info; } From 9ef00312831346de033701d59c474b78be9553cf Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Sat, 10 Oct 2020 10:59:38 +0800 Subject: [PATCH 122/304] update ps-module getAcctTxs --- genesis-block.json | 31787 +--------------- module.ncf | 70 +- .../api/rpc/controller/AccountController.java | 25 +- 3 files changed, 1286 insertions(+), 30596 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index 073564433e..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,32343 +3,3016 @@ "time": "1568131200", "txs": [ { - "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", - "amount": 1314374313456741, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 }, { - "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", - "amount": 1300069015130000, + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, "lockTime": 0 }, { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "amount": 1207689896443277, + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, "lockTime": 0 }, { - "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", - "amount": 771827824681203, + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 550000088100000, + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, "lockTime": 0 }, { - "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", - "amount": 140000008800000, + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, "lockTime": 0 }, { - "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", - "amount": 138024778582864, + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, "lockTime": 0 }, { - "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", - "amount": 116322053971373, + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1568217600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1570809600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1573488000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1576080000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1578758400 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1581436800 - }, - { - "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", - "amount": 100000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "amount": 96744642395658, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", - "amount": 85989563359937, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", - "amount": 81999131521100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", - "amount": 72215389273971, - "lockTime": 0 - }, - { - "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", - "amount": 66285252473579, - "lockTime": 0 - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "amount": 58440536215003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "amount": 54028608913486, - "lockTime": 0 - }, - { - "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", - "amount": 52455188181303, - "lockTime": 0 - }, - { - "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", - "amount": 51077727524499, - "lockTime": 0 - }, - { - "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", - "amount": 50747000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", - "amount": 49210312908703, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", - "amount": 44824915276060, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", - "amount": 41141888592935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", - "amount": 39593370697151, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", - "amount": 39538300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", - "amount": 37859381904399, - "lockTime": 0 - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "amount": 37261992045445, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", - "amount": 36996399546102, - "lockTime": 0 - }, - { - "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", - "amount": 34259997306164, - "lockTime": 0 - }, - { - "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", - "amount": 33474778174290, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "amount": 33428773692408, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", - "amount": 29979973788997, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", - "amount": 28961474708694, - "lockTime": 0 - }, - { - "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", - "amount": 28029608434617, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", - "amount": 27995340514245, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", - "amount": 27983215462302, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", - "amount": 27287845540512, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", - "amount": 27170252453222, - "lockTime": 0 - }, - { - "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", - "amount": 26991197104961, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", - "amount": 26243684526688, - "lockTime": 0 - }, - { - "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", - "amount": 25339809000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", - "amount": 24765621251103, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", - "amount": 24109958760182, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", - "amount": 23179417362222, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", - "amount": 22847412113988, - "lockTime": 0 - }, - { - "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", - "amount": 22795607364895, - "lockTime": 0 - }, - { - "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", - "amount": 22755875149791, - "lockTime": 0 - }, - { - "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", - "amount": 22562877881100, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", - "amount": 22520078679607, + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, "lockTime": 0 }, { - "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", - "amount": 21729897375518, + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, "lockTime": 0 }, { - "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", - "amount": 21668767029600, + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, "lockTime": 0 }, { - "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", - "amount": 21059522254002, + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, "lockTime": 0 }, { - "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", - "amount": 20995499736221, + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, "lockTime": 0 }, { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "amount": 20267828455189, + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, "lockTime": 0 }, { - "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", - "amount": 20266600000000, + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, "lockTime": 0 }, { - "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", - "amount": 20206238172992, + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, "lockTime": 0 }, { - "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", - "amount": 20079673353554, + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, "lockTime": 0 }, { - "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", - "amount": 20033796577391, + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, "lockTime": 0 }, { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "amount": 20001091183810, + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, "lockTime": 0 }, { - "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", - "amount": 19999999667300, + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, "lockTime": 0 }, { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "amount": 18462992623715, + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, "lockTime": 0 }, { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "amount": 17909555922184, + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, "lockTime": 0 }, { - "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", - "amount": 17704654522876, + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, "lockTime": 0 }, { - "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", - "amount": 17680919000000, + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, "lockTime": 0 }, { - "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", - "amount": 17478894381698, + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, "lockTime": 0 }, { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "amount": 17449936530800, + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, "lockTime": 0 }, { - "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", - "amount": 16308221346515, + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, "lockTime": 0 }, { - "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", - "amount": 16020659000000, + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, "lockTime": 0 }, { - "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", - "amount": 15982573625914, + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, "lockTime": 0 }, { - "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", - "amount": 15877695642439, + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, "lockTime": 0 }, { - "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", - "amount": 15385796365621, + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, "lockTime": 0 }, { - "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", - "amount": 15289325657803, + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, "lockTime": 0 }, { - "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", - "amount": 15284879672727, + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, "lockTime": 0 }, { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "amount": 15256800433599, + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, "lockTime": 0 }, { - "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", - "amount": 14657695896915, + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, "lockTime": 0 }, { - "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", - "amount": 14559968174355, + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, "lockTime": 0 }, { - "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", - "amount": 14000372803486, + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, "lockTime": 0 }, { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "amount": 13550671393781, + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, "lockTime": 0 }, { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "amount": 13154825176483, + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, "lockTime": 0 }, { - "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", - "amount": 12668965887487, + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, "lockTime": 0 }, { - "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", - "amount": 12666267394598, + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, "lockTime": 0 }, { - "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", - "amount": 12621967560175, + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, "lockTime": 0 }, { - "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", - "amount": 12255358349302, + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, "lockTime": 0 }, { - "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", - "amount": 12121721619499, + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, "lockTime": 0 }, { - "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", - "amount": 11926338975726, + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, "lockTime": 0 }, { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "amount": 11583511308210, + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, "lockTime": 0 }, { - "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", - "amount": 11409057036310, + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, "lockTime": 0 }, { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "amount": 11351298447654, + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, "lockTime": 0 }, { - "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", - "amount": 11082291795378, + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, "lockTime": 0 }, { - "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", - "amount": 11034033057236, + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, "lockTime": 0 }, { - "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", - "amount": 11014309369256, + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, "lockTime": 0 }, { - "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", - "amount": 10974894000000, + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, "lockTime": 0 }, { - "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", - "amount": 10963578142123, + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, "lockTime": 0 }, { - "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", - "amount": 10705356018980, + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, "lockTime": 0 }, { - "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", - "amount": 10496929192351, + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, "lockTime": 0 }, { - "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", - "amount": 10210478607637, + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, "lockTime": 0 }, { - "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", - "amount": 10049766328408, + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, "lockTime": 0 }, { - "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", - "amount": 10049249616254, + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, "lockTime": 0 }, { - "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", - "amount": 10028057245796, + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, "lockTime": 0 }, { - "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", - "amount": 10004821122300, + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, "lockTime": 0 }, { - "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", - "amount": 10000101011110, + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, "lockTime": 0 }, { - "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", - "amount": 9597836179629, + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, "lockTime": 0 }, { - "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", - "amount": 9411000000000, + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, "lockTime": 0 }, { - "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", - "amount": 9048369857092, + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, "lockTime": 0 }, { - "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", - "amount": 8964347401016, + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, "lockTime": 0 }, { - "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", - "amount": 8618647971105, + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, "lockTime": 0 }, { - "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", - "amount": 8554267594404, + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, "lockTime": 0 }, { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "amount": 8430412671966, + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, "lockTime": 0 }, { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "amount": 8348822887210, + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, "lockTime": 0 }, { - "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", - "amount": 8134835979711, + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, "lockTime": 0 }, { - "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", - "amount": 8106292989089, + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, "lockTime": 0 }, { - "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", - "amount": 8099244977731, + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, "lockTime": 0 }, { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "amount": 7931526325696, + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, "lockTime": 0 }, { - "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", - "amount": 7576838434314, + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, "lockTime": 0 }, { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "amount": 7433908705664, + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, "lockTime": 0 }, { - "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", - "amount": 7429043947267, + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, "lockTime": 0 }, { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "amount": 7386613229167, + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, "lockTime": 0 }, { - "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", - "amount": 7326992273148, + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, "lockTime": 0 }, { - "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", - "amount": 7153182261056, + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, "lockTime": 0 }, { - "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", - "amount": 7119369434252, + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, "lockTime": 0 }, { - "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", - "amount": 7080899230736, + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, "lockTime": 0 }, { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "amount": 7036152444418, + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", - "amount": 7018221162019, + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, "lockTime": 0 }, { - "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", - "amount": 6995517424108, + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, "lockTime": 0 }, { - "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", - "amount": 6995327178146, + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, "lockTime": 0 }, { - "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", - "amount": 6799926963817, + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, "lockTime": 0 }, { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "amount": 6547292181799, + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, "lockTime": 0 }, { - "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", - "amount": 6454254935717, + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, "lockTime": 0 }, { - "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", - "amount": 6435998684431, + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, "lockTime": 0 }, { - "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", - "amount": 6420573019027, + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, "lockTime": 0 }, { - "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", - "amount": 6363661460959, + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, "lockTime": 0 }, { - "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", - "amount": 6362551588408, + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, "lockTime": 0 }, { - "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", - "amount": 6298994991387, + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, "lockTime": 0 }, { - "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", - "amount": 6255850503155, + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, "lockTime": 0 }, { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "amount": 6227658206731, + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, "lockTime": 0 }, { - "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", - "amount": 6170431207813, + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, "lockTime": 0 }, { - "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", - "amount": 6012231756288, + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, "lockTime": 0 }, { - "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", - "amount": 6006135315945, + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, "lockTime": 0 }, { - "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", - "amount": 5972970915411, + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, "lockTime": 0 }, { - "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", - "amount": 5971794874143, + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, "lockTime": 0 }, { - "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", - "amount": 5944437495364, + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, "lockTime": 0 }, { - "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", - "amount": 5766797590061, + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, "lockTime": 0 }, { - "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", - "amount": 5743599852741, + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, "lockTime": 0 }, { - "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", - "amount": 5702200009199, + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, "lockTime": 0 }, { - "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", - "amount": 5647717457022, + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, "lockTime": 0 }, { - "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", - "amount": 5629556387539, + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, "lockTime": 0 }, { - "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", - "amount": 5628135943750, + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, "lockTime": 0 }, { - "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", - "amount": 5563400000000, + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, "lockTime": 0 }, { - "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", - "amount": 5515305768040, + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, "lockTime": 0 }, { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "amount": 5379373223453, + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, "lockTime": 0 }, { - "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", - "amount": 5373006606201, + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, "lockTime": 0 }, { - "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", - "amount": 5345612916464, + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, "lockTime": 0 }, { - "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", - "amount": 5290953176650, + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, "lockTime": 0 }, { - "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", - "amount": 5288541299791, + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, "lockTime": 0 }, { - "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", - "amount": 5222483124619, + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, "lockTime": 0 }, { - "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", - "amount": 5209711163393, + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, "lockTime": 0 }, { - "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", - "amount": 5188900000000, + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, "lockTime": 0 }, { - "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", - "amount": 5180804996689, + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, "lockTime": 0 }, { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "amount": 5130558133262, + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, "lockTime": 0 }, { - "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", - "amount": 5049478565462, + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, "lockTime": 0 }, { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "amount": 4988309871304, + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", - "amount": 4887877000000, + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", - "amount": 4830577078034, + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, "lockTime": 0 }, { - "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", - "amount": 4801129520291, + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, "lockTime": 0 }, { - "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", - "amount": 4732474774320, + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, "lockTime": 0 }, { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "amount": 4705517703977, + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, "lockTime": 0 }, { - "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", - "amount": 4694439297547, + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", - "amount": 4647006300000, + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", - "amount": 4646953342492, + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", - "amount": 4616310943553, + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", - "amount": 4611926555756, + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, "lockTime": 0 }, { - "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", - "amount": 4568137237703, + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, "lockTime": 0 }, { - "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", - "amount": 4566625857924, + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, "lockTime": 0 }, { - "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", - "amount": 4523158387698, + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "amount": 4489756977035, + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", - "amount": 4474931163300, + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", - "amount": 4466165926884, + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", - "amount": 4432396267867, + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", - "amount": 4431622300791, + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", - "amount": 4413942339362, + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", - "amount": 4405882496140, + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", - "amount": 4404161055094, + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", - "amount": 4388649111917, + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", - "amount": 4347573883866, + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", - "amount": 4339160109193, + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", - "amount": 4317197774227, + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "amount": 4286676134209, + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", - "amount": 4259827282396, + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", - "amount": 4242359317804, + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, "lockTime": 0 }, { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "amount": 4235385342453, + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, "lockTime": 0 }, { - "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", - "amount": 4200739986175, + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", - "amount": 4178255482000, + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", - "amount": 4175579049369, + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", - "amount": 4139098221820, + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", - "amount": 4130862439847, + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, "lockTime": 0 }, { - "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", - "amount": 4127181289401, + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, "lockTime": 0 }, { - "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", - "amount": 4097221270572, + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, "lockTime": 0 }, { - "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", - "amount": 4095789805639, + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, "lockTime": 0 }, { - "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", - "amount": 4090792034338, + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, "lockTime": 0 }, { - "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", - "amount": 4089818633664, + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, "lockTime": 0 }, { - "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", - "amount": 4087805490480, + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, "lockTime": 0 }, { - "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", - "amount": 4083900000000, + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, "lockTime": 0 }, { - "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", - "amount": 4034495354216, + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, "lockTime": 0 }, { - "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", - "amount": 4013365700381, + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, "lockTime": 0 }, { - "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", - "amount": 4006149129710, + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, "lockTime": 0 }, { - "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", - "amount": 3993365195258, + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, "lockTime": 0 }, { - "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", - "amount": 3983146833364, + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, "lockTime": 0 }, { - "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", - "amount": 3979923799989, + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, "lockTime": 0 }, { - "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", - "amount": 3960513870982, + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, "lockTime": 0 }, { - "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", - "amount": 3927318651232, + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, "lockTime": 0 }, { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "amount": 3911491754115, + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, "lockTime": 0 }, { - "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", - "amount": 3898767176140, + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, "lockTime": 0 }, { - "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", - "amount": 3892538355819, + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, "lockTime": 0 }, { - "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", - "amount": 3855100262699, + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, "lockTime": 0 }, { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "amount": 3827037476637, + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, "lockTime": 0 }, { - "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", - "amount": 3811169478064, + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, "lockTime": 0 }, { - "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", - "amount": 3810553700980, + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, "lockTime": 0 }, { - "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", - "amount": 3769010423189, + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, "lockTime": 0 }, { - "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", - "amount": 3746670550527, + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, "lockTime": 0 }, { - "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", - "amount": 3732256484155, + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, "lockTime": 0 }, { - "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", - "amount": 3685768408200, + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, "lockTime": 0 }, { - "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", - "amount": 3655910282573, + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, "lockTime": 0 }, { - "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", - "amount": 3649905528145, + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, "lockTime": 0 }, { - "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", - "amount": 3621424455199, + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, "lockTime": 0 }, { - "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", - "amount": 3613911902450, + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, "lockTime": 0 }, { - "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", - "amount": 3604828977508, + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, "lockTime": 0 }, { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "amount": 3566330778157, + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, "lockTime": 0 }, { - "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", - "amount": 3538199000000, + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, "lockTime": 0 }, { - "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", - "amount": 3495425261514, + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, "lockTime": 0 }, { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "amount": 3487546181731, + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, "lockTime": 0 }, { - "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", - "amount": 3391978196979, + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, "lockTime": 0 }, { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "amount": 3360604881888, + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, "lockTime": 0 }, { - "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", - "amount": 3335143686733, + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, "lockTime": 0 }, { - "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", - "amount": 3331061554915, + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, "lockTime": 0 }, { - "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", - "amount": 3323239998543, + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, "lockTime": 0 }, { - "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", - "amount": 3311961387294, + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, "lockTime": 0 }, { - "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", - "amount": 3297094325192, + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, "lockTime": 0 }, { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "amount": 3286747568517, + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, "lockTime": 0 }, { - "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", - "amount": 3280611800340, + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, "lockTime": 0 }, { - "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", - "amount": 3270332890601, + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, "lockTime": 0 }, { - "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", - "amount": 3262562062214, + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, "lockTime": 0 }, { - "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", - "amount": 3253798581575, + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, "lockTime": 0 }, { - "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", - "amount": 3250306375096, + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, "lockTime": 0 }, { - "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", - "amount": 3248652471821, + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", - "amount": 3239187517096, + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "amount": 3227989972889, + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, "lockTime": 0 }, { - "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", - "amount": 3223012704398, + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, "lockTime": 0 }, { - "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", - "amount": 3127303308393, + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, "lockTime": 0 }, { - "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", - "amount": 3114545041663, + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, "lockTime": 0 }, { - "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", - "amount": 3114371637359, + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, "lockTime": 0 }, { - "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", - "amount": 3098280351409, + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", - "amount": 3084432046686, + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", - "amount": 3084314606659, + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", - "amount": 3067842756460, + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "amount": 3049372130977, + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", - "amount": 3034533415571, + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, "lockTime": 0 }, { - "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", - "amount": 3024446627522, + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, "lockTime": 0 }, { - "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", - "amount": 3016641111110, + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, "lockTime": 0 }, { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "amount": 3006370302621, + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, "lockTime": 0 }, { - "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", - "amount": 3003754348603, + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, "lockTime": 0 }, { - "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", - "amount": 3003369565489, + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, "lockTime": 0 }, { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "amount": 2991614988430, + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, "lockTime": 0 }, { - "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", - "amount": 2983827070197, + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, "lockTime": 0 }, { - "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", - "amount": 2982058302152, + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, "lockTime": 0 }, { - "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", - "amount": 2961178030782, + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, "lockTime": 0 }, { - "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", - "amount": 2959980299559, + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, "lockTime": 0 }, { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "amount": 2923789183800, + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, "lockTime": 0 }, { - "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", - "amount": 2922515618168, + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, "lockTime": 0 }, { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "amount": 2921485767410, + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, "lockTime": 0 }, { - "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", - "amount": 2920614737994, + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, "lockTime": 0 }, { - "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", - "amount": 2918736502136, + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, "lockTime": 0 }, { - "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", - "amount": 2908563502926, + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, "lockTime": 0 }, { - "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", - "amount": 2875371127677, + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, "lockTime": 0 }, { - "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", - "amount": 2844883497292, + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, "lockTime": 0 }, { - "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", - "amount": 2844124104402, + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, "lockTime": 0 }, { - "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", - "amount": 2829973172145, + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, "lockTime": 0 }, { - "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", - "amount": 2821622909059, + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, "lockTime": 0 }, { - "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", - "amount": 2786200000000, + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, "lockTime": 0 }, { - "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", - "amount": 2785813908817, + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, "lockTime": 0 }, { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "amount": 2784926825513, + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, "lockTime": 0 }, { - "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", - "amount": 2772147293763, + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, "lockTime": 0 }, { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "amount": 2732620680842, + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, "lockTime": 0 }, { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "amount": 2714528126132, + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, "lockTime": 0 }, { - "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", - "amount": 2699791100000, + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, "lockTime": 0 }, { - "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", - "amount": 2686142685973, + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, "lockTime": 0 }, { - "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", - "amount": 2671269299743, + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, "lockTime": 0 }, { - "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", - "amount": 2671214015444, + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, "lockTime": 0 }, { - "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", - "amount": 2659428100000, + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, "lockTime": 0 }, { - "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", - "amount": 2654669205335, + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, "lockTime": 0 }, { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "amount": 2654532230472, + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, "lockTime": 0 }, { - "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", - "amount": 2643085702359, + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, "lockTime": 0 }, { - "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", - "amount": 2640407616700, + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, "lockTime": 0 }, { - "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", - "amount": 2633698266579, + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, "lockTime": 0 }, { - "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", - "amount": 2612737305486, + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, "lockTime": 0 }, { - "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", - "amount": 2611194150236, + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, "lockTime": 0 }, { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "amount": 2602401497831, + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, "lockTime": 0 }, { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "amount": 2592239217420, + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, "lockTime": 0 }, { - "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", - "amount": 2585880528244, + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", - "amount": 2575849842209, + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", - "amount": 2564427203389, + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", - "amount": 2561080103484, + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, "lockTime": 0 }, { - "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", - "amount": 2560455845735, + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, "lockTime": 0 }, { - "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", - "amount": 2550325652804, + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, "lockTime": 0 }, { - "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", - "amount": 2529733793421, + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, "lockTime": 0 }, { - "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", - "amount": 2527204033602, + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, "lockTime": 0 }, { - "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", - "amount": 2523806252812, + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, "lockTime": 0 }, { - "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", - "amount": 2520767814000, + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, "lockTime": 0 }, { - "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", - "amount": 2512332890167, + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, "lockTime": 0 }, { - "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", - "amount": 2506489602729, + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, "lockTime": 0 }, { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "amount": 2505788549696, + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, "lockTime": 0 }, { - "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", - "amount": 2503882375281, + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, "lockTime": 0 }, { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "amount": 2503791332448, + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, "lockTime": 0 }, { - "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", - "amount": 2498140085719, + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, "lockTime": 0 }, { - "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", - "amount": 2491590986231, + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, "lockTime": 0 }, { - "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", - "amount": 2485683525333, + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, "lockTime": 0 }, { - "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", - "amount": 2462313209710, + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, "lockTime": 0 }, { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "amount": 2461793544874, + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "amount": 2458824842116, + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "amount": 2445854118322, + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", - "amount": 2444637599755, + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", - "amount": 2438371066122, + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "amount": 2423849195494, + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "amount": 2413065350762, + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", - "amount": 2408097275306, + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", - "amount": 2407640165613, + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "amount": 2406904698682, + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", - "amount": 2404674651501, + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "amount": 2403745208237, + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", - "amount": 2400348330773, + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", - "amount": 2399500000000, + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "amount": 2397165126369, + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", - "amount": 2378637371160, + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", - "amount": 2378073843263, + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "amount": 2373873118963, + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "amount": 2368030658046, + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", - "amount": 2347090108700, + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", - "amount": 2332711128929, + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, "lockTime": 0 }, { - "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", - "amount": 2331223358189, + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, "lockTime": 0 }, { - "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", - "amount": 2329515900000, + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, "lockTime": 0 }, { - "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", - "amount": 2324535158900, + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, "lockTime": 0 }, { - "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", - "amount": 2314300000000, + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, "lockTime": 0 }, { - "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", - "amount": 2313384999334, + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, "lockTime": 0 }, { - "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", - "amount": 2312557916000, + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, "lockTime": 0 }, { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "amount": 2310225175167, + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, "lockTime": 0 }, { - "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", - "amount": 2299501675703, + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, "lockTime": 0 }, { - "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", - "amount": 2288084075746, + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, "lockTime": 0 }, { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "amount": 2282427758100, + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, "lockTime": 0 }, { - "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", - "amount": 2274175020234, + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, "lockTime": 0 }, { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "amount": 2257532888084, + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, "lockTime": 0 }, { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "amount": 2254957709482, + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, "lockTime": 0 }, { - "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", - "amount": 2250233316770, + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, "lockTime": 0 }, { - "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", - "amount": 2245221483757, + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, "lockTime": 0 }, { - "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", - "amount": 2232845815309, + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, "lockTime": 0 }, { - "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", - "amount": 2232285520749, + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, "lockTime": 0 }, { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "amount": 2224585008400, + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, "lockTime": 0 }, { - "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", - "amount": 2220759959278, + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, "lockTime": 0 }, { - "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", - "amount": 2216046481500, + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, "lockTime": 0 }, { - "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", - "amount": 2214311555607, + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, "lockTime": 0 }, { - "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", - "amount": 2208928191711, + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, "lockTime": 0 }, { - "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", - "amount": 2201414464632, + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, "lockTime": 0 }, { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "amount": 2197120481814, + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, "lockTime": 0 }, { - "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", - "amount": 2194601041128, + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, "lockTime": 0 }, { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "amount": 2193191237193, + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, "lockTime": 0 }, { - "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", - "amount": 2190008983271, + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, "lockTime": 0 }, { - "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", - "amount": 2189525702549, + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, "lockTime": 0 }, { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "amount": 2177960945461, + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, "lockTime": 0 }, { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "amount": 2177793611859, + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, "lockTime": 0 }, { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "amount": 2165977843823, + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, "lockTime": 0 }, { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "amount": 2165141022582, + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", - "amount": 2160832408906, + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", - "amount": 2157940349129, + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "amount": 2157464205186, + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", - "amount": 2157032154243, + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", - "amount": 2154039597526, + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", - "amount": 2153501474921, + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "amount": 2138851541920, + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, "lockTime": 0 }, { - "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", - "amount": 2129456403303, + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, "lockTime": 0 }, { - "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", - "amount": 2129201111110, + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, "lockTime": 0 }, { - "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", - "amount": 2126535005180, + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, "lockTime": 0 }, { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "amount": 2120987060003, + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, "lockTime": 0 }, { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "amount": 2119167814451, + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, "lockTime": 0 }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "amount": 2115537957318, + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, "lockTime": 0 }, { - "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", - "amount": 2109262770164, + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, "lockTime": 0 }, { - "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", - "amount": 2104032286014, + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, "lockTime": 0 }, { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "amount": 2100003306550, + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, "lockTime": 0 }, { - "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", - "amount": 2097583277305, + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, "lockTime": 0 }, { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "amount": 2094576202794, + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, "lockTime": 0 }, { - "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", - "amount": 2091321339852, + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, "lockTime": 0 }, { - "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", - "amount": 2088277643638, + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, "lockTime": 0 }, { - "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", - "amount": 2084658200000, + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, "lockTime": 0 }, { - "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", - "amount": 2084094111110, + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, "lockTime": 0 }, { - "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", - "amount": 2083859676189, + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, "lockTime": 0 }, { - "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", - "amount": 2082556275251, + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, "lockTime": 0 }, { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "amount": 2081281639763, + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, "lockTime": 0 }, { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "amount": 2075807942069, + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, "lockTime": 0 }, { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "amount": 2075735709754, + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, "lockTime": 0 }, { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "amount": 2075519608709, + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, "lockTime": 0 }, { - "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", - "amount": 2074282875104, + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, "lockTime": 0 }, { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "amount": 2073614393244, + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, "lockTime": 0 }, { - "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", - "amount": 2068101700641, + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, "lockTime": 0 }, { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "amount": 2068091781354, + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, "lockTime": 0 }, { - "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", - "amount": 2067759441999, + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, "lockTime": 0 }, { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "amount": 2058573526549, + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, "lockTime": 0 }, { - "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", - "amount": 2056867768988, + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, "lockTime": 0 }, { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "amount": 2056066823856, + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, "lockTime": 0 }, { - "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", - "amount": 2055945028731, + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, "lockTime": 0 }, { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "amount": 2055670116258, + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, "lockTime": 0 }, { - "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", - "amount": 2050764983771, + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, "lockTime": 0 }, { - "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", - "amount": 2046492776171, + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, "lockTime": 0 }, { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "amount": 2040915033861, + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, "lockTime": 0 }, { - "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", - "amount": 2040294786521, + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, "lockTime": 0 }, { - "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", - "amount": 2036932010954, + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, "lockTime": 0 }, { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "amount": 2036613104066, + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, "lockTime": 0 }, { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "amount": 2036018484169, + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, "lockTime": 0 }, { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "amount": 2036012751778, + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, "lockTime": 0 }, { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "amount": 2035494356743, + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, "lockTime": 0 }, { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "amount": 2034810197662, + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, "lockTime": 0 }, { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "amount": 2034038321331, + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, "lockTime": 0 }, { - "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", - "amount": 2033824784827, + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, "lockTime": 0 }, { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "amount": 2033107453284, + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, "lockTime": 0 }, { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "amount": 2032437685983, + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, "lockTime": 0 }, { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "amount": 2027117752848, + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, "lockTime": 0 }, { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "amount": 2024487062845, + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, "lockTime": 0 }, { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "amount": 2024206918844, + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, "lockTime": 0 }, { - "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", - "amount": 2022265112202, + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, "lockTime": 0 }, { - "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", - "amount": 2020044918767, + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, "lockTime": 0 }, { - "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", - "amount": 2017757942127, + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, "lockTime": 0 }, { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "amount": 2016927189193, + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, "lockTime": 0 }, { - "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", - "amount": 2015779311110, + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, "lockTime": 0 }, { - "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", - "amount": 2013865643211, + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, "lockTime": 0 }, { - "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", - "amount": 2012535119804, + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, "lockTime": 0 }, { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "amount": 2011682301048, + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, "lockTime": 0 }, { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "amount": 2010847934394, + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, "lockTime": 0 }, { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "amount": 2009664081890, + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, "lockTime": 0 }, { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "amount": 2009538449322, + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "amount": 2008025809214, + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "amount": 2007843844116, + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, "lockTime": 0 }, { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "amount": 2007566055582, + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, "lockTime": 0 }, { - "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", - "amount": 2006480000000, + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, "lockTime": 0 }, { - "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", - "amount": 2006476130004, + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, "lockTime": 0 }, { - "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", - "amount": 2005863893780, + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, "lockTime": 0 }, { - "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", - "amount": 2004334460269, + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, "lockTime": 0 }, { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "amount": 2003623863051, + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, "lockTime": 0 }, { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "amount": 2003380877828, + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, "lockTime": 0 }, { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "amount": 2003287117401, + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, "lockTime": 0 }, { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "amount": 2003245024802, + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, "lockTime": 0 }, { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "amount": 2003014108162, + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, "lockTime": 0 }, { - "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", - "amount": 2002623190557, + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, "lockTime": 0 }, { - "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", - "amount": 2002464726104, + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, "lockTime": 0 }, { - "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", - "amount": 2002253947425, + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, "lockTime": 0 }, { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "amount": 2001181497009, + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, "lockTime": 0 }, { - "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", - "amount": 2001139704491, + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, "lockTime": 0 }, { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "amount": 2000882364111, + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, "lockTime": 0 }, { - "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", - "amount": 2000641249410, + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, "lockTime": 0 }, { - "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", - "amount": 2000610292487, + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, "lockTime": 0 }, { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "amount": 2000399953793, + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, "lockTime": 0 }, { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "amount": 2000365342699, + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, "lockTime": 0 }, { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "amount": 2000232083093, + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, "lockTime": 0 }, { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "amount": 2000198111110, + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, "lockTime": 0 }, { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "amount": 2000173789364, + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, "lockTime": 0 }, { - "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", - "amount": 2000100111110, + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, "lockTime": 0 }, { - "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", - "amount": 2000099898108, + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, "lockTime": 0 }, { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "amount": 2000099111110, + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, "lockTime": 0 }, { - "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", - "amount": 2000098011110, + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, "lockTime": 0 }, { - "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", - "amount": 2000091011110, + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, "lockTime": 0 }, { - "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", - "amount": 2000086369280, + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, "lockTime": 0 }, { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "amount": 2000058405684, + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, "lockTime": 0 }, { - "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", - "amount": 2000017911110, + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, "lockTime": 0 }, { - "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", - "amount": 2000010111110, + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, "lockTime": 0 }, { - "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", - "amount": 2000010111110, + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, "lockTime": 0 }, { - "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", - "amount": 2000010111110, + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, "lockTime": 0 }, { - "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", - "amount": 2000010111110, + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, "lockTime": 0 }, { - "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", - "amount": 2000010111110, + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, "lockTime": 0 }, { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "amount": 2000009111110, + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, "lockTime": 0 }, { - "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", - "amount": 2000009000000, + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, "lockTime": 0 }, { - "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", - "amount": 2000009000000, + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, "lockTime": 0 }, { - "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", - "amount": 2000009000000, + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, "lockTime": 0 }, { - "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", - "amount": 2000009000000, + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, "lockTime": 0 }, { - "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", - "amount": 2000009000000, + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", - "amount": 2000008911110, + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", - "amount": 2000005011110, + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", - "amount": 2000005011110, + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", - "amount": 2000001111110, + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "amount": 2000000679064, + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "amount": 1987602846753, + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", - "amount": 1985670089499, + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, "lockTime": 0 }, { - "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", - "amount": 1982211469443, + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, "lockTime": 0 }, { - "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", - "amount": 1981832472943, + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, "lockTime": 0 }, { - "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", - "amount": 1979697708837, + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, "lockTime": 0 }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "amount": 1966041995997, + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, "lockTime": 0 }, { - "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", - "amount": 1963738533982, + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, "lockTime": 0 }, { - "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", - "amount": 1958238264916, + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, "lockTime": 0 }, { - "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", - "amount": 1952478544587, + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, "lockTime": 0 }, { - "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", - "amount": 1943494060487, + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, "lockTime": 0 }, { - "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", - "amount": 1927503792350, + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, "lockTime": 0 }, { - "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", - "amount": 1919931284005, + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, "lockTime": 0 }, { - "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", - "amount": 1919458620000, + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, "lockTime": 0 }, { - "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", - "amount": 1917044047699, + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, "lockTime": 0 }, { - "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", - "amount": 1909180173388, + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, "lockTime": 0 }, { - "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", - "amount": 1901147501442, + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, "lockTime": 0 }, { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "amount": 1898634487477, + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, "lockTime": 0 }, { - "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", - "amount": 1892418605876, + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, "lockTime": 0 }, { - "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", - "amount": 1877990112895, + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, "lockTime": 0 }, { - "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", - "amount": 1867607885258, + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, "lockTime": 0 }, { - "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", - "amount": 1862720614605, + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, "lockTime": 0 }, { - "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", - "amount": 1845483896505, + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", - "amount": 1845459117552, + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", - "amount": 1827502997735, + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", - "amount": 1811226447321, + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, "lockTime": 0 }, { - "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", - "amount": 1806223870958, + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, "lockTime": 0 }, { - "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", - "amount": 1797559579952, + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, "lockTime": 0 }, { - "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", - "amount": 1797270576526, + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, "lockTime": 0 }, { - "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", - "amount": 1791680184979, + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, "lockTime": 0 }, { - "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", - "amount": 1785822811110, + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, "lockTime": 0 }, { - "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", - "amount": 1784376882586, + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, "lockTime": 0 }, { - "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", - "amount": 1771360194271, + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, "lockTime": 0 }, { - "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", - "amount": 1769642117033, + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, "lockTime": 0 }, { - "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", - "amount": 1767652984461, + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, "lockTime": 0 }, { - "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", - "amount": 1761683011110, + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, "lockTime": 0 }, { - "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", - "amount": 1754373322210, + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, "lockTime": 0 }, { - "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", - "amount": 1732009518727, + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", - "amount": 1727913275323, + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", - "amount": 1720147985773, + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", - "amount": 1717345934781, + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "amount": 1710378692033, + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, "lockTime": 0 }, { - "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", - "amount": 1662804498747, + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, "lockTime": 0 }, { - "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", - "amount": 1649888019401, + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, "lockTime": 0 }, { - "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", - "amount": 1646621806474, + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, "lockTime": 0 }, { - "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", - "amount": 1642447581350, + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, "lockTime": 0 }, { - "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", - "amount": 1640698498183, + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, "lockTime": 0 }, { - "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", - "amount": 1636590784803, + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, "lockTime": 0 }, { - "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", - "amount": 1636555919569, + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "amount": 1624093192505, + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", - "amount": 1622344350254, + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", - "amount": 1621883807409, + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, "lockTime": 0 }, { - "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", - "amount": 1620351258779, + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", - "amount": 1615784977131, + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", - "amount": 1611089702586, + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, "lockTime": 0 }, { - "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", - "amount": 1608079726426, + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, "lockTime": 0 }, { - "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", - "amount": 1596157645055, + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, "lockTime": 0 }, { - "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", - "amount": 1580138725178, + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, "lockTime": 0 }, { - "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", - "amount": 1553796707569, + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", - "amount": 1552885553329, + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", - "amount": 1547805533569, + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", - "amount": 1533811095448, + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", - "amount": 1531431774417, + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", - "amount": 1527460702364, + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", - "amount": 1520006101451, + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", - "amount": 1517994561157, + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, "lockTime": 0 }, { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "amount": 1514347763189, + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, "lockTime": 0 }, { - "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", - "amount": 1508660771720, + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, "lockTime": 0 }, { - "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", - "amount": 1506362472146, + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, "lockTime": 0 }, { - "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", - "amount": 1506130233709, + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, "lockTime": 0 }, { - "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", - "amount": 1502655086918, + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, "lockTime": 0 }, { - "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", - "amount": 1500687804548, + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, "lockTime": 0 }, { - "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", - "amount": 1500666032784, + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, "lockTime": 0 }, { - "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", - "amount": 1500101605474, + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, "lockTime": 0 }, { - "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", - "amount": 1500000000000, + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", - "amount": 1499807257083, + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", - "amount": 1494015999998, + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", - "amount": 1482286686924, + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, "lockTime": 0 }, { - "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", - "amount": 1471831927535, + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, "lockTime": 0 }, { - "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", - "amount": 1470277969654, + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, "lockTime": 0 }, { - "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", - "amount": 1466072347285, + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, "lockTime": 0 }, { - "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", - "amount": 1458153329469, + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, "lockTime": 0 }, { - "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", - "amount": 1455871158284, + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, "lockTime": 0 }, { - "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", - "amount": 1444250047272, + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, "lockTime": 0 }, { - "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", - "amount": 1443549025153, + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, "lockTime": 0 }, { - "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", - "amount": 1438794879615, + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, "lockTime": 0 }, { - "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", - "amount": 1431131990629, + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, "lockTime": 0 }, { - "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", - "amount": 1425676300814, + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, "lockTime": 0 }, { - "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", - "amount": 1417582606542, + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, "lockTime": 0 }, { - "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", - "amount": 1410238937132, + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, "lockTime": 0 }, { - "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", - "amount": 1404023143035, + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, "lockTime": 0 }, { - "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", - "amount": 1396528826334, + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, "lockTime": 0 }, { - "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", - "amount": 1391149776316, + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", - "amount": 1384016377065, + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", - "amount": 1374898768200, + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", - "amount": 1373044564766, + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, "lockTime": 0 }, { - "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", - "amount": 1352281612470, + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, "lockTime": 0 }, { - "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", - "amount": 1350451450538, + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, "lockTime": 0 }, { - "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", - "amount": 1348918831744, + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, "lockTime": 0 }, { - "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", - "amount": 1348001423889, + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, "lockTime": 0 }, { - "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", - "amount": 1346473165622, + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, "lockTime": 0 }, { - "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", - "amount": 1325150682227, + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, "lockTime": 0 }, { - "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", - "amount": 1318390185884, + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", - "amount": 1311673839170, + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", - "amount": 1305660893498, + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, "lockTime": 0 }, { - "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", - "amount": 1273609908094, + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, "lockTime": 0 }, { - "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", - "amount": 1269733922897, + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, "lockTime": 0 }, { - "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", - "amount": 1258671288218, + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, "lockTime": 0 }, { - "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", - "amount": 1244592164315, + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, "lockTime": 0 }, { - "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", - "amount": 1236570016360, + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, "lockTime": 0 }, { - "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", - "amount": 1231775430133, + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, "lockTime": 0 }, { - "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", - "amount": 1227217241865, + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, "lockTime": 0 - }, + } + ], + "alias": [ { - "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", - "amount": 1225168006874, - "lockTime": 0 + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" }, { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "amount": 1223568760775, - "lockTime": 0 + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" }, { - "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", - "amount": 1220193182776, - "lockTime": 0 + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" }, { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "amount": 1220111371819, - "lockTime": 0 + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" }, { - "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", - "amount": 1219907526522, - "lockTime": 0 + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" }, { - "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", - "amount": 1219385000000, - "lockTime": 0 + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" }, { - "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", - "amount": 1215940898534, - "lockTime": 0 + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" }, { - "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", - "amount": 1195526181049, - "lockTime": 0 + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" }, { - "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", - "amount": 1193314827279, - "lockTime": 0 + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" }, { - "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", - "amount": 1191874181329, - "lockTime": 0 + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" }, { - "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", - "amount": 1187036239092, - "lockTime": 0 + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" }, { - "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", - "amount": 1182119999798, - "lockTime": 0 + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" }, { - "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", - "amount": 1181730500977, - "lockTime": 0 + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" }, { - "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", - "amount": 1180911172991, - "lockTime": 0 + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" }, { - "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", - "amount": 1180639943197, - "lockTime": 0 + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" }, { - "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", - "amount": 1180221775131, - "lockTime": 0 + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" }, { - "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", - "amount": 1178454035091, - "lockTime": 0 + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" }, { - "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", - "amount": 1177773988776, - "lockTime": 0 + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" }, { - "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", - "amount": 1177478202000, - "lockTime": 0 + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" }, { - "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", - "amount": 1177426191667, - "lockTime": 0 + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" }, { - "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", - "amount": 1172934345912, - "lockTime": 0 + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" }, { - "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", - "amount": 1172523076937, - "lockTime": 0 + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" }, { - "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", - "amount": 1166606767133, - "lockTime": 0 + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" }, { - "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", - "amount": 1165694315799, - "lockTime": 0 + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" }, { - "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", - "amount": 1165665233325, - "lockTime": 0 + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" }, { - "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", - "amount": 1156022945798, - "lockTime": 0 + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" }, { - "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", - "amount": 1154908155717, - "lockTime": 0 + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" }, { - "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", - "amount": 1153309494721, - "lockTime": 0 + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" }, { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "amount": 1151753910270, - "lockTime": 0 + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" }, { - "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", - "amount": 1148526819804, - "lockTime": 0 + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" }, { - "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", - "amount": 1147481045771, - "lockTime": 0 + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" }, { - "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", - "amount": 1147168901655, - "lockTime": 0 + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" }, { - "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", - "amount": 1144140806116, - "lockTime": 0 + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" }, { - "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", - "amount": 1139328418699, - "lockTime": 0 + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" }, { - "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", - "amount": 1129951066689, - "lockTime": 0 + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" }, { - "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", - "amount": 1125484353559, - "lockTime": 0 + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" }, { - "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", - "amount": 1123681178223, - "lockTime": 0 + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" }, { - "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", - "amount": 1120995894108, - "lockTime": 0 + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" }, { - "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", - "amount": 1110591670839, - "lockTime": 0 + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" }, { - "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", - "amount": 1110095452915, - "lockTime": 0 + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" }, { - "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", - "amount": 1107452274199, - "lockTime": 0 + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" }, { - "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", - "amount": 1104412611110, - "lockTime": 0 + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" }, { - "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", - "amount": 1096638123245, - "lockTime": 0 + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" }, { - "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", - "amount": 1091677683343, - "lockTime": 0 + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" }, { - "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", - "amount": 1091443728838, - "lockTime": 0 + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" }, { - "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", - "amount": 1089234131551, - "lockTime": 0 + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" }, { - "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", - "amount": 1086705444472, - "lockTime": 0 + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" }, { - "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", - "amount": 1084320903948, - "lockTime": 0 + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" }, { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "amount": 1084172157914, - "lockTime": 0 + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" }, { - "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", - "amount": 1082231867027, - "lockTime": 0 + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" }, { - "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", - "amount": 1079272087137, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", - "amount": 1074404237418, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", - "amount": 1072794659776, - "lockTime": 0 - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "amount": 1071198777167, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", - "amount": 1062720026227, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", - "amount": 1058698633645, - "lockTime": 0 - }, - { - "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", - "amount": 1055829412151, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", - "amount": 1055000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", - "amount": 1053999366856, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", - "amount": 1047230969277, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", - "amount": 1043608175056, - "lockTime": 0 - }, - { - "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", - "amount": 1042372249596, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "amount": 1040224946221, - "lockTime": 0 - }, - { - "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", - "amount": 1038416336793, - "lockTime": 0 - }, - { - "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", - "amount": 1035780672679, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", - "amount": 1034849291290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", - "amount": 1029607508130, - "lockTime": 0 - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "amount": 1029354122846, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", - "amount": 1028188135067, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", - "amount": 1024835520677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", - "amount": 1015578194963, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", - "amount": 1013306751497, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", - "amount": 1012730982526, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", - "amount": 1012588485785, - "lockTime": 0 - }, - { - "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", - "amount": 1012198896427, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", - "amount": 1012011148542, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", - "amount": 1008346726631, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", - "amount": 1006956929151, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", - "amount": 1006539021466, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", - "amount": 1006148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", - "amount": 1003692029229, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", - "amount": 1001096397885, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", - "amount": 1000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", - "amount": 991095716221, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", - "amount": 990001111110, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", - "amount": 987788400255, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", - "amount": 987356288126, - "lockTime": 0 - }, - { - "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", - "amount": 985080141250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", - "amount": 983932110963, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", - "amount": 976594924298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", - "amount": 975225897104, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "amount": 974810436114, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", - "amount": 974597487651, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", - "amount": 973352161546, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", - "amount": 972522251795, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "amount": 971035036260, - "lockTime": 0 - }, - { - "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", - "amount": 968970761706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", - "amount": 965763074157, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", - "amount": 959479726731, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", - "amount": 959154694146, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", - "amount": 958869326580, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", - "amount": 958134697239, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", - "amount": 957639258961, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", - "amount": 951680110822, - "lockTime": 0 - }, - { - "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", - "amount": 949018017124, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", - "amount": 947722535330, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", - "amount": 944915546924, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", - "amount": 941831007188, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "amount": 938534599149, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", - "amount": 934183506679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", - "amount": 927367561109, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", - "amount": 924162741660, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", - "amount": 920900954170, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", - "amount": 919794036530, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", - "amount": 917970269675, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", - "amount": 915899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", - "amount": 910841811110, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", - "amount": 910062149681, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", - "amount": 907386128958, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", - "amount": 904132980217, - "lockTime": 0 - }, - { - "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", - "amount": 899701111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "amount": 899298000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", - "amount": 897589521866, - "lockTime": 0 - }, - { - "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", - "amount": 896974107111, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", - "amount": 896020618575, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", - "amount": 887343608898, - "lockTime": 0 - }, - { - "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", - "amount": 886547626290, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", - "amount": 884784999700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", - "amount": 881773485284, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", - "amount": 879996284959, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", - "amount": 877922858919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", - "amount": 870003633881, - "lockTime": 0 - }, - { - "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", - "amount": 869505911395, - "lockTime": 0 - }, - { - "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", - "amount": 869161533640, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", - "amount": 861846278471, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", - "amount": 860309429777, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", - "amount": 851033632200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", - "amount": 849182517814, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "amount": 845251874740, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", - "amount": 838330496026, - "lockTime": 0 - }, - { - "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", - "amount": 835415502146, - "lockTime": 0 - }, - { - "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", - "amount": 834732962466, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", - "amount": 833202279345, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", - "amount": 833137364069, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", - "amount": 830732461821, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", - "amount": 830430210879, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", - "amount": 830183327774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", - "amount": 828771701195, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", - "amount": 820650152627, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", - "amount": 817845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", - "amount": 811949320488, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "amount": 808628413295, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", - "amount": 803029504677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", - "amount": 800238336572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", - "amount": 798709479447, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "amount": 798218653505, - "lockTime": 0 - }, - { - "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", - "amount": 792686002383, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", - "amount": 789059928923, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", - "amount": 787813443027, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", - "amount": 786164407824, - "lockTime": 0 - }, - { - "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", - "amount": 784306203242, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", - "amount": 781311939095, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", - "amount": 778325647308, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", - "amount": 775694260050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", - "amount": 773749573171, - "lockTime": 0 - }, - { - "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", - "amount": 772689415122, - "lockTime": 0 - }, - { - "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", - "amount": 770274611201, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", - "amount": 769361580083, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", - "amount": 763145063210, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", - "amount": 762290565813, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", - "amount": 762157543635, - "lockTime": 0 - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "amount": 761551532758, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", - "amount": 760401111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", - "amount": 757415674634, - "lockTime": 0 - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "amount": 756905876678, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", - "amount": 755648204498, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", - "amount": 755461474324, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", - "amount": 751631538941, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", - "amount": 749769546618, - "lockTime": 0 - }, - { - "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", - "amount": 748967497030, - "lockTime": 0 - }, - { - "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", - "amount": 748111322930, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", - "amount": 747851114728, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", - "amount": 746470940518, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", - "amount": 746122073952, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", - "amount": 744516194522, - "lockTime": 0 - }, - { - "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", - "amount": 743849169051, - "lockTime": 0 - }, - { - "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", - "amount": 739638085218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "amount": 737947480291, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", - "amount": 737136696047, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "amount": 725274860466, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", - "amount": 724173124892, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", - "amount": 723670481621, - "lockTime": 0 - }, - { - "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", - "amount": 723194608282, - "lockTime": 0 - }, - { - "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", - "amount": 723168098780, - "lockTime": 0 - }, - { - "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", - "amount": 717889138351, - "lockTime": 0 - }, - { - "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", - "amount": 716901647085, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", - "amount": 716370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "amount": 715405091344, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", - "amount": 714099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", - "amount": 713335697927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", - "amount": 708807307987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", - "amount": 707593958267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", - "amount": 707065785077, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", - "amount": 706540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", - "amount": 705502900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", - "amount": 702744514797, - "lockTime": 0 - }, - { - "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", - "amount": 701804169652, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", - "amount": 701585334635, - "lockTime": 0 - }, - { - "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", - "amount": 701096309761, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", - "amount": 699928014706, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", - "amount": 699524889618, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", - "amount": 698872244628, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", - "amount": 695696346000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", - "amount": 690663699517, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", - "amount": 686055129452, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", - "amount": 683022637798, - "lockTime": 0 - }, - { - "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", - "amount": 679336310996, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "amount": 678591959669, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", - "amount": 677357601214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", - "amount": 675666996711, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", - "amount": 675200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", - "amount": 673451983271, - "lockTime": 0 - }, - { - "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", - "amount": 673382297009, - "lockTime": 0 - }, - { - "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", - "amount": 671924566621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", - "amount": 671667222783, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", - "amount": 667992367911, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", - "amount": 666907474237, - "lockTime": 0 - }, - { - "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", - "amount": 666500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", - "amount": 660973933588, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", - "amount": 658714559415, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", - "amount": 658513620604, - "lockTime": 0 - }, - { - "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", - "amount": 657440163873, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", - "amount": 657239700798, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", - "amount": 656919452718, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", - "amount": 653248487428, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", - "amount": 648157947682, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", - "amount": 647572905512, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", - "amount": 642940741252, - "lockTime": 0 - }, - { - "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", - "amount": 641055825467, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", - "amount": 640948206033, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", - "amount": 637896844713, - "lockTime": 0 - }, - { - "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", - "amount": 637626579463, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "amount": 637579061019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", - "amount": 637038357481, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", - "amount": 635886645100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", - "amount": 632414595111, - "lockTime": 0 - }, - { - "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", - "amount": 632346327509, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", - "amount": 631312503303, - "lockTime": 0 - }, - { - "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", - "amount": 630692902584, - "lockTime": 0 - }, - { - "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", - "amount": 628146752685, - "lockTime": 0 - }, - { - "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", - "amount": 623261133230, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", - "amount": 622101156482, - "lockTime": 0 - }, - { - "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", - "amount": 619718646321, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", - "amount": 618000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", - "amount": 616181029252, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", - "amount": 612835767567, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", - "amount": 612678347930, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", - "amount": 611849611901, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", - "amount": 610024780420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", - "amount": 608158543434, - "lockTime": 0 - }, - { - "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", - "amount": 607225574087, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", - "amount": 606018846202, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", - "amount": 604403457227, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", - "amount": 603629750073, - "lockTime": 0 - }, - { - "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", - "amount": 600068436472, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", - "amount": 600000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", - "amount": 594536999592, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", - "amount": 593971278473, - "lockTime": 0 - }, - { - "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", - "amount": 593453737557, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", - "amount": 592149000573, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", - "amount": 591343948315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", - "amount": 590147794384, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", - "amount": 589427904690, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", - "amount": 589101639752, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", - "amount": 587328009919, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", - "amount": 578398732113, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", - "amount": 577801478480, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", - "amount": 576018679993, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", - "amount": 569900403023, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", - "amount": 569650113992, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", - "amount": 569393267497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", - "amount": 568958051492, - "lockTime": 0 - }, - { - "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", - "amount": 565050721081, - "lockTime": 0 - }, - { - "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", - "amount": 564400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", - "amount": 563615729120, - "lockTime": 0 - }, - { - "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", - "amount": 563495866605, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", - "amount": 562853833696, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", - "amount": 561532227425, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", - "amount": 560643306238, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", - "amount": 560315306784, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", - "amount": 560109433484, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", - "amount": 559780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", - "amount": 558335103634, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", - "amount": 558264517323, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", - "amount": 556373804267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", - "amount": 555932491612, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "amount": 555256855786, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "amount": 554019878468, - "lockTime": 0 - }, - { - "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", - "amount": 553956815036, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", - "amount": 553357820256, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", - "amount": 553345846111, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", - "amount": 550463294337, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "amount": 549005803166, - "lockTime": 0 - }, - { - "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", - "amount": 548399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", - "amount": 548346950615, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", - "amount": 547306513126, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", - "amount": 547199231396, - "lockTime": 0 - }, - { - "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", - "amount": 546900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", - "amount": 545521200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", - "amount": 545447829788, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", - "amount": 542539414312, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", - "amount": 542498333713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", - "amount": 541776225012, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", - "amount": 541497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", - "amount": 538337569934, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", - "amount": 537317010767, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", - "amount": 535969093749, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", - "amount": 535648032586, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", - "amount": 534483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", - "amount": 533990655409, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "amount": 531581201080, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", - "amount": 531353802908, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", - "amount": 531234235475, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", - "amount": 526494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", - "amount": 526177896959, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", - "amount": 525656852695, - "lockTime": 0 - }, - { - "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", - "amount": 524899200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", - "amount": 524566137736, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", - "amount": 524195647436, - "lockTime": 0 - }, - { - "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", - "amount": 524052614831, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", - "amount": 523776871480, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", - "amount": 522880094674, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", - "amount": 522862146792, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", - "amount": 521812528958, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", - "amount": 521047898327, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", - "amount": 518446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", - "amount": 518328138145, - "lockTime": 0 - }, - { - "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", - "amount": 518193480000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", - "amount": 515148173657, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", - "amount": 514925249622, - "lockTime": 0 - }, - { - "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", - "amount": 513329405274, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", - "amount": 509993994435, - "lockTime": 0 - }, - { - "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", - "amount": 509957522308, - "lockTime": 0 - }, - { - "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", - "amount": 508541394000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", - "amount": 506667747103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", - "amount": 505549324249, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", - "amount": 505200074000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", - "amount": 504494000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", - "amount": 502930153612, - "lockTime": 0 - }, - { - "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", - "amount": 502646758879, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", - "amount": 502425261300, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", - "amount": 501898728304, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", - "amount": 500675297706, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", - "amount": 499448808034, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", - "amount": 498766624446, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", - "amount": 497860980149, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", - "amount": 497751300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", - "amount": 494921805000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", - "amount": 492449597049, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", - "amount": 491345439978, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", - "amount": 489208090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", - "amount": 483233520598, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", - "amount": 479710360399, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", - "amount": 479290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", - "amount": 478684589716, - "lockTime": 0 - }, - { - "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", - "amount": 477353124741, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", - "amount": 477075727467, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", - "amount": 473250342306, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", - "amount": 472372204860, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", - "amount": 471564327298, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", - "amount": 470996346069, - "lockTime": 0 - }, - { - "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", - "amount": 470135235865, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", - "amount": 469012617355, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", - "amount": 467516812000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", - "amount": 466445267258, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", - "amount": 464519265861, - "lockTime": 0 - }, - { - "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", - "amount": 462689900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "amount": 462305649621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", - "amount": 461868850874, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", - "amount": 460869939879, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", - "amount": 460585726599, - "lockTime": 0 - }, - { - "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", - "amount": 457195535843, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", - "amount": 456662894715, - "lockTime": 0 - }, - { - "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", - "amount": 454579427202, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", - "amount": 454068631040, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", - "amount": 453948855458, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", - "amount": 453669586663, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", - "amount": 452026578968, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", - "amount": 452018744239, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", - "amount": 451392168993, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", - "amount": 449595427480, - "lockTime": 0 - }, - { - "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", - "amount": 449593160254, - "lockTime": 0 - }, - { - "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", - "amount": 447344591171, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", - "amount": 446500258482, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", - "amount": 446240721255, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", - "amount": 444865048666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", - "amount": 444676790001, - "lockTime": 0 - }, - { - "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", - "amount": 443204831269, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", - "amount": 442328512225, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", - "amount": 442059271489, - "lockTime": 0 - }, - { - "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", - "amount": 440032057840, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", - "amount": 439271047149, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", - "amount": 437282541633, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", - "amount": 432765145447, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", - "amount": 431349975902, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", - "amount": 429267450244, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", - "amount": 429201334044, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", - "amount": 427674532103, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", - "amount": 427031616046, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", - "amount": 426298979353, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", - "amount": 425945935665, - "lockTime": 0 - }, - { - "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", - "amount": 424703213740, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", - "amount": 423021472475, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", - "amount": 422736872079, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", - "amount": 422511669854, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", - "amount": 420403236212, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", - "amount": 419844543209, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", - "amount": 419799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", - "amount": 419155971976, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "amount": 419078286625, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", - "amount": 418951929690, - "lockTime": 0 - }, - { - "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", - "amount": 418382689794, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", - "amount": 417921721020, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", - "amount": 417899749087, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", - "amount": 417880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", - "amount": 417679896875, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", - "amount": 415260300138, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", - "amount": 414705871837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", - "amount": 413485395750, - "lockTime": 0 - }, - { - "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", - "amount": 413208528187, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", - "amount": 413152125810, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", - "amount": 410838490020, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", - "amount": 410700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", - "amount": 410511629000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", - "amount": 410140392576, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", - "amount": 410000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", - "amount": 409825610683, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", - "amount": 409430238364, - "lockTime": 0 - }, - { - "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", - "amount": 408918063497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", - "amount": 407963673190, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "amount": 407719486341, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", - "amount": 407679331398, - "lockTime": 0 - }, - { - "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", - "amount": 407657901885, - "lockTime": 0 - }, - { - "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", - "amount": 407158997751, - "lockTime": 0 - }, - { - "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", - "amount": 407025707839, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", - "amount": 406811695036, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", - "amount": 406639658081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", - "amount": 406624706100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", - "amount": 405774110031, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", - "amount": 405129535061, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", - "amount": 404700591110, - "lockTime": 0 - }, - { - "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", - "amount": 404442900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", - "amount": 404020958522, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", - "amount": 403983941418, - "lockTime": 0 - }, - { - "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", - "amount": 403704048107, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "amount": 403565919731, - "lockTime": 0 - }, - { - "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", - "amount": 402208028191, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", - "amount": 401600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", - "amount": 400965989696, - "lockTime": 0 - }, - { - "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", - "amount": 400794578886, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", - "amount": 400771228716, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", - "amount": 400209502276, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", - "amount": 400165712520, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", - "amount": 400000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", - "amount": 399517172592, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "amount": 398239779263, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", - "amount": 396390860679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", - "amount": 396237000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", - "amount": 393348812910, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", - "amount": 393300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", - "amount": 392591247131, - "lockTime": 0 - }, - { - "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", - "amount": 390175947071, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", - "amount": 389632481201, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "amount": 388800988825, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", - "amount": 385593291168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", - "amount": 384676167415, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", - "amount": 383391492891, - "lockTime": 0 - }, - { - "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", - "amount": 382797942954, - "lockTime": 0 - }, - { - "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", - "amount": 382211187125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", - "amount": 381539113646, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", - "amount": 380247099724, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", - "amount": 380012940327, - "lockTime": 0 - }, - { - "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", - "amount": 379999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", - "amount": 379468365507, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", - "amount": 378455714491, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", - "amount": 375380072129, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", - "amount": 374997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", - "amount": 373612615415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", - "amount": 372882185379, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", - "amount": 372539432937, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", - "amount": 371199571236, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", - "amount": 370239188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", - "amount": 370079681706, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "amount": 367926716248, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", - "amount": 367665430762, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", - "amount": 367249772764, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", - "amount": 366726743585, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", - "amount": 366479061058, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", - "amount": 366422800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", - "amount": 366372749879, - "lockTime": 0 - }, - { - "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", - "amount": 365871378235, - "lockTime": 0 - }, - { - "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", - "amount": 364728390131, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", - "amount": 363103563674, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "amount": 361161634685, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", - "amount": 359478605247, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", - "amount": 359400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", - "amount": 359338917439, - "lockTime": 0 - }, - { - "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", - "amount": 358323700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", - "amount": 357329999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", - "amount": 355854965992, - "lockTime": 0 - }, - { - "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", - "amount": 354811786695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", - "amount": 354593224259, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", - "amount": 354349080107, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", - "amount": 354334037603, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", - "amount": 354084894170, - "lockTime": 0 - }, - { - "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", - "amount": 353728980000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", - "amount": 353268402658, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", - "amount": 350391644000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", - "amount": 349527692154, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", - "amount": 349069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", - "amount": 349062551934, - "lockTime": 0 - }, - { - "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", - "amount": 347358200128, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", - "amount": 346807254158, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", - "amount": 346199405075, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", - "amount": 346165116592, - "lockTime": 0 - }, - { - "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", - "amount": 344661550248, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", - "amount": 342974731957, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", - "amount": 342270909592, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", - "amount": 341639304154, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", - "amount": 341625294253, - "lockTime": 0 - }, - { - "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", - "amount": 341468951319, - "lockTime": 0 - }, - { - "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", - "amount": 340254213835, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", - "amount": 339496870584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", - "amount": 339163389311, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", - "amount": 339017024670, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", - "amount": 338249267550, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", - "amount": 336788660939, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", - "amount": 336051770441, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", - "amount": 336000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", - "amount": 335555231244, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", - "amount": 333957576542, - "lockTime": 0 - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "amount": 333565226024, - "lockTime": 0 - }, - { - "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", - "amount": 333201375971, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", - "amount": 327409836867, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", - "amount": 326742414445, - "lockTime": 0 - }, - { - "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", - "amount": 326127266600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", - "amount": 325150273667, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", - "amount": 325086535441, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", - "amount": 323576309188, - "lockTime": 0 - }, - { - "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", - "amount": 323498383211, - "lockTime": 0 - }, - { - "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", - "amount": 323280000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", - "amount": 323251968455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", - "amount": 322765586127, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", - "amount": 321688802000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", - "amount": 321288673558, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", - "amount": 319795499498, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", - "amount": 319576609148, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", - "amount": 319230743823, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", - "amount": 317545340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", - "amount": 316993829039, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", - "amount": 316241438388, - "lockTime": 0 - }, - { - "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", - "amount": 315967087268, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", - "amount": 315930604626, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", - "amount": 315731769642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", - "amount": 315504098614, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", - "amount": 315179801975, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", - "amount": 314924391191, - "lockTime": 0 - }, - { - "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", - "amount": 314479899982, - "lockTime": 0 - }, - { - "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", - "amount": 314286417638, - "lockTime": 0 - }, - { - "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", - "amount": 312318963292, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", - "amount": 310241999690, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", - "amount": 310169121476, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", - "amount": 310169007773, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", - "amount": 310036594600, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", - "amount": 309999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", - "amount": 309941777989, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", - "amount": 309368053478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", - "amount": 308872376748, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", - "amount": 307840538721, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", - "amount": 307407241618, - "lockTime": 0 - }, - { - "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", - "amount": 307242628281, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", - "amount": 306671692789, - "lockTime": 0 - }, - { - "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", - "amount": 306323752780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", - "amount": 306291953544, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", - "amount": 305903301397, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", - "amount": 305714507548, - "lockTime": 0 - }, - { - "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", - "amount": 304997317063, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", - "amount": 304919255846, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", - "amount": 304399267454, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "amount": 303801502864, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", - "amount": 303650000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", - "amount": 302649692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", - "amount": 302310884849, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", - "amount": 302201332163, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", - "amount": 301493782307, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", - "amount": 301347629576, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", - "amount": 301255822797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", - "amount": 300968881183, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", - "amount": 300908117517, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", - "amount": 300600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", - "amount": 300589200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "amount": 300440218184, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "amount": 300193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", - "amount": 300042348560, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", - "amount": 300010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", - "amount": 299800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", - "amount": 299735400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", - "amount": 299659164881, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", - "amount": 299455230049, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", - "amount": 298182413417, - "lockTime": 0 - }, - { - "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", - "amount": 298023266343, - "lockTime": 0 - }, - { - "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", - "amount": 297087133021, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", - "amount": 295690470221, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", - "amount": 295601231796, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", - "amount": 294998304547, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", - "amount": 293870506875, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", - "amount": 292999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", - "amount": 291735609000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", - "amount": 290100215048, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", - "amount": 289766402146, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", - "amount": 289372255571, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", - "amount": 288789683225, - "lockTime": 0 - }, - { - "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", - "amount": 288147628477, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", - "amount": 287976000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", - "amount": 287662787702, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", - "amount": 286611000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", - "amount": 285836281219, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "amount": 285130476546, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", - "amount": 284618307972, - "lockTime": 0 - }, - { - "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", - "amount": 283712671050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", - "amount": 283202683529, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", - "amount": 282063594884, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", - "amount": 281360140760, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", - "amount": 280743491075, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", - "amount": 280009150173, - "lockTime": 0 - }, - { - "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", - "amount": 279699500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", - "amount": 277556230625, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", - "amount": 277531813243, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", - "amount": 277168772897, - "lockTime": 0 - }, - { - "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", - "amount": 277163501063, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", - "amount": 276923863728, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", - "amount": 276751069724, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", - "amount": 275949632370, - "lockTime": 0 - }, - { - "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", - "amount": 275927593000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", - "amount": 275020000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", - "amount": 273799862715, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", - "amount": 273736045458, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", - "amount": 272989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", - "amount": 272755800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", - "amount": 272514555018, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", - "amount": 271906446703, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", - "amount": 271900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", - "amount": 271572785690, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", - "amount": 271548054095, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", - "amount": 270793342773, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", - "amount": 270658798910, - "lockTime": 0 - }, - { - "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", - "amount": 270091857578, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", - "amount": 269995149999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", - "amount": 269800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", - "amount": 268247018662, - "lockTime": 0 - }, - { - "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", - "amount": 267792700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", - "amount": 267245273073, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", - "amount": 267119581977, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", - "amount": 266391352254, - "lockTime": 0 - }, - { - "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", - "amount": 266196400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", - "amount": 266131162718, - "lockTime": 0 - }, - { - "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", - "amount": 264318648145, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", - "amount": 263527801714, - "lockTime": 0 - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "amount": 262975389505, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", - "amount": 262780932076, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", - "amount": 262471000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", - "amount": 261749022592, - "lockTime": 0 - }, - { - "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", - "amount": 261070344518, - "lockTime": 0 - }, - { - "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", - "amount": 260397418850, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", - "amount": 260120956196, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", - "amount": 260015100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", - "amount": 259757680000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", - "amount": 259239767599, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", - "amount": 258341100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", - "amount": 258339633939, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", - "amount": 258157345206, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", - "amount": 258123356221, - "lockTime": 0 - }, - { - "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", - "amount": 258064908003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "amount": 257992568066, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", - "amount": 257461156205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", - "amount": 257403985352, - "lockTime": 0 - }, - { - "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", - "amount": 257277568625, - "lockTime": 0 - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "amount": 257162512490, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", - "amount": 256544958461, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", - "amount": 256474842191, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", - "amount": 256143794076, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", - "amount": 255962443134, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", - "amount": 255424134364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", - "amount": 255019352085, - "lockTime": 0 - }, - { - "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", - "amount": 254820960826, - "lockTime": 0 - }, - { - "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", - "amount": 253869000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", - "amount": 253432540624, - "lockTime": 0 - }, - { - "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", - "amount": 252390365490, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", - "amount": 252203000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", - "amount": 251541968465, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", - "amount": 251524659521, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", - "amount": 251508940179, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", - "amount": 250990200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", - "amount": 250778414361, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", - "amount": 250747999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", - "amount": 250705826237, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", - "amount": 250495052902, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", - "amount": 249963485647, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", - "amount": 249935505992, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", - "amount": 249545300278, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "amount": 249227181030, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", - "amount": 248998351726, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", - "amount": 248524072858, - "lockTime": 0 - }, - { - "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", - "amount": 248465424307, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", - "amount": 248244749409, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", - "amount": 248060732879, - "lockTime": 0 - }, - { - "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", - "amount": 247696311635, - "lockTime": 0 - }, - { - "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", - "amount": 247606604191, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", - "amount": 246994469038, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", - "amount": 246290236302, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", - "amount": 245162999098, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", - "amount": 244890365598, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", - "amount": 244875480949, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", - "amount": 244290711899, - "lockTime": 0 - }, - { - "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", - "amount": 244075459558, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", - "amount": 244014799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", - "amount": 243917093003, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", - "amount": 243843301412, - "lockTime": 0 - }, - { - "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", - "amount": 243605054883, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", - "amount": 243360850625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", - "amount": 243300831867, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", - "amount": 243147267898, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", - "amount": 242760771420, - "lockTime": 0 - }, - { - "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", - "amount": 242594067000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", - "amount": 242573351436, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", - "amount": 242512485079, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", - "amount": 242492941103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", - "amount": 242203837357, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", - "amount": 242182540219, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", - "amount": 241861022033, - "lockTime": 0 - }, - { - "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", - "amount": 241849426391, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", - "amount": 241661661659, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", - "amount": 241623968574, - "lockTime": 0 - }, - { - "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", - "amount": 241227555046, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", - "amount": 241138570345, - "lockTime": 0 - }, - { - "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", - "amount": 240851027302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", - "amount": 240504931326, - "lockTime": 0 - }, - { - "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", - "amount": 240308171838, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", - "amount": 240237165262, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", - "amount": 240119011031, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", - "amount": 239900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", - "amount": 239806945993, - "lockTime": 0 - }, - { - "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", - "amount": 239801491795, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", - "amount": 239330301790, - "lockTime": 0 - }, - { - "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", - "amount": 239292654674, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", - "amount": 239279937261, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", - "amount": 239245805417, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", - "amount": 239205415111, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", - "amount": 239070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", - "amount": 239050558287, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", - "amount": 238982485492, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", - "amount": 238602457268, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", - "amount": 238589376707, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", - "amount": 238562283175, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", - "amount": 238318372576, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", - "amount": 238288506725, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", - "amount": 238228639309, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", - "amount": 238127703363, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", - "amount": 237987190598, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", - "amount": 237729204000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", - "amount": 237639274600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", - "amount": 237612083921, - "lockTime": 0 - }, - { - "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", - "amount": 237556931856, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", - "amount": 237453999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", - "amount": 237392111684, - "lockTime": 0 - }, - { - "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", - "amount": 237023271332, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", - "amount": 236821473583, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", - "amount": 236446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", - "amount": 236415322356, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", - "amount": 236326412172, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", - "amount": 236296322528, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", - "amount": 236231001378, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", - "amount": 236095569501, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", - "amount": 236002904511, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", - "amount": 235971564171, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", - "amount": 235923449617, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", - "amount": 235894723186, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", - "amount": 235618737704, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", - "amount": 235516325902, - "lockTime": 0 - }, - { - "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", - "amount": 235247618088, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", - "amount": 235165188182, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", - "amount": 235078006137, - "lockTime": 0 - }, - { - "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", - "amount": 234960610742, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", - "amount": 234592501512, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", - "amount": 234500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", - "amount": 234485977920, - "lockTime": 0 - }, - { - "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", - "amount": 234239046914, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", - "amount": 234216801941, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", - "amount": 234205450496, - "lockTime": 0 - }, - { - "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", - "amount": 233978982028, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", - "amount": 233923455601, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", - "amount": 233752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", - "amount": 233439815779, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", - "amount": 233395083626, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", - "amount": 233285586717, - "lockTime": 0 - }, - { - "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", - "amount": 232902383845, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", - "amount": 232848077502, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", - "amount": 232640483694, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", - "amount": 232557281320, - "lockTime": 0 - }, - { - "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", - "amount": 232521628575, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", - "amount": 232207181484, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", - "amount": 232201210478, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", - "amount": 232050104188, - "lockTime": 0 - }, - { - "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", - "amount": 231166048808, - "lockTime": 0 - }, - { - "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", - "amount": 230998600000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", - "amount": 230913312021, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", - "amount": 230866500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", - "amount": 230594393622, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", - "amount": 230272488302, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", - "amount": 230194937726, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", - "amount": 230142440634, - "lockTime": 0 - }, - { - "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", - "amount": 230090000629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", - "amount": 230000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", - "amount": 229528257221, - "lockTime": 0 - }, - { - "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", - "amount": 229504037719, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", - "amount": 229467102124, - "lockTime": 0 - }, - { - "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", - "amount": 229191678643, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", - "amount": 229042504057, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", - "amount": 228917996272, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", - "amount": 228899461213, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", - "amount": 228769649152, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", - "amount": 228754894051, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", - "amount": 228684937972, - "lockTime": 0 - }, - { - "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", - "amount": 228615395516, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", - "amount": 228462457260, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", - "amount": 228409141349, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", - "amount": 228299485720, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", - "amount": 228297794168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", - "amount": 228284534902, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", - "amount": 228047657402, - "lockTime": 0 - }, - { - "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", - "amount": 227815338192, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", - "amount": 227690423975, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", - "amount": 227542196733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", - "amount": 227422755927, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", - "amount": 227412331394, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", - "amount": 227390408963, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", - "amount": 227381121125, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", - "amount": 227286642424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "amount": 227179264162, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", - "amount": 227132911896, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", - "amount": 226934961616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", - "amount": 226736765102, - "lockTime": 0 - }, - { - "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", - "amount": 226572224194, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", - "amount": 226206619451, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", - "amount": 226152003996, - "lockTime": 0 - }, - { - "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", - "amount": 225894482083, - "lockTime": 0 - }, - { - "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", - "amount": 225859667154, - "lockTime": 0 - }, - { - "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", - "amount": 225839800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", - "amount": 225673160801, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", - "amount": 225410004000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", - "amount": 225365560392, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", - "amount": 225171798320, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", - "amount": 224993217772, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", - "amount": 224938072830, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", - "amount": 224900929477, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", - "amount": 224782794770, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", - "amount": 224777814150, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", - "amount": 224492888923, - "lockTime": 0 - }, - { - "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", - "amount": 224485699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", - "amount": 224346343200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", - "amount": 224292241252, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", - "amount": 223953992977, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", - "amount": 223900458142, - "lockTime": 0 - }, - { - "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", - "amount": 223786869276, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", - "amount": 223770132772, - "lockTime": 0 - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "amount": 223760990261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", - "amount": 223675539585, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", - "amount": 223383768271, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", - "amount": 223222169281, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", - "amount": 223219332090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", - "amount": 223209741000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", - "amount": 223071608704, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", - "amount": 223024624139, - "lockTime": 0 - }, - { - "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", - "amount": 222825046743, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", - "amount": 222589413218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", - "amount": 222513176054, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", - "amount": 222438879409, - "lockTime": 0 - }, - { - "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", - "amount": 222309229938, - "lockTime": 0 - }, - { - "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", - "amount": 222129207119, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", - "amount": 222124186814, - "lockTime": 0 - }, - { - "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", - "amount": 222084605276, - "lockTime": 0 - }, - { - "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", - "amount": 221993500333, - "lockTime": 0 - }, - { - "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", - "amount": 221991488296, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "amount": 221912705860, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "amount": 221892141803, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", - "amount": 221689787830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", - "amount": 221593294373, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", - "amount": 221501731956, - "lockTime": 0 - }, - { - "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", - "amount": 221436081752, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", - "amount": 221079714669, - "lockTime": 0 - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "amount": 221070976183, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", - "amount": 220699000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", - "amount": 220659692231, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", - "amount": 220557514300, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", - "amount": 220472335830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", - "amount": 220058770856, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", - "amount": 219999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", - "amount": 219112096408, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", - "amount": 218893337385, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", - "amount": 218739578269, - "lockTime": 0 - }, - { - "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", - "amount": 218606965875, - "lockTime": 0 - }, - { - "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", - "amount": 218312597733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", - "amount": 218138101472, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", - "amount": 218037694298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", - "amount": 217903275346, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", - "amount": 217798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", - "amount": 217515313055, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", - "amount": 217294141545, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", - "amount": 217267910811, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "amount": 217194444619, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", - "amount": 217108757438, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", - "amount": 217103542488, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", - "amount": 216912369612, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", - "amount": 216637134722, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", - "amount": 216535366335, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", - "amount": 216487988637, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", - "amount": 216447395998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", - "amount": 216294472267, - "lockTime": 0 - }, - { - "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", - "amount": 216286938750, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", - "amount": 215993162920, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", - "amount": 215808453584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", - "amount": 215778141346, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", - "amount": 215597178831, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", - "amount": 215395963077, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", - "amount": 215242029960, - "lockTime": 0 - }, - { - "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", - "amount": 215176736484, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", - "amount": 215091961569, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", - "amount": 214909200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", - "amount": 214891405341, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", - "amount": 214625498508, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", - "amount": 214620330985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", - "amount": 214600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", - "amount": 214598868478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", - "amount": 214116222972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", - "amount": 213879857622, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", - "amount": 213854937198, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", - "amount": 213623832274, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", - "amount": 213476358102, - "lockTime": 0 - }, - { - "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", - "amount": 213387838372, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", - "amount": 213372184141, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", - "amount": 213345000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", - "amount": 212838068329, - "lockTime": 0 - }, - { - "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", - "amount": 212810600890, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", - "amount": 212592057062, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", - "amount": 212342599261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", - "amount": 212246063543, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", - "amount": 212107475854, - "lockTime": 0 - }, - { - "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", - "amount": 212032600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", - "amount": 211980544581, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", - "amount": 211817494665, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", - "amount": 211612715577, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", - "amount": 211442822680, - "lockTime": 0 - }, - { - "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", - "amount": 211375702875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", - "amount": 211265866488, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", - "amount": 211257510810, - "lockTime": 0 - }, - { - "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", - "amount": 211247628424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", - "amount": 210973881797, - "lockTime": 0 - }, - { - "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", - "amount": 210942208378, - "lockTime": 0 - }, - { - "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", - "amount": 210871616089, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", - "amount": 210786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", - "amount": 210775625518, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", - "amount": 210729635400, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", - "amount": 210486729792, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "amount": 210444718664, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", - "amount": 210433370310, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", - "amount": 210411355132, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", - "amount": 210311765371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", - "amount": 210289217928, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", - "amount": 210228622943, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", - "amount": 210214659581, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", - "amount": 210201644288, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", - "amount": 210151075241, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", - "amount": 210099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", - "amount": 210083577331, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", - "amount": 210008084187, - "lockTime": 0 - }, - { - "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", - "amount": 210000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", - "amount": 209998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", - "amount": 209994825749, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", - "amount": 209986900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", - "amount": 209847916304, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", - "amount": 209618957536, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", - "amount": 209455857286, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", - "amount": 209233564043, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", - "amount": 209216890514, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", - "amount": 209089700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", - "amount": 209049161106, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", - "amount": 208906753025, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", - "amount": 208789130678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", - "amount": 208736836744, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", - "amount": 208341189511, - "lockTime": 0 - }, - { - "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", - "amount": 208324850910, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", - "amount": 208319507766, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", - "amount": 208294726061, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", - "amount": 208231715358, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", - "amount": 208219709890, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", - "amount": 208206908415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", - "amount": 208141036642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", - "amount": 207969483711, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", - "amount": 207912688636, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", - "amount": 207884700785, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", - "amount": 207746600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", - "amount": 207519996227, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", - "amount": 207436330031, - "lockTime": 0 - }, - { - "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", - "amount": 207395981374, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", - "amount": 207293597413, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", - "amount": 207260863357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", - "amount": 207183243259, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", - "amount": 207147237205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", - "amount": 207011757840, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", - "amount": 206883486133, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", - "amount": 206798225982, - "lockTime": 0 - }, - { - "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", - "amount": 206689352889, - "lockTime": 0 - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "amount": 206527611836, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", - "amount": 206227789036, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", - "amount": 206057398171, - "lockTime": 0 - }, - { - "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", - "amount": 205828590863, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "amount": 205816080972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", - "amount": 205719999997, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", - "amount": 205643023950, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", - "amount": 205521556523, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", - "amount": 205505133217, - "lockTime": 0 - }, - { - "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", - "amount": 205445476594, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", - "amount": 205424199743, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", - "amount": 205319991780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", - "amount": 205217833773, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", - "amount": 205024334977, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", - "amount": 204913500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", - "amount": 204890946477, - "lockTime": 0 - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "amount": 204816480948, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", - "amount": 204793572594, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", - "amount": 204753605945, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "amount": 204682617296, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", - "amount": 204662389728, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", - "amount": 204643234694, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", - "amount": 204630619047, - "lockTime": 0 - }, - { - "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", - "amount": 204610500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", - "amount": 204569999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", - "amount": 204559467596, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", - "amount": 204537127938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", - "amount": 204526271632, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", - "amount": 204518837670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", - "amount": 204366173469, - "lockTime": 0 - }, - { - "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", - "amount": 204207005754, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", - "amount": 204126857376, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", - "amount": 204080664515, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", - "amount": 204007776591, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", - "amount": 203995927637, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", - "amount": 203982317720, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", - "amount": 203866255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", - "amount": 203540651146, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", - "amount": 203403521806, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", - "amount": 203400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", - "amount": 203213029171, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", - "amount": 203208728839, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", - "amount": 203159077864, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "amount": 203155414462, - "lockTime": 0 - }, - { - "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", - "amount": 203117030969, - "lockTime": 0 - }, - { - "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", - "amount": 203058017876, - "lockTime": 0 - }, - { - "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", - "amount": 202864593708, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", - "amount": 202818215514, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", - "amount": 202617941616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", - "amount": 202546927054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", - "amount": 202400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", - "amount": 202388155273, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", - "amount": 202328801439, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", - "amount": 202279629229, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", - "amount": 202246385889, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", - "amount": 202203478406, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", - "amount": 201960660191, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", - "amount": 201907182221, - "lockTime": 0 - }, - { - "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", - "amount": 201897012982, - "lockTime": 0 - }, - { - "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", - "amount": 201881490359, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", - "amount": 201777201107, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", - "amount": 201719000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", - "amount": 201702679318, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", - "amount": 201588100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", - "amount": 201560932757, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", - "amount": 201485297013, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", - "amount": 201446465798, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", - "amount": 201240888253, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", - "amount": 201187671035, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", - "amount": 201140169745, - "lockTime": 0 - }, - { - "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", - "amount": 201061734183, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", - "amount": 201016751267, - "lockTime": 0 - }, - { - "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", - "amount": 200907812053, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", - "amount": 200896457460, - "lockTime": 0 - }, - { - "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", - "amount": 200882113012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", - "amount": 200745787959, - "lockTime": 0 - }, - { - "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", - "amount": 200744216315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", - "amount": 200678287955, - "lockTime": 0 - }, - { - "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", - "amount": 200601255596, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", - "amount": 200598491727, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", - "amount": 200499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", - "amount": 200493555205, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", - "amount": 200427000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", - "amount": 200300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", - "amount": 200286890266, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", - "amount": 200148648000, - "lockTime": 0 - }, - { - "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", - "amount": 200100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", - "amount": 200099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", - "amount": 200096400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", - "amount": 200096375737, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", - "amount": 200064418213, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", - "amount": 200009500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", - "amount": 199800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", - "amount": 199798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", - "amount": 199600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", - "amount": 198099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", - "amount": 197721057012, - "lockTime": 0 - }, - { - "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", - "amount": 196799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", - "amount": 196402595000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", - "amount": 194638321900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", - "amount": 193340000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", - "amount": 191510276936, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", - "amount": 190099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", - "amount": 189466940759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", - "amount": 189000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", - "amount": 187000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", - "amount": 185759900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", - "amount": 185000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", - "amount": 184534970264, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", - "amount": 183173800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", - "amount": 182200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", - "amount": 181007100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", - "amount": 179799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", - "amount": 179660100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", - "amount": 179530508841, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", - "amount": 178589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", - "amount": 176819999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", - "amount": 175970000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", - "amount": 175745491403, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", - "amount": 173819708000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", - "amount": 173717427150, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", - "amount": 172875307000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", - "amount": 172236267478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", - "amount": 171996789000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", - "amount": 170890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", - "amount": 170475832299, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", - "amount": 169932188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", - "amount": 169851533273, - "lockTime": 0 - }, - { - "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", - "amount": 168569000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "amount": 164696400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", - "amount": 163942237003, - "lockTime": 0 - }, - { - "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", - "amount": 163845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", - "amount": 162846871000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", - "amount": 161976000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", - "amount": 161042578796, - "lockTime": 0 - }, - { - "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", - "amount": 160860100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", - "amount": 160600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", - "amount": 160372720000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", - "amount": 159799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", - "amount": 159749400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", - "amount": 159080400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", - "amount": 157328900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", - "amount": 155664887800, - "lockTime": 0 - }, - { - "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", - "amount": 153394567227, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", - "amount": 153172452595, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", - "amount": 150436195353, - "lockTime": 0 - }, - { - "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", - "amount": 150180361000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", - "amount": 150179000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", - "amount": 149888097000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", - "amount": 147459247774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", - "amount": 147451400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", - "amount": 146967701181, - "lockTime": 0 - }, - { - "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", - "amount": 146360000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", - "amount": 144569406862, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", - "amount": 143991570100, - "lockTime": 0 - }, - { - "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", - "amount": 143754420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", - "amount": 143528000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", - "amount": 143330427801, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", - "amount": 143200606114, - "lockTime": 0 - }, - { - "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", - "amount": 142899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", - "amount": 142599999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", - "amount": 142576705000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", - "amount": 141897179025, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", - "amount": 140159000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", - "amount": 140061300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", - "amount": 140000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "amount": 138547500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", - "amount": 138218000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", - "amount": 137939100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", - "amount": 135497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", - "amount": 134899500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", - "amount": 134649900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", - "amount": 134630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", - "amount": 134408076000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", - "amount": 133869896000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", - "amount": 133699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", - "amount": 132660000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", - "amount": 128070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", - "amount": 127774675000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", - "amount": 127723293670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", - "amount": 126872000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", - "amount": 126772066912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", - "amount": 126148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", - "amount": 124884000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", - "amount": 124600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", - "amount": 124473399999, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", - "amount": 123939200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", - "amount": 123835943875, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", - "amount": 122922953000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", - "amount": 121391458773, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", - "amount": 120105578600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", - "amount": 120070377686, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", - "amount": 117401692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", - "amount": 116300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", - "amount": 115982900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", - "amount": 115148000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", - "amount": 114358959000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", - "amount": 113500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", - "amount": 111998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", - "amount": 111188400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", - "amount": 111127700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", - "amount": 110700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", - "amount": 110644000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", - "amount": 110597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", - "amount": 110388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", - "amount": 110249000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", - "amount": 110000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", - "amount": 109733407000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", - "amount": 109500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", - "amount": 108490400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", - "amount": 108113000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", - "amount": 107631800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", - "amount": 107114900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", - "amount": 107022500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", - "amount": 107008110706, - "lockTime": 0 - }, - { - "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", - "amount": 106692200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", - "amount": 106577618100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", - "amount": 105894391420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", - "amount": 105654440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", - "amount": 105092249306, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", - "amount": 105070966000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", - "amount": 104999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", - "amount": 104990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", - "amount": 104979643614, - "lockTime": 0 - }, - { - "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", - "amount": 104397300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", - "amount": 103669137000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", - "amount": 103368248405, - "lockTime": 0 - }, - { - "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", - "amount": 103129999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", - "amount": 102757144000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", - "amount": 102595400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", - "amount": 102400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", - "amount": 102332000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", - "amount": 102089316308, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", - "amount": 101552500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", - "amount": 101486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", - "amount": 101366800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", - "amount": 101240372600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", - "amount": 100998624904, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", - "amount": 100498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", - "amount": 100497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", - "amount": 100471709000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", - "amount": 100023000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", - "amount": 99999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", - "amount": 99999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", - "amount": 99929000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", - "amount": 99883361000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", - "amount": 99813607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", - "amount": 99770900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", - "amount": 99766607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", - "amount": 99739000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", - "amount": 99641607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", - "amount": 99600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", - "amount": 99550000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", - "amount": 99348122000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", - "amount": 99072000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", - "amount": 98999380525, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", - "amount": 98994800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", - "amount": 98500800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", - "amount": 97386670651, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", - "amount": 96797000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", - "amount": 96512400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", - "amount": 95216900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", - "amount": 95143129293, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", - "amount": 94980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", - "amount": 94900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", - "amount": 94815468500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", - "amount": 94544805785, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", - "amount": 93070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", - "amount": 92284199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", - "amount": 92146334000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", - "amount": 92079600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", - "amount": 91652255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", - "amount": 91600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", - "amount": 91428700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", - "amount": 91207700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", - "amount": 91177550000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", - "amount": 90842400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", - "amount": 90253380318, - "lockTime": 0 - }, - { - "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", - "amount": 89508000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", - "amount": 88450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", - "amount": 88210700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", - "amount": 87950511000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", - "amount": 87702232200, - "lockTime": 0 - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "amount": 86584236688, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", - "amount": 85236315422, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", - "amount": 85209400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", - "amount": 84851900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", - "amount": 84628962000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", - "amount": 84354700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", - "amount": 84000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", - "amount": 82849999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", - "amount": 82599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", - "amount": 81833537094, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", - "amount": 81438100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", - "amount": 81346500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", - "amount": 81319000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", - "amount": 81238400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", - "amount": 80979999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", - "amount": 80759600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", - "amount": 80662800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", - "amount": 80209698918, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", - "amount": 79586449402, - "lockTime": 0 - }, - { - "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", - "amount": 79199999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", - "amount": 79149213000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", - "amount": 79119750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", - "amount": 78719200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", - "amount": 78594348000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", - "amount": 77716188000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", - "amount": 77300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", - "amount": 77187901000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", - "amount": 77021300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", - "amount": 76976661037, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", - "amount": 76922000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", - "amount": 76767534308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", - "amount": 76593200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", - "amount": 76100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", - "amount": 75586994784, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", - "amount": 75248000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", - "amount": 75189717655, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", - "amount": 72752100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", - "amount": 72602999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", - "amount": 72350600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", - "amount": 72146400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", - "amount": 71951465416, - "lockTime": 0 - }, - { - "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", - "amount": 71670295800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", - "amount": 71227700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", - "amount": 71079999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", - "amount": 70313160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", - "amount": 70299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", - "amount": 70000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", - "amount": 69722281499, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", - "amount": 69678300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", - "amount": 69429500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", - "amount": 69361900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", - "amount": 69270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", - "amount": 69128800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", - "amount": 69018500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", - "amount": 68590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", - "amount": 68318000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", - "amount": 68101600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", - "amount": 68073000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", - "amount": 67901082549, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", - "amount": 67731200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", - "amount": 67695500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", - "amount": 67272200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", - "amount": 67143800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", - "amount": 66973500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", - "amount": 66813600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", - "amount": 66757600034, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", - "amount": 66219713000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", - "amount": 66086100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", - "amount": 65856300000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", - "amount": 65799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", - "amount": 65614200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", - "amount": 65013599999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", - "amount": 64930400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", - "amount": 64899054000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", - "amount": 64899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", - "amount": 64870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", - "amount": 64034900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", - "amount": 63934000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", - "amount": 63887312000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", - "amount": 63747670200, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", - "amount": 63626900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", - "amount": 63467900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", - "amount": 63430000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", - "amount": 63234400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", - "amount": 63156828976, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", - "amount": 62874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", - "amount": 62853700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", - "amount": 62337800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", - "amount": 62199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", - "amount": 61950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", - "amount": 61323000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", - "amount": 61203700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", - "amount": 61140539520, - "lockTime": 0 - }, - { - "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", - "amount": 60957390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", - "amount": 60937000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", - "amount": 60870116423, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", - "amount": 60867393483, - "lockTime": 0 - }, - { - "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", - "amount": 60399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", - "amount": 60100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", - "amount": 59999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", - "amount": 59694603871, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", - "amount": 59600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", - "amount": 59473000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", - "amount": 59139000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", - "amount": 58413181078, - "lockTime": 0 - }, - { - "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", - "amount": 58100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", - "amount": 57837499999, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", - "amount": 56999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", - "amount": 56786103000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", - "amount": 56762900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "amount": 56068000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", - "amount": 55842100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", - "amount": 55813324200, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", - "amount": 55768800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", - "amount": 55342600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", - "amount": 55152790000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", - "amount": 55079993858, - "lockTime": 0 - }, - { - "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", - "amount": 54998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", - "amount": 54900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", - "amount": 54657710000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", - "amount": 54451965288, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", - "amount": 54391900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", - "amount": 54268070388, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", - "amount": 53745200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", - "amount": 53344758172, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", - "amount": 53298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", - "amount": 53136809000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", - "amount": 53053000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", - "amount": 52980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", - "amount": 52825410000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", - "amount": 52750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", - "amount": 52500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", - "amount": 52499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", - "amount": 52490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", - "amount": 52318332000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", - "amount": 52220000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", - "amount": 52000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", - "amount": 51859000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", - "amount": 51634100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", - "amount": 50943200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", - "amount": 50886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", - "amount": 50700951878, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", - "amount": 50498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", - "amount": 50356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", - "amount": 50300910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", - "amount": 50269697720, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", - "amount": 50189255408, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", - "amount": 50186193571, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", - "amount": 50154100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", - "amount": 50099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", - "amount": 50078090000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", - "amount": 50065600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", - "amount": 50061800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", - "amount": 49998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", - "amount": 49914890700, - "lockTime": 0 - }, - { - "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", - "amount": 49890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", - "amount": 49812000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", - "amount": 49749200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", - "amount": 49707405000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", - "amount": 49646500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", - "amount": 49366875200, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", - "amount": 49166829700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", - "amount": 48998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", - "amount": 48877000000, - "lockTime": 0 - }, - { - "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", - "amount": 48629000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", - "amount": 48560000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", - "amount": 47956500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", - "amount": 47186250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "amount": 47150700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", - "amount": 46778000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", - "amount": 46552400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", - "amount": 46008300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", - "amount": 45950700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", - "amount": 45563300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", - "amount": 45094000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", - "amount": 44876000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", - "amount": 44660000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", - "amount": 44554400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", - "amount": 44400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", - "amount": 44399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", - "amount": 44047211000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", - "amount": 43939123000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", - "amount": 43691265090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", - "amount": 42990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", - "amount": 42497700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", - "amount": 42323179512, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", - "amount": 42076767999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "amount": 42059505500, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", - "amount": 41460000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", - "amount": 41398385361, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", - "amount": 41356600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", - "amount": 41356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", - "amount": 41317657361, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", - "amount": 41257700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", - "amount": 40875000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", - "amount": 40712518500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", - "amount": 40657700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", - "amount": 40554940000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", - "amount": 40414000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", - "amount": 40219500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", - "amount": 40198767300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", - "amount": 40100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", - "amount": 40069900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", - "amount": 40000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", - "amount": 39959500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", - "amount": 39570000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", - "amount": 39391169400, - "lockTime": 0 - }, - { - "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", - "amount": 39347482300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", - "amount": 39158367200, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", - "amount": 39042600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", - "amount": 38841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", - "amount": 38500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", - "amount": 38461400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", - "amount": 37770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", - "amount": 37700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", - "amount": 37661300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", - "amount": 37236000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", - "amount": 37233000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", - "amount": 36990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", - "amount": 36921669615, - "lockTime": 0 - }, - { - "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", - "amount": 36800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", - "amount": 36600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", - "amount": 36263040000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", - "amount": 36193000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", - "amount": 36108760000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", - "amount": 36043896300, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", - "amount": 35986300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", - "amount": 35876899931, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", - "amount": 35542231000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", - "amount": 35208496801, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", - "amount": 35165970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", - "amount": 34825460800, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", - "amount": 34647125016, - "lockTime": 0 - }, - { - "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", - "amount": 34300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", - "amount": 34164800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", - "amount": 34160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "amount": 33787000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", - "amount": 33548484600, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", - "amount": 33312302021, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", - "amount": 32989999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", - "amount": 32853000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", - "amount": 32732976600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", - "amount": 32665203261, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", - "amount": 32652199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", - "amount": 32232300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", - "amount": 32158700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", - "amount": 32087462800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", - "amount": 31878000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", - "amount": 31868002700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", - "amount": 31575100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", - "amount": 31543436900, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", - "amount": 31480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", - "amount": 31465657970, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", - "amount": 31438419609, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", - "amount": 31400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", - "amount": 31366599999, - "lockTime": 0 - }, - { - "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", - "amount": 31182208137, - "lockTime": 0 - }, - { - "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", - "amount": 30965715000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", - "amount": 30900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", - "amount": 30657800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", - "amount": 30498000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", - "amount": 30467500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", - "amount": 30290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", - "amount": 30180000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", - "amount": 30174263931, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", - "amount": 30099900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", - "amount": 29999900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", - "amount": 29999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", - "amount": 29999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", - "amount": 29998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", - "amount": 29942130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", - "amount": 29870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", - "amount": 29770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", - "amount": 29741224000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", - "amount": 29660400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", - "amount": 29551500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", - "amount": 29495400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", - "amount": 29454642135, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", - "amount": 29400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", - "amount": 29399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", - "amount": 29389999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", - "amount": 29311638287, - "lockTime": 0 - }, - { - "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", - "amount": 29062800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", - "amount": 28878900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", - "amount": 28668300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", - "amount": 28478000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", - "amount": 28470499999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", - "amount": 28391130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", - "amount": 28170841650, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", - "amount": 28100900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", - "amount": 27858044502, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", - "amount": 27689480000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", - "amount": 27590369900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", - "amount": 27380622000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", - "amount": 27236302635, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", - "amount": 27191800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", - "amount": 26999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", - "amount": 26712815029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", - "amount": 26671300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", - "amount": 26663000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", - "amount": 26475900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", - "amount": 26470261125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", - "amount": 26381164785, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", - "amount": 26093400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", - "amount": 25999014184, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", - "amount": 25999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", - "amount": 25899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "amount": 25843006000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", - "amount": 25827736000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "amount": 25798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", - "amount": 25773900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", - "amount": 25690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", - "amount": 25666500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", - "amount": 25343701700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", - "amount": 25330666000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", - "amount": 25288857000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", - "amount": 25278000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", - "amount": 25200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", - "amount": 25104700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", - "amount": 25079894000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", - "amount": 25030013835, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", - "amount": 25019500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", - "amount": 25000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", - "amount": 24774400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", - "amount": 24451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", - "amount": 24428250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", - "amount": 24400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", - "amount": 24374600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", - "amount": 24327611100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", - "amount": 24247347000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", - "amount": 24237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", - "amount": 24000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "amount": 23796635680, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", - "amount": 23677500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", - "amount": 23676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", - "amount": 23597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", - "amount": 23480846691, - "lockTime": 0 - }, - { - "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", - "amount": 23313510000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", - "amount": 23301306295, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", - "amount": 23290700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", - "amount": 23200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", - "amount": 23199766150, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", - "amount": 23175800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", - "amount": 23172336000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", - "amount": 23055202000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", - "amount": 22874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", - "amount": 22863800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", - "amount": 22851185400, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", - "amount": 22827000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", - "amount": 22776200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", - "amount": 22462600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", - "amount": 22332600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", - "amount": 22306670000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", - "amount": 22219300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", - "amount": 22218521314, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", - "amount": 22194483000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", - "amount": 22122900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", - "amount": 22099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", - "amount": 22088100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", - "amount": 21927600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", - "amount": 21922330518, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", - "amount": 21874100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", - "amount": 21760500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", - "amount": 21658000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", - "amount": 21276886097, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", - "amount": 21190500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", - "amount": 21098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "amount": 21023770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", - "amount": 20997294776, - "lockTime": 0 - }, - { - "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", - "amount": 20978000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", - "amount": 20898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", - "amount": 20845100816, - "lockTime": 0 - }, - { - "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", - "amount": 20696349700, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", - "amount": 20690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", - "amount": 20559500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", - "amount": 20541631000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", - "amount": 20509670000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", - "amount": 20509200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", - "amount": 20470000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", - "amount": 20449000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", - "amount": 20399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", - "amount": 20387000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", - "amount": 20347033837, - "lockTime": 0 - }, - { - "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", - "amount": 20297000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", - "amount": 20295000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", - "amount": 20256200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", - "amount": 20223000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", - "amount": 20192737678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", - "amount": 20102587502, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", - "amount": 20098500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", - "amount": 20096800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", - "amount": 20080000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", - "amount": 20069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", - "amount": 20058864588, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", - "amount": 20039700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", - "amount": 20013767126, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", - "amount": 20011444000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", - "amount": 19999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", - "amount": 19946031400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", - "amount": 19909800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", - "amount": 19903940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", - "amount": 19879100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", - "amount": 19870000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", - "amount": 19855400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", - "amount": 19849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", - "amount": 19840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", - "amount": 19811218050, - "lockTime": 0 - }, - { - "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", - "amount": 19800100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", - "amount": 19780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", - "amount": 19779200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", - "amount": 19778040999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", - "amount": 19753222500, - "lockTime": 0 - }, - { - "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", - "amount": 19735198768, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "amount": 19710051725, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", - "amount": 19655460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", - "amount": 19600400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", - "amount": 19598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", - "amount": 19483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", - "amount": 19470200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", - "amount": 19418000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", - "amount": 19070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", - "amount": 19063899540, - "lockTime": 0 - }, - { - "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", - "amount": 18900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", - "amount": 18844200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", - "amount": 18800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", - "amount": 18737886700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", - "amount": 18570420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", - "amount": 18380100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", - "amount": 17999040000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", - "amount": 17998300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", - "amount": 17945700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", - "amount": 17781200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", - "amount": 17659300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", - "amount": 17602940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", - "amount": 17579400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", - "amount": 17498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", - "amount": 17457984000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", - "amount": 17374939230, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", - "amount": 17306763012, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", - "amount": 17112344000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", - "amount": 17090000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", - "amount": 17081500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", - "amount": 17069999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", - "amount": 16998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", - "amount": 16941000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", - "amount": 16781200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", - "amount": 16718832900, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", - "amount": 16436987700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", - "amount": 16383538200, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", - "amount": 16253600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", - "amount": 15999900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", - "amount": 15983699999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", - "amount": 15784520000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", - "amount": 15783200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", - "amount": 15687100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", - "amount": 15646596372, - "lockTime": 0 - }, - { - "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", - "amount": 15614274000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", - "amount": 15589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", - "amount": 15530000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", - "amount": 15500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", - "amount": 15440000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", - "amount": 15299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", - "amount": 15280000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", - "amount": 15099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", - "amount": 15095690000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", - "amount": 15075000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", - "amount": 15070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", - "amount": 15043040600, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", - "amount": 15036965552, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", - "amount": 15000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", - "amount": 14999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", - "amount": 14998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", - "amount": 14881000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", - "amount": 14815000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", - "amount": 14698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", - "amount": 14574000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", - "amount": 14545300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", - "amount": 14445300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", - "amount": 14416766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", - "amount": 14373548062, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", - "amount": 14268090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", - "amount": 14160899566, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", - "amount": 14100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", - "amount": 14000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", - "amount": 13999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", - "amount": 13898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", - "amount": 13884699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", - "amount": 13858820278, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", - "amount": 13758000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", - "amount": 13692000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", - "amount": 13667204136, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", - "amount": 13600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", - "amount": 13597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", - "amount": 13517041027, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", - "amount": 13464000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", - "amount": 13433938024, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", - "amount": 13426650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", - "amount": 13380701400, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", - "amount": 13378150321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", - "amount": 13304681000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", - "amount": 13231106000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", - "amount": 13199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", - "amount": 13195950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", - "amount": 13147200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", - "amount": 13098000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", - "amount": 13073920200, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", - "amount": 13000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", - "amount": 12966859999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", - "amount": 12950258399, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "amount": 12825869423, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", - "amount": 12818200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", - "amount": 12815729681, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", - "amount": 12804488800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", - "amount": 12746568000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", - "amount": 12700000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "amount": 12588000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", - "amount": 12540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", - "amount": 12500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", - "amount": 12399100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", - "amount": 12390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", - "amount": 12277600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", - "amount": 12267600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", - "amount": 12258770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", - "amount": 12187500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", - "amount": 12186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", - "amount": 12182253278, - "lockTime": 0 - }, - { - "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", - "amount": 12156100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", - "amount": 12118929786, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", - "amount": 12055793000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", - "amount": 12047600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", - "amount": 12019521136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", - "amount": 12006700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", - "amount": 11970000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", - "amount": 11887800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", - "amount": 11839000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", - "amount": 11804492730, - "lockTime": 0 - }, - { - "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", - "amount": 11720000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", - "amount": 11675600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", - "amount": 11490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", - "amount": 11422404709, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", - "amount": 11414300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", - "amount": 11299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", - "amount": 11231521140, - "lockTime": 0 - }, - { - "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", - "amount": 11223125100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", - "amount": 11207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", - "amount": 11199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", - "amount": 11195500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", - "amount": 10999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "amount": 10997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", - "amount": 10988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", - "amount": 10987000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", - "amount": 10975527776, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", - "amount": 10958800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", - "amount": 10950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", - "amount": 10929400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", - "amount": 10911299487, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", - "amount": 10898800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", - "amount": 10887100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", - "amount": 10788200000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", - "amount": 10740140300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", - "amount": 10724095712, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", - "amount": 10659000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", - "amount": 10588400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", - "amount": 10567591900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", - "amount": 10499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", - "amount": 10498653350, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", - "amount": 10469338925, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", - "amount": 10459400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", - "amount": 10457675800, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", - "amount": 10454530000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", - "amount": 10399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", - "amount": 10393000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", - "amount": 10382594000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", - "amount": 10369000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", - "amount": 10340000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", - "amount": 10318602800, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", - "amount": 10272100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", - "amount": 10213000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", - "amount": 10199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", - "amount": 10189000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", - "amount": 10188800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "amount": 10166320000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", - "amount": 10157754500, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", - "amount": 10131836000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", - "amount": 10100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", - "amount": 10099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", - "amount": 10098699625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", - "amount": 10091000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", - "amount": 10090100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", - "amount": 10088900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", - "amount": 10086900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", - "amount": 10076174566, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", - "amount": 10068058100, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", - "amount": 10058000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", - "amount": 10049600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", - "amount": 10047920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", - "amount": 9998790375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", - "amount": 9990834200, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", - "amount": 9989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", - "amount": 9988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "amount": 9976600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", - "amount": 9954300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", - "amount": 9919900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", - "amount": 9882089798, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", - "amount": 9825315093, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", - "amount": 9799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", - "amount": 9796583105, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", - "amount": 9769964669, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", - "amount": 9769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", - "amount": 9700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", - "amount": 9628000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", - "amount": 9600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", - "amount": 9589185669, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", - "amount": 9549440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", - "amount": 9069093000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", - "amount": 8996073325, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", - "amount": 8992200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", - "amount": 8989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", - "amount": 8980569965, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", - "amount": 8880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", - "amount": 8681200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", - "amount": 8588300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", - "amount": 8523917503, - "lockTime": 0 - }, - { - "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", - "amount": 8459300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", - "amount": 8450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", - "amount": 8419755589, - "lockTime": 0 - }, - { - "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", - "amount": 8407923000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", - "amount": 8388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", - "amount": 8353569832, - "lockTime": 0 - }, - { - "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", - "amount": 8346200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", - "amount": 8292062999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", - "amount": 8280070700, - "lockTime": 0 - }, - { - "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", - "amount": 8157225337, - "lockTime": 0 - }, - { - "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", - "amount": 8146893864, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", - "amount": 8126787800, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", - "amount": 8054930643, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", - "amount": 8000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", - "amount": 7987800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", - "amount": 7812882000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", - "amount": 7800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", - "amount": 7755644700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", - "amount": 7725500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", - "amount": 7700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", - "amount": 7670080275, - "lockTime": 0 - }, - { - "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", - "amount": 7578800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", - "amount": 7542315000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", - "amount": 7534799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", - "amount": 7459896000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", - "amount": 7440887640, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", - "amount": 7391600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", - "amount": 7382500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", - "amount": 7350000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", - "amount": 7332570100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", - "amount": 7232500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", - "amount": 7224441246, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", - "amount": 7184700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", - "amount": 7067073816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", - "amount": 7000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", - "amount": 6979000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", - "amount": 6880500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", - "amount": 6842707290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", - "amount": 6799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", - "amount": 6732000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", - "amount": 6679070393, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", - "amount": 6650286683, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", - "amount": 6557294931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", - "amount": 6536849903, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", - "amount": 6535640000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", - "amount": 6506096000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", - "amount": 6492500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", - "amount": 6489950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", - "amount": 6298900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", - "amount": 6274400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", - "amount": 6229600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", - "amount": 6183279100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", - "amount": 6174500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", - "amount": 6044740883, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", - "amount": 6000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", - "amount": 5999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", - "amount": 5998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", - "amount": 5993000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", - "amount": 5923000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", - "amount": 5904944000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", - "amount": 5893100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", - "amount": 5863130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", - "amount": 5857830000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", - "amount": 5844910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", - "amount": 5841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", - "amount": 5823987520, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", - "amount": 5793200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", - "amount": 5792661600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", - "amount": 5769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", - "amount": 5752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", - "amount": 5695000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", - "amount": 5693666875, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", - "amount": 5693300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", - "amount": 5670000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", - "amount": 5617900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", - "amount": 5504000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", - "amount": 5500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", - "amount": 5498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", - "amount": 5493500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", - "amount": 5445100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", - "amount": 5402055200, - "lockTime": 0 - }, - { - "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", - "amount": 5389000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", - "amount": 5354500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", - "amount": 5314881000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", - "amount": 5305118140, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", - "amount": 5261361095, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", - "amount": 5200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", - "amount": 5193800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", - "amount": 5184800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", - "amount": 5129000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", - "amount": 5127954000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", - "amount": 5114700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", - "amount": 5098634900, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", - "amount": 5051398560, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", - "amount": 5030000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", - "amount": 5024759000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", - "amount": 5023705100, - "lockTime": 0 - }, - { - "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", - "amount": 5022200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", - "amount": 5004340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", - "amount": 4994600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", - "amount": 4975001000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", - "amount": 4950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", - "amount": 4944951000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", - "amount": 4944722100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", - "amount": 4898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", - "amount": 4858098201, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", - "amount": 4835000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", - "amount": 4813550181, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", - "amount": 4799400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "amount": 4750102081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", - "amount": 4655000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", - "amount": 4508590000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", - "amount": 4500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", - "amount": 4494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", - "amount": 4475300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", - "amount": 4457277000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", - "amount": 4455814869, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", - "amount": 4398000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", - "amount": 4294700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", - "amount": 4238000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", - "amount": 4194800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", - "amount": 4177036013, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", - "amount": 4100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", - "amount": 4063118687, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", - "amount": 4014247000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", - "amount": 4010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", - "amount": 4000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", - "amount": 3999100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", - "amount": 3998780750, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", - "amount": 3994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", - "amount": 3993200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", - "amount": 3899718575, - "lockTime": 0 - }, - { - "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", - "amount": 3886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", - "amount": 3880000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", - "amount": 3799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", - "amount": 3776900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", - "amount": 3750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", - "amount": 3601350000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", - "amount": 3596300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", - "amount": 3578798656, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", - "amount": 3564038000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", - "amount": 3528200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", - "amount": 3497804834, - "lockTime": 0 - }, - { - "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", - "amount": 3488228657, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", - "amount": 3394800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", - "amount": 3387304999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", - "amount": 3345900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", - "amount": 3331000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", - "amount": 3299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", - "amount": 3296200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", - "amount": 3295700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", - "amount": 3274970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", - "amount": 3269170000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", - "amount": 3262079400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", - "amount": 3254660000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", - "amount": 3249140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", - "amount": 3218320000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "amount": 3192291145, - "lockTime": 0 - }, - { - "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", - "amount": 3191670000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", - "amount": 3173000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", - "amount": 3111740000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", - "amount": 3087440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", - "amount": 3062583425, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", - "amount": 3051500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", - "amount": 3012657406, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", - "amount": 3005080000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", - "amount": 2999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", - "amount": 2988840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", - "amount": 2936800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", - "amount": 2910820000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", - "amount": 2901460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", - "amount": 2900750000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", - "amount": 2899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", - "amount": 2896970000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", - "amount": 2887000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", - "amount": 2868000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", - "amount": 2867000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", - "amount": 2836000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", - "amount": 2799100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", - "amount": 2799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", - "amount": 2796200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", - "amount": 2795672800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", - "amount": 2783891200, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", - "amount": 2772000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", - "amount": 2733439115, - "lockTime": 0 - }, - { - "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", - "amount": 2728600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", - "amount": 2720000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", - "amount": 2600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", - "amount": 2599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", - "amount": 2598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", - "amount": 2589900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", - "amount": 2541627000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", - "amount": 2501000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", - "amount": 2500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", - "amount": 2489281556, - "lockTime": 0 - }, - { - "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", - "amount": 2451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", - "amount": 2433606700, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", - "amount": 2400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", - "amount": 2380142333, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", - "amount": 2374750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", - "amount": 2354900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", - "amount": 2354092984, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", - "amount": 2317200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", - "amount": 2300880000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", - "amount": 2299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", - "amount": 2264724000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", - "amount": 2257200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", - "amount": 2255457300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", - "amount": 2254824000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", - "amount": 2250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", - "amount": 2237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", - "amount": 2236440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", - "amount": 2206700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", - "amount": 2200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", - "amount": 2199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", - "amount": 2175723000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", - "amount": 2160622295, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", - "amount": 2156631687, - "lockTime": 0 - }, - { - "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", - "amount": 2021747535, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "amount": 2018971225, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", - "amount": 2011370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", - "amount": 2008604700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", - "amount": 1999500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", - "amount": 1998900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", - "amount": 1997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", - "amount": 1981380000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", - "amount": 1901162000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", - "amount": 1900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", - "amount": 1897700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", - "amount": 1890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", - "amount": 1880999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", - "amount": 1850000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", - "amount": 1849370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", - "amount": 1832290591, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", - "amount": 1810650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", - "amount": 1802732700, - "lockTime": 0 - }, - { - "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", - "amount": 1797800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", - "amount": 1791408000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", - "amount": 1786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", - "amount": 1770120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", - "amount": 1701600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", - "amount": 1699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", - "amount": 1698200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", - "amount": 1678100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", - "amount": 1662000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", - "amount": 1630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", - "amount": 1599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", - "amount": 1597108047, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", - "amount": 1567500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "amount": 1565400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", - "amount": 1550000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", - "amount": 1486859411, - "lockTime": 0 - }, - { - "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", - "amount": 1476989000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", - "amount": 1475160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", - "amount": 1472790000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", - "amount": 1465255698, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", - "amount": 1457099103, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", - "amount": 1449454625, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", - "amount": 1448442313, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", - "amount": 1434000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", - "amount": 1425300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", - "amount": 1419840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", - "amount": 1405309144, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", - "amount": 1400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", - "amount": 1397138909, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "amount": 1375366150, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", - "amount": 1368900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", - "amount": 1323940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", - "amount": 1302470000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", - "amount": 1297700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", - "amount": 1270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "amount": 1237234575, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", - "amount": 1230000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", - "amount": 1214000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", - "amount": 1209000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", - "amount": 1199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", - "amount": 1197009000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", - "amount": 1196800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", - "amount": 1193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", - "amount": 1165732400, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", - "amount": 1158800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", - "amount": 1127625246, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", - "amount": 1116439043, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", - "amount": 1115760893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", - "amount": 1109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", - "amount": 1105416011, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", - "amount": 1099800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", - "amount": 1099702467, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", - "amount": 1099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", - "amount": 1098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", - "amount": 1097900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", - "amount": 1097736525, - "lockTime": 0 - }, - { - "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", - "amount": 1093877315, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", - "amount": 1088626560, - "lockTime": 0 - }, - { - "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", - "amount": 1086745966, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", - "amount": 1079900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", - "amount": 1076500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", - "amount": 1071543823, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", - "amount": 1057000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", - "amount": 1049000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", - "amount": 1048250300, - "lockTime": 0 - }, - { - "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", - "amount": 1047400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", - "amount": 1042335949, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", - "amount": 1038462866, - "lockTime": 0 - }, - { - "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", - "amount": 1026196953, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", - "amount": 1019307289, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", - "amount": 1010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", - "amount": 999990000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", - "amount": 999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", - "amount": 998911825, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", - "amount": 998500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", - "amount": 989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", - "amount": 987856800, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", - "amount": 983811025, - "lockTime": 0 - }, - { - "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", - "amount": 966477381, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", - "amount": 964816000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", - "amount": 951999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", - "amount": 950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", - "amount": 949000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", - "amount": 924012466, - "lockTime": 0 - }, - { - "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", - "amount": 922876000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "amount": 921549763, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", - "amount": 919375062, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", - "amount": 911126500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", - "amount": 910000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", - "amount": 906118999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", - "amount": 888000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", - "amount": 884000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", - "amount": 867523406, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", - "amount": 866000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", - "amount": 849500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", - "amount": 849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", - "amount": 848500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", - "amount": 840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", - "amount": 825000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", - "amount": 820716695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", - "amount": 818412190, - "lockTime": 0 - }, - { - "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", - "amount": 810000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", - "amount": 808000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", - "amount": 799731825, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", - "amount": 795500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", - "amount": 793000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", - "amount": 782000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", - "amount": 778716384, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", - "amount": 778100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", - "amount": 775000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", - "amount": 764698197, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", - "amount": 750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", - "amount": 732384154, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", - "amount": 728492845, - "lockTime": 0 - }, - { - "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", - "amount": 723650393, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", - "amount": 722926273, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", - "amount": 714581000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", - "amount": 713000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", - "amount": 711000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", - "amount": 709820317, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "amount": 705454541, - "lockTime": 0 - }, - { - "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", - "amount": 704000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", - "amount": 702883600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", - "amount": 699267300, - "lockTime": 0 - }, - { - "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", - "amount": 699211700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", - "amount": 698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", - "amount": 687299600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", - "amount": 684000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", - "amount": 681750844, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", - "amount": 676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", - "amount": 674598000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", - "amount": 670135839, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", - "amount": 669340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "amount": 669317799, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", - "amount": 657685055, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", - "amount": 655904931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", - "amount": 648825325, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", - "amount": 644200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", - "amount": 641665200, - "lockTime": 0 - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "amount": 641442294, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", - "amount": 638316000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", - "amount": 638290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", - "amount": 637310635, - "lockTime": 0 - }, - { - "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", - "amount": 637000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", - "amount": 636638405, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", - "amount": 613354540, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", - "amount": 610000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", - "amount": 606500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "amount": 600658627, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", - "amount": 599892000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", - "amount": 598400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", - "amount": 597900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", - "amount": 597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", - "amount": 590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", - "amount": 586928090, - "lockTime": 0 - }, - { - "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", - "amount": 569133800, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", - "amount": 568400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", - "amount": 563347505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", - "amount": 558000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", - "amount": 554388330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", - "amount": 551000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", - "amount": 548700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", - "amount": 540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", - "amount": 539300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", - "amount": 525710000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", - "amount": 519900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", - "amount": 518165513, - "lockTime": 0 - }, - { - "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", - "amount": 516997141, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", - "amount": 510000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", - "amount": 509521992, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", - "amount": 509000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", - "amount": 508500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "amount": 506103993, - "lockTime": 0 - }, - { - "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", - "amount": 504607913, - "lockTime": 0 - }, - { - "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", - "amount": 501257116, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", - "amount": 499767300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", - "amount": 499700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", - "amount": 499500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", - "amount": 499400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", - "amount": 498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", - "amount": 498300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", - "amount": 498000732, - "lockTime": 0 - }, - { - "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", - "amount": 497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", - "amount": 494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", - "amount": 491597000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", - "amount": 491336919, - "lockTime": 0 - }, - { - "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", - "amount": 490199678, - "lockTime": 0 - }, - { - "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", - "amount": 490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", - "amount": 489560572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", - "amount": 489000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", - "amount": 486701915, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", - "amount": 486552834, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", - "amount": 486400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", - "amount": 486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", - "amount": 482424197, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", - "amount": 480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", - "amount": 475353211, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", - "amount": 473898911, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", - "amount": 471699724, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", - "amount": 465061855, - "lockTime": 0 - }, - { - "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", - "amount": 457300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", - "amount": 455700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", - "amount": 455200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", - "amount": 453969673, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", - "amount": 450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", - "amount": 446000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", - "amount": 445000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", - "amount": 433845700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", - "amount": 433600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", - "amount": 432400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", - "amount": 418400390, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", - "amount": 410257579, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", - "amount": 401127279, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", - "amount": 401105580, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", - "amount": 399700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", - "amount": 399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", - "amount": 398500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", - "amount": 397131759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", - "amount": 395478100, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", - "amount": 388600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", - "amount": 388250800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", - "amount": 384575891, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", - "amount": 383985656, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", - "amount": 382097330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", - "amount": 380000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", - "amount": 379900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", - "amount": 371511484, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", - "amount": 370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "amount": 358783553, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", - "amount": 355180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", - "amount": 351428540, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", - "amount": 330000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", - "amount": 329000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", - "amount": 328947897, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", - "amount": 326445864, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", - "amount": 326336225, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", - "amount": 324504111, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", - "amount": 320000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", - "amount": 317042167, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", - "amount": 316503686, - "lockTime": 0 - }, - { - "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", - "amount": 315700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", - "amount": 313569000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", - "amount": 305000119, - "lockTime": 0 - }, - { - "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", - "amount": 302729175, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", - "amount": 301435300, - "lockTime": 0 - }, - { - "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", - "amount": 300156854, - "lockTime": 0 - }, - { - "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", - "amount": 299873000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", - "amount": 299267300, - "lockTime": 0 - }, - { - "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", - "amount": 298500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", - "amount": 298335350, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", - "amount": 298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", - "amount": 297167999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", - "amount": 289704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", - "amount": 288704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "amount": 282420000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "amount": 280649126, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", - "amount": 280015680, - "lockTime": 0 - }, - { - "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", - "amount": 276737871, - "lockTime": 0 - }, - { - "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", - "amount": 274151201, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", - "amount": 270408000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", - "amount": 267000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", - "amount": 266960005, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", - "amount": 265775585, - "lockTime": 0 - }, - { - "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", - "amount": 264526302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", - "amount": 263600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", - "amount": 263206294, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", - "amount": 260000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", - "amount": 258290875, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", - "amount": 258126470, - "lockTime": 0 - }, - { - "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", - "amount": 257900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", - "amount": 255000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", - "amount": 249715755, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", - "amount": 249700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", - "amount": 247517821, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", - "amount": 247000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", - "amount": 246924214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", - "amount": 246000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", - "amount": 245111848, - "lockTime": 0 - }, - { - "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", - "amount": 242657013, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", - "amount": 238433807, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", - "amount": 238332494, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", - "amount": 231872522, - "lockTime": 0 - }, - { - "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", - "amount": 231120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", - "amount": 229900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", - "amount": 226960636, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", - "amount": 224900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", - "amount": 223270196, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", - "amount": 221803515, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", - "amount": 219000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", - "amount": 214444251, - "lockTime": 0 - }, - { - "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", - "amount": 210500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", - "amount": 209900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", - "amount": 207241763, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", - "amount": 207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", - "amount": 205908984, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "amount": 204253193, - "lockTime": 0 - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "amount": 203506579, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", - "amount": 201900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", - "amount": 198800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", - "amount": 198265250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", - "amount": 197324848, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "amount": 197000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", - "amount": 196935684, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", - "amount": 196700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", - "amount": 196600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", - "amount": 195103558, - "lockTime": 0 - }, - { - "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", - "amount": 194761997, - "lockTime": 0 - }, - { - "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", - "amount": 193041064, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", - "amount": 192373935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", - "amount": 192300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "amount": 191577917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", - "amount": 191200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", - "amount": 190064307, - "lockTime": 0 - }, - { - "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", - "amount": 189200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "amount": 188671398, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", - "amount": 188256951, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", - "amount": 187144406, - "lockTime": 0 - }, - { - "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", - "amount": 186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", - "amount": 186761758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", - "amount": 184026525, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", - "amount": 182783601, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", - "amount": 182100033, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", - "amount": 177790668, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", - "amount": 177787969, - "lockTime": 0 - }, - { - "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", - "amount": 174300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "amount": 173612453, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", - "amount": 171974145, - "lockTime": 0 - }, - { - "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", - "amount": 170264862, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", - "amount": 169530334, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", - "amount": 168231750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", - "amount": 167285108, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", - "amount": 166023705, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", - "amount": 165600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", - "amount": 163830262, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", - "amount": 161646652, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", - "amount": 160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "amount": 159661817, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", - "amount": 159000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", - "amount": 157355794, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", - "amount": 153674338, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", - "amount": 149775708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", - "amount": 149666150, - "lockTime": 0 - }, - { - "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", - "amount": 148700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", - "amount": 146000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", - "amount": 144964485, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", - "amount": 143851143, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", - "amount": 143712915, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", - "amount": 143545871, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", - "amount": 141900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", - "amount": 140402077, - "lockTime": 0 - }, - { - "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", - "amount": 140000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", - "amount": 139500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", - "amount": 139140181, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", - "amount": 138200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", - "amount": 137361793, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", - "amount": 136283067, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", - "amount": 135749198, - "lockTime": 0 - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "amount": 135523673, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", - "amount": 135297015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", - "amount": 134388698, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", - "amount": 131474912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", - "amount": 131081458, - "lockTime": 0 - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "amount": 131026440, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", - "amount": 130070709, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", - "amount": 129900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", - "amount": 129135639, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", - "amount": 128607478, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", - "amount": 126086500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", - "amount": 125508440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", - "amount": 125205440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", - "amount": 123535996, - "lockTime": 0 - }, - { - "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", - "amount": 123456789, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", - "amount": 123241738, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", - "amount": 122235309, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", - "amount": 121200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", - "amount": 120581538, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", - "amount": 119207762, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", - "amount": 116842374, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", - "amount": 116660266, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", - "amount": 113954247, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", - "amount": 113951486, - "lockTime": 0 - }, - { - "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", - "amount": 113886595, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "amount": 113670193, - "lockTime": 0 - }, - { - "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", - "amount": 113427063, - "lockTime": 0 - }, - { - "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", - "amount": 112000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", - "amount": 111633229, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", - "amount": 111378474, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", - "amount": 111100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", - "amount": 111088708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", - "amount": 111000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", - "amount": 109700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", - "amount": 109377023, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", - "amount": 108828082, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", - "amount": 108551938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", - "amount": 108410125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", - "amount": 107454537, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "amount": 106351895, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", - "amount": 105707909, - "lockTime": 0 - }, - { - "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", - "amount": 105465300, - "lockTime": 0 - }, - { - "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", - "amount": 104900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", - "amount": 104627641, - "lockTime": 0 - }, - { - "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", - "amount": 104621550, - "lockTime": 0 - }, - { - "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", - "amount": 104468595, - "lockTime": 0 - }, - { - "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", - "amount": 103669177, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", - "amount": 103546504, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", - "amount": 103542651, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", - "amount": 103395488, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", - "amount": 103229948, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", - "amount": 102925401, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", - "amount": 102712086, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", - "amount": 102500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", - "amount": 102400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", - "amount": 101888000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", - "amount": 101733344, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", - "amount": 101680846, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", - "amount": 100997392, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", - "amount": 100770054, - "lockTime": 0 - }, - { - "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", - "amount": 100642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", - "amount": 100508552, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", - "amount": 100300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", - "amount": 100131797, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", - "amount": 100100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", - "amount": 99766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", - "amount": 99757675, - "lockTime": 0 - }, - { - "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", - "amount": 99654300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", - "amount": 99600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "amount": 99293597, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", - "amount": 99205961, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "amount": 98945310, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", - "amount": 98800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", - "amount": 98755600, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", - "amount": 98518990, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", - "amount": 98300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", - "amount": 98277516, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "amount": 97900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "amount": 97500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", - "amount": 97140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", - "amount": 96828300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", - "amount": 96611000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", - "amount": 96543495, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", - "amount": 96400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "amount": 96163850, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", - "amount": 95954991, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", - "amount": 95867902, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "amount": 95863871, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", - "amount": 95724927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", - "amount": 95400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", - "amount": 95385777, - "lockTime": 0 - }, - { - "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", - "amount": 95260000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", - "amount": 95200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", - "amount": 95130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", - "amount": 94938692, - "lockTime": 0 - }, - { - "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", - "amount": 94800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "amount": 94200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", - "amount": 94015984, - "lockTime": 0 - }, - { - "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", - "amount": 93901350, - "lockTime": 0 - }, - { - "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", - "amount": 93813255, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", - "amount": 93800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", - "amount": 93300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", - "amount": 93048510, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", - "amount": 92500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", - "amount": 91812514, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", - "amount": 91811651, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", - "amount": 91502145, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", - "amount": 91500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", - "amount": 91460053, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", - "amount": 90900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", - "amount": 90567300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", - "amount": 89500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", - "amount": 88858578, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", - "amount": 88708870, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", - "amount": 88189882, - "lockTime": 0 - }, - { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "amount": 88158538, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", - "amount": 88000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", - "amount": 87800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", - "amount": 87008984, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", - "amount": 86955575, - "lockTime": 0 - }, - { - "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", - "amount": 86910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", - "amount": 86700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", - "amount": 86611859, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", - "amount": 86423688, - "lockTime": 0 - }, - { - "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", - "amount": 86267696, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", - "amount": 86000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", - "amount": 85799789, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", - "amount": 85144041, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", - "amount": 84916060, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", - "amount": 84752403, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "amount": 84714159, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", - "amount": 84682900, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", - "amount": 84399999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", - "amount": 83154269, - "lockTime": 0 - }, - { - "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", - "amount": 82800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", - "amount": 82646161, - "lockTime": 0 - }, - { - "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", - "amount": 82109033, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", - "amount": 81331335, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", - "amount": 81316286, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", - "amount": 81102482, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", - "amount": 80506363, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", - "amount": 80390543, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", - "amount": 79800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", - "amount": 79700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", - "amount": 79400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", - "amount": 79162270, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", - "amount": 78782485, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", - "amount": 78575020, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", - "amount": 78300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", - "amount": 78200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", - "amount": 78168214, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", - "amount": 78037986, - "lockTime": 0 - }, - { - "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", - "amount": 77490236, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", - "amount": 77232268, - "lockTime": 0 - }, - { - "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", - "amount": 77212434, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", - "amount": 77063237, - "lockTime": 0 - }, - { - "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", - "amount": 75800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", - "amount": 75789126, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", - "amount": 75507321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "amount": 75503913, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", - "amount": 75327407, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", - "amount": 75290690, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", - "amount": 74930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", - "amount": 74720000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", - "amount": 74437098, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", - "amount": 74400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", - "amount": 74348762, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", - "amount": 74203000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", - "amount": 73729934, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", - "amount": 73000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", - "amount": 72927719, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", - "amount": 72829725, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", - "amount": 72724127, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", - "amount": 72434019, - "lockTime": 0 - }, - { - "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", - "amount": 72265633, - "lockTime": 0 - }, - { - "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", - "amount": 71929294, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", - "amount": 71635972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", - "amount": 71427784, - "lockTime": 0 - }, - { - "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", - "amount": 71135469, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", - "amount": 71000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", - "amount": 70603817, - "lockTime": 0 - }, - { - "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", - "amount": 69946609, - "lockTime": 0 - }, - { - "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", - "amount": 69881521, - "lockTime": 0 - }, - { - "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", - "amount": 69500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", - "amount": 69259733, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", - "amount": 68899983, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", - "amount": 68714000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", - "amount": 68519123, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", - "amount": 68390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", - "amount": 68174169, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", - "amount": 67478854, - "lockTime": 0 - }, - { - "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", - "amount": 67128000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", - "amount": 66917577, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", - "amount": 66664452, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", - "amount": 66622754, - "lockTime": 0 - }, - { - "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", - "amount": 66513098, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", - "amount": 66200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", - "amount": 65531149, - "lockTime": 0 - }, - { - "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", - "amount": 65513922, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", - "amount": 65324590, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", - "amount": 65286597, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", - "amount": 64975464, - "lockTime": 0 - }, - { - "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", - "amount": 64583611, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", - "amount": 64526697, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", - "amount": 63537395, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", - "amount": 63423172, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", - "amount": 62611136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", - "amount": 62397230, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "amount": 62291375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", - "amount": 61480427, - "lockTime": 0 - }, - { - "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", - "amount": 61300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", - "amount": 61226173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "amount": 61211118, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", - "amount": 61085700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", - "amount": 60882643, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", - "amount": 60676916, - "lockTime": 0 - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "amount": 60415849, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", - "amount": 59900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", - "amount": 59254195, - "lockTime": 0 - }, - { - "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", - "amount": 59041200, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "amount": 58866756, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", - "amount": 58445263, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", - "amount": 57690859, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "amount": 57578422, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", - "amount": 57350574, - "lockTime": 0 - }, - { - "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", - "amount": 57000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", - "amount": 56984632, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", - "amount": 56644046, - "lockTime": 0 - }, - { - "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", - "amount": 56509850, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", - "amount": 56021099, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "amount": 56006923, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", - "amount": 55870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", - "amount": 55783816, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", - "amount": 55600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", - "amount": 54840126, - "lockTime": 0 - }, - { - "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", - "amount": 54227453, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", - "amount": 53888056, - "lockTime": 0 - }, - { - "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", - "amount": 53821529, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", - "amount": 53700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", - "amount": 53616000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", - "amount": 53593100, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", - "amount": 53391817, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", - "amount": 53356598, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", - "amount": 53316729, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", - "amount": 52887364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", - "amount": 52881765, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", - "amount": 51925200, - "lockTime": 0 - }, - { - "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", - "amount": 51579050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", - "amount": 51184091, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", - "amount": 51161816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", - "amount": 51000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", - "amount": 50833041, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", - "amount": 50806357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", - "amount": 50644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", - "amount": 50642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", - "amount": 50642636, - "lockTime": 0 - }, - { - "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", - "amount": 50475173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", - "amount": 50429213, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", - "amount": 50040994, - "lockTime": 0 - }, - { - "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", - "amount": 49910000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", - "amount": 49765250, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", - "amount": 49713528, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", - "amount": 49561400, - "lockTime": 0 - }, - { - "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", - "amount": 49487758, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", - "amount": 49367300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", - "amount": 49325518, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", - "amount": 49243496, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", - "amount": 49028104, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", - "amount": 49016181, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", - "amount": 48998605, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", - "amount": 48979450, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", - "amount": 48600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", - "amount": 47760500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", - "amount": 47374909, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", - "amount": 47347173, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", - "amount": 46939998, - "lockTime": 0 - }, - { - "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", - "amount": 46916130, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", - "amount": 46824251, - "lockTime": 0 - }, - { - "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", - "amount": 46716818, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", - "amount": 46468850, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", - "amount": 46446373, - "lockTime": 0 - }, - { - "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", - "amount": 46284987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", - "amount": 46000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", - "amount": 45635414, - "lockTime": 0 - }, - { - "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", - "amount": 45506826, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", - "amount": 45370505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", - "amount": 45350479, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", - "amount": 45220590, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", - "amount": 45146395, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", - "amount": 44778517, - "lockTime": 0 - }, - { - "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", - "amount": 44624277, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", - "amount": 44596761, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", - "amount": 44316668, - "lockTime": 0 - }, - { - "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", - "amount": 44273095, - "lockTime": 0 - }, - { - "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", - "amount": 43944130, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", - "amount": 43400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", - "amount": 43349444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", - "amount": 43300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", - "amount": 42788664, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "amount": 42659480, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", - "amount": 42616465, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", - "amount": 42446161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", - "amount": 42000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", - "amount": 41873121, - "lockTime": 0 - }, - { - "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", - "amount": 41239864, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", - "amount": 41217182, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", - "amount": 41197860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", - "amount": 41027853, - "lockTime": 0 - }, - { - "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", - "amount": 40000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", - "amount": 39936405, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", - "amount": 39900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", - "amount": 39885316, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", - "amount": 39400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", - "amount": 39205700, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", - "amount": 39204421, - "lockTime": 0 - }, - { - "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", - "amount": 38430246, - "lockTime": 0 - }, - { - "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", - "amount": 38156549, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "amount": 38097837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", - "amount": 37977870, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", - "amount": 37848230, - "lockTime": 0 - }, - { - "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", - "amount": 37596341, - "lockTime": 0 - }, - { - "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", - "amount": 37138237, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", - "amount": 37000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", - "amount": 36645807, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", - "amount": 36632136, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", - "amount": 36340851, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", - "amount": 36305635, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", - "amount": 36260066, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", - "amount": 36254473, - "lockTime": 0 - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "amount": 35657031, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "amount": 35289230, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", - "amount": 35113411, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", - "amount": 35035381, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", - "amount": 34987000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", - "amount": 34985508, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", - "amount": 34237984, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", - "amount": 33972168, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", - "amount": 33666777, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", - "amount": 33300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", - "amount": 33200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", - "amount": 32817751, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", - "amount": 32574993, - "lockTime": 0 - }, - { - "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", - "amount": 32398803, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", - "amount": 32390717, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", - "amount": 32300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", - "amount": 31705425, - "lockTime": 0 - }, - { - "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", - "amount": 31573559, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", - "amount": 31241721, - "lockTime": 0 - }, - { - "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", - "amount": 31200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", - "amount": 30919183, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", - "amount": 30853387, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", - "amount": 30241548, - "lockTime": 0 - }, - { - "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", - "amount": 30188591, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", - "amount": 29911616, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", - "amount": 29612391, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", - "amount": 29505893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", - "amount": 29502131, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", - "amount": 29447012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", - "amount": 29395647, - "lockTime": 0 - }, - { - "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", - "amount": 29297176, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", - "amount": 29193654, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", - "amount": 29170818, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", - "amount": 29000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", - "amount": 28930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", - "amount": 28031084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", - "amount": 28027962, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", - "amount": 27975651, - "lockTime": 0 - }, - { - "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", - "amount": 27900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", - "amount": 27881872, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", - "amount": 27816878, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", - "amount": 27538587, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", - "amount": 27359023, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", - "amount": 27354161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", - "amount": 27313907, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", - "amount": 27037657, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", - "amount": 26204778, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", - "amount": 25921742, - "lockTime": 0 - }, - { - "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", - "amount": 25800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", - "amount": 25214290, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", - "amount": 25000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", - "amount": 24900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", - "amount": 24862265, - "lockTime": 0 - }, - { - "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", - "amount": 24857672, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", - "amount": 24818000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", - "amount": 24792001, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", - "amount": 24764962, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", - "amount": 24752042, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", - "amount": 24399962, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", - "amount": 23615149, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", - "amount": 23543424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "amount": 23374017, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", - "amount": 23095857, - "lockTime": 0 - }, - { - "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", - "amount": 23076854, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", - "amount": 22968358, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", - "amount": 22748293, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "amount": 22694797, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", - "amount": 22691356, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", - "amount": 22290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", - "amount": 22207556, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", - "amount": 22131393, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", - "amount": 22100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", - "amount": 22037029, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", - "amount": 21900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", - "amount": 21856757, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", - "amount": 21500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", - "amount": 21439758, - "lockTime": 0 - }, - { - "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", - "amount": 21405029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", - "amount": 21276018, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", - "amount": 21150519, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", - "amount": 21061125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", - "amount": 20996563, - "lockTime": 0 - }, - { - "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", - "amount": 20956841, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", - "amount": 20728155, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", - "amount": 20676404, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", - "amount": 20520009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "amount": 20361917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "amount": 20239197, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", - "amount": 20090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", - "amount": 19900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", - "amount": 19767300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", - "amount": 19753684, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", - "amount": 19736931, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", - "amount": 19700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", - "amount": 19671511, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", - "amount": 19584000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", - "amount": 19525841, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", - "amount": 19505045, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", - "amount": 19501275, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", - "amount": 19500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", - "amount": 19498877, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", - "amount": 19497550, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", - "amount": 19488228, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", - "amount": 19400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "amount": 19278110, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", - "amount": 19200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", - "amount": 19183455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "amount": 19129772, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", - "amount": 19077005, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", - "amount": 19065333, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", - "amount": 18900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", - "amount": 18751374, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", - "amount": 18644905, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", - "amount": 18618887, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", - "amount": 18528978, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", - "amount": 18516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", - "amount": 18500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", - "amount": 18400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "amount": 18399539, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", - "amount": 18399110, - "lockTime": 0 - }, - { - "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", - "amount": 18394084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", - "amount": 18342720, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", - "amount": 18201288, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", - "amount": 18189414, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", - "amount": 18001058, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", - "amount": 17979537, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", - "amount": 17816282, - "lockTime": 0 - }, - { - "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", - "amount": 17758707, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", - "amount": 17701434, - "lockTime": 0 - }, - { - "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", - "amount": 17700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", - "amount": 17652644, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", - "amount": 17609575, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", - "amount": 17565000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", - "amount": 17506375, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", - "amount": 17500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", - "amount": 17105570, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", - "amount": 17000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", - "amount": 16900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", - "amount": 16889818, - "lockTime": 0 - }, - { - "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", - "amount": 16762383, - "lockTime": 0 - }, - { - "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", - "amount": 16728299, - "lockTime": 0 - }, - { - "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", - "amount": 16643371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", - "amount": 16500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", - "amount": 16482078, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", - "amount": 16238871, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", - "amount": 16182206, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", - "amount": 16179514, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", - "amount": 16163645, - "lockTime": 0 - }, - { - "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", - "amount": 16100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", - "amount": 15967560, - "lockTime": 0 - }, - { - "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", - "amount": 15931878, - "lockTime": 0 - }, - { - "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", - "amount": 15800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", - "amount": 15769682, - "lockTime": 0 - }, - { - "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", - "amount": 15767367, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", - "amount": 15730804, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", - "amount": 15692835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", - "amount": 15619300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", - "amount": 15332019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", - "amount": 15299394, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", - "amount": 15251450, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "amount": 15192835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", - "amount": 15030170, - "lockTime": 0 - }, - { - "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", - "amount": 14989103, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", - "amount": 14920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", - "amount": 14884069, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", - "amount": 14813575, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", - "amount": 14795150, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", - "amount": 14769037, - "lockTime": 0 - }, - { - "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", - "amount": 14682805, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", - "amount": 14583996, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", - "amount": 14548624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", - "amount": 14532102, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", - "amount": 14528369, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", - "amount": 14500253, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", - "amount": 14489245, - "lockTime": 0 - }, - { - "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", - "amount": 14489159, - "lockTime": 0 - }, - { - "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", - "amount": 14400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", - "amount": 14279464, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", - "amount": 14123003, - "lockTime": 0 - }, - { - "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", - "amount": 14000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", - "amount": 13988506, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", - "amount": 13743449, - "lockTime": 0 - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "amount": 13488668, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", - "amount": 13438357, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", - "amount": 13390000, - "lockTime": 0 - }, - { - "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", - "amount": 13132342, - "lockTime": 0 - }, - { - "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", - "amount": 13000059, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", - "amount": 12926318, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", - "amount": 12889665, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", - "amount": 12868693, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", - "amount": 12858804, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", - "amount": 12810473, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", - "amount": 12657982, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", - "amount": 12654117, - "lockTime": 0 - }, - { - "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", - "amount": 12635092, - "lockTime": 0 - }, - { - "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", - "amount": 12620302, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", - "amount": 12518998, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", - "amount": 12500375, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", - "amount": 12373617, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", - "amount": 12323075, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", - "amount": 12299629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", - "amount": 12247283, - "lockTime": 0 - }, - { - "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", - "amount": 12233600, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", - "amount": 12189871, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "amount": 12119019, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", - "amount": 12000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", - "amount": 11869491, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", - "amount": 11854774, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", - "amount": 11852041, - "lockTime": 0 - }, - { - "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", - "amount": 11809086, - "lockTime": 0 - }, - { - "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", - "amount": 11798769, - "lockTime": 0 - }, - { - "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", - "amount": 11727601, - "lockTime": 0 - }, - { - "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", - "amount": 11687196, - "lockTime": 0 - }, - { - "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", - "amount": 11681919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", - "amount": 11630405, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", - "amount": 11596949, - "lockTime": 0 - }, - { - "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", - "amount": 11531640, - "lockTime": 0 - }, - { - "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", - "amount": 11463575, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", - "amount": 11407595, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "amount": 11268464, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "amount": 11225011, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", - "amount": 11154018, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", - "amount": 11035279, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", - "amount": 11031450, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", - "amount": 10928869, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", - "amount": 10844444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", - "amount": 10841500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "amount": 10821533, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", - "amount": 10802050, - "lockTime": 0 - }, - { - "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", - "amount": 10731068, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", - "amount": 10700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", - "amount": 10557397, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", - "amount": 10540000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", - "amount": 10404096, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", - "amount": 10400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", - "amount": 10398200, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", - "amount": 10369791, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "amount": 10313359, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", - "amount": 10300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", - "amount": 10139875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", - "amount": 10105100, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", - "amount": 10057265, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "amount": 9985727, - "lockTime": 0 - }, - { - "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", - "amount": 9982121, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", - "amount": 9964062, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", - "amount": 9943524, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", - "amount": 9884363, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", - "amount": 9870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", - "amount": 9789458, - "lockTime": 0 - }, - { - "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", - "amount": 9700952, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", - "amount": 9694471, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", - "amount": 9693469, - "lockTime": 0 - }, - { - "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", - "amount": 9622974, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", - "amount": 9600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", - "amount": 9450607, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", - "amount": 9393600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", - "amount": 9329474, - "lockTime": 0 - }, - { - "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", - "amount": 9300494, - "lockTime": 0 - }, - { - "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", - "amount": 9287099, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", - "amount": 9261554, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", - "amount": 9261412, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", - "amount": 9200900, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", - "amount": 9077760, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", - "amount": 9002937, - "lockTime": 0 - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", - "amount": 8974542, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", - "amount": 8960266, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", - "amount": 8911684, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "amount": 8890000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", - "amount": 8878624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", - "amount": 8861226, - "lockTime": 0 - }, - { - "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", - "amount": 8800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", - "amount": 8755575, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", - "amount": 8743626, - "lockTime": 0 - }, - { - "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", - "amount": 8730000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", - "amount": 8700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", - "amount": 8618586, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", - "amount": 8616100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", - "amount": 8600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", - "amount": 8568129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", - "amount": 8538393, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", - "amount": 8394182, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", - "amount": 8300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", - "amount": 8263000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", - "amount": 8046950, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", - "amount": 8000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "amount": 7952107, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", - "amount": 7933851, - "lockTime": 0 - }, - { - "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", - "amount": 7781500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", - "amount": 7770748, - "lockTime": 0 - }, - { - "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", - "amount": 7764531, - "lockTime": 0 - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "amount": 7737091, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", - "amount": 7736399, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", - "amount": 7719601, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "amount": 7574095, - "lockTime": 0 - }, - { - "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", - "amount": 7346976, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "amount": 7301873, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", - "amount": 7112300, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "amount": 6993706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", - "amount": 6918758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", - "amount": 6740188, - "lockTime": 0 - }, - { - "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", - "amount": 6708448, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", - "amount": 6670583, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", - "amount": 6500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", - "amount": 6400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", - "amount": 6163200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", - "amount": 6058266, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", - "amount": 5950000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", - "amount": 5800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", - "amount": 5738000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "amount": 5700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", - "amount": 5557105, - "lockTime": 0 - }, - { - "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", - "amount": 5540250, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", - "amount": 5450000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", - "amount": 5296672, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", - "amount": 5270000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "amount": 4957487, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", - "amount": 4778681, - "lockTime": 0 - }, - { - "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", - "amount": 4699808, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", - "amount": 4482229, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "amount": 4386750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", - "amount": 4325350, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", - "amount": 3708425, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", - "amount": 3500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", - "amount": 3365007, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", - "amount": 3360000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", - "amount": 2917000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", - "amount": 2900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "amount": 2726099, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", - "amount": 2690325, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", - "amount": 2624000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", - "amount": 2555026, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", - "amount": 2377118, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", - "amount": 2308964, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", - "amount": 2298000, - "lockTime": 0 - }, - { - "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", - "amount": 2111000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", - "amount": 2087000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", - "amount": 1999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", - "amount": 1951160, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", - "amount": 1888968, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", - "amount": 1856919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", - "amount": 1800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", - "amount": 1725555, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", - "amount": 1689000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", - "amount": 1667308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", - "amount": 1640000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", - "amount": 1624765, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", - "amount": 1621554, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", - "amount": 1606774, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", - "amount": 1560000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", - "amount": 1517547, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", - "amount": 1500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", - "amount": 1455000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", - "amount": 1440359, - "lockTime": 0 - }, - { - "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", - "amount": 1437300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", - "amount": 1400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "amount": 1392312, - "lockTime": 0 - }, - { - "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", - "amount": 1380420, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", - "amount": 1287899, - "lockTime": 0 - }, - { - "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", - "amount": 1267300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", - "amount": 1263550, - "lockTime": 0 - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "amount": 1217403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", - "amount": 1140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "amount": 1090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", - "amount": 1066000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", - "amount": 1030000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", - "amount": 987671, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", - "amount": 965641, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", - "amount": 960000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", - "amount": 952000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", - "amount": 947100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", - "amount": 943700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", - "amount": 939241, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", - "amount": 933125, - "lockTime": 0 - }, - { - "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", - "amount": 930518, - "lockTime": 0 - }, - { - "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", - "amount": 926774, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", - "amount": 920662, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", - "amount": 901400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", - "amount": 859800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", - "amount": 858028, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", - "amount": 855860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", - "amount": 851171, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", - "amount": 842092, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", - "amount": 840772, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", - "amount": 838000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "amount": 834879, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", - "amount": 831343, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", - "amount": 810000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", - "amount": 780000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", - "amount": 779400, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", - "amount": 755007, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", - "amount": 750472, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", - "amount": 739876, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", - "amount": 732640, - "lockTime": 0 - }, - { - "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", - "amount": 730613, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "amount": 725135, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", - "amount": 713527, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", - "amount": 704127, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", - "amount": 693000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", - "amount": 692801, - "lockTime": 0 - }, - { - "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", - "amount": 678826, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", - "amount": 661094, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", - "amount": 655797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", - "amount": 646006, - "lockTime": 0 - }, - { - "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", - "amount": 645525, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", - "amount": 645000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", - "amount": 642636, - "lockTime": 0 - }, - { - "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", - "amount": 640584, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", - "amount": 633486, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", - "amount": 562333, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", - "amount": 560140, - "lockTime": 0 - }, - { - "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", - "amount": 544852, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", - "amount": 533869, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", - "amount": 530000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", - "amount": 504403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", - "amount": 490000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", - "amount": 477569, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", - "amount": 457913, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", - "amount": 416481, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "amount": 413430, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", - "amount": 409000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", - "amount": 374054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", - "amount": 365644, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", - "amount": 330000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", - "amount": 329000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", - "amount": 307700, - "lockTime": 0 - }, - { - "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", - "amount": 307200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", - "amount": 300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", - "amount": 297655, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "amount": 285450, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", - "amount": 232999, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", - "amount": 203900, - "lockTime": 0 - }, - { - "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", - "amount": 200001, - "lockTime": 0 - }, - { - "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", - "amount": 180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", - "amount": 179000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", - "amount": 177286, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", - "amount": 174982, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", - "amount": 173499, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", - "amount": 173450, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", - "amount": 162550, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", - "amount": 148400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", - "amount": 140000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", - "amount": 128500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", - "amount": 125704, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", - "amount": 124800, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", - "amount": 109391, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", - "amount": 98600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", - "amount": 92426, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", - "amount": 92015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", - "amount": 88713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", - "amount": 84403, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", - "amount": 74300, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", - "amount": 74067, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", - "amount": 62963, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", - "amount": 62300, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", - "amount": 61662, - "lockTime": 0 - }, - { - "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", - "amount": 61425, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", - "amount": 58129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", - "amount": 56594, - "lockTime": 0 - }, - { - "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", - "amount": 50009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", - "amount": 46000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", - "amount": 41301, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", - "amount": 38400, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", - "amount": 34500, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", - "amount": 33112, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", - "amount": 33000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", - "amount": 32029, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "amount": 21906, - "lockTime": 0 - }, - { - "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", - "amount": 18725, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", - "amount": 16722, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", - "amount": 16078, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "amount": 12526, - "lockTime": 0 - }, - { - "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", - "amount": 11590, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", - "amount": 10212, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "amount": 9011, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", - "amount": 597, - "lockTime": 0 - }, - { - "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", - "amount": 567, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", - "amount": 506, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "amount": 273, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", - "amount": 31, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", - "amount": 4, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", - "amount": 0, - "lockTime": 0 - } - ], - "alias": [ - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "alias": "0001" - }, - { - "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", - "alias": "1" - }, - { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "alias": "24x7x365_staker_king" - }, - { - "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", - "alias": "24x7x365days_staker" - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "alias": "2_wuyan" - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "alias": "512_gb_ram_node" - }, - { - "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", - "alias": "88" - }, - { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "alias": "a" - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "alias": "a_decentralizedworld" - }, - { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "alias": "abc123" - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "alias": "achilles" - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "alias": "africa_ambassador" - }, - { - "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", - "alias": "agent" - }, - { - "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", - "alias": "agent0" - }, - { - "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", - "alias": "agent1" - }, - { - "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", - "alias": "agent10" - }, - { - "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", - "alias": "agent11" - }, - { - "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", - "alias": "agent12" - }, - { - "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", - "alias": "agent2" - }, - { - "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", - "alias": "agent3" - }, - { - "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", - "alias": "agent4" - }, - { - "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", - "alias": "agent5" - }, - { - "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", - "alias": "agent6" - }, - { - "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", - "alias": "agent7" - }, - { - "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", - "alias": "agent8" - }, - { - "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", - "alias": "agent9" - }, - { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "alias": "agree" - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "alias": "ajs_wallet" - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "alias": "alanachase" - }, - { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "alias": "aleph_alpha" - }, - { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "alias": "aleph_lambda" - }, - { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "alias": "aleph_naught" - }, - { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "alias": "aleph_omega" - }, - { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "alias": "aleph_one" - }, - { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "alias": "aleph_pi" - }, - { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "alias": "alexia" - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "alias": "allenheung" - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "alias": "amazing" - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "alias": "ambassador_africa" - }, - { - "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", - "alias": "andreas" - }, - { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "alias": "andrewle" - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "alias": "anybit" - }, - { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "alias": "anybitwallet" - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "alias": "arb" - }, - { - "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", - "alias": "artempl88" - }, - { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "alias": "astrid" - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "alias": "atlantis" - }, - { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "alias": "aurora" - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "alias": "auspicious" - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "alias": "aussie_ambassador" - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "alias": "australia_ambassador" - }, - { - "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", - "alias": "bbbbb" - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "alias": "beigaofengok" - }, - { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "alias": "bepal" - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "alias": "best_staking_node" - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "alias": "bigfour" - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "alias": "bikanuls1" - }, - { - "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", - "alias": "bikanuls2" - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "alias": "binance" - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "alias": "bischmaster" - }, - { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "alias": "blankpage" - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "alias": "bleegod" - }, - { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "alias": "blockchain_flashnews" - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "alias": "bodhi" - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "alias": "bonesers" - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "alias": "boydreynolds00021124" - }, - { - "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", - "alias": "btsabc" - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "alias": "burgs_yacht_party" - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "alias": "bystake" - }, - { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "alias": "canghai" - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "alias": "cc" - }, - { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "alias": "charlie" - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "alias": "cheifbrody" - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "alias": "chenweiguo" - }, - { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "alias": "children" - }, - { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "alias": "china_ambassador" - }, - { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "alias": "chinanuls_01" - }, - { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "alias": "chinanuls_02" - }, - { - "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", - "alias": "chinanuls_four" - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "alias": "chinanuls_one" - }, - { - "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", - "alias": "chinanuls_three" - }, - { - "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", - "alias": "chinanuls_tow" - }, - { - "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", - "alias": "com" - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "alias": "comapatient" - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "alias": "complete" - }, - { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "alias": "crypto_basics_1" - }, - { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "alias": "crypto_basics_2" - }, - { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "alias": "crypto_nuls" - }, - { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "alias": "crypto_nuls_2" - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "alias": "cryptobuzz" - }, - { - "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", - "alias": "cryptomennekes" - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "alias": "cryptoscrozer" - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "alias": "csc" - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "alias": "cybernetwork" - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "alias": "dalton" - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "alias": "darkzun" - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "alias": "dbnulswallet" - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "alias": "dche" - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "alias": "decadence" - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "alias": "dee" - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "alias": "deutsche_bahn" - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "alias": "dextop" - }, - { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "alias": "dingxiangweituo" - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "alias": "disbish" - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "alias": "djvasilek" - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "alias": "donchen" - }, - { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "alias": "dreaming_of_nuls_1" - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "alias": "dylan" - }, - { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "alias": "elunhui" - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "alias": "empowered" - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "alias": "exc_one" - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "alias": "exo" - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "alias": "faisca" - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "alias": "fanxinghua_nuls" - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "alias": "fcnuls" - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "alias": "fierious" - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "alias": "filip" - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "alias": "fips" - }, - { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "alias": "fj_ly_lc_2018" - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "alias": "forever" - }, - { - "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", - "alias": "france_ambassador" - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "alias": "frenchienuls" - }, - { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "alias": "game_of_stakes" - }, - { - "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", - "alias": "german_ambassador" - }, - { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "alias": "germanarea_ambass" - }, - { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "alias": "ghsjz" - }, - { - "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", - "alias": "gille" - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "alias": "gogineni" - }, - { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "alias": "gone_camping" - }, - { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "alias": "guobao" - }, - { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "alias": "h" - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "alias": "haciabi" - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "alias": "hai888" - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "alias": "harthur_gf" - }, - { - "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", - "alias": "hejie" - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "alias": "hena_alias_test" - }, - { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "alias": "hh" - }, - { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "alias": "hhao" - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "alias": "hibiki" - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "alias": "hodyhe" - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "alias": "hpipsdonate" - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "alias": "hpy_nuls_node01" - }, - { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "alias": "hpy_nuls_node_01" - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "alias": "huang" - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "alias": "huanghua" - }, - { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "alias": "huobipool" - }, - { - "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", - "alias": "id" - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "alias": "io" - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "alias": "jackeycyt" - }, - { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "alias": "jason_zhang" - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "alias": "jasonthatdude" - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "alias": "jb23" - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "alias": "jimmy" - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "alias": "joele" - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "alias": "johan" - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "alias": "joinphonejmh" - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "alias": "jota" - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "alias": "justinevelyn" - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "alias": "jvdburg" - }, - { - "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", - "alias": "jyh" - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "alias": "kadel" - }, - { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "alias": "kaippilly" - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "alias": "kb24" - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "alias": "kevin" - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "alias": "kiss" - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "alias": "krzwalnuls" - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "alias": "kucoin" - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "alias": "l_nuls" - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "alias": "li" - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "alias": "liangye" - }, - { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "alias": "liesa_huang" - }, - { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "alias": "lining" - }, - { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "alias": "linkworld" - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "alias": "liujunbo1234" - }, - { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "alias": "lizhilong" - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "alias": "ln" - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "alias": "longkayo" - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "alias": "love_nuls" - }, - { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "alias": "lsfnuls" - }, - { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "alias": "lsfnuls1" - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "alias": "lxx302" - }, - { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "alias": "main" - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "alias": "mainaccount" - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "alias": "medes" - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "alias": "men" - }, - { - "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", - "alias": "meowmeow" - }, - { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "alias": "mick_one" - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "alias": "ming" - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "alias": "miya" - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "alias": "moon" - }, - { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "alias": "moon_lambo" - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "alias": "moshe" - }, - { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "alias": "moshe_malawach" - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "alias": "mouxiao" - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "alias": "multiobhan" - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "alias": "mycoin" - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "alias": "myklicious" - }, - { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "alias": "n1_nulsnode_org" - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "alias": "nalen" - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "alias": "nalexnuls" - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "alias": "natural" - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "alias": "naveen_reward_acct" - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "alias": "nebulla" - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "alias": "neva" - }, - { - "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", - "alias": "nfrewards" - }, - { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "alias": "niels" - }, - { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "alias": "nodeforge_ii" - }, - { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "alias": "nodeforge_io" - }, - { - "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", - "alias": "ns" - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "alias": "nul_b02" - }, - { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "alias": "nul_b_01" - }, - { - "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", - "alias": "nul_b_02" - }, - { - "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", - "alias": "nul_b_03" - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "alias": "nul_b_04" - }, - { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "alias": "nul_b_2" - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "alias": "nulp_fiction" - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "alias": "nuls" - }, - { - "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", - "alias": "nuls01akrs" - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "alias": "nuls4ever" - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "alias": "nuls_00" - }, - { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "alias": "nuls_01" - }, - { - "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", - "alias": "nuls_8" - }, - { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "alias": "nuls__portugal" - }, - { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "alias": "nuls__to_the__moon" - }, - { - "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", - "alias": "nuls_agent_node" - }, - { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "alias": "nuls_armstrong" - }, - { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "alias": "nuls_australia" - }, - { - "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", - "alias": "nuls_bonesersnode" - }, - { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "alias": "nuls_by_nulswest" - }, - { - "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", - "alias": "nuls_canada" - }, - { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "alias": "nuls_com_sg" - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "alias": "nuls_connect" - }, - { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "alias": "nuls_cru" - }, - { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "alias": "nuls_cru_sf_ca" - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "alias": "nuls_datou" - }, - { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "alias": "nuls_deep" - }, - { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "alias": "nuls_deeper" - }, - { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "alias": "nuls_dextop" - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "alias": "nuls_enterprise" - }, - { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "alias": "nuls_europe" - }, - { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "alias": "nuls_europe_de" - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "alias": "nuls_fans" - }, - { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "alias": "nuls_global" - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "alias": "nuls_global_2" - }, - { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "alias": "nuls_gold" - }, - { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "alias": "nuls_l2" - }, - { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "alias": "nuls_lianquan" - }, - { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "alias": "nuls_machine" - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "alias": "nuls_media" - }, - { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "alias": "nuls_node_london" - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "alias": "nuls_one" - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "alias": "nuls_org" - }, - { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "alias": "nuls_org1" - }, - { - "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", - "alias": "nuls_org2" - }, - { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "alias": "nuls_org3" - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "alias": "nuls_org4" - }, - { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "alias": "nuls_pacific" - }, - { - "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", - "alias": "nuls_pi" - }, - { - "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", - "alias": "nuls_portugal" - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "alias": "nuls_power" - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "alias": "nuls_singapore" - }, - { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "alias": "nuls_the_king" - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "alias": "nuls_to_the_moon" - }, - { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "alias": "nuls_uk" - }, - { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "alias": "nuls_usa" - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "alias": "nuls_vip" - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "alias": "nuls_world" - }, - { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "alias": "nulsb4" - }, - { - "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", - "alias": "nulsdeep" - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "alias": "nulsdeepaustralia" - }, - { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "alias": "nulsfans" - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "alias": "nulsforlyfe" - }, - { - "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", - "alias": "nulsgalaxy" - }, - { - "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", - "alias": "nulsgalaxy_01" - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "alias": "nulsgood" - }, - { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "alias": "nulsio" - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "alias": "nulsmasternode_com" - }, - { - "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", - "alias": "nulsnice" - }, - { - "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", - "alias": "nulsnode_com" - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "alias": "nulson_mandela" - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "alias": "nulson_mandelaa" - }, - { - "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", - "alias": "nulstar" - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "alias": "nulstomoon" - }, - { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "alias": "nulswest_1" - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "alias": "nworld" - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "alias": "odzerchenma_12_12" - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "alias": "omar_voting" - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "alias": "one" - }, - { - "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", - "alias": "oo" - }, - { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "alias": "opulence" - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "alias": "pay" - }, - { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "alias": "pepe_the_nuls" - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "alias": "personal" - }, - { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "alias": "pierreluo" - }, - { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "alias": "pl_godfather" - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "alias": "planqk" - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "alias": "praesum" - }, - { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "alias": "prosper" - }, - { - "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", - "alias": "prosperity" - }, - { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "alias": "prosperous" - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "alias": "quickcrypto" - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "alias": "radigan" - }, - { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "alias": "railnetwork_europe" - }, - { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "alias": "raining_nuls_usa" - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "alias": "reaper" - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "alias": "regularguy" - }, - { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "alias": "rf_1" - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "alias": "riaris_stake_24_7" - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "alias": "rico" - }, - { - "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", - "alias": "rillezk" - }, - { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "alias": "russian__ambassador" - }, - { - "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", - "alias": "russian_ambassador" - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "alias": "ryanprivate" - }, - { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "alias": "serg" - }, - { - "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", - "alias": "sg_ambassador" - }, - { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "alias": "sgfe" - }, - { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "alias": "shijiuzhou" - }, - { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "alias": "siwei" - }, - { - "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", - "alias": "slo_0_nuls" - }, - { - "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", - "alias": "slo_1_nuls" - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "alias": "slo_nuls" - }, - { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "alias": "snzholding" - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "alias": "spanish_ambassador" - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "alias": "spartansz" - }, - { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "alias": "spendyouth" - }, - { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "alias": "stake_n_take" - }, - { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "alias": "stakehouse" - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "alias": "staking" - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "alias": "staking_best_node" - }, - { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "alias": "staking_capital" - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "alias": "sue" - }, - { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "alias": "sun" - }, - { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "alias": "supasativa" - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "alias": "super_nova" - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "alias": "superlinks" - }, - { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "alias": "supernuls_q383524260" - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "alias": "taro" - }, - { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "alias": "teameffort" - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "alias": "three_body" - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "alias": "top1" - }, - { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "alias": "tyrolee" - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "alias": "uk" - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "alias": "us1_newyork" - }, - { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "alias": "us_west_1" - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "alias": "usa_nuls" - }, - { - "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", - "alias": "veki75" - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "alias": "vhtoto20" - }, - { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "alias": "vivi" - }, - { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "alias": "vr" - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "alias": "wallet" - }, - { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "alias": "water" - }, - { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "alias": "wechat_6219172" - }, - { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "alias": "weituo" - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "alias": "wendysa_nuls" - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "alias": "wenzhengqu" - }, - { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "alias": "wichain_nuls" - }, - { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "alias": "wildmsb" - }, - { - "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", - "alias": "winner" - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "alias": "wolfstreet" - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "alias": "wu" - }, - { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "alias": "wuyan" - }, - { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "alias": "xfans" - }, - { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "alias": "xiaomayi" - }, - { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "alias": "xiaoyao" - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "alias": "xue_xiao" - }, - { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "alias": "xuzhigang" - }, - { - "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", - "alias": "xx" - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "alias": "yao" - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "alias": "you363317" - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "alias": "yp" + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" }, { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "alias": "zane" + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "alias": "zdgroup" + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" }, { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "alias": "zero_to_hero" + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" }, { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "alias": "zero_to_hero_2" + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" }, { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "alias": "zheng" + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" }, { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "alias": "zouaiqiu" + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "alias": "zyzz" + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} - +} \ No newline at end of file diff --git a/module.ncf b/module.ncf index 81550bf90d..cf4ddbd364 100644 --- a/module.ncf +++ b/module.ncf @@ -5,19 +5,19 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=1 +chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id -mainChainId=1 +mainChainId=2 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,21 +25,22 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=20191222 +packetMagic=20200120 #种子节点 -selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup +dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -49,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -62,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -77,27 +78,26 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,39 +110,45 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +developerNodeAddress= +ambassadorNodeAddress= +mappingAddress= +businessAddress= +teamAddress= +communityAddress= dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract +[chain-manager] +dependent=protocol-update,smart-contract + [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 +serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=1000 +interval=10 dependent=smart-contract,cross-chain + +[transaction] +dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java index eca8ee86a3..e406d9ca74 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java @@ -249,15 +249,26 @@ public RpcResult getAcctTxs(List params) { } RpcResult result = new RpcResult(); - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAcctTxs(chainId, assetChainId, assetId, address, type, startTime, endTime, pageNumber, pageSize); - } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); + try { + PageInfo pageInfo; + if (CacheManager.isChainExist(chainId)) { + pageInfo = accountService.getAcctTxs(chainId, assetChainId, assetId, address, type, startTime, endTime, pageNumber, pageSize); + result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { + Map res = MapUtils.beanToMap(d); + AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); + if (assetInfo != null) { + res.put("symbol", assetInfo.getSymbol()); + res.put("decimals", assetInfo.getDecimals()); + } + return res; + }).collect(Collectors.toList()))); + } else { + result.setResult(new PageInfo<>(pageNumber, pageSize)); + } + } catch (Exception e) { + LoggerUtil.commonLog.error(e); } - result.setResult(pageInfo); return result; - } @RpcMethod("getAccount") From 9a4eb3d5e2be3ec40a83379be2255cd24b9d193c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Mon, 12 Oct 2020 15:15:33 +0800 Subject: [PATCH 123/304] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java | 11 +++++++++++ .../main/java/io/nuls/network/NetworkBootstrap.java | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java index 904ae36c34..118b04acae 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java @@ -14,6 +14,7 @@ import io.nuls.crosschain.base.message.CirculationMessage; import io.nuls.crosschain.nuls.constant.ParamConstant; import io.nuls.crosschain.nuls.servive.MainNetService; +import io.nuls.crosschain.nuls.srorage.RegisteredCrossChainService; import java.util.HashMap; import java.util.List; @@ -28,6 +29,10 @@ public class MainNetCmd extends BaseCmd { @Autowired private MainNetService service; + + @Autowired + RegisteredCrossChainService registeredCrossChainService; + /** * 友链向主网链管理模块注册跨链信息,链管理模块通知跨链模块 * */ @@ -171,4 +176,10 @@ public Response tokenOutCrossChain(Map params){ resultMap.put(ParamConstant.VALUE, List.of(txHash, txHex)); return success(resultMap); } + + @CmdAnnotation(cmd = "cc_getRegisterChainInfo", version = 1.0, description = "获取所有注册的链信息") + public Response getRegisterChainInfo(Map params){ + return success(registeredCrossChainService.get()); + } + } diff --git a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java index 1c7e2fbc96..50ecdd286f 100644 --- a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java +++ b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java @@ -230,4 +230,9 @@ public RpcModuleState onDependenciesLoss(Module dependenciesModule) { } return RpcModuleState.Ready; } + + @Override + protected long getTryRuningTimeout() { + return 180L; + } } From 4ada1297f702a800f3c2feae1f544252958f3a98 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Tue, 13 Oct 2020 17:37:35 +0800 Subject: [PATCH 124/304] update corsschain tx --- genesis-block.json | 3006 +---------------- module.ncf | 12 +- .../java/io/nuls/chain/info/CmConstants.java | 2 + .../java/io/nuls/chain/rpc/cmd/AssetCmd.java | 51 +- .../io/nuls/chain/rpc/cmd/BaseChainCmd.java | 53 +- .../java/io/nuls/chain/rpc/cmd/ChainCmd.java | 51 +- .../nuls/chain/service/ValidateService.java | 7 +- .../service/impl/ValidateServiceImpl.java | 63 +- .../tx/v7/AddAssetTransferProcessor.java | 109 + .../tx/v7/DestroyChainTransferProcessor.java | 117 + .../tx/v7/DisableAssetTransferProcessor.java | 134 + .../tx/v7/RegChainTransferProcessor.java | 135 + .../main/java/io/nuls/chain/util/TxUtil.java | 4 +- .../src/main/resources/protocol-config.json | 41 + .../src/main/resources/module.json | 2 +- .../src/main/resources/versions.json | 5 + 16 files changed, 738 insertions(+), 3054 deletions(-) create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/AddAssetTransferProcessor.java create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DestroyChainTransferProcessor.java create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/RegChainTransferProcessor.java diff --git a/genesis-block.json b/genesis-block.json index a27d624510..7936dcdf6c 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -2,3014 +2,10 @@ "height": 0, "time": "1568131200", "txs": [ - { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, - "lockTime": 0 - }, - { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, - "lockTime": 0 - }, - { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, - "lockTime": 0 - }, - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, - "lockTime": 0 - }, { "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, - "lockTime": 0 - }, - { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, - "lockTime": 0 - }, - { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, - "lockTime": 0 - }, - { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, - "lockTime": 0 - }, - { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "amount": 10000000000000000, "lockTime": 0 - }, - { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, - "lockTime": 0 - }, - { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, - "lockTime": 0 - }, - { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, - "lockTime": 0 - }, - { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, - "lockTime": 0 - }, - { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, - "lockTime": 0 - }, - { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, - "lockTime": 0 - }, - { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, - "lockTime": 0 - }, - { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, - "lockTime": 0 - }, - { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, - "lockTime": 0 - }, - { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, - "lockTime": 0 - }, - { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, - "lockTime": 0 - }, - { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, - "lockTime": 0 - }, - { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, - "lockTime": 0 - }, - { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, - "lockTime": 0 - }, - { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, - "lockTime": 0 - }, - { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, - "lockTime": 0 - }, - { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, - "lockTime": 0 - }, - { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, - "lockTime": 0 - }, - { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, - "lockTime": 0 - }, - { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, - "lockTime": 0 - }, - { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, - "lockTime": 0 - }, - { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, - "lockTime": 0 - }, - { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, - "lockTime": 0 - }, - { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, - "lockTime": 0 - }, - { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, - "lockTime": 0 - }, - { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, - "lockTime": 0 - }, - { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, - "lockTime": 0 - }, - { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, - "lockTime": 0 - }, - { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, - "lockTime": 0 - }, - { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, - "lockTime": 0 - } - ], - "alias": [ - { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" - }, - { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" - }, - { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" - }, - { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" - }, - { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" - }, - { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" - }, - { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" - }, - { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" - }, - { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" - }, - { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" - }, - { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" - }, - { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" - }, - { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" - }, - { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" - }, - { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" - }, - { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" - }, - { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" - }, - { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" - }, - { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" - }, - { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" - }, - { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" - }, - { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" - }, - { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" - }, - { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" - }, - { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" - }, - { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" - }, - { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" - }, - { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" - }, - { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" - }, - { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" - }, - { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" - }, - { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" - }, - { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" - }, - { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" - }, - { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" - }, - { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" - }, - { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" - }, - { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" - }, - { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" - }, - { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" - }, - { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" - }, - { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" - }, - { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" - }, - { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" - }, - { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" - }, - { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" - }, - { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" - }, - { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" - }, - { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" - }, - { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" - }, - { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" - }, - { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" - }, - { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" - }, - { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" - }, - { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" - }, - { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" - }, - { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" - }, - { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", diff --git a/module.ncf b/module.ncf index cf4ddbd364..1b3dabcb87 100644 --- a/module.ncf +++ b/module.ncf @@ -30,9 +30,9 @@ crossPort=18002 #魔法参数 packetMagic=20200120 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=192.168.1.60:18001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=192.168.1.60:18002 #最大入网连接数 maxInCount=100 #最大出网连接数 @@ -50,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=2 +minNodeAmount=0 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -63,7 +63,7 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -126,9 +126,9 @@ sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=192.168.1.60:18002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/info/CmConstants.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/info/CmConstants.java index f8abfe1965..d1db5c9c72 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/info/CmConstants.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/info/CmConstants.java @@ -13,4 +13,6 @@ public class CmConstants { public static final int MIN_SIGNATURE_BFT_RATIO= 66; public static final int LATEST_SUPPORT_VERSION = 5; + public static final int REMOVE_DEPOSIT_VERSION = 7; + } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java index 268c2a18ab..a38b474374 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java @@ -3,6 +3,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.CoinData; import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.chain.config.NulsChainConfig; import io.nuls.chain.info.CmConstants; import io.nuls.chain.info.CmErrorCode; @@ -90,8 +91,15 @@ public Response assetReg(Map params) { if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } - asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); - asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + + int version = ProtocolGroupManager.getCurrentVersion(Integer.valueOf(nulsChainConfig.getMainChainId())); + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); + asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + } else { + asset.setDepositNuls(BigInteger.ZERO); + asset.setDestroyNuls(BigInteger.ZERO); + } asset.setAvailable(true); BlockChain dbChain = chainService.getChain(asset.getChainId()); if (null == dbChain) { @@ -106,7 +114,7 @@ public Response assetReg(Map params) { /* 组装交易发送 (Send transaction) */ Transaction tx = new AddAssetToChainTransaction(); if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseAssetToTxV4(asset).serialize()); + tx.setTxData(TxUtil.parseAssetToTxV5(asset).serialize()); } else { tx.setTxData(TxUtil.parseAssetToTx(asset).serialize()); } @@ -116,8 +124,15 @@ public Response assetReg(Map params) { if (null != ldErrorCode) { return failed(ldErrorCode); } - CoinData coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), - CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + CoinData coinData; + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } else { + coinData = this.getRegCoinDataV7(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } + tx.setCoinData(coinData.serialize()); /* 判断签名是否正确 (Determine if the signature is correct) */ @@ -169,8 +184,14 @@ public Response mainNetAssetReg(Map params) { if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } - asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); - asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + int version = ProtocolGroupManager.getCurrentVersion(Integer.valueOf(nulsChainConfig.getMainChainId())); + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); + asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + } else { + asset.setDepositNuls(BigInteger.ZERO); + asset.setDestroyNuls(BigInteger.ZERO); + } asset.setAvailable(true); BlockChain dbChain = chainService.getChain(asset.getChainId()); if (null == dbChain) { @@ -186,7 +207,7 @@ public Response mainNetAssetReg(Map params) { Transaction tx = new AddAssetToChainTransaction(); LoggerUtil.COMMON_LOG.debug("version= {}", ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId())); if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseAssetToTxV4(asset).serialize()); + tx.setTxData(TxUtil.parseAssetToTxV5(asset).serialize()); } else { tx.setTxData(TxUtil.parseAssetToTx(asset).serialize()); } @@ -196,8 +217,14 @@ public Response mainNetAssetReg(Map params) { if (null != ldErrorCode) { return failed(ldErrorCode); } - CoinData coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), - CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + CoinData coinData; + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } else { + coinData = this.getRegCoinDataV7(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } tx.setCoinData(coinData.serialize()); /* 判断签名是否正确 (Determine if the signature is correct) */ @@ -279,7 +306,7 @@ public Response assetDisable(Map params) { tx = new DestroyAssetAndChainTransaction(); try { if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseChainToTxV4(dbChain, asset).serialize()); + tx.setTxData(TxUtil.parseChainToTxV5(dbChain, asset).serialize()); } else { tx.setTxData(TxUtil.parseChainToTx(dbChain, asset).serialize()); } @@ -292,7 +319,7 @@ public Response assetDisable(Map params) { tx = new RemoveAssetFromChainTransaction(); try { if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseAssetToTxV4(asset).serialize()); + tx.setTxData(TxUtil.parseAssetToTxV5(asset).serialize()); } else { tx.setTxData(TxUtil.parseAssetToTx(asset).serialize()); } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/BaseChainCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/BaseChainCmd.java index ed2ced584d..7bb40b3f08 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/BaseChainCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/BaseChainCmd.java @@ -106,6 +106,29 @@ CoinData getRegCoinData(Asset asset, int nulsChainId, int nulsAssetId, int txSiz return coinData; } + + /** + * 注册链或资产封装coinData,x%资产进入黑洞,y%资产进入锁定 + */ + CoinData getRegCoinDataV7(Asset asset, int nulsChainId, int nulsAssetId, int txSize, AccountBalance accountBalance) throws NulsRuntimeException { + txSize = txSize + P2PHKSignature.SERIALIZE_LENGTH; + CoinData coinData = new CoinData(); + //手续费 + CoinFrom from = new CoinFrom(asset.getAddress(), nulsChainId, nulsAssetId, BigInteger.ZERO, accountBalance.getNonce(), (byte) 0); + CoinTo to = new CoinTo(CmConstants.BLACK_HOLE_ADDRESS, nulsChainId, nulsAssetId, BigInteger.ZERO, 0); + coinData.addFrom(from); + coinData.addTo(to); + + txSize += from.size(); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(txSize); + String fromAmount = BigIntegerUtils.bigIntegerToString(fee); + if (BigIntegerUtils.isLessThan(accountBalance.getAvailable(), fromAmount)) { + throw new NulsRuntimeException(CmErrorCode.BALANCE_NOT_ENOUGH); + } + from.setAmount(BigIntegerUtils.stringToBigInteger(fromAmount)); + return coinData; + } + /** * 注销资产进行处理 */ @@ -116,15 +139,29 @@ CoinData getDisableCoinData(Asset asset, int nulsChainId, int nulsAssetId, BigInteger lockAmount = asset.getDepositNuls().subtract(asset.getDestroyNuls()); CoinTo to = new CoinTo(asset.getAddress(), nulsChainId, nulsAssetId, lockAmount, 0); CoinData coinData = new CoinData(); - coinData.addTo(to); + //手续费 - CoinFrom from = new CoinFrom(asset.getAddress(), nulsChainId, nulsAssetId, lockAmount, TxUtil.getNonceByTxHash(asset.getTxHash()), (byte) -1); - coinData.addFrom(from); - txSize += to.size(); - txSize += from.size(); - BigInteger fee = TransactionFeeCalculator.getNormalTxFee(txSize); - //手续费从抵押里扣除 - to.setAmount(lockAmount.subtract(fee)); + if (lockAmount.equals(BigInteger.ZERO)) { + CoinFrom from = new CoinFrom(asset.getAddress(), nulsChainId, nulsAssetId, BigInteger.ZERO, accountBalance.getNonce(), (byte) 0); + coinData.addFrom(from); + coinData.addTo(to); + txSize += from.size(); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(txSize); + String fromAmount = BigIntegerUtils.bigIntegerToString(fee); + if (BigIntegerUtils.isLessThan(accountBalance.getAvailable(), fromAmount)) { + throw new NulsRuntimeException(CmErrorCode.BALANCE_NOT_ENOUGH); + } + from.setAmount(fee); + } else { + CoinFrom from = new CoinFrom(asset.getAddress(), nulsChainId, nulsAssetId, lockAmount, TxUtil.getNonceByTxHash(asset.getTxHash()), (byte) -1); + coinData.addFrom(from); + coinData.addTo(to); + txSize += to.size(); + txSize += from.size(); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(txSize); + //手续费从抵押里扣除 + to.setAmount(lockAmount.subtract(fee)); + } return coinData; } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java index f4e26c5fab..4a18e72a37 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.nuls.base.data.CoinData; import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.chain.config.NulsChainConfig; import io.nuls.chain.info.CmConstants; import io.nuls.chain.info.CmErrorCode; @@ -57,6 +58,7 @@ import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.util.NulsDateUtils; +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -170,9 +172,17 @@ public Response chainReg(Map params) { if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } + + int version = ProtocolGroupManager.getCurrentVersion(Integer.valueOf(nulsChainConfig.getMainChainId())); asset.setChainId(blockChain.getChainId()); - asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); - asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + if(version < CmConstants.REMOVE_DEPOSIT_VERSION) { + asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); + asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + }else { + asset.setDepositNuls(BigInteger.ZERO); + asset.setDestroyNuls(BigInteger.ZERO); + } + asset.setAvailable(true); BlockChain dbChain = chainService.getChain(blockChain.getChainId()); if (null != dbChain && dbChain.isDelete()) { @@ -190,7 +200,7 @@ public Response chainReg(Map params) { /* 组装交易发送 (Send transaction) */ Transaction tx = new RegisterChainAndAssetTransaction(); if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseChainToTxV4(blockChain, asset).serialize()); + tx.setTxData(TxUtil.parseChainToTxV5(blockChain, asset).serialize()); } else { tx.setTxData(TxUtil.parseChainToTx(blockChain, asset).serialize()); } @@ -201,9 +211,14 @@ public Response chainReg(Map params) { if (null != ldErrorCode) { return failed(ldErrorCode); } - CoinData coinData = super.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), - CmRuntimeInfo.getMainIntAssetId(), tx.size(), - accountBalance); + CoinData coinData; + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } else { + coinData = this.getRegCoinDataV7(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } tx.setCoinData(coinData.serialize()); /* 判断签名是否正确 (Determine if the signature is correct),取主网的chainid进行签名 */ @@ -297,9 +312,16 @@ public Response chainActive(Map params) { if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } + + int version = ProtocolGroupManager.getCurrentVersion(Integer.valueOf(nulsChainConfig.getMainChainId())); asset.setChainId(blockChain.getChainId()); - asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); - asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + if(version < CmConstants.REMOVE_DEPOSIT_VERSION) { + asset.setDepositNuls(nulsChainConfig.getAssetDepositNuls()); + asset.setDestroyNuls(nulsChainConfig.getAssetDestroyNuls()); + }else { + asset.setDepositNuls(BigInteger.ZERO); + asset.setDestroyNuls(BigInteger.ZERO); + } asset.setAvailable(true); BlockChain dbChain = chainService.getChain(blockChain.getChainId()); if (null == dbChain) { @@ -318,7 +340,7 @@ public Response chainActive(Map params) { /* 组装交易发送 (Send transaction) */ Transaction tx = new RegisterChainAndAssetTransaction(); if (ChainManagerUtil.getVersion(CmRuntimeInfo.getMainIntChainId()) >= CmConstants.LATEST_SUPPORT_VERSION) { - tx.setTxData(TxUtil.parseChainToTxV4(blockChain, asset).serialize()); + tx.setTxData(TxUtil.parseChainToTxV5(blockChain, asset).serialize()); } else { tx.setTxData(TxUtil.parseChainToTx(blockChain, asset).serialize()); } @@ -328,9 +350,14 @@ public Response chainActive(Map params) { if (null != ldErrorCode) { return failed(ldErrorCode); } - CoinData coinData = super.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), - CmRuntimeInfo.getMainIntAssetId(), tx.size(), - accountBalance); + CoinData coinData; + if (version < CmConstants.REMOVE_DEPOSIT_VERSION) { + coinData = this.getRegCoinData(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } else { + coinData = this.getRegCoinDataV7(asset, CmRuntimeInfo.getMainIntChainId(), + CmRuntimeInfo.getMainIntAssetId(), tx.size(), accountBalance); + } tx.setCoinData(coinData.serialize()); /* 判断签名是否正确 (Determine if the signature is correct),取主网的chainid进行签名 */ diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java index d188d0945b..cbefd9f9de 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java @@ -44,12 +44,15 @@ public interface ValidateService { ChainEventResult batchChainRegValidator(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; - ChainEventResult batchChainRegValidatorV3(BlockChain blockChain, Asset asset, Map tempChains, - Map tempAssets) throws Exception; + ChainEventResult batchChainRegValidatorV3(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; ChainEventResult batchAssetRegValidator(Asset asset, Map tempAssets) throws Exception; ChainEventResult batchAssetRegValidatorV3(Asset asset, Map tempAssets) throws Exception; ChainEventResult assetCirculateValidator(int fromChainId, int toChainId, Map fromAssetMap, Map toAssetMap) throws Exception; + + ChainEventResult batchChainRegValidatorV7(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; + + ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception; } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index 1760a5980f..8145bfcc47 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -183,10 +183,10 @@ public ChainEventResult batchChainRegValidatorV3(BlockChain blockChain, Asset as return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); } //判断黑洞资产与锁定资产 - if(!BigIntegerUtils.isEqual(asset.getDepositNuls(),nulsChainConfig.getAssetDepositNuls())){ + if (!BigIntegerUtils.isEqual(asset.getDepositNuls(), nulsChainConfig.getAssetDepositNuls())) { return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); } - if(!BigIntegerUtils.isEqual(asset.getDestroyNuls(),nulsChainConfig.getAssetDestroyNuls())){ + if (!BigIntegerUtils.isEqual(asset.getDestroyNuls(), nulsChainConfig.getAssetDestroyNuls())) { return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); } return ChainEventResult.getResultSuccess(); @@ -205,6 +205,7 @@ public ChainEventResult batchAssetRegValidator(Asset asset, Map } return ChainEventResult.getResultSuccess(); } + @Override public ChainEventResult batchAssetRegValidatorV3(Asset asset, Map tempAssets) throws Exception { if (assetService.assetExist(asset, tempAssets)) { @@ -220,14 +221,15 @@ public ChainEventResult batchAssetRegValidatorV3(Asset asset, Map fromAssetMap, Map toAssetMap) throws Exception { BlockChain fromChain = chainService.getChain(fromChainId); @@ -262,9 +264,9 @@ public ChainEventResult assetCirculateValidator(int fromChainId, int toChainId, return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NOT_EXIST); } ChainAsset chainAsset = assetService.getChainAsset(fromChainId, CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); - if(!chainAsset.isFromChainAsset()) { + if (!chainAsset.isFromChainAsset()) { BigInteger currentAsset = chainAsset.getInitNumber().add(chainAsset.getInNumber()).subtract(chainAsset.getOutNumber()); - if (BigIntegerUtils.isLessThan(currentAsset,fromAssetMap.get(assetKey))) { + if (BigIntegerUtils.isLessThan(currentAsset, fromAssetMap.get(assetKey))) { LoggerUtil.logger().error("fromChainId={},assetKey={}currentAsset={} fromAsset={} BALANCE_NOT_ENOUGH", fromChainId, assetKey, currentAsset, fromAssetMap.get(assetKey)); return ChainEventResult.getResultFail(CmErrorCode.BALANCE_NOT_ENOUGH); } @@ -272,4 +274,53 @@ public ChainEventResult assetCirculateValidator(int fromChainId, int toChainId, } return ChainEventResult.getResultSuccess(); } + + @Override + public ChainEventResult batchChainRegValidatorV7(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception { + ChainEventResult chainEventResult = batchChainRegBaseValidator(blockChain, asset, tempChains, tempAssets); + if (!chainEventResult.isSuccess()) { + return chainEventResult; + } + if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DECIMALPLACES); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_SYMBOL); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); + } +// //判断黑洞资产与锁定资产 +// if(!BigIntegerUtils.isEqual(asset.getDepositNuls(),nulsChainConfig.getAssetDepositNuls())){ +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } +// if(!BigIntegerUtils.isEqual(asset.getDestroyNuls(),nulsChainConfig.getAssetDestroyNuls())){ +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } + return ChainEventResult.getResultSuccess(); + } + + @Override + public ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception { + if (assetService.assetExist(asset, tempAssets)) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_ID_EXIST); + } + if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DECIMALPLACES); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_SYMBOL); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); + } + //判断黑洞资产与锁定资产 +// if (!BigIntegerUtils.isEqual(asset.getDepositNuls(), nulsChainConfig.getAssetDepositNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } +// if (!BigIntegerUtils.isEqual(asset.getDestroyNuls(), nulsChainConfig.getAssetDestroyNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } + return ChainEventResult.getResultSuccess(); + } } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/AddAssetTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/AddAssetTransferProcessor.java new file mode 100644 index 0000000000..2d7d60e7ce --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/AddAssetTransferProcessor.java @@ -0,0 +1,109 @@ +package io.nuls.chain.service.tx.v7; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.*; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("AddAssetTxProcessorV7") +public class AddAssetTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private AssetService assetService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.ADD_ASSET_TO_CHAIN; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map assetMap = new HashMap<>(); + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + asset = TxUtil.buildAssetWithTxAssetV5(tx); + String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); + chainEventResult = validateService.batchAssetRegValidatorV7(asset, assetMap); + if (chainEventResult.isSuccess()) { + assetMap.put(assetKey, 1); + LoggerUtil.logger().debug("txHash = {},assetKey={} reg batchValidate success!", txHash, assetKey); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},assetKey={} reg batchValidate fail!", txHash, assetKey); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + long commitHeight = blockHeader.getHeight(); + List assets = new ArrayList<>(); + Asset asset = null; + try { + for (Transaction tx : txs) { + asset = TxUtil.buildAssetWithTxAssetV5(tx); + assetService.registerAsset(asset); + assets.add(asset); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.registerCrossAsset(assets, blockHeader.getTime()); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DestroyChainTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DestroyChainTransferProcessor.java new file mode 100644 index 0000000000..d5569d373c --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DestroyChainTransferProcessor.java @@ -0,0 +1,117 @@ +package io.nuls.chain.service.tx.v7; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.model.po.BlockChain; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.*; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("DestroyChainTxProcessorV7") +public class DestroyChainTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private AssetService assetService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.DESTROY_CHAIN_AND_ASSET; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + //1获取交易类型 + //2进入不同验证器里处理 + //3封装失败交易返回 + Map chainMap = new HashMap<>(); + Map assetMap = new HashMap<>(); + BlockChain blockChain = null; + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + blockChain = TxUtil.buildChainWithTxDataV4(tx, true); + chainEventResult = validateService.chainDisableValidator(blockChain); + if (chainEventResult.isSuccess()) { + LoggerUtil.logger().debug("txHash = {},chainId={} destroy batchValidate success!", txHash, blockChain.getChainId()); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},chainId={} destroy batchValidate fail!", txHash, blockChain.getChainId()); + errorList.add(tx); + } + + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + long commitHeight = blockHeader.getHeight(); + BlockChain blockChain = null; + List> chainAssetIds = new ArrayList<>(); + try { + for (Transaction tx : txs) { + blockChain = TxUtil.buildChainWithTxDataV4(tx, true); + chainService.destroyBlockChain(blockChain); + Map chainAssetId = new HashMap<>(2); + chainAssetId.put("chainId", blockChain.getChainId()); + chainAssetId.put("assetId", 0); + chainAssetIds.add(chainAssetId); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + chainService.rpcBlockChainRollback(txs, blockHeader.getTime()); + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.cancelCrossChain(chainAssetIds,blockHeader.getTime()); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java new file mode 100644 index 0000000000..7462c66958 --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java @@ -0,0 +1,134 @@ +package io.nuls.chain.service.tx.v7; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.*; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("DisableAssetTxProcessorV7") +public class DisableAssetTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private AssetService assetService; + @Autowired + private ChainService chainService; + @Autowired + CmTransferService cmTransferService; + @Autowired + RpcService rpcService; + + @Override + public int getType() { + return TxType.REMOVE_ASSET_FROM_CHAIN; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + asset = TxUtil.buildAssetWithTxAssetV5(tx); + +// CoinData coinData = tx.getCoinDataInstance(); +// if(coinData.getFrom().size() != 1) { +// rtData.put("errorCode", "coin from error"); +// errorList.add(tx); +// continue; +// } +// BigInteger lockAmount = asset.getDepositNuls().subtract(asset.getDestroyNuls()); +// CoinFrom coinFrom = tx.getCoinDataInstance().getFrom().get(0); +// if(coinFrom.getAmount().compareTo(lockAmount) != 0) { +// rtData.put("errorCode", "coin from error"); +// errorList.add(tx); +// continue; +// } +// byte[] nonce =TxUtil.getNonceByTxHash(asset.getTxHash()); +// if(!Arrays.equals(nonce, coinFrom.getNonce())) { +// rtData.put("errorCode", "coin from error"); +// errorList.add(tx); +// continue; +// } + chainEventResult = validateService.assetDisableValidator(asset); + if (chainEventResult.isSuccess()) { + LoggerUtil.logger().debug("txHash = {},assetKey={} disable batchValidate success!", txHash, CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},assetKey={} disable batchValidate fail!", txHash, CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); + errorList.add(tx); + } + } + + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + LoggerUtil.logger().debug("disable asset tx count={}", txs.size()); + if (txs.size() == 0) { + return true; + } + long commitHeight = blockHeader.getHeight(); + Asset asset = null; + List> chainAssetIds = new ArrayList<>(); + try { + for (Transaction tx : txs) { + asset = TxUtil.buildAssetWithTxAssetV5(tx); + assetService.deleteAsset(asset); + Map chainAssetId = new HashMap<>(2); + chainAssetId.put("chainId", asset.getChainId()); + chainAssetId.put("assetId", asset.getAssetId()); + chainAssetIds.add(chainAssetId); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.cancelCrossChain(chainAssetIds,blockHeader.getTime()); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/RegChainTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/RegChainTransferProcessor.java new file mode 100644 index 0000000000..51782eed7d --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/RegChainTransferProcessor.java @@ -0,0 +1,135 @@ +package io.nuls.chain.service.tx.v7; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.model.po.BlockChain; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.CacheDataService; +import io.nuls.chain.service.ChainService; +import io.nuls.chain.service.CmTransferService; +import io.nuls.chain.service.ValidateService; +import io.nuls.chain.util.ChainManagerUtil; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("RegChainTxProcessorV7") +public class RegChainTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.REGISTER_CHAIN_AND_ASSET; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map chainMap = new HashMap<>(); + Map assetMap = new HashMap<>(); + BlockChain blockChain = null; + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + blockChain = TxUtil.buildChainWithTxDataV4(tx, false); + asset = TxUtil.buildAssetWithTxChainV4(tx); + String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); + chainEventResult = validateService.batchChainRegValidatorV7(blockChain, asset, chainMap, assetMap); + if (chainEventResult.isSuccess()) { + ChainManagerUtil.putChainMap(blockChain, chainMap); + assetMap.put(assetKey, 1); + LoggerUtil.logger().debug("txHash = {},chainId={} reg batchValidate success!", txHash, blockChain.getChainId()); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},chainId={},magicNumber={} reg batchValidate fail!", txHash, blockChain.getChainId(), blockChain.getMagicNumber()); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + LoggerUtil.logger().debug("reg chain tx count = {}", txs.size()); + long commitHeight = blockHeader.getHeight(); + BlockChain blockChain = null; + Asset asset = null; + List blockChains = new ArrayList<>(); + List> prefixList = new ArrayList<>(); + try { + for (Transaction tx : txs) { + blockChain = TxUtil.buildChainWithTxDataV4(tx, false); + asset = TxUtil.buildAssetWithTxChainV4(tx); + BlockChain dbChain = chainService.getChain(blockChain.getChainId()); + //继承数据 + if (null != dbChain) { + blockChain.setSelfAssetKeyList(TxUtil.moveRepeatInfo(dbChain.getSelfAssetKeyList())); + blockChain.setTotalAssetKeyList(TxUtil.moveRepeatInfo(dbChain.getTotalAssetKeyList())); + } else { + blockChain.addCreateAssetId(CmRuntimeInfo.getAssetKey(blockChain.getChainId(), asset.getAssetId())); + blockChain.addCirculateAssetId(CmRuntimeInfo.getAssetKey(blockChain.getChainId(), asset.getAssetId())); + } + + chainService.registerBlockChain(blockChain, asset); + blockChains.add(blockChain); + Map prefix = new HashMap<>(2); + prefix.put("chainId", blockChain.getChainId()); + prefix.put("addressPrefix", blockChain.getAddressPrefix()); + prefixList.add(prefix); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + chainService.rpcBlockChainRollback(txs, blockHeader.getTime()); + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.registerCrossChain(blockChains); + rpcService.addAcAddressPrefix(prefixList); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/util/TxUtil.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/util/TxUtil.java index 8c9f2ac9b8..eb594cbcdf 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/util/TxUtil.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/util/TxUtil.java @@ -90,7 +90,7 @@ public static TxChain parseChainToTx(BlockChain blockChain, Asset asset) throws return txChain; } - public static io.nuls.chain.model.tx.txdatav5.TxAsset parseAssetToTxV4(Asset asset) throws IOException { + public static io.nuls.chain.model.tx.txdatav5.TxAsset parseAssetToTxV5(Asset asset) throws IOException { io.nuls.chain.model.tx.txdatav5.TxAsset txAsset = new io.nuls.chain.model.tx.txdatav5.TxAsset(); txAsset.setAssetId(asset.getAssetId()); txAsset.setChainId(asset.getChainId()); @@ -101,7 +101,7 @@ public static io.nuls.chain.model.tx.txdatav5.TxAsset parseAssetToTxV4(Asset ass return txAsset; } - public static io.nuls.chain.model.tx.txdatav5.TxChain parseChainToTxV4(BlockChain blockChain, Asset asset) throws IOException { + public static io.nuls.chain.model.tx.txdatav5.TxChain parseChainToTxV5(BlockChain blockChain, Asset asset) throws IOException { io.nuls.chain.model.tx.txdatav5.TxChain txChain = new io.nuls.chain.model.tx.txdatav5.TxChain(); txChain.setAddressType(Short.valueOf(blockChain.getAddressType())); txChain.setAddressPrefix(blockChain.getAddressPrefix()); diff --git a/module/nuls-chain-manager/src/main/resources/protocol-config.json b/module/nuls-chain-manager/src/main/resources/protocol-config.json index 3d4d0b237a..6fe2b3cdd1 100644 --- a/module/nuls-chain-manager/src/main/resources/protocol-config.json +++ b/module/nuls-chain-manager/src/main/resources/protocol-config.json @@ -1,4 +1,45 @@ [ + { + "version": "7", + "extend": "", + "validTxs": [ + { + "type": "11", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "RegChainTxProcessorV7" + }, + { + "type": "12", + "systemTx": false, + "unlockTx": true, + "verifySignature": true, + "verifyFee": true, + "handler": "DestroyChainTxProcessorV7" + }, + { + "type": "13", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AddAssetTxProcessorV7" + }, + { + "type": "14", + "systemTx": false, + "unlockTx": true, + "verifySignature": true, + "verifyFee": true, + "handler": "DisableAssetTxProcessorV7" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "5", "extend": "", diff --git a/module/nuls-protocol-update/src/main/resources/module.json b/module/nuls-protocol-update/src/main/resources/module.json index fb474d655a..712f078098 100644 --- a/module/nuls-protocol-update/src/main/resources/module.json +++ b/module/nuls-protocol-update/src/main/resources/module.json @@ -1,5 +1,5 @@ { - "interval": 1000, + "interval": 10, "effectiveRatioMinimum": 60, "continuousIntervalCountMinimum": 10 } \ No newline at end of file diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index e961e8f511..5a9b2fb1ef 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -28,5 +28,10 @@ "version": "6", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "7", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file From d98751a1f0925f34b22e2fabbee7cb71c56c670f Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 14 Oct 2020 10:20:49 +0800 Subject: [PATCH 125/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=A0=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E8=B7=A8=E9=93=BE=E8=B5=84=E4=BA=A7=E9=80=A0=E6=88=90?= =?UTF-8?q?=E7=9A=84=E5=B9=B3=E8=A1=8C=E9=93=BE=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=87=8D=E7=BD=AE=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/CrossChainBootStrap.java | 9 ++++--- .../nuls/rpc/call/ChainManagerCall.java | 11 ++++++++- .../nuls/servive/impl/MainNetServiceImpl.java | 3 ++- .../imp/RegisteredCrossChainServiceImpl.java | 11 +++++++++ .../java/io/nuls/test/TestVerifierChange.java | 24 +++++++++++++++++++ 5 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TestVerifierChange.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java index 7043648080..e12b687df8 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java @@ -146,13 +146,16 @@ public void onDependenciesReady(Module module){ if(registeredChainMessage != null && registeredChainMessage.getChainInfoList() != null){ chainManager.setRegisteredCrossChainList(registeredChainMessage.getChainInfoList()); }else{ - registeredChainMessage = ChainManagerCall.getRegisteredChainInfo(); + registeredChainMessage = ChainManagerCall.getRegisteredChainInfo(chainManager); registeredCrossChainService.save(registeredChainMessage); chainManager.setRegisteredCrossChainList(registeredChainMessage.getChainInfoList()); - } } - + chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() == 9) + .forEach(chainInfo -> { + Log.info("chain id {} 验证人列表:{}",chainInfo.getChainId(),chainInfo.getVerifierList()); + // Log.info("当前高度:{}",chainManager.getChainHeaderMap().get(1).getHeight()); + });; /* * 如果为账户模块启动,向账户模块发送链前缀 */ diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/ChainManagerCall.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/ChainManagerCall.java index 8250078250..4466394c51 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/ChainManagerCall.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/ChainManagerCall.java @@ -12,6 +12,7 @@ import io.nuls.crosschain.base.model.bo.AssetInfo; import io.nuls.crosschain.base.model.bo.ChainInfo; import io.nuls.crosschain.base.model.bo.Circulation; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; import java.util.ArrayList; import java.util.HashMap; @@ -125,9 +126,10 @@ public static void sendCirculation(int chainId, CirculationMessage message) thro * 向链管理模块查询已注册链信息 * @return * @throws NulsException + * @param chainManager */ @SuppressWarnings("unchecked") - public static RegisteredChainMessage getRegisteredChainInfo() throws NulsException { + public static RegisteredChainMessage getRegisteredChainInfo(ChainManager chainManager) throws NulsException { try { HashMap result = (HashMap) CommonCall.request(ModuleE.CM.abbr,"getCrossChainInfos", new HashMap(2)); List chainInfoList = new ArrayList<>(); @@ -143,6 +145,13 @@ public static RegisteredChainMessage getRegisteredChainInfo() throws NulsExcepti } } } + //如果在跨链模块已经存储了验证人列表,应该已跨链模块的验证人列表为准,链管理只存储了初始验证人列表。 + chainInfoList.forEach(chainInfo -> { + ChainInfo oldChainInfo = chainManager.getChainInfo(chainInfo.getChainId()); + if(oldChainInfo != null && oldChainInfo.getVerifierList() != null && !oldChainInfo.getVerifierList().isEmpty()){ + chainInfo.setVerifierList(oldChainInfo.getVerifierList()); + } + }); RegisteredChainMessage registeredChainMessage = new RegisteredChainMessage(); registeredChainMessage.setChainInfoList(chainInfoList); return registeredChainMessage; diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java index 55fde103a9..8b8aa10d28 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java @@ -219,7 +219,8 @@ public Result crossChainRegisterChange(Map params) { return Result.getFailed(CHAIN_NOT_EXIST); } try { - chainManager.setRegisteredCrossChainList(ChainManagerCall.getRegisteredChainInfo().getChainInfoList()); + + chainManager.setRegisteredCrossChainList(ChainManagerCall.getRegisteredChainInfo(chainManager).getChainInfoList()); } catch (Exception e) { chain.getLogger().error("跨链注册信息更新失败"); chain.getLogger().error(e); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java index a3388e9e44..f7a7d6d780 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java @@ -1,11 +1,14 @@ package io.nuls.crosschain.nuls.srorage.imp; +import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.log.Log; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.crosschain.base.model.bo.txdata.RegisteredChainMessage; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; import io.nuls.crosschain.nuls.srorage.RegisteredCrossChainService; +import io.nuls.crosschain.nuls.utils.LoggerUtil; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; /** * 已注册跨链的交易数据库操作实现类 @@ -18,8 +21,16 @@ public class RegisteredCrossChainServiceImpl implements RegisteredCrossChainService { private final byte[] key = NulsCrossChainConstant.DB_NAME_REGISTERED_CHAIN.getBytes(); + @Autowired + private ChainManager chainManager; + @Override public boolean save(RegisteredChainMessage registeredChainMessage) { + registeredChainMessage.getChainInfoList().stream().filter(d->d.getChainId() == 9) + .forEach(chainInfo -> { + LoggerUtil.commonLog.info("chain id {} 验证人列表:{}",chainInfo.getChainId(),chainInfo.getVerifierList()); + LoggerUtil.commonLog.info("当前高度:{}",chainManager.getChainHeaderMap().get(1).getHeight() + 1); + }); try { return RocksDBService.put(NulsCrossChainConstant.DB_NAME_REGISTERED_CHAIN, key,registeredChainMessage.serialize()); }catch (Exception e){ diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TestVerifierChange.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TestVerifierChange.java new file mode 100644 index 0000000000..3095653f39 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TestVerifierChange.java @@ -0,0 +1,24 @@ +package io.nuls.test; + +import io.nuls.base.data.Transaction; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.crosschain.base.model.bo.txdata.VerifierChangeData; + +/** + * @Author: zhoulijun + * @Time: 2020/10/12 17:05 + * @Description: 功能描述 + */ +public class TestVerifierChange { + public static void main(String[] args) throws NulsException { + String hex = "18006f24555f002b09000001264e45525645657062363937776a4c6438676638426556426d5564666273705644777a4e61325800fd2d062102ae22c8f0f43081d82fcca1eae4488992cdb0caa9c902ba7cbfa0eacc1c6312f0463044022001f46a5e2e9aba6eee86771fe0848c93229bc70c2401c83271f4821986ebb9930220673779bf69e695e61e723132fd0ee6fdb9f7e1dbb6d79c6e8846d092fe909f8c210308ad97a2bf08277be771fc5450b6a0fa26fbc6c1e57c402715b9135d5388594b453043021f7a71d7453eac5778ee90ebb8eb9cbf6c597e4185de315d64d53318bf2713f702206769db869bb363b82fabdaf83c80aeaf4d1694bc41f3a0c19db7c83340a5c849210351a8fc85a6c475b102f3fe5bd2479c1d08e58237463f6c6ccf84e95ad396b7834730450221009e08dd33246afd609613041cf8278604adad38854748d450eddf2c5dd53e65b002202f989f6f8e4ae993bf7cdf491252eac3f4fa67ea254833ef44abf2786588b4f22102b5a63aafc3c4750063799ed2bc592f23969ac8a5692133fbde0d1a9eefb4dd66463044022008bddca9d9d4f1cb5c25cf0c558cfe07a24cf95bb3dfacd090fa1a473715ecac022000d2f81e6f0c6f5b59b6543ac3f6bb28afcc7b4d8454c91a7868a007cd27dda32102c8ab66541215350c4e82073c825d0d96dfe21aed1acfca3bdd91ac4d48cb3499473045022100f374de76ecebfde2276432efbbff820e887aa26076403ce0a32280512a3b46b902203ac03fecd57e19376bfca3f9cb1116889c0eaa84e9fc3ff9a5428ee47a23763921020c60dd7e0016e174f7ba4fc0333052bade8c890849409de7b6f3d26f0ec645284630440220409728c5643f57723acf0f24a46ad82f73270d3bd1cc5a5129dc6dc345daa8e902207c4515cba7c3f1af577c3ab78ac08151d7e52ff36e2a4551508d1c46a46a893e2102f9bdb6bf2d5e39cd826cd0712c861185b75b6028c5276df97adeb80706ef30b246304402201dd82262130195738cd757f2207f4a54332c0e20b081b25c0648451fc4a1673a02204eb2d0ef8c043decedd73f8aa1a5ea6d702ad4f2fe6e1a483f9725e978fcc79021035fe7599a7b39ad69fbd243aac7cfb93055f8f0827c6b08057874877cb890b80347304502210083513fb60072ac45eee987d01729493788e6386ff0636a7660236f152ca85a0c0220386cec322cfe1839062563f3cb09f07f685de6e127e557c39008ec6f96104728210338c67449adfbadaca769da9f1ff914e69afcc4a2ae09ff46104d524f711a1b4c473045022100b9ded54e79efeda199394834b79f73abf9813fa45f469f80c3fe575fb22808c40220544b59afdd0e28dcf420ec09d738ee0ef1667db2b395302469e6ae92159282e12102ac31c213b1dc1d2fd55d7751326b4f07b4a5b4ecb2ce3f214cafb7832fd211b9463044022064741638d258c5c5100561427b6334f96027cec68e4aea934048021afcef0cc80220381265cde521193e5ffa3e126b9699dac6bc707d9cc5d2df7dbbdde4361b8b5a2103ac396ab4bc360610058d04940c879e0da57ea1b4a541b75df6989a6c3d5081c9473045022100ddee535262581674088e3fe2da123faeb5bf8d84075451555b0dc06fd479a1cc02201c27828127d363dd295a248478536ed9aa7212fcf2659a6df84b8f70884f666e2102dda7bf54b7843aef842222f5c79405ca91313ac8c59296cf7b38203c09b40ba8473045022100b40d5c055c61298514f347bd2990f00032f0835e082511d4fa4996e42f8ac48902201c2b355763026d72f6a5a8d9023cb9050298a310fe1edaddefa3e6954af3ead021035c77b3debd02fa04c5c1c9ac3597152f2918d22a76288f3185e8c790e328fb6d473045022100a18b091dfb036083ed1b599c49e1a10df94f4453f11c796e45d18bc9145d0fe302202f38fae4f5090354ae48e2137a710fffb9261c33cf5e323bc3e27c14fd2608122103c363f44196aa1a57ef7e14c19845acad721c9eefd837dacdf3fe3af1ba08ee2146304402204e81cd5c85e2147f0b4539de4eaba0655cd10f8561d2be45a2bd545078e47d9802205f0b5bf79776bec51c36fe4561716eb70ef41c28f41af8294682a8ddd4ec906f21030d511912e9f1a953e5c8f1af3d4d59890acd0bc9472f40bf6d5bdfed2c4934bd46304402205c4a27b5df05daf6805139a82555394a0405ac910ab86d08bf7cf92d9cfe438f02205fa790d88dc7fe0d07cd251f7f3157c5569aa60a1d1241d2f55fa96caaca0803"; + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(hex),0); + VerifierChangeData verifierChangeData = new VerifierChangeData(); + verifierChangeData.parse(tx.getTxData(),0); + Log.info("{}",verifierChangeData); + } + +} From b412967cd75c38e996262db358b761eb2c03da8a Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 14 Oct 2020 13:47:46 +0800 Subject: [PATCH 126/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=A0=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E8=B7=A8=E9=93=BE=E8=B5=84=E4=BA=A7=E9=80=A0=E6=88=90?= =?UTF-8?q?=E7=9A=84=E5=B9=B3=E8=A1=8C=E9=93=BE=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=87=8D=E7=BD=AE=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/network/NetworkBootstrap.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java index 86f7778048..50ecdd286f 100644 --- a/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java +++ b/module/nuls-network/src/main/java/io/nuls/network/NetworkBootstrap.java @@ -218,11 +218,6 @@ public RpcModuleState onDependenciesReady() { return RpcModuleState.Running; } - @Override - protected long getTryRuningTimeout() { - return 60L; - } - @Override public RpcModuleState onDependenciesLoss(Module dependenciesModule) { LoggerUtil.COMMON_LOG.info("onDependenciesLoss module={}......", dependenciesModule.getName()); From 2c25bc579403e725431efe89abc22614fb90c6b8 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Fri, 16 Oct 2020 10:34:12 +0800 Subject: [PATCH 127/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/nuls-protocol-update/src/main/resources/versions.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index e961e8f511..5a9b2fb1ef 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -28,5 +28,10 @@ "version": "6", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "7", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file From a4354e917beb5f1262d5f214774ed3c6dcaf0e28 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 20 Oct 2020 10:32:08 +0800 Subject: [PATCH 128/304] update disable asset --- .../io/nuls/chain/service/ValidateService.java | 2 ++ .../chain/service/impl/ValidateServiceImpl.java | 15 +++++++++++++++ .../tx/v7/DisableAssetTransferProcessor.java | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java index cbefd9f9de..9d6bc0fee6 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java @@ -39,6 +39,8 @@ public interface ValidateService { ChainEventResult assetDisableValidator(Asset asset) throws Exception; + ChainEventResult assetDisableValidatorV7(Asset asset) throws Exception; + ChainEventResult chainDisableValidator(BlockChain blockChain) throws Exception; diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index 9e89524a1a..b7209ec932 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -97,6 +97,21 @@ public ChainEventResult assetDisableValidator(Asset asset) throws Exception { return ChainEventResult.getResultSuccess(); } + @Override + public ChainEventResult assetDisableValidatorV7(Asset asset) throws Exception { + Asset dbAsset = assetService.getAsset(CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); + if (!ByteUtils.arrayEquals(asset.getAddress(), dbAsset.getAddress())) { + LoggerUtil.logger().error("address={},dbAddr={} ERROR_ADDRESS_ERROR", AddressTool.getStringAddressByBytes(asset.getAddress()), + AddressTool.getStringAddressByBytes(dbAsset.getAddress())); + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ADDRESS_ERROR); + } + if (asset.getChainId() != dbAsset.getChainId()) { + LoggerUtil.logger().error("chainId={},dbChainId={} ERROR_CHAIN_ASSET_NOT_MATCH", asset.getChainId(), dbAsset.getChainId()); + return ChainEventResult.getResultFail(CmErrorCode.ERROR_CHAIN_ASSET_NOT_MATCH); + } + return ChainEventResult.getResultSuccess(); + } + @Override public ChainEventResult chainDisableValidator(BlockChain blockChain) throws Exception { if (null == blockChain) { diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java index 7462c66958..424268870f 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v7/DisableAssetTransferProcessor.java @@ -71,7 +71,7 @@ public Map validate(int chainId, List txs, Map Date: Mon, 26 Oct 2020 13:52:15 +0800 Subject: [PATCH 129/304] beta config --- config/nuls.beta.ncf | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index 15860860c0..993af813e8 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -23,7 +23,8 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=%PACKAGE_VERSION% +packageVersion=2.7.0-a4354e9 + [network] @@ -32,9 +33,9 @@ crossPort=18002 #魔法参数 packetMagic=20200120 #种子节点 -selfSeedIps=161.117.11.137:18001,149.129.251.238:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=161.117.11.137:18002,149.129.251.238:18002,47.254.234.223:18002,47.74.86.85:18002,47.252.86.42:18002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 maxInCount=100 #最大出网连接数 @@ -93,7 +94,7 @@ deflationTimeInterval=2592000 #合约视图方法调用最大消耗的Gas maxViewGas=100000000 systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv [public-service] #public-service模块对外的rpc端口号 @@ -132,6 +133,15 @@ mainByzantineRatio=66 maxSignatureCount=100 +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:18003/ +explorerPort=1999 +explorerHost=0.0.0.0 + +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:18003/ +webWalletPort=18006 +webWalletHost=0.0.0.0 [protocol-update] #每隔多少个区块统计一次协议占比 @@ -142,6 +152,3 @@ interval=10 server_ip=0.0.0.0 #httpServer的启动port serverPort=18004 - -[cmd-client] -clientVersion=2.6.0 From bfea436540b5dd66d30f8e58349105fc1b0b7041 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 28 Oct 2020 10:28:58 +0800 Subject: [PATCH 130/304] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E6=81=A2=E5=A4=8D=E7=9A=84=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 5b41f8f377..fc79da39d9 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -555,7 +555,11 @@ public static boolean signByzantineVerify(Chain chain, Transaction ctx, List Date: Wed, 28 Oct 2020 10:40:05 +0800 Subject: [PATCH 131/304] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E6=81=A2=E5=A4=8D=E7=9A=84=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index fc79da39d9..3c7ed9a80d 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -534,7 +534,8 @@ public static boolean signByzantineVerify(Chain chain, Transaction ctx, List 3505754 && transactionSignature.getP2PHKSignatures().size() < byzantineCount) { chain.getLogger().error("跨链交易签名数量小于拜占庭数量,Hash:{},signCount:{},byzantineCount:{}", ctx.getHash().toHex(), transactionSignature.getP2PHKSignatures().size(), byzantineCount); return false; } From 6b9ef839094f4d729cb8453d0910e9c651af9004 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 28 Oct 2020 16:47:15 +0800 Subject: [PATCH 132/304] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/nuls.ncf | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/config/nuls.ncf b/config/nuls.ncf index 268c566180..b487aac13b 100644 --- a/config/nuls.ncf +++ b/config/nuls.ncf @@ -23,6 +23,8 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=%PACKAGE_VERSION% + [network] port=8001 @@ -59,6 +61,8 @@ cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) genesisBlockPath=genesis-block.json + + [consensus] #种子节点列表 seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 @@ -138,5 +142,14 @@ serverIp=0.0.0.0 #httpServer的启动port serverPort=8004 -[cmd-client] -clientVersion=2.5.0 + +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:8003/ +webWalletPort=8006 +webWalletHost=0.0.0.0 + +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:8003/ +explorerPort=1999 +explorerHost=0.0.0.0 + From 827d9e8533cafec463cd86f8ff4bab38b94ccb2a Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 28 Oct 2020 17:12:34 +0800 Subject: [PATCH 133/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dnuls-api=E4=BE=9D?= =?UTF-8?q?=E8=B5=96provider=E6=8E=A5=E5=8F=A3=E7=89=88=E6=9C=AC=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/nuls-api/pom.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index e7636852cb..8d6ffb2b21 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -37,6 +37,17 @@ io.nuls.v2 sdk4j 1.1.2.RELEASE + + + io.nuls.v2 + nuls-base-api-provider + + + + + io.nuls.v2 + nuls-base-api-provider + 1.0.0-SNAPSHOT org.glassfish.jersey.containers From b7edbc9b43f15dcf879140572fecab168cc3e244 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 28 Oct 2020 18:11:09 +0800 Subject: [PATCH 134/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dnulstar=E5=9C=A8windo?= =?UTF-8?q?w=E4=B8=8A=E5=90=AF=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/nulstar/start.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/nulstar/start.bat b/build/nulstar/start.bat index 00ca038d32..3378345c45 100644 --- a/build/nulstar/start.bat +++ b/build/nulstar/start.bat @@ -9,6 +9,6 @@ goto end :start @echo off SET ROOT_PATH=%~dp0 -SET PATH=%ROOT_PATH%Libraries\CPP\Nulstar\0.1.0;%ROOT_PATH%Libraries\CPP\Qt\5.12.3;%PATH% -call %ROOT_PATH%Modules\Nulstar\Nulstar\0.1.0\Nulstar.exe +SET PATH=%ROOT_PATH%Libraries\CPP\Nulstar\0.1.0;%ROOT_PATH%Libraries\CPP\Qt\5.12.0;%PATH% +call "%ROOT_PATH%Modules\Nulstar\Nulstar\0.1.0\Nulstar.exe" :end From 530564701333e7a95348a7fc662d1f1902ca3f4e Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 29 Oct 2020 11:24:22 +0800 Subject: [PATCH 135/304] update config --- genesis-block.json | 32337 ++++++++++++++++++++++++++++++++++++++++++- module.ncf | 78 +- 2 files changed, 32374 insertions(+), 41 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index 7936dcdf6c..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,12 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 10000000000000000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 + }, + { + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, + "lockTime": 0 + }, + { + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, + "lockTime": 0 + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, + "lockTime": 0 + }, + { + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, + "lockTime": 0 + }, + { + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, + "lockTime": 0 + }, + { + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, + "lockTime": 0 + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, + "lockTime": 0 + }, + { + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, + "lockTime": 0 + }, + { + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, + "lockTime": 0 + }, + { + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, + "lockTime": 0 + }, + { + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, + "lockTime": 0 + }, + { + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, + "lockTime": 0 + }, + { + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, + "lockTime": 0 + }, + { + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, + "lockTime": 0 + }, + { + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, + "lockTime": 0 + }, + { + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, + "lockTime": 0 + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, + "lockTime": 0 + }, + { + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, + "lockTime": 0 + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, + "lockTime": 0 + }, + { + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, + "lockTime": 0 + }, + { + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, + "lockTime": 0 + }, + { + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, + "lockTime": 0 + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, + "lockTime": 0 + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, + "lockTime": 0 + }, + { + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, + "lockTime": 0 + }, + { + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, + "lockTime": 0 + }, + { + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, + "lockTime": 0 + }, + { + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, + "lockTime": 0 + }, + { + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, + "lockTime": 0 + }, + { + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, + "lockTime": 0 + }, + { + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, + "lockTime": 0 + }, + { + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, + "lockTime": 0 + }, + { + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, + "lockTime": 0 + }, + { + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, + "lockTime": 0 + }, + { + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, + "lockTime": 0 + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, + "lockTime": 0 + }, + { + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, + "lockTime": 0 + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, + "lockTime": 0 + }, + { + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, + "lockTime": 0 + }, + { + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, + "lockTime": 0 + }, + { + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, + "lockTime": 0 + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, + "lockTime": 0 + }, + { + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, + "lockTime": 0 + }, + { + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, + "lockTime": 0 + }, + { + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, + "lockTime": 0 + }, + { + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, + "lockTime": 0 + }, + { + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, + "lockTime": 0 + }, + { + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, + "lockTime": 0 + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, + "lockTime": 0 + }, + { + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, + "lockTime": 0 + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, + "lockTime": 0 + }, + { + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, + "lockTime": 0 + }, + { + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, + "lockTime": 0 + }, + { + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, + "lockTime": 0 + }, + { + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, + "lockTime": 0 + }, + { + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, + "lockTime": 0 + }, + { + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, + "lockTime": 0 + }, + { + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, + "lockTime": 0 + }, + { + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, + "lockTime": 0 + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, + "lockTime": 0 + }, + { + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, + "lockTime": 0 + }, + { + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, + "lockTime": 0 + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, + "lockTime": 0 + }, + { + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, + "lockTime": 0 + }, + { + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, + "lockTime": 0 + }, + { + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, + "lockTime": 0 + }, + { + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, + "lockTime": 0 + }, + { + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, + "lockTime": 0 + }, + { + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, + "lockTime": 0 + }, + { + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, + "lockTime": 0 + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, + "lockTime": 0 + }, + { + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, + "lockTime": 0 + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, + "lockTime": 0 + }, + { + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, + "lockTime": 0 + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, + "lockTime": 0 + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, + "lockTime": 0 + }, + { + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, + "lockTime": 0 + }, + { + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, + "lockTime": 0 + }, + { + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, + "lockTime": 0 + }, + { + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, + "lockTime": 0 + }, + { + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, + "lockTime": 0 + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, + "lockTime": 0 + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, + "lockTime": 0 + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, + "lockTime": 0 + }, + { + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, + "lockTime": 0 + }, + { + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, + "lockTime": 0 + }, + { + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, + "lockTime": 0 + }, + { + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, + "lockTime": 0 + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, + "lockTime": 0 + }, + { + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, + "lockTime": 0 + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, + "lockTime": 0 + }, + { + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, + "lockTime": 0 + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, + "lockTime": 0 + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, + "lockTime": 0 + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, + "lockTime": 0 + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, + "lockTime": 0 + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, + "lockTime": 0 + }, + { + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, + "lockTime": 0 + }, + { + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, + "lockTime": 0 + }, + { + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, + "lockTime": 0 + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, + "lockTime": 0 + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, + "lockTime": 0 + }, + { + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, + "lockTime": 0 + }, + { + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, + "lockTime": 0 + }, + { + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, + "lockTime": 0 + }, + { + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, + "lockTime": 0 + }, + { + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, + "lockTime": 0 + }, + { + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, + "lockTime": 0 + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, + "lockTime": 0 + }, + { + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, + "lockTime": 0 + }, + { + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, + "lockTime": 0 + }, + { + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 + }, + { + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 + }, + { + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 + }, + { + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 + }, + { + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 + }, + { + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 + }, + { + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 + }, + { + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 + }, + { + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 + }, + { + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 + }, + { + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 + }, + { + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 + }, + { + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 + }, + { + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 + }, + { + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" + }, + { + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" + }, + { + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 1b3dabcb87..9262dad320 100644 --- a/module.ncf +++ b/module.ncf @@ -5,19 +5,19 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=DEBUG dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,22 +25,22 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=192.168.1.60:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.60:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -50,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=0 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -63,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,26 +78,31 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,45 +115,42 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.60:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip -serverIp=0.0.0.0 +serverIp=127.0.0.1 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.7.0 From 51789c49af5fff4b2b47bfcd120fe0c3c7a5a4ad Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 29 Oct 2020 14:01:53 +0800 Subject: [PATCH 136/304] update ps-module getContract --- .../nuls/api/analysis/WalletRpcHandler.java | 18 +++++++++++++++++ .../rpc/controller/ContractController.java | 20 ++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java index 5ac1996675..b8b0faf300 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java @@ -437,6 +437,24 @@ public static Result tokenBalance(int chainid, Object contractAddres } } + public static Result tokenTotalSupply(int chainid, Object contractAddress) { + try { + Result result = invokeView(chainid, contractAddress, "totalSupply", null, null); + Map map = result.getData(); + if (map == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + Object totalSupply = map.get("result"); + if (totalSupply == null) { + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + return Result.getSuccess(null).setData(new BigInteger(totalSupply.toString())); + } catch (NulsException e) { + Log.error(e.format()); + return Result.getSuccess(null).setData(BigInteger.ZERO); + } + } + public static Result getContractResultInfo(int chainId, String hash) throws NulsException { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java index 70bde2fa6e..9487f6e197 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java @@ -70,6 +70,11 @@ public RpcResult getContract(List params) { if (assetIdOfNRC20 != null) { boolean crossAssets = WalletRpcHandler.isCrossAssets(chainId, assetIdOfNRC20); contractInfo.setCrossAsset(crossAssets); + Result result = WalletRpcHandler.tokenTotalSupply(chainId, contractAddress); + if (result.isSuccess()) { + BigInteger totalSupply = result.getData(); + contractInfo.setTotalSupply(totalSupply.toString()); + } } ApiCache apiCache = CacheManager.getCache(chainId); AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); @@ -788,7 +793,7 @@ public RpcResult validateContractCall(List params) throws NulsException return RpcResult.dataNotFound(); } RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if(contractMethodArgsTypesResult.getError() != null) { + if (contractMethodArgsTypesResult.getError() != null) { return contractMethodArgsTypesResult; } List typeList = (List) contractMethodArgsTypesResult.getResult(); @@ -932,7 +937,7 @@ public RpcResult imputedContractCallGas(List params) throws NulsExceptio return RpcResult.dataNotFound(); } RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if(contractMethodArgsTypesResult.getError() != null) { + if (contractMethodArgsTypesResult.getError() != null) { return contractMethodArgsTypesResult; } List typeList = (List) contractMethodArgsTypesResult.getResult(); @@ -998,7 +1003,7 @@ public RpcResult invokeView(List params) throws NulsException { return RpcResult.dataNotFound(); } RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if(contractMethodArgsTypesResult.getError() != null) { + if (contractMethodArgsTypesResult.getError() != null) { return contractMethodArgsTypesResult; } List typeList = (List) contractMethodArgsTypesResult.getResult(); @@ -1085,7 +1090,7 @@ public RpcResult previewCall(List params) throws NulsException { return RpcResult.paramError("[args] is invalid"); } RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if(contractMethodArgsTypesResult.getError() != null) { + if (contractMethodArgsTypesResult.getError() != null) { return contractMethodArgsTypesResult; } List typeList = (List) contractMethodArgsTypesResult.getResult(); @@ -1107,7 +1112,7 @@ static void convertArgsToObjectArray(Object[] args, String[] types) throws NulsE Object temp; for (int i = 0, length = types.length; i < length; i++) { temp = args[i]; - if(temp == null) { + if (temp == null) { continue; } if (types[i].contains("[]") && temp instanceof String && StringUtils.isNotBlank((String) temp)) { @@ -1126,10 +1131,10 @@ static class ContractProgramMethod { public ContractProgramMethod(Map result) { List args = (List) result.get("args"); this.args = new LinkedList<>(); - if(args == null || args.isEmpty()) { + if (args == null || args.isEmpty()) { return; } - for(Map arg : args) { + for (Map arg : args) { this.args.add(new ContractProgramMethodArg(arg)); } } @@ -1147,6 +1152,7 @@ public String[] argsType2Array() { } } } + static class ContractProgramMethodArg { private String type; From 72adb5ffbea58a0700f03f1513b3d3c2d6ba9629 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 29 Oct 2020 19:07:19 +0800 Subject: [PATCH 137/304] contract multi-asset transfer --- .../src/main/resources/versions.json | 5 + module/nuls-smart-contract/pom.xml | 2 +- .../nuls/contract/SmartContractBootStrap.java | 2 + .../contract/callable/ContractTxCallable.java | 14 +- .../nuls/contract/config/ContractConfig.java | 4 +- .../nuls/contract/config/ContractContext.java | 14 +- .../contract/constant/ContractConstant.java | 1 + .../contract/constant/ContractErrorCode.java | 1 + .../nuls/contract/helper/ContractHelper.java | 53 ++-- .../ContractNewTxFromOtherModuleHandler.java | 262 +++++++++--------- .../contract/helper/ContractNewTxHandler.java | 52 ++-- .../helper/ContractTransferHandler.java | 182 +++++++++--- .../contract/helper/ContractTxHelper.java | 20 +- .../manager/ContractTempBalanceManager.java | 27 +- .../manager/ContractTxValidatorManager.java | 5 + .../bo/ContractMultyAssetMergedTransfer.java | 112 ++++++++ .../contract/model/bo/ContractResult.java | 16 +- .../contract/model/bo/MultyAssetOutput.java | 78 ++++++ .../contract/model/dto/ContractResultDto.java | 2 +- .../model/dto/ContractTransactionDto.java | 2 +- .../model/txdata/CallContractData.java | 19 ++ .../contract/model/txdata/ContractData.java | 8 + .../io/nuls/contract/rpc/call/LedgerCall.java | 12 +- .../rpc/resource/ContractResource.java | 92 ++++-- .../nuls/contract/service/ContractCaller.java | 3 +- .../contract/service/ContractTxService.java | 6 +- .../service/impl/ContractCallerImpl.java | 5 +- .../service/impl/ContractExecutorImpl.java | 2 + .../service/impl/ContractServiceImpl.java | 1 - .../service/impl/ContractTxServiceImpl.java | 12 +- .../service/impl/ResultHandlerImpl.java | 7 +- .../tx/SmartContractVersionChangeInvoker.java | 25 +- .../tx/v8/CallContractProcessorV8.java | 130 +++++++++ .../io/nuls/contract/util/ContractUtil.java | 24 +- .../java/io/nuls/contract/util/VMContext.java | 8 +- .../validator/CallContractTxValidator.java | 75 ++++- .../validator/CreateContractTxValidator.java | 2 +- .../validator/DeleteContractTxValidator.java | 4 +- .../main/java/io/nuls/contract/vm/Heap.java | 8 + .../src/main/java/io/nuls/contract/vm/VM.java | 13 +- .../java/io/nuls/contract/vm/VMFactory.java | 44 ++- .../contract/vm/code/ClassCodeLoader.java | 44 +-- .../io/nuls/contract/vm/code/MethodCode.java | 5 + .../io/nuls/contract/sdk/NativeAddress.java | 177 +++++++++--- .../io/nuls/contract/sdk/NativeMsg.java | 52 ++++ .../io/nuls/contract/sdk/NativeUtils.java | 4 +- .../contract/vm/program/ProgramAccount.java | 26 +- .../nuls/contract/vm/program/ProgramCall.java | 135 +++++---- .../vm/program/ProgramInternalCall.java | 26 ++ .../contract/vm/program/ProgramMethod.java | 10 + .../contract/vm/program/ProgramResult.java | 6 +- .../contract/vm/program/ProgramTransfer.java | 79 ++++-- .../vm/program/impl/ProgramContext.java | 20 ++ .../vm/program/impl/ProgramExecutorImpl.java | 84 +++--- .../vm/program/impl/ProgramInvoke.java | 26 ++ .../main/resources/languages/en.properties | 3 +- .../src/main/resources/protocol-config.json | 52 +--- .../src/main/resources/used_classes_sdk_v8 | Bin 0 -> 9061 bytes .../ContractMergeContractTransferTest.java | 11 +- .../mock/contractvm/ContractVmTest.java | 2 +- .../mock/pocm/ContractPOCMLocalTest.java | 2 +- .../io/nuls/contract/tx/base/BaseQuery.java | 31 ++- .../tx/pocm/ContractPOCMSendTxTest.java | 4 +- .../io/nuls/contract/util/VMContextMock.java | 4 +- 64 files changed, 1576 insertions(+), 581 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractMultyAssetMergedTransfer.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/MultyAssetOutput.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java create mode 100644 module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 5a9b2fb1ef..d3c765202a 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -33,5 +33,10 @@ "version": "7", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "8", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 5fc3fa7553..0f6d272248 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -95,7 +95,7 @@ io.nuls.sdk sdk-contract-vm - 2.0.0.RELEASE + 2.1.0.RELEASE diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java index 7cdc1a72ef..a523eec8d0 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java @@ -100,6 +100,8 @@ private void initNulsConfig() { ContractContext.DATA_PATH = contractConfig.getDataPath() + File.separator + ModuleE.SC.name; ContractContext.MAIN_ASSETS_ID = contractConfig.getMainAssetId(); ContractContext.MAIN_CHAIN_ID = contractConfig.getMainChainId(); + ContractContext.CHAIN_ID = contractConfig.getChainId(); + ContractContext.ASSET_ID = contractConfig.getAssetId(); if (StringUtils.isNotBlank(contractConfig.getCrossTokenSystemContract())) { ContractContext.CROSS_CHAIN_SYSTEM_CONTRACT = AddressTool.getAddress(contractConfig.getCrossTokenSystemContract()); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java index 88d67a8eaa..5d4c5c0704 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java @@ -23,6 +23,9 @@ */ package io.nuls.contract.callable; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.Transaction; import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractContext; import io.nuls.contract.helper.ContractConflictChecker; @@ -31,6 +34,7 @@ import io.nuls.contract.manager.ChainManager; import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.model.bo.*; +import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.service.ContractExecutor; import io.nuls.contract.util.ContractUtil; @@ -38,6 +42,7 @@ import io.nuls.contract.vm.program.ProgramExecutor; import io.nuls.core.basic.Result; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.exception.NulsException; import java.io.IOException; import java.util.ArrayList; @@ -46,6 +51,8 @@ import java.util.Set; import java.util.concurrent.Callable; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.util.ContractUtil.*; import static io.nuls.core.constant.TxType.*; @@ -120,7 +127,7 @@ public ContractResult call() throws Exception { } if (type != DELETE_CONTRACT && !ContractUtil.checkPrice(contractData.getPrice())) { - contractResult = contractHelper.makeFailedContractResult(chainId, tx, callableResult, "The minimum value of price is 25."); + contractResult = contractHelper.makeFailedContractResult(chainId, tx, callableResult, "The gas price is error."); break; } @@ -140,6 +147,7 @@ public ContractResult call() throws Exception { } // end code by pierre case CALL_CONTRACT: + contractHelper.extractAssetInfoFromCallTransaction((CallContractData) contractData, tx); contractResult = contractExecutor.call(executor, contractData, number, preStateRoot, extractPublicKey(tx)); boolean bool = makeContractResultAndCheckGasSerial(tx, contractResult, batchInfo); @@ -193,7 +201,7 @@ private void checkCreateResult(ContractWrapperTransaction tx, CallableResult cal } - private void checkCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult) throws IOException { + private void checkCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult) throws IOException, NulsException { List reCallList = callableResult.getReCallList(); boolean isConflict = checker.checkConflict(chainId, tx, contractResult, container.getCommitSet()); if (isConflict) { @@ -211,7 +219,7 @@ private void checkCallResult(ContractWrapperTransaction tx, CallableResult calla } } - private void dealCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult, int chainId, long blockTime) throws IOException { + private void dealCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult, int chainId, long blockTime) throws IOException, NulsException { if (contractResult.isSuccess()) { // 执行成功,检查与执行失败的交易是否有冲突,把执行失败的交易添加到重新执行的集合中 checkConflictWithFailedMap(callableResult, contractResult); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractConfig.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractConfig.java index 5cb329edaf..d43c4653b3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractConfig.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractConfig.java @@ -24,6 +24,7 @@ package io.nuls.contract.config; import io.nuls.contract.model.bo.config.ConfigBean; +import io.nuls.contract.tx.SmartContractVersionChangeInvoker; import io.nuls.core.basic.ModuleConfig; import io.nuls.core.basic.VersionChangeInvoker; import io.nuls.core.core.annotation.Component; @@ -165,7 +166,6 @@ public ConfigBean getChainConfig() { @Override public VersionChangeInvoker getVersionChangeInvoker() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { - Class aClass = Class.forName("io.nuls.contract.tx.SmartContractVersionChangeInvoker"); - return (VersionChangeInvoker) aClass.getDeclaredConstructor().newInstance(); + return SmartContractVersionChangeInvoker.instance(); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index f2d832b9c3..dd9c4bbc6b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -43,12 +43,20 @@ public class ContractContext { /** * 主网链ID(卫星链ID) */ - public static int MAIN_CHAIN_ID; + public static int MAIN_CHAIN_ID = 1; /** * 主网链资产ID(卫星链资产ID,NULS资产) */ - public static int MAIN_ASSETS_ID; + public static int MAIN_ASSETS_ID = 1; + /** + * 当前链ID + */ + public static int CHAIN_ID = 1; + /** + * 当前链资产ID + */ + public static int ASSET_ID = 1; /** * 代币跨链系统合约地址 @@ -58,4 +66,6 @@ public class ContractContext { public static short UPDATE_VERSION_V240 = 4; public static short UPDATE_VERSION_V250 = 5; + + public static short UPDATE_VERSION_CONTRACT_ASSET = 8; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index 7905037a7e..4bdc379606 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -135,4 +135,5 @@ public interface ContractConstant { String RPC_RESULT_KEY = "value"; String RPC_COLLECTION_RESULT_KEY = "list"; + String LINE = "_"; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java index 1af1fa345f..da5566e993 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java @@ -74,6 +74,7 @@ public interface ContractErrorCode extends CommonCodeConstanst { ErrorCode CONTRACT_COIN_TO_EMPTY_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0038"); ErrorCode CONTRACT_ALIAS_FORMAT_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0039"); ErrorCode DUPLICATE_CONTRACT_RETURN_GAS_TX = ErrorCode.init(ModuleE.SC.getPrefix() + "_0040"); + ErrorCode CONTRACT_COIN_TO_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0041"); ErrorCode INSUFFICIENT_BALANCE = ErrorCode.init(ModuleE.SC.getPrefix() + "_0100"); ErrorCode FEE_NOT_RIGHT = ErrorCode.init(ModuleE.SC.getPrefix() + "_0101"); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index a90da43a8d..bfd180dec1 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -26,6 +26,8 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinTo; import io.nuls.base.data.Transaction; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; @@ -38,6 +40,7 @@ import io.nuls.contract.model.dto.ContractConstructorInfoDto; import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; +import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.rpc.call.BlockCall; import io.nuls.contract.rpc.call.LedgerCall; @@ -63,6 +66,8 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.*; import static io.nuls.contract.constant.ContractErrorCode.ADDRESS_ERROR; import static io.nuls.contract.util.ContractUtil.*; @@ -80,8 +85,6 @@ public class ContractHelper { @Autowired private ContractTokenTransferStorageService contractTokenTransferStorageService; - private ConcurrentHashMap accountLastedPriceMap = MapUtil.createConcurrentHashMap(4); - private static final BigInteger MAXIMUM_DECIMALS = BigInteger.valueOf(18L); private static final BigInteger MAXIMUM_TOTAL_SUPPLY = BigInteger.valueOf(2L).pow(256).subtract(BigInteger.ONE); @@ -408,17 +411,17 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract return getSuccess(); } - public ContractBalance getBalance(int chainId, byte[] address) { + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { ContractTempBalanceManager tempBalanceManager = getBatchInfoTempBalanceManager(chainId); if (tempBalanceManager != null) { - Result balance = tempBalanceManager.getBalance(address); + Result balance = tempBalanceManager.getBalance(address, assetChainId, assetId); if (balance.isSuccess()) { return balance.getData(); } else { Log.error("[{}] Get balance error.", AddressTool.getStringAddressByBytes(address)); } } else { - ContractBalance realBalance = getRealBalance(chainId, AddressTool.getStringAddressByBytes(address)); + ContractBalance realBalance = getRealBalance(chainId, assetChainId, assetId, AddressTool.getStringAddressByBytes(address)); if (realBalance != null) { return realBalance; } @@ -426,9 +429,9 @@ public ContractBalance getBalance(int chainId, byte[] address) { return ContractBalance.newInstance(); } - public ContractBalance getRealBalance(int chainId, String address) { + public ContractBalance getRealBalance(int chainId, int assetChainId, int assetId, String address) { try { - Map balance = LedgerCall.getConfirmedBalanceAndNonce(getChain(chainId), address); + Map balance = LedgerCall.getConfirmedBalanceAndNonce(getChain(chainId), assetChainId, assetId, address); ContractBalance contractBalance = ContractBalance.newInstance(); contractBalance.setBalance(new BigInteger(balance.get("available").toString())); contractBalance.setFreeze(new BigInteger(balance.get("freeze").toString())); @@ -440,9 +443,9 @@ public ContractBalance getRealBalance(int chainId, String address) { } } - public ContractBalance getUnConfirmedBalanceAndNonce(int chainId, String address) { + public ContractBalance getUnConfirmedBalanceAndNonce(int chainId, int assetChainId, int assetId, String address) { try { - Map balance = LedgerCall.getBalanceAndNonce(getChain(chainId), address); + Map balance = LedgerCall.getBalanceAndNonce(getChain(chainId), assetChainId, assetId, address); ContractBalance contractBalance = ContractBalance.newInstance(); contractBalance.setBalance(new BigInteger(balance.get("available").toString())); contractBalance.setFreeze(new BigInteger(balance.get("freeze").toString())); @@ -529,25 +532,6 @@ public Result getContractToken(int chainId, BlockHeader block } - public void updateLastedPriceForAccount(int chainId, byte[] sender, long price) { - if (price <= 0) { - return; - } - String address = AddressTool.getStringAddressByBytes(sender) + chainId; - accountLastedPriceMap.put(address, price); - } - - public long getLastedPriceForAccount(int chainId, byte[] sender) { - String address = AddressTool.getStringAddressByBytes(sender) + chainId; - Long price = accountLastedPriceMap.get(address); - if (price == null) { - price = ContractConstant.CONTRACT_MINIMUM_PRICE; - } - price = price < ContractConstant.CONTRACT_MINIMUM_PRICE ? ContractConstant.CONTRACT_MINIMUM_PRICE : price; - accountLastedPriceMap.put(address, price); - return price; - } - public void dealNrc20Events(int chainId, byte[] newestStateRoot, Transaction tx, ContractResult contractResult, ContractAddressInfoPo po) { if (po == null) { return; @@ -726,4 +710,17 @@ public ContractResult makeFailedContractResult(int chainId, ContractWrapperTrans callableResult.putFailed(chainId, contractResult); return contractResult; } + + public void extractAssetInfoFromCallTransaction(CallContractData contractData, Transaction tx) throws NulsException { + contractData.setAssetChainId(CHAIN_ID); + contractData.setAssetId(ASSET_ID); + CoinData coinData = tx.getCoinDataInstance(); + List toList = coinData.getTo(); + if (toList == null || toList.isEmpty()) { + return; + } + CoinTo to = toList.get(0); + contractData.setAssetChainId(to.getAssetsChainId()); + contractData.setAssetId(to.getAssetsId()); + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java index 66bba3f0d6..7b1640683f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java @@ -29,6 +29,7 @@ import io.nuls.base.data.CoinTo; import io.nuls.base.data.Transaction; import io.nuls.contract.config.ContractConfig; +import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.enums.CmdRegisterMode; import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.model.bo.ContractBalance; @@ -49,6 +50,7 @@ import java.math.BigInteger; import java.util.*; +import java.util.stream.Collectors; import static io.nuls.contract.util.ContractUtil.asBytes; import static io.nuls.contract.util.ContractUtil.mapAddBigInteger; @@ -67,7 +69,6 @@ public class ContractNewTxFromOtherModuleHandler { */ public Transaction updateNonceAndVmBalance(int chainId, byte[] contractAddressBytes, String txHash, String txStr, Frame frame) { try { - int assetId = contractConfig.getAssetId(); byte[] txBytes = RPCUtil.decode(txStr); Transaction tx = new Transaction(); tx.parse(txBytes, 0); @@ -90,13 +91,8 @@ public Transaction updateNonceAndVmBalance(int chainId, byte[] contractAddressBy if(!existContract) { throw new RuntimeException("Illegal transaction: contract address must be exist in data of coin-from."); } - //CoinFrom from0 = fromList.get(0); - //addressBytes = from0.getAddress(); - //if (!Arrays.equals(contractAddressBytes, addressBytes)) { - // throw new RuntimeException("not contract address"); - //} boolean isUnlockTx = contractFrom.getLocked() == (byte) -1; - ProgramAccount account = frame.vm.getProgramExecutor().getAccount(contractAddressBytes); + ProgramAccount account = frame.vm.getProgramExecutor().getAccount(contractAddressBytes, contractFrom.getAssetsChainId(), contractFrom.getAssetsId()); // 普通交易,更新nonce if(!isUnlockTx) { @@ -106,54 +102,57 @@ public Transaction updateNonceAndVmBalance(int chainId, byte[] contractAddressBy } // 更新vm balance - LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); - LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); - byte[] fromAddress, toAddress; - long txTime; - txTime = tx.getTime(); - List froms = coinData.getFrom(); - List tos = coinData.getTo(); - for (CoinFrom from : froms) { - // 只记录主资产的余额变化 - if(from.getAssetsChainId() != chainId || from.getAssetsId() != assetId) { - continue; - } - fromAddress = from.getAddress(); - if (!ContractUtil.isLegalContractAddress(chainId, fromAddress)) { - continue; - } - if(!isLockedAmount(txTime, from.getLocked())) { - mapAddBigInteger(contractFromValue, fromAddress, from.getAmount()); - } - } - for (CoinTo to : tos) { - // 只记录主资产的余额变化 - if(to.getAssetsChainId() != chainId || to.getAssetsId() != assetId) { - continue; - } - toAddress = to.getAddress(); - if (!ContractUtil.isLegalContractAddress(chainId, toAddress)) { - continue; - } - if (!isLockedAmount(txTime, to.getLockTime())) { - mapAddBigInteger(contractToValue, toAddress, to.getAmount()); - } + LinkedHashMap[] contracts = this.filterContractValue(chainId, List.of(tx)); + LinkedHashMap contractFromValue = contracts[0]; + LinkedHashMap contractFromLockValue = contracts[1]; + LinkedHashMap contractToValue = contracts[2]; + LinkedHashMap contractToLockValue = contracts[3]; - } byte[] contractBytes; + int assetChainId, assetId; ProgramExecutorImpl programExecutor = frame.vm.getProgramExecutor(); - // 扣除转出 - Set> _froms = contractFromValue.entrySet(); - for (Map.Entry from : _froms) { - contractBytes = asBytes(from.getKey()); - programExecutor.getAccount(contractBytes).addBalance(from.getValue().negate()); + // 增加锁定转入 + Set> lockTos = contractToLockValue.entrySet(); + for (Map.Entry lockTo : lockTos) { + String key = lockTo.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + programExecutor.getAccount(contractBytes, assetChainId, assetId).addFreeze(lockTo.getValue()); } // 增加转入 Set> _tos = contractToValue.entrySet(); for (Map.Entry to : _tos) { - contractBytes = asBytes(to.getKey()); - programExecutor.getAccount(contractBytes).addBalance(to.getValue()); + String key = to.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + programExecutor.getAccount(contractBytes, assetChainId, assetId).addBalance(to.getValue()); + } + // 扣除锁定转出 + Set> lockFroms = contractFromLockValue.entrySet(); + for (Map.Entry lockFrom : lockFroms) { + String key = lockFrom.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + programExecutor.getAccount(contractBytes, assetChainId, assetId).addBalance(lockFrom.getValue().negate()); + } + // 扣除转出 + Set> _froms = contractFromValue.entrySet(); + for (Map.Entry from : _froms) { + String key = from.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + programExecutor.getAccount(contractBytes, assetChainId, assetId).addBalance(from.getValue().negate()); } + + return tx; } catch (NulsException e) { Log.error(e); @@ -161,64 +160,63 @@ public Transaction updateNonceAndVmBalance(int chainId, byte[] contractAddressBy } } - //public boolean refreshTempBalance(int chainId, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) { - // List invokeRegisterCmds = contractResult.getInvokeRegisterCmds(); - // if (invokeRegisterCmds.isEmpty()) { - // return true; - // } - // List programNewTxList = new ArrayList<>(); - // for (ProgramInvokeRegisterCmd invokeRegisterCmd : invokeRegisterCmds) { - // if (!CmdRegisterMode.NEW_TX.equals(invokeRegisterCmd.getCmdRegisterMode())) { - // continue; - // } - // programNewTxList.add(invokeRegisterCmd.getProgramNewTx()); - // } - // if (programNewTxList.isEmpty()) { - // return true; - // } - // byte[] contractAddressBytes = contractResult.getContractAddress(); - // return this.refreshTempBalance(chainId, contractAddressBytes, programNewTxList, tempBalanceManager); - //} - public boolean refreshTempBalance(int chainId, byte[] contractAddressBytes, List programNewTxList, ContractTempBalanceManager tempBalanceManager) { try { - LinkedHashMap[] contracts = this.filterContractValue(chainId, programNewTxList); + List collect = programNewTxList.stream().map(a -> a.getTx()).collect(Collectors.toList()); + LinkedHashMap[] contracts = this.filterContractValue(chainId, collect); LinkedHashMap contractFromValue = contracts[0]; LinkedHashMap contractFromLockValue = contracts[1]; LinkedHashMap contractToValue = contracts[2]; LinkedHashMap contractToLockValue = contracts[3]; byte[] contractBytes; + int assetChainId, assetId; // 增加锁定转入 Set> lockTos = contractToLockValue.entrySet(); for (Map.Entry lockTo : lockTos) { - contractBytes = asBytes(lockTo.getKey()); + String key = lockTo.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.addLockedTempBalance(contractBytes, lockTo.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.addLockedTempBalance(contractBytes, lockTo.getValue(), assetChainId, assetId); } // 增加转入 Set> tos = contractToValue.entrySet(); for (Map.Entry to : tos) { - contractBytes = asBytes(to.getKey()); + String key = to.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.addTempBalance(contractBytes, to.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.addTempBalance(contractBytes, to.getValue(), assetChainId, assetId); } // 扣除锁定转出 Set> lockFroms = contractFromLockValue.entrySet(); for (Map.Entry lockFrom : lockFroms) { - contractBytes = asBytes(lockFrom.getKey()); + String key = lockFrom.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.minusLockedTempBalance(contractBytes, lockFrom.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.minusLockedTempBalance(contractBytes, lockFrom.getValue(), assetChainId, assetId); } // 扣除转出 Set> froms = contractFromValue.entrySet(); for (Map.Entry from : froms) { - contractBytes = asBytes(from.getKey()); + String key = from.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.minusTempBalance(contractBytes, from.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.minusTempBalance(contractBytes, from.getValue(), assetChainId, assetId); } return true; } catch (NulsException e) { @@ -227,8 +225,7 @@ public boolean refreshTempBalance(int chainId, byte[] contractAddressBytes, List } } - private LinkedHashMap[] filterContractValue(int chainId, List programNewTxList) throws NulsException { - int assetId = contractConfig.getAssetId(); + private LinkedHashMap[] filterContractValue(int chainId, List programNewTxList) throws NulsException { LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); LinkedHashMap contractFromLockValue = MapUtil.createLinkedHashMap(4); LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); @@ -241,9 +238,7 @@ private LinkedHashMap[] filterContractValue(int chainId, Lis byte[] fromAddress, toAddress; long txTime; - Transaction tx; - for (ProgramNewTx programNewTx : programNewTxList) { - tx = programNewTx.getTx(); + for (Transaction tx : programNewTxList) { txTime = tx.getTime(); CoinData coinData = tx.getCoinDataInstance(); @@ -251,38 +246,40 @@ private LinkedHashMap[] filterContractValue(int chainId, Lis List tos = coinData.getTo(); for (CoinFrom from : froms) { - // 只记录主资产的余额变化 - if(from.getAssetsChainId() != chainId || from.getAssetsId() != assetId) { - continue; - } + // 只记录主资产的余额变化 //TODO pierre // add by pierre at 2020-10-28 注释 + //if(from.getAssetsChainId() != chainId || from.getAssetsId() != assetId) { + // continue; + //} fromAddress = from.getAddress(); if (!ContractUtil.isLegalContractAddress(chainId, fromAddress)) { continue; } + int assetChainId = from.getAssetsChainId(); + int assetId = from.getAssetsId(); if(isLockedAmount(txTime, from.getLocked())) { - mapAddBigInteger(contractFromLockValue, fromAddress, from.getAmount()); + mapAddBigInteger(contractFromLockValue, fromAddress, assetChainId, assetId, from.getAmount()); } else { - mapAddBigInteger(contractFromValue, fromAddress, from.getAmount()); + mapAddBigInteger(contractFromValue, fromAddress, assetChainId, assetId, from.getAmount()); } } for (CoinTo to : tos) { - // 只记录主资产的余额变化 - if(to.getAssetsChainId() != chainId || to.getAssetsId() != assetId) { - continue; - } + // 只记录主资产的余额变化 //TODO pierre // add by pierre at 2020-10-28 注释 + //if(to.getAssetsChainId() != chainId || to.getAssetsId() != assetId) { + // continue; + //} toAddress = to.getAddress(); if (!ContractUtil.isLegalContractAddress(chainId, toAddress)) { continue; } + int assetChainId = to.getAssetsChainId(); + int assetId = to.getAssetsId(); if (isLockedAmount(txTime, to.getLockTime())) { - mapAddBigInteger(contractToLockValue, toAddress, to.getAmount()); + mapAddBigInteger(contractToLockValue, toAddress, assetChainId, assetId, to.getAmount()); } else { - mapAddBigInteger(contractToValue, toAddress, to.getAmount()); + mapAddBigInteger(contractToValue, toAddress, assetChainId, assetId, to.getAmount()); } - } - } return contracts; } @@ -297,74 +294,67 @@ private boolean isLockedAmount(long time, long lockTime) { return false; } - //public void rollbackTempBalance(int chainId, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) { - // try { - // List invokeRegisterCmds = contractResult.getInvokeRegisterCmds(); - // if (invokeRegisterCmds.isEmpty()) { - // return; - // } - // List programNewTxList = new ArrayList<>(); - // for (ProgramInvokeRegisterCmd invokeRegisterCmd : invokeRegisterCmds) { - // if (!CmdRegisterMode.NEW_TX.equals(invokeRegisterCmd.getCmdRegisterMode())) { - // continue; - // } - // programNewTxList.add(invokeRegisterCmd.getProgramNewTx()); - // } - // if (programNewTxList.isEmpty()) { - // return; - // } - // byte[] contractAddressBytes = contractResult.getContractAddress(); - // this.rollbackTempBalance(chainId, contractAddressBytes, programNewTxList, tempBalanceManager); - // - // contractResult.getInvokeRegisterCmds().clear(); - // } catch (Exception e) { - // Log.error(e); - // } - //} - public boolean rollbackTempBalance(int chainId, byte[] contractAddressBytes, List programNewTxList, ContractTempBalanceManager tempBalanceManager) { try { - LinkedHashMap[] contracts = this.filterContractValue(chainId, programNewTxList); + List collect = programNewTxList.stream().map(a -> a.getTx()).collect(Collectors.toList()); + LinkedHashMap[] contracts = this.filterContractValue(chainId, collect); LinkedHashMap contractFromValue = contracts[0]; LinkedHashMap contractFromLockValue = contracts[1]; LinkedHashMap contractToValue = contracts[2]; LinkedHashMap contractToLockValue = contracts[3]; byte[] contractBytes; + int assetChainId, assetId; // 增加转出 Set> froms = contractFromValue.entrySet(); for (Map.Entry from : froms) { - contractBytes = asBytes(from.getKey()); - ContractBalance balance = tempBalanceManager.getBalance(contractBytes).getData(); + String key = from.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + ContractBalance balance = tempBalanceManager.getBalance(contractBytes, assetChainId, assetId).getData(); if (StringUtils.isNotBlank(balance.getPreNonce())) { balance.setNonce(balance.getPreNonce()); } - tempBalanceManager.addTempBalance(contractBytes, from.getValue()); + tempBalanceManager.addTempBalance(contractBytes, from.getValue(), assetChainId, assetId); } // 增加锁定转出 Set> lockFroms = contractFromLockValue.entrySet(); for (Map.Entry lockFrom : lockFroms) { - contractBytes = asBytes(lockFrom.getKey()); - ContractBalance balance = tempBalanceManager.getBalance(contractBytes).getData(); + String key = lockFrom.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + ContractBalance balance = tempBalanceManager.getBalance(contractBytes, assetChainId, assetId).getData(); if(StringUtils.isNotBlank(balance.getPreNonce())) { balance.setNonce(balance.getPreNonce()); } - tempBalanceManager.addLockedTempBalance(contractBytes, lockFrom.getValue()); + tempBalanceManager.addLockedTempBalance(contractBytes, lockFrom.getValue(), assetChainId, assetId); } // 扣除转入 Set> tos = contractToValue.entrySet(); for (Map.Entry to : tos) { - contractBytes = asBytes(to.getKey()); + String key = to.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.minusTempBalance(contractBytes, to.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.minusTempBalance(contractBytes, to.getValue(), assetChainId, assetId); } // 扣除锁定转入 Set> lockTos = contractToLockValue.entrySet(); for (Map.Entry lockTo : lockTos) { - contractBytes = asBytes(lockTo.getKey()); + String key = lockTo.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.minusLockedTempBalance(contractBytes, lockTo.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.minusLockedTempBalance(contractBytes, lockTo.getValue(), assetChainId, assetId); } return true; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java index 2ff3987cfb..c647e0a26e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java @@ -24,6 +24,8 @@ package io.nuls.contract.helper; import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinTo; import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.model.bo.ContractBalance; import io.nuls.contract.model.bo.ContractResult; @@ -34,12 +36,15 @@ import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; import io.nuls.core.model.StringUtils; -import org.ethereum.db.ByteArrayWrapper; import java.math.BigInteger; import java.util.*; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; + /** * @author: PierreLuo * @date: 2019-04-28 @@ -52,21 +57,23 @@ public class ContractNewTxHandler { @Autowired private ContractNewTxFromOtherModuleHandler contractNewTxFromOtherModuleHandler; - public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTransaction tx, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) { - Map accountMap = contractResult.getAccounts(); + public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTransaction tx, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) throws NulsException { + Map accountMap = contractResult.getAccounts(); // 维护临时余额管理器 if(accountMap != null) { ProgramAccount account; byte[] contractBytes; - Set> entrySet = accountMap.entrySet(); + Set> entrySet = accountMap.entrySet(); accountMap.values(); - for(Map.Entry accountEntry : entrySet) { + for(Map.Entry accountEntry : entrySet) { account = accountEntry.getValue(); contractBytes = account.getAddress(); String nonce = account.getNonce(); + int assetChainId = account.getAssetChainId(); + int assetId = account.getAssetId(); // 这个nonce维护了合约内部调用其他模块新生成的交易的临时nonce,需要更新到临时余额管理器中,提供给合约内部转账使用 if (StringUtils.isNotBlank(nonce)) { - ContractBalance contractBalance = tempBalanceManager.getBalance(contractBytes).getData(); + ContractBalance contractBalance = tempBalanceManager.getBalance(contractBytes, assetChainId, assetId).getData(); if (StringUtils.isBlank(contractBalance.getPreNonce())) { contractBalance.setPreNonce(contractBalance.getNonce()); } @@ -76,12 +83,23 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran } ContractData contractData = tx.getContractData(); byte[] contractAddress = contractData.getContractAddress(); + CoinData coinData = tx.getCoinDataInstance(); + List toList = coinData.getTo(); + int assetChainId = CHAIN_ID, assetId = ASSET_ID; + if (toList != null && !toList.isEmpty()) { + for (CoinTo to : toList) { + if (Arrays.equals(to.getAddress(), contractAddress)) { + assetChainId = to.getAssetsChainId(); + assetId = to.getAssetsId(); + } + } + } // 增加调用合约时转入的金额 BigInteger value = contractData.getValue(); if (value.compareTo(BigInteger.ZERO) > 0) { // 初始化临时余额 - tempBalanceManager.getBalance(contractAddress); - tempBalanceManager.addTempBalance(contractAddress, value); + tempBalanceManager.getBalance(contractAddress, assetChainId, assetId); + tempBalanceManager.addTempBalance(contractAddress, value, assetChainId, assetId); } boolean isSuccess = true; @@ -140,28 +158,12 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran break; } } - //// 处理合约调用其他模块生成的交易的临时余额 - //isSuccess = contractNewTxFromOtherModuleHandler.refreshTempBalance(chainId, contractResult, tempBalanceManager); - //if (!isSuccess) { - // contractResult.setError(true); - // contractResult.setErrorMessage("Refresh temp balance failed about new transaction from external cmd."); - // // 回滚 - 清空内部转账列表 - // contractResult.getTransfers().clear(); - // break; - //} - //// 处理合约内部转账交易 - //isSuccess = contractTransferHandler.handleContractTransfer(chainId, blockTime, contractResult, tempBalanceManager); - //// 如果内部转账失败,回滚合约新生成的其他交易 - 合约余额和nonce - //if (!isSuccess) { - // contractNewTxFromOtherModuleHandler.rollbackTempBalance(chainId, contractResult, tempBalanceManager); - // break; - //} } while (false); if (!isSuccess) { // 回滚 - 扣除调用合约时转入的金额 if (value.compareTo(BigInteger.ZERO) > 0) { - tempBalanceManager.minusTempBalance(contractAddress, value); + tempBalanceManager.minusTempBalance(contractAddress, value, assetChainId, assetId); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java index e096bb559d..4f8dfc8d64 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java @@ -26,6 +26,7 @@ import io.nuls.base.RPCUtil; import io.nuls.base.basic.AddressTool; import io.nuls.base.data.*; +import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.model.bo.*; import io.nuls.contract.model.tx.ContractTransferTransaction; @@ -38,17 +39,17 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; -import io.nuls.core.model.ByteArrayWrapper; import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.math.BigInteger; import java.util.*; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.MININUM_TRANSFER_AMOUNT; import static io.nuls.contract.constant.ContractErrorCode.TOO_SMALL_AMOUNT; import static io.nuls.contract.util.ContractUtil.*; -import static io.nuls.core.constant.CommonCodeConstanst.FAILED; /** * @author: PierreLuo @@ -72,22 +73,46 @@ public boolean refreshTempBalance(int chainId, List transfers, LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); LinkedHashMap contractFromValue = contracts[0]; LinkedHashMap contractToValue = contracts[1]; + LinkedHashMap contractToLockValue = contracts[2]; byte[] contractBytes; + int assetChainId, assetId; + // 增加锁定转入 + Set> lockTos = contractToLockValue.entrySet(); + for (Map.Entry lockTo : lockTos) { + String key = lockTo.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + // 初始化临时余额 + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.addLockedTempBalance(contractBytes, lockTo.getValue(), assetChainId, assetId); + } + // 增加转入 Set> tos = contractToValue.entrySet(); for (Map.Entry to : tos) { - contractBytes = asBytes(to.getKey()); + String key = to.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); // 初始化临时余额 - tempBalanceManager.getBalance(contractBytes); - tempBalanceManager.addTempBalance(contractBytes, to.getValue()); + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.addTempBalance(contractBytes, to.getValue(), assetChainId, assetId); } + // 扣除转出 Set> froms = contractFromValue.entrySet(); for (Map.Entry from : froms) { - contractBytes = asBytes(from.getKey()); - ContractBalance balance = tempBalanceManager.getBalance(contractBytes).getData(); + String key = from.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + ContractBalance balance = tempBalanceManager.getBalance(contractBytes, assetChainId, assetId).getData(); if (StringUtils.isBlank(balance.getPreNonce())) { balance.setPreNonce(balance.getNonce()); } - tempBalanceManager.minusTempBalance(contractBytes, from.getValue()); + tempBalanceManager.minusTempBalance(contractBytes, from.getValue(), assetChainId, assetId); } } return true; @@ -104,20 +129,44 @@ public boolean rollbackContractTempBalance(int chainId, List tr LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); LinkedHashMap contractFromValue = contracts[0]; LinkedHashMap contractToValue = contracts[1]; + LinkedHashMap contractToLockValue = contracts[2]; byte[] contractBytes; + int assetChainId, assetId; + // 增加转出 Set> froms = contractFromValue.entrySet(); for (Map.Entry from : froms) { - contractBytes = asBytes(from.getKey()); - ContractBalance balance = tempBalanceManager.getBalance(contractBytes).getData(); + String key = from.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + ContractBalance balance = tempBalanceManager.getBalance(contractBytes, assetChainId, assetId).getData(); if (StringUtils.isNotBlank(balance.getPreNonce())) { balance.setNonce(balance.getPreNonce()); } - tempBalanceManager.addTempBalance(contractBytes, from.getValue()); + tempBalanceManager.addTempBalance(contractBytes, from.getValue(), assetChainId, assetId); } + // 扣除转入 Set> tos = contractToValue.entrySet(); for (Map.Entry to : tos) { - contractBytes = asBytes(to.getKey()); - tempBalanceManager.minusTempBalance(contractBytes, to.getValue()); + String key = to.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + tempBalanceManager.minusTempBalance(contractBytes, to.getValue(), assetChainId, assetId); + } + // 扣除锁定转入 + Set> lockTos = contractToLockValue.entrySet(); + for (Map.Entry lockTo : lockTos) { + String key = lockTo.getKey(); + String[] keySplit = key.split(ContractConstant.LINE); + contractBytes = asBytes(keySplit[0]); + assetChainId = Integer.parseInt(keySplit[1]); + assetId = Integer.parseInt(keySplit[2]); + // 初始化临时余额 + tempBalanceManager.getBalance(contractBytes, assetChainId, assetId); + tempBalanceManager.minusLockedTempBalance(contractBytes, lockTo.getValue(), assetChainId, assetId); } } return true; @@ -130,21 +179,32 @@ public boolean rollbackContractTempBalance(int chainId, List tr private LinkedHashMap[] filterContractValue(int chainId, List transfers) { LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); - LinkedHashMap[] contracts = new LinkedHashMap[2]; + LinkedHashMap contractToLockValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap[] contracts = new LinkedHashMap[3]; contracts[0] = contractFromValue; contracts[1] = contractToValue; + contracts[2] = contractToLockValue; byte[] from, to; + int assetChainId, assetId; BigInteger transferValue; + boolean lock; for (ProgramTransfer transfer : transfers) { from = transfer.getFrom(); to = transfer.getTo(); transferValue = transfer.getValue(); + assetChainId = transfer.getAssetChainId(); + assetId = transfer.getAssetId(); + lock = transfer.getLockedTime() > 0; if (ContractUtil.isLegalContractAddress(chainId, from)) { - mapAddBigInteger(contractFromValue, from, transferValue); + mapAddBigInteger(contractFromValue, from, assetChainId, assetId, transferValue); } if (ContractUtil.isLegalContractAddress(chainId, to)) { - mapAddBigInteger(contractToValue, to, transferValue); + if (lock) { + mapAddBigInteger(contractToLockValue, to, assetChainId, assetId, transferValue); + } else { + mapAddBigInteger(contractToValue, to, assetChainId, assetId, transferValue); + } } } return contracts; @@ -192,7 +252,8 @@ private Result verifyTransfer(List transfers) { return getSuccess(); } for (ProgramTransfer transfer : transfers) { - if (transfer.getValue().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { + //TODO pierre 多资产是否最小金额校验 + if (transfer.getAssetChainId() == CHAIN_ID && transfer.getAssetId() == ASSET_ID && transfer.getValue().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { return Result.getFailed(TOO_SMALL_AMOUNT); } } @@ -208,84 +269,139 @@ private void mergeContractTransfer(ContractResult contractResult, int chainId, l contractResult.setContractTransferList(contractTransferList); ContractTransferData txData = new ContractTransferData(tx.getHash(), contractAddress); - int assetsId = contractHelper.getChain(chainId).getConfig().getAssetId(); Map mergeCoinToMap = MapUtil.createHashMap(transfers.size()); CoinData coinData = null; CoinFrom coinFrom = null; CoinTo coinTo; - ByteArrayWrapper compareFrom = null; + String compareFrom = null; byte[] nonceBytes; ContractTransferTransaction contractTransferTx = null; ContractBalance contractBalance = null; - // 合约内部转账交易的时间的偏移量,用于排序 + Map preTx = new HashMap<>(); + Map preBalance = new HashMap<>(); + // 合约内部转账交易的时间的偏移量,用于排序(废弃) long timeOffset; //int i = 0; for (ProgramTransfer transfer : transfers) { byte[] from = transfer.getFrom(); byte[] to = transfer.getTo(); BigInteger value = transfer.getValue(); - ByteArrayWrapper wrapperFrom = new ByteArrayWrapper(from); + int assetChainId = transfer.getAssetChainId(); + int assetId = transfer.getAssetId(); + long lockedTime = transfer.getLockedTime(); + String wrapperFrom = addressKey(from, assetChainId, assetId); if (compareFrom == null || !compareFrom.equals(wrapperFrom)) { // 产生新交易 if (compareFrom == null) { // 第一次遍历,获取新交易的coinFrom的nonce - contractBalance = tempBalanceManager.getBalance(from).getData(); + contractBalance = tempBalanceManager.getBalance(from, assetChainId, assetId).getData(); nonceBytes = RPCUtil.decode(contractBalance.getNonce()); } else { // 产生另一个合并交易,更新之前的合并交易的hash和账户的nonce - this.updatePreTxHashAndAccountNonce(contractTransferTx, contractBalance); + this.updatePreTxHashAndAccountNonce(preTx.get(wrapperFrom), preBalance.get(wrapperFrom)); mergeCoinToMap.clear(); // 获取新交易的coinFrom的nonce - contractBalance = tempBalanceManager.getBalance(from).getData(); + contractBalance = tempBalanceManager.getBalance(from, assetChainId, assetId).getData(); nonceBytes = RPCUtil.decode(contractBalance.getNonce()); } - Log.info("From is {}, nonce is {}", AddressTool.getStringAddressByBytes(from), contractBalance.getNonce()); + Log.info("From is {}, assetChainId is {}, assetId is {}, nonce is {}", AddressTool.getStringAddressByBytes(from), assetChainId, assetId, contractBalance.getNonce()); compareFrom = wrapperFrom; coinData = new CoinData(); - coinFrom = new CoinFrom(from, chainId, assetsId, value, nonceBytes, (byte) 0); + coinFrom = new CoinFrom(from, assetChainId, assetId, value, nonceBytes, (byte) 0); coinData.getFrom().add(coinFrom); - coinTo = new CoinTo(to, chainId, assetsId, value, 0L); + coinTo = new CoinTo(to, assetChainId, assetId, value, blockTime + lockedTime); coinData.getTo().add(coinTo); - mergeCoinToMap.put(asString(to), coinTo); + mergeCoinToMap.put(addressLockedKey(to, assetChainId, assetId, lockedTime), coinTo); //timeOffset = tx.getOrder() + (i++); timeOffset = 0L; contractTransferTx = this.createContractTransferTx(coinData, txData, blockTime, timeOffset); contractTransferList.add(contractTransferTx); + preTx.put(wrapperFrom, contractTransferTx); + preBalance.put(wrapperFrom, contractBalance); } else { // 增加coinFrom的转账金额 coinFrom.setAmount(coinFrom.getAmount().add(value)); // 合并coinTo - this.mergeCoinTo(mergeCoinToMap, coinData, to, chainId, assetsId, value); + this.mergeCoinTo(mergeCoinToMap, coinData, to, value, assetChainId, assetId, lockedTime); } } // 最后产生的合并交易,遍历结束后更新它的hash和账户的nonce this.updatePreTxHashAndAccountNonce(contractTransferTx, contractBalance); List mergerdTransferList = this.contractTransfer2mergedTransfer(tx, contractTransferList); + List mergerdMultyAssetTransferList = this.contractMultyAssetTransfer2mergedTransfer(tx, contractTransferList); contractResult.setMergedTransferList(mergerdTransferList); + contractResult.setMergerdMultyAssetTransferList(mergerdMultyAssetTransferList); } - private void mergeCoinTo(Map mergeCoinToMap, CoinData coinData, byte[] to, int chainId, int assetsId, BigInteger value) { + private void mergeCoinTo(Map mergeCoinToMap, CoinData coinData, byte[] to, BigInteger value, int assetChainId, int assetId, long lockedTime) { CoinTo coinTo; - String key = asString(to); + String key = addressLockedKey(to, assetChainId, assetId, lockedTime); if ((coinTo = mergeCoinToMap.get(key)) != null) { coinTo.setAmount(coinTo.getAmount().add(value)); } else { - coinTo = new CoinTo(to, chainId, assetsId, value, 0L); + coinTo = new CoinTo(to, assetChainId, assetId, value, lockedTime); coinData.getTo().add(coinTo); mergeCoinToMap.put(key, coinTo); } } + public List contractMultyAssetTransfer2mergedTransfer(Transaction tx, List transferList) throws NulsException { + List resultList = new ArrayList<>(); + for (ContractTransferTransaction transfer : transferList) { + CoinData coinData = transfer.getCoinDataObj(); + CoinFrom coinFrom = coinData.getFrom().get(0); + int assetChainId = coinFrom.getAssetsChainId(); + int assetId = coinFrom.getAssetsId(); + if (CHAIN_ID != assetChainId || ASSET_ID != assetId) { + resultList.add(this.transformMultyAssetMergedTransfer(tx.getHash(), transfer)); + } + } + return resultList; + } + public List contractTransfer2mergedTransfer(Transaction tx, List transferList) throws NulsException { List resultList = new ArrayList<>(); for (ContractTransferTransaction transfer : transferList) { - resultList.add(this.transformMergedTransfer(tx.getHash(), transfer)); + CoinData coinData = transfer.getCoinDataObj(); + CoinFrom coinFrom = coinData.getFrom().get(0); + int assetChainId = coinFrom.getAssetsChainId(); + int assetId = coinFrom.getAssetsId(); + if (CHAIN_ID == assetChainId && ASSET_ID == assetId) { + resultList.add(this.transformMergedTransfer(tx.getHash(), transfer)); + } } return resultList; } + private ContractMultyAssetMergedTransfer transformMultyAssetMergedTransfer(NulsHash orginHash, ContractTransferTransaction transfer) throws NulsException { + ContractMultyAssetMergedTransfer result = new ContractMultyAssetMergedTransfer(); + CoinData coinData = transfer.getCoinDataObj(); + CoinFrom coinFrom = coinData.getFrom().get(0); + int assetChainId = coinFrom.getAssetsChainId(); + int assetId = coinFrom.getAssetsId(); + result.setFrom(coinFrom.getAddress()); + result.setAssetChainId(assetChainId); + result.setAssetId(assetId); + result.setValue(coinFrom.getAmount()); + List toList = coinData.getTo(); + List outputs = result.getOutputs(); + MultyAssetOutput output; + for (CoinTo to : toList) { + output = new MultyAssetOutput(); + output.setTo(to.getAddress()); + output.setValue(to.getAmount()); + output.setAssetChainId(to.getAssetsChainId()); + output.setAssetId(to.getAssetsId()); + output.setLockTime(to.getLockTime()); + outputs.add(output); + } + result.setHash(transfer.getHash()); + result.setOrginHash(orginHash); + return result; + } + private ContractMergedTransfer transformMergedTransfer(NulsHash orginHash, ContractTransferTransaction transfer) throws NulsException { ContractMergedTransfer result = new ContractMergedTransfer(); CoinData coinData = transfer.getCoinDataObj(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java index e5e2e1c5e6..80ece4225e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java @@ -64,6 +64,8 @@ import java.util.Set; import java.util.stream.Collectors; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.MAX_GASLIMIT; import static io.nuls.contract.constant.ContractConstant.UNLOCKED_TX; import static io.nuls.contract.constant.ContractErrorCode.*; @@ -233,7 +235,7 @@ public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[ Chain chain = contractHelper.getChain(chainId); int assetsId = chain.getConfig().getAssetId(); - ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, sender); + ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, CHAIN_ID, ASSET_ID, sender); CoinFrom coinFrom = new CoinFrom(senderBytes, chainId, assetsId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); coinData.addFrom(coinFrom); @@ -268,7 +270,7 @@ public CreateContractData getCreateContractData(byte[] senderBytes, byte[] contr public Result makeCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, String methodName, String methodDesc, String[][] args, - String password, String remark) { + String password, String remark, int assetChainId, int assetId) { if (value == null) { value = BigInteger.ZERO; @@ -282,7 +284,7 @@ public Result makeCallTx(int chainId, String sender, Bi byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); byte[] senderBytes = AddressTool.getAddress(sender); - Result validateCall = this.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args); + Result validateCall = this.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); if (validateCall.isFailed()) { return validateCall; } @@ -348,7 +350,7 @@ private CallContractData getCallContractData(byte[] senderBytes, byte[] contract } - public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args) { + public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { try { if (!ContractUtil.checkPrice(price.longValue())) { return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); @@ -379,6 +381,8 @@ public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddre } // 创建链上交易,包含智能合约 programCall.setValue(value); + programCall.setAssetChainId(assetChainId); + programCall.setAssetId(assetId); programCall.setPrice(price.longValue()); // 获取VM执行器 @@ -422,7 +426,7 @@ public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddre } } - public Result previewCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args) { + public Result previewCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { try { if (!ContractUtil.checkPrice(price.longValue())) { return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); @@ -453,6 +457,10 @@ public Result previewCall(int chainId, byte[] senderBytes, byte[ } // 创建链上交易,包含智能合约 programCall.setValue(value); + // add by pierre at 2020-10-29 + programCall.setAssetChainId(assetChainId); + programCall.setAssetId(assetId); + // end code by pierre programCall.setPrice(price.longValue()); // 获取VM执行器 @@ -593,7 +601,7 @@ public Result validateDelete(int chainId, byte[] senderBytes, String contractAdd return Result.getFailed(ContractErrorCode.CONTRACT_DELETE_CREATER); } - ContractBalance balance = contractHelper.getRealBalance(chainId, contractAddress); + ContractBalance balance = contractHelper.getRealBalance(chainId, CHAIN_ID, ASSET_ID, contractAddress); BigInteger totalBalance = balance.getTotal(); if (totalBalance.compareTo(BigInteger.ZERO) != 0) { return Result.getFailed(ContractErrorCode.CONTRACT_DELETE_BALANCE); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTempBalanceManager.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTempBalanceManager.java index 11c765a060..b1a2c858c0 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTempBalanceManager.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTempBalanceManager.java @@ -28,6 +28,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.Address; +import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.model.bo.ContractBalance; @@ -76,19 +77,19 @@ private ContractTempBalanceManager() { * @param bestHeight * @return */ - public Result getBalance(byte[] address) { + public Result getBalance(byte[] address, int assetChainId, int assetId) { lock.lock(); try { if (address == null || address.length != Address.ADDRESS_LENGTH) { return Result.getFailed(ContractErrorCode.PARAMETER_ERROR); } - String addressKey = balanceKey(address); + String addressKey = balanceKey(address, assetChainId, assetId); ContractBalance balance = tempBalanceMap.get(addressKey); // 临时余额区没有余额,则从真实余额中取值 if (balance == null) { // 初始化临时余额区 - balance = contractHelper.getRealBalance(chainId, AddressTool.getStringAddressByBytes(address)); + balance = contractHelper.getRealBalance(chainId, assetChainId, assetId, AddressTool.getStringAddressByBytes(address)); tempBalanceMap.put(addressKey, balance); } return getSuccess().setData(balance); @@ -97,14 +98,14 @@ public Result getBalance(byte[] address) { } } - private String balanceKey(byte[] address) { - return chainId + asString(address); + private String balanceKey(byte[] address, int assetChainId, int assetId) { + return new StringBuilder(chainId).append(asString(address)).append(ContractConstant.LINE).append(assetChainId).append(ContractConstant.LINE).append(assetId).toString(); } - public void addTempBalance(byte[] address, BigInteger amount) { + public void addTempBalance(byte[] address, BigInteger amount, int assetChainId, int assetId) { lock.lock(); try { - ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address)); + ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address, assetChainId, assetId)); if (contractBalance != null) { contractBalance.addTemp(amount); } @@ -113,10 +114,10 @@ public void addTempBalance(byte[] address, BigInteger amount) { } } - public void minusTempBalance(byte[] address, BigInteger amount) { + public void minusTempBalance(byte[] address, BigInteger amount, int assetChainId, int assetId) { lock.lock(); try { - ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address)); + ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address, assetChainId, assetId)); if (contractBalance != null) { contractBalance.minusTemp(amount); } @@ -125,10 +126,10 @@ public void minusTempBalance(byte[] address, BigInteger amount) { } } - public void addLockedTempBalance(byte[] address, BigInteger amount) { + public void addLockedTempBalance(byte[] address, BigInteger amount, int assetChainId, int assetId) { lock.lock(); try { - ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address)); + ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address, assetChainId, assetId)); if (contractBalance != null) { contractBalance.addLockedTemp(amount); } @@ -137,10 +138,10 @@ public void addLockedTempBalance(byte[] address, BigInteger amount) { } } - public void minusLockedTempBalance(byte[] address, BigInteger amount) { + public void minusLockedTempBalance(byte[] address, BigInteger amount, int assetChainId, int assetId) { lock.lock(); try { - ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address)); + ContractBalance contractBalance = tempBalanceMap.get(balanceKey(address, assetChainId, assetId)); if (contractBalance != null) { contractBalance.minusLockedTemp(amount); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java index eebb4c0ca6..35700f4f40 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java @@ -23,6 +23,8 @@ */ package io.nuls.contract.manager; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.model.tx.CallContractTransaction; import io.nuls.contract.model.tx.CreateContractTransaction; import io.nuls.contract.model.tx.DeleteContractTransaction; @@ -53,6 +55,9 @@ public Result createValidator(int chainId, CreateContractTransaction tx) throws } public Result callValidator(int chainId, CallContractTransaction tx) throws NulsException { + if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { + return callContractTxValidator.validateV8(chainId, tx); + } return callContractTxValidator.validate(chainId, tx); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractMultyAssetMergedTransfer.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractMultyAssetMergedTransfer.java new file mode 100644 index 0000000000..f751116aa2 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractMultyAssetMergedTransfer.java @@ -0,0 +1,112 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.bo; + +import io.nuls.base.data.NulsHash; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +/** + * @author: PierreLuo + */ +public class ContractMultyAssetMergedTransfer { + + private byte[] from; + private int assetChainId; + private int assetId; + private BigInteger value; + private List outputs; + + /** + * 智能合约交易hash + */ + private NulsHash orginHash; + + /** + * 合约转账(从合约转出)交易hash + */ + private NulsHash hash; + + public ContractMultyAssetMergedTransfer() { + outputs = new ArrayList<>(); + } + + public byte[] getFrom() { + return from; + } + + public void setFrom(byte[] from) { + this.from = from; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public BigInteger getValue() { + return value; + } + + public void setValue(BigInteger value) { + this.value = value; + } + + public List getOutputs() { + return outputs; + } + + public void setOutputs(List outputs) { + this.outputs = outputs; + } + + public NulsHash getOrginHash() { + return orginHash; + } + + public void setOrginHash(NulsHash orginHash) { + this.orginHash = orginHash; + } + + public NulsHash getHash() { + return hash; + } + + public void setHash(NulsHash hash) { + this.hash = hash; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java index 71e6176b9d..dc9d4f4c73 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java @@ -87,6 +87,7 @@ public class ContractResult { */ private List transfers = new ArrayList<>(); private List mergedTransferList = new ArrayList<>(); + private List mergerdMultyAssetTransferList = new ArrayList<>(); private transient List contractTransferList = new ArrayList<>(); private List contractTransferTxStringList = new ArrayList<>(); /** @@ -100,14 +101,14 @@ public class ContractResult { private Set contractAddressInnerCallSet; private transient Object txTrack; - private transient Map accounts; + private transient Map accounts; private transient List orderedInnerTxs = new ArrayList<>(); - public Map getAccounts() { + public Map getAccounts() { return accounts; } - public void setAccounts(Map accounts) { + public void setAccounts(Map accounts) { this.accounts = accounts; } @@ -177,6 +178,7 @@ public String toString() { ", isNrc20=" + isNrc20 + ", transfersSize=" + (transfers != null ? transfers.size() : 0) + ", mergedTransferList=" + (mergedTransferList != null ? mergedTransferList.size() : 0) + + ", mergerdMultyAssetTransferList=" + (mergerdMultyAssetTransferList != null ? mergerdMultyAssetTransferList.size() : 0) + ", contractTransferList=" + (contractTransferList != null ? contractTransferList.size() : 0) + ", invokeRegisterCmds=" + (invokeRegisterCmds != null ? invokeRegisterCmds.size() : 0) + ", events=" + events + @@ -378,6 +380,14 @@ public void setMergedTransferList(List mergedTransferLis this.mergedTransferList = mergedTransferList; } + public List getMergerdMultyAssetTransferList() { + return mergerdMultyAssetTransferList; + } + + public void setMergerdMultyAssetTransferList(List mergerdMultyAssetTransferList) { + this.mergerdMultyAssetTransferList = mergerdMultyAssetTransferList; + } + public List getContractTransferList() { return contractTransferList; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/MultyAssetOutput.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/MultyAssetOutput.java new file mode 100644 index 0000000000..63c16da462 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/MultyAssetOutput.java @@ -0,0 +1,78 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.bo; + +import java.math.BigInteger; + +/** + * @author: PierreLuo + * @date: 2019-03-06 + */ +public class MultyAssetOutput { + private byte[] to; + private BigInteger value; + private int assetChainId; + private int assetId; + private long lockTime; + + public byte[] getTo() { + return to; + } + + public void setTo(byte[] to) { + this.to = to; + } + + public BigInteger getValue() { + return value; + } + + public void setValue(BigInteger value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public long getLockTime() { + return lockTime; + } + + public void setLockTime(long lockTime) { + this.lockTime = lockTime; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 05124e492c..478d99e114 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -101,7 +101,7 @@ public ContractResultDto(int chainId, ContractResult result, ContractBaseTransac this.gasLimit = contractData.getGasLimit(); this.gasUsed = result.getGasUsed(); this.price = result.getPrice(); - BigInteger totalFee = tx.getFee(); + BigInteger totalFee = tx.getCoinDataObj().getFeeByAsset(chainId, 1); this.totalFee = bigInteger2String(totalFee); // pierre 标记 if(tx.getType() == TxType.CROSS_CHAIN) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTransactionDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTransactionDto.java index 3fee8c2024..86c117a1a3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTransactionDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTransactionDto.java @@ -95,7 +95,7 @@ public ContractTransactionDto(int chainId, ContractBaseTransaction tx) throws Nu this.type = tx.getType(); this.time = tx.getTime(); this.blockHeight = tx.getBlockHeight(); - this.fee = bigInteger2String(tx.getFee()); + this.fee = bigInteger2String(tx.getCoinDataObj().getFeeByAsset(chainId, 1)); this.size = tx.getSize(); this.txData = makeTxData(tx); long bestBlockHeight = BlockCall.getLatestHeight(chainId); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java index a2bfebe529..543664780c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java @@ -47,6 +47,8 @@ public class CallContractData extends BaseNulsData implements ContractData { private String methodDesc; private short argsCount; private String[][] args; + private transient int assetChainId; + private transient int assetId; @Override @@ -213,4 +215,21 @@ public void setArgs(String[][] args) { this.args = args; } + @Override + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + @Override + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java index 469f22d705..646bd253ef 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java @@ -49,4 +49,12 @@ public interface ContractData { String getMethodDesc(); String[][] getArgs(); + + default int getAssetChainId() { + return 0; + } + + default int getAssetId() { + return 0; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/LedgerCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/LedgerCall.java index cecd78b567..a27bfda393 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/LedgerCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/LedgerCall.java @@ -43,12 +43,12 @@ */ public class LedgerCall { - public static Map getBalanceAndNonce(Chain chain, String address) throws NulsException { + public static Map getBalanceAndNonce(Chain chain, int assetChainId, int assetId, String address) throws NulsException { Map params = new HashMap(4); params.put(Constants.CHAIN_ID, chain.getConfig().getChainId()); - params.put("assetChainId", chain.getConfig().getChainId()); + params.put("assetChainId", assetChainId); + params.put("assetId", assetId); params.put("address", address); - params.put("assetId", chain.getConfig().getAssetId()); params.put("isConfirmed", false); try { Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getBalanceNonce", params); @@ -61,12 +61,12 @@ public static Map getBalanceAndNonce(Chain chain, String address } } - public static Map getConfirmedBalanceAndNonce(Chain chain, String address) throws NulsException { + public static Map getConfirmedBalanceAndNonce(Chain chain, int assetChainId, int assetId, String address) throws NulsException { Map params = new HashMap(4); params.put(Constants.CHAIN_ID, chain.getConfig().getChainId()); - params.put("assetChainId", chain.getConfig().getChainId()); + params.put("assetChainId", assetChainId); + params.put("assetId", assetId); params.put("address", address); - params.put("assetId", chain.getConfig().getAssetId()); params.put("isConfirmed", true); try { Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getBalanceNonce", params); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 3e93c2e1e6..8897f23d8e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -27,6 +27,7 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.ContractStatus; @@ -72,6 +73,8 @@ import java.util.*; import java.util.stream.Collectors; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractCmdConstant.*; import static io.nuls.contract.constant.ContractConstant.*; import static io.nuls.contract.constant.ContractErrorCode.*; @@ -128,7 +131,7 @@ public Response create(Map params) { Object[] args = argsList != null ? argsList.toArray() : null; String remark = (String) params.get("remark"); - if (gasLimit < 0 || price < CONTRACT_MINIMUM_PRICE) { + if (gasLimit <= 0 || price <= 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -282,7 +285,9 @@ public Response validateCreate(Map params) { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "password", parameterDes = "调用者账户密码"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -300,11 +305,19 @@ public Response call(Map params) { ChainManager.chainHandle(chainId); String sender = (String) params.get("sender"); String password = (String) params.get("password"); + Object valueObj = params.get("value"); - if(valueObj == null) { - valueObj = "0"; - } + valueObj = valueObj == null ? "0" : valueObj; + + Object assetChainIdObj = params.get("assetChainId"); + assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; + + Object assetIdObj = params.get("assetId"); + assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; + BigInteger value = new BigInteger(valueObj.toString()); + int assetChainId = Integer.parseInt(assetChainIdObj.toString()); + int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); @@ -314,7 +327,7 @@ public Response call(Map params) { Object[] args = argsList != null ? argsList.toArray() : null; String remark = (String) params.get("remark"); - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -344,7 +357,7 @@ public Response call(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark); + Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark, assetChainId, assetId); if (result.isFailed()) { return wrapperFailed(result); @@ -361,7 +374,9 @@ public Response call(Map params) { @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -376,10 +391,17 @@ public Response validateCall(Map params) { ChainManager.chainHandle(chainId); String sender = (String) params.get("sender"); Object valueObj = params.get("value"); - if(valueObj == null) { - valueObj = "0"; - } + valueObj = valueObj == null ? "0" : valueObj; + + Object assetChainIdObj = params.get("assetChainId"); + assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; + + Object assetIdObj = params.get("assetId"); + assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; + BigInteger value = new BigInteger(valueObj.toString()); + int assetChainId = Integer.parseInt(assetChainIdObj.toString()); + int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); @@ -388,7 +410,7 @@ public Response validateCall(Map params) { List argsList = (List) params.get("args"); Object[] args = argsList != null ? argsList.toArray() : null; - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -419,7 +441,7 @@ public Response validateCall(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.validateContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs); + Result result = contractTxService.validateContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); if (result.isFailed()) { return wrapperFailed(result); @@ -436,7 +458,9 @@ public Response validateCall(Map params) { @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -451,10 +475,17 @@ public Response previewCall(Map params) { ChainManager.chainHandle(chainId); String sender = (String) params.get("sender"); Object valueObj = params.get("value"); - if(valueObj == null) { - valueObj = "0"; - } + valueObj = valueObj == null ? "0" : valueObj; + + Object assetChainIdObj = params.get("assetChainId"); + assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; + + Object assetIdObj = params.get("assetId"); + assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; + BigInteger value = new BigInteger(valueObj.toString()); + int assetChainId = Integer.parseInt(assetChainIdObj.toString()); + int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); @@ -463,7 +494,7 @@ public Response previewCall(Map params) { List argsList = (List) params.get("args"); Object[] args = argsList != null ? argsList.toArray() : null; - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -494,7 +525,7 @@ public Response previewCall(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.previewContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs); + Result result = contractTxService.previewContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); if (result.isFailed()) { return wrapperFailed(result); @@ -515,7 +546,9 @@ public Response previewCall(Map params) { @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @@ -535,10 +568,17 @@ public Response imputedCallGas(Map params) { ChainManager.chainHandle(chainId); String sender = (String) params.get("sender"); Object valueObj = params.get("value"); - if(valueObj == null) { - valueObj = "0"; - } + valueObj = valueObj == null ? "0" : valueObj; + + Object assetChainIdObj = params.get("assetChainId"); + assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; + + Object assetIdObj = params.get("assetId"); + assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; + BigInteger value = new BigInteger(valueObj.toString()); + int assetChainId = Integer.parseInt(assetChainIdObj.toString()); + int assetId = Integer.parseInt(assetIdObj.toString()); String contractAddress = (String) params.get("contractAddress"); String methodName = (String) params.get("methodName"); String methodDesc = (String) params.get("methodDesc"); @@ -569,7 +609,7 @@ public Response imputedCallGas(Map params) { if (method != null) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - result = contractTxService.validateContractCallTx(chainId, senderBytes, value, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractAddressBytes, methodName, methodDesc, convertArgs); + result = contractTxService.validateContractCallTx(chainId, senderBytes, value, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); if (result.isFailed()) { break; } @@ -721,7 +761,7 @@ public Response transfer(Map params) { Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, BALANCE_TRIGGER_METHOD_NAME, BALANCE_TRIGGER_METHOD_DESC, - null, password, remark); + null, password, remark, CHAIN_ID, ASSET_ID); if (result.isFailed()) { return wrapperFailed(result); } @@ -804,7 +844,7 @@ public Response tokenTransfer(Map params) { Result result = contractTxService.contractCallTx(chainId, from, BigInteger.ZERO, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, ContractConstant.NRC20_METHOD_TRANSFER, null, - ContractUtil.twoDimensionalArray(argsObj), password, remark); + ContractUtil.twoDimensionalArray(argsObj), password, remark, CHAIN_ID, ASSET_ID); if (result.isFailed()) { return wrapperFailed(result); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractCaller.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractCaller.java index b6086ecc18..f8c9619fe5 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractCaller.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractCaller.java @@ -29,6 +29,7 @@ import io.nuls.contract.model.bo.ContractWrapperTransaction; import io.nuls.contract.vm.program.ProgramExecutor; import io.nuls.core.basic.Result; +import io.nuls.core.exception.NulsException; import java.util.List; @@ -42,6 +43,6 @@ public interface ContractCaller { Result callBatchEnd(int chainId, long blockHeight); - List reCallTx(ProgramExecutor batchExecutor, List reCallTxList, int chainId, String preStateRoot); + List reCallTx(ProgramExecutor batchExecutor, List reCallTxList, int chainId, String preStateRoot) throws NulsException; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java index 8fb2efdd99..befb298825 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java @@ -43,13 +43,13 @@ Result contractCreateTx(int chainId, String sender, String alias, Long gasLimit, Result validateContractCreateTx(int chainId, byte[] sender, Long gasLimit, Long price, byte[] contractCode, String[][] args); Result contractCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, - String methodName, String methodDesc, String[][] args, String password, String remark); + String methodName, String methodDesc, String[][] args, String password, String remark, int assetChainId, int assetId); Result validateContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args); + String methodName, String methodDesc, String[][] args, int assetChainId, int assetId); Result previewContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args); + String methodName, String methodDesc, String[][] args, int assetChainId, int assetId); Result contractDeleteTx(int chainId, String sender, String contractAddress, String password, String remark); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index 51485d6641..043ebf4a71 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -33,6 +33,7 @@ import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.model.bo.*; import io.nuls.contract.model.dto.ContractPackageDto; +import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.service.ContractCaller; import io.nuls.contract.service.ContractExecutor; @@ -41,6 +42,7 @@ import io.nuls.core.basic.Result; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; import io.nuls.core.thread.commom.NulsThreadFactory; import java.util.ArrayList; @@ -137,7 +139,7 @@ public Result callBatchEnd(int chainId, long blockHeight) { } @Override - public List reCallTx(ProgramExecutor batchExecutor, List reCallTxList, int chainId, String preStateRoot) { + public List reCallTx(ProgramExecutor batchExecutor, List reCallTxList, int chainId, String preStateRoot) throws NulsException { BlockHeader currentBlockHeader = contractHelper.getBatchInfoCurrentBlockHeader(chainId); long blockTime = currentBlockHeader.getTime(); long lastestHeight = currentBlockHeader.getHeight() - 1; @@ -150,6 +152,7 @@ public List reCallTx(ProgramExecutor batchExecutor, List result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark); + Result result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark, assetChainId, assetId); if (result.isFailed()) { return result; } @@ -157,14 +157,14 @@ public Result contractCallTx(int chainId, String sender, BigInteger value, Long @Override public Result validateContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args) { - return contractTxHelper.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args); + String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { + return contractTxHelper.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); } @Override public Result previewContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args) { - return contractTxHelper.previewCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args); + String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { + return contractTxHelper.previewCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); } private Result saveUnConfirmedTokenTransfer(int chainId, CallContractTransaction tx, String sender, String contractAddress, String methodName, String[][] args) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ResultHandlerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ResultHandlerImpl.java index 6e6665c22b..17afd8c1aa 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ResultHandlerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ResultHandlerImpl.java @@ -49,6 +49,8 @@ import java.util.*; import java.util.stream.Collectors; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.core.constant.TxType.CALL_CONTRACT; /** @@ -108,7 +110,7 @@ private void handleFailedContract(int chainId, AnalyzerResult analyzerResult, lo ContractTransferData txData = new ContractTransferData(orginTx.getHash(), contractAddress); CoinData coinData = new CoinData(); - ContractBalance balance = tempBalanceManager.getBalance(contractAddress).getData(); + ContractBalance balance = tempBalanceManager.getBalance(contractAddress, CHAIN_ID, ASSET_ID).getData(); byte[] nonceBytes = RPCUtil.decode(balance.getNonce()); CoinFrom coinFrom = new CoinFrom(contractAddress, chainId, assetsId, value, nonceBytes, (byte) 0); @@ -131,11 +133,12 @@ private void handleFailedContract(int chainId, AnalyzerResult analyzerResult, lo tx.setHash(hash); contractResult.getContractTransferList().add(tx); contractResult.setMergedTransferList(contractTransferHandler.contractTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); + contractResult.setMergerdMultyAssetTransferList(contractTransferHandler.contractMultyAssetTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); } } } - private List reCall(ProgramExecutor batchExecutor, AnalyzerResult analyzerResult, int chainId, String preStateRoot) { + private List reCall(ProgramExecutor batchExecutor, AnalyzerResult analyzerResult, int chainId, String preStateRoot) throws NulsException { // 重新执行合约 List list = analyzerResult.getReCallTxList(); List collectTxs = list.stream().sorted(CompareTxOrderAsc.getInstance()).map(c -> c.getTx()).collect(Collectors.toList()); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index abf3443a28..3f3025fc6d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -7,7 +7,9 @@ import io.nuls.contract.model.bo.ContractTokenAssetsInfo; import io.nuls.contract.rpc.call.LedgerCall; import io.nuls.contract.util.Log; +import io.nuls.contract.vm.VMFactory; import io.nuls.core.basic.VersionChangeInvoker; +import io.nuls.core.core.annotation.Component; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.exception.NulsException; @@ -20,6 +22,16 @@ */ public class SmartContractVersionChangeInvoker implements VersionChangeInvoker { + private static SmartContractVersionChangeInvoker invoker = new SmartContractVersionChangeInvoker(); + + private SmartContractVersionChangeInvoker() {} + + public static SmartContractVersionChangeInvoker instance() { + return invoker; + } + + private boolean isloadV8 = false; + /** * * 协议升级后,向账本模块请求nrc20-token资产列表,缓存到模块内存中。 @@ -31,7 +43,9 @@ public void process(int currentChainId) { ChainManager.chainHandle(currentChainId); Short currentVersion = ProtocolGroupManager.getCurrentVersion(currentChainId); Log.info("触发协议升级,chainId: [{}], 版本为: [{}]", currentChainId, currentVersion); - + if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { + this.loadV8(currentVersion); + } ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); // 缓存token注册资产的资产ID和token合约地址 Map chainMap = chainManager.getChainMap(); @@ -60,4 +74,13 @@ public void process(int currentChainId) { } } } + + private void loadV8(int currentVersion) { + if (isloadV8) { + return; + } + Log.info("版本[{}]协议升级成功,重新初始化智能合约VM", currentVersion); + VMFactory.reInitVM_v8(); + isloadV8 = true; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java new file mode 100644 index 0000000000..68ce6ed7c5 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java @@ -0,0 +1,130 @@ +package io.nuls.contract.tx.v8; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.dto.ContractPackageDto; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.processor.CallContractTxProcessor; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CallContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("CallContractProcessorV8") +public class CallContractProcessorV8 implements TransactionProcessor { + + @Autowired + private CallContractTxProcessor callContractTxProcessor; + @Autowired + private CallContractTxValidator callContractTxValidator; + @Autowired + private ContractHelper contractHelper; + @Autowired + private ChainManager chainManager; + + @Override + public int getType() { + return TxType.CALL_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CallContractTransaction callTx; + for(Transaction tx : txs) { + callTx = new CallContractTransaction(); + callTx.copyTx(tx); + try { + Result validate = callContractTxValidator.validateV8(chainId, callTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); + if (contractPackageDto != null) { + Map contractResultMap = contractPackageDto.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}, txType: {}", txHash, tx.getType()); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + callContractTxProcessor.onCommit(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CallContractData call; + for (Transaction tx : txs) { + if (tx.getType() == TxType.CROSS_CHAIN) { + // add by pierre at 2019-12-01 处理type10交易的业务回滚, 需要协议升级 done + if(ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { + continue; + } + call = ContractUtil.parseCrossChainTx(tx, chainManager); + if (call == null) { + continue; + } + } else { + call = new CallContractData(); + call.parse(tx.getTxData(), 0); + } + callContractTxProcessor.onRollback(chainId, new ContractWrapperTransaction(tx, call)); + } + return true; + } catch (NulsException e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index 8603359f70..edf0406b02 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -440,6 +440,12 @@ public static String argToString(String[][] args) { } public static boolean checkPrice(long price) { + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { + if (price <= 0) { + return false; + } + return true; + } if (price < CONTRACT_MINIMUM_PRICE) { return false; } @@ -691,16 +697,24 @@ public static byte[] extractPublicKey(Transaction tx) { return publicKey; } - public static void mapAddBigInteger(LinkedHashMap map, byte[] address, BigInteger amount) { - String strAddress = asString(address); - BigInteger currentAmount = map.get(strAddress); + public static void mapAddBigInteger(LinkedHashMap map, byte[] address, int assetChainId, int assetId, BigInteger amount) { + String addressKey = addressKey(address, assetChainId, assetId); + BigInteger currentAmount = map.get(addressKey); if (currentAmount == null) { - map.put(strAddress, amount); + map.put(addressKey, amount); } else { - map.put(strAddress, currentAmount.add(amount)); + map.put(addressKey, currentAmount.add(amount)); } } + public static String addressKey(byte[] address, int assetChainId, int assetId) { + return new StringBuilder(asString(address)).append(ContractConstant.LINE).append(assetChainId).append(ContractConstant.LINE).append(assetId).toString(); + } + + public static String addressLockedKey(byte[] address, int assetChainId, int assetId, long lockedTime) { + return new StringBuilder(asString(address)).append(ContractConstant.LINE).append(assetChainId).append(ContractConstant.LINE).append(assetId).append(ContractConstant.LINE).append(lockedTime).toString(); + } + public static String toString(String[][] a) { if (a == null) return "null"; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java index e479347ec6..d8830c8c33 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java @@ -161,8 +161,8 @@ public BlockHeaderDto getCurrentBlockHeader(int chainId) { * @param address 合约地址 * @param blockHeight 区块高度, 如果不传, 则按主链最新高度查询 */ - public ContractBalance getBalance(int chainId, byte[] address) { - ContractBalance balance = contractHelper.getBalance(chainId, address); + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { + ContractBalance balance = contractHelper.getBalance(chainId, assetChainId, assetId, address); return balance; } @@ -172,8 +172,8 @@ public ContractBalance getBalance(int chainId, byte[] address) { * @param address 合约地址 * @param blockHeight 区块高度, 如果不传, 则按主链最新高度查询 */ - public BigInteger getTotalBalance(int chainId, byte[] address) { - ContractBalance balance = contractHelper.getBalance(chainId, address); + public BigInteger getTotalBalance(int chainId, int assetChainId, int assetId, byte[] address) { + ContractBalance balance = contractHelper.getBalance(chainId, assetChainId, assetId, address); if (balance != null) { return balance.getTotal(); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 224eb7e7eb..a057896c82 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -48,10 +48,11 @@ import java.util.List; import java.util.Set; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.MININUM_TRANSFER_AMOUNT; import static io.nuls.contract.constant.ContractErrorCode.*; import static io.nuls.contract.util.ContractUtil.getSuccess; -import static io.nuls.core.constant.TxType.DELETE_CONTRACT; /** * @author: PierreLuo @@ -88,7 +89,7 @@ public Result validate(int chainId, CallContractTransaction tx) throws NulsExcep return Result.getFailed(CONTRACT_CALLER_ERROR); } if (!ContractUtil.checkPrice(txData.getPrice())) { - Log.error("contract call error: The minimum value of price is 25."); + Log.error("contract call error: The gas price is error."); return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); } if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { @@ -144,4 +145,74 @@ public Result validate(int chainId, CallContractTransaction tx) throws NulsExcep return Result.getFailed(FEE_NOT_RIGHT); } } + + public Result validateV8(int chainId, CallContractTransaction tx) throws NulsException { + + CoinData coinData = tx.getCoinDataInstance(); + List fromList = coinData.getFrom(); + List toList = coinData.getTo(); + CallContractData txData = tx.getTxDataObj(); + byte[] sender = txData.getSender(); + boolean existSender = false; + for(CoinFrom from : fromList) { + if(!existSender && Arrays.equals(from.getAddress(), sender)) { + existSender = true; + } + } + Set signatureAddressSet = SignatureUtil.getAddressFromTX(tx, chainId); + if (!existSender || !signatureAddressSet.contains(AddressTool.getStringAddressByBytes(sender))) { + Log.error("contract call error: The contract caller is not the transaction creator."); + return Result.getFailed(CONTRACT_CALLER_ERROR); + } + if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { + Log.error("contract call error: The value of gas limit ranges from 1 to 10,000,000."); + return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); + } + BigInteger transferValue = txData.getValue(); + byte[] contractAddress = txData.getContractAddress(); + + if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddress)) { + Log.error("contract call error: The contract does not exist."); + return Result.getFailed(CONTRACT_ADDRESS_NOT_EXIST); + } + + int toSize = toList.size(); + if (toSize > 1) { + Log.error("contract call error: There are too many coinTo in the contract."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); + } + BigInteger contractReceivedValue = BigInteger.ZERO; + if (toSize == 1) { + CoinTo coin = toList.get(0); + if (coin.getLockTime() != 0) { + Log.error("contract call error: Transfer amount cannot be locked."); + return Result.getFailed(AMOUNT_LOCK_ERROR); + } + byte[] owner = coin.getAddress(); + if (!Arrays.equals(owner, contractAddress)) { + Log.error("contract call error: The receiver is not the contract address."); + return Result.getFailed(CONTRACT_RECEIVER_ERROR); + } else { + contractReceivedValue = contractReceivedValue.add(coin.getAmount()); + } + boolean mainAsset = coin.getAssetsChainId() == CHAIN_ID && coin.getAssetsId() == ASSET_ID; + if (mainAsset && coin.getAmount().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { + Log.error("contract call error: The amount of the transfer is too small."); + return Result.getFailed(TOO_SMALL_AMOUNT); + } + } + if (contractReceivedValue.compareTo(transferValue) < 0) { + Log.error("contract call error: Insufficient balance to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + + BigInteger realFee = coinData.getFeeByAsset(CHAIN_ID, ASSET_ID); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(tx.size()).add(BigInteger.valueOf(txData.getGasLimit()).multiply(BigInteger.valueOf(txData.getPrice()))); + if (realFee.compareTo(fee) >= 0) { + return getSuccess(); + } else { + Log.error("contract call error: The contract transaction fee is not right."); + return Result.getFailed(FEE_NOT_RIGHT); + } + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CreateContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CreateContractTxValidator.java index 629216a8bf..203f00e273 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CreateContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CreateContractTxValidator.java @@ -111,7 +111,7 @@ public Result validate(int chainId, CreateContractTransaction tx) throws NulsExc return Result.getFailed(CONTRACT_ALIAS_FORMAT_ERROR); } if (!ContractUtil.checkPrice(txData.getPrice())) { - Log.error("contract create error: The minimum value of price is 25."); + Log.error("contract create error: The gas price is error."); return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); } if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/DeleteContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/DeleteContractTxValidator.java index 5a6d56bc05..09bb38b3c1 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/DeleteContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/DeleteContractTxValidator.java @@ -48,6 +48,8 @@ import java.util.List; import java.util.Set; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractErrorCode.*; import static io.nuls.contract.util.ContractUtil.getSuccess; @@ -105,7 +107,7 @@ public Result validate(int chainId, DeleteContractTransaction tx) throws NulsExc return Result.getFailed(CONTRACT_OWNER_ERROR); } - ContractBalance balance = contractHelper.getRealBalance(chainId, AddressTool.getStringAddressByBytes(contractAddressBytes)); + ContractBalance balance = contractHelper.getRealBalance(chainId, CHAIN_ID, ASSET_ID, AddressTool.getStringAddressByBytes(contractAddressBytes)); if (balance == null) { Log.error("contract delete error: That balance of the contract is abnormal."); return Result.getFailed(CONTRACT_BALANCE_ERROR); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index d102bdc4ea..477a0f6661 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -583,6 +583,14 @@ public BigInteger toBigInteger(ObjectRef objectRef) { return new BigInteger(value); } + public Integer toInteger(ObjectRef objectRef) { + String value = runToString(objectRef); + if (value == null) { + return null; + } + return Integer.parseInt(value); + } + public ObjectRef newContract(byte[] address, ClassCode contractCode, Repository repository) { ObjectRef objectRef = newObject(NativeAddress.toString(address), contractCode); this.contract = objectRef; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 5e7107a4de..6f964f5871 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -25,7 +25,6 @@ package io.nuls.contract.vm; import io.nuls.contract.model.dto.BlockHeaderDto; -import io.nuls.contract.util.Log; import io.nuls.contract.util.VMContext; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.code.VariableType; @@ -185,6 +184,8 @@ public void initProgramContext(ProgramInvoke programInvoke) { programContext.setGasPrice(programInvoke.getPrice()); programContext.setGas(programInvoke.getGasLimit()); programContext.setValue(this.heap.newBigInteger(programInvoke.getValue().toString())); + programContext.setAssetChainId(programInvoke.getAssetChainId()); + programContext.setAssetId(programInvoke.getAssetId()); programContext.setNumber(programInvoke.getNumber()); programContext.setEstimateGas(programInvoke.isEstimateGas()); if(programInvoke.getSenderPublicKey() != null) { @@ -210,22 +211,12 @@ public void run(MethodCode methodCode, Object[] args, boolean pushResult) { public void run(ObjectRef objectRef, MethodCode methodCode, VMContext vmContext, ProgramInvoke programInvoke) { this.vmContext = vmContext; - //todo Niels - long startTime = System.nanoTime(); Object[] runArgs = runArgs(objectRef, methodCode, programInvoke.getArgs()); - long use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.1 : {}ns",use); - startTime = System.nanoTime(); if (isEnd()) { return; } initProgramContext(programInvoke); - use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.2 : {}ns",use); - startTime = System.nanoTime(); run(methodCode, runArgs, true); - use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.3 : {}ns",use); } private Object[] runArgs(ObjectRef objectRef, MethodCode methodCode, String[][] args) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index bbe63ee8ae..c2a41ad92f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -26,13 +26,15 @@ import io.nuls.contract.vm.code.ClassCode; import io.nuls.contract.vm.code.ClassCodeLoader; +import org.checkerframework.checker.units.qual.C; import java.util.LinkedHashMap; import java.util.Map; +import java.util.concurrent.CountDownLatch; public class VMFactory { - public static final VM VM; + private static VM VM; private static final String[] CLINIT_CLASSES = new String[]{ "io/nuls/contract/sdk/Address", @@ -286,7 +288,16 @@ public class VMFactory { Heap.INIT_ARRAYS.putAll(VM.heap.arrays); } + private static volatile CountDownLatch waitV8; + public static VM createVM() { + if (waitV8 != null) { + try { + waitV8.await(); + } catch (InterruptedException e) { + //nothing + } + } return new VM(VM); } @@ -301,4 +312,35 @@ private static VM initVM() { return vm; } + public static void reInitVM_v8() { + waitV8 = new CountDownLatch(1); + VM = loadVM_v8(); + MethodArea.INIT_CLASS_CODES.clear(); + MethodArea.INIT_METHOD_CODES.clear(); + Heap.INIT_OBJECTS.clear(); + Heap.INIT_ARRAYS.clear(); + + MethodArea.INIT_CLASS_CODES.putAll(VM.methodArea.getClassCodes()); + MethodArea.INIT_METHOD_CODES.putAll(VM.methodArea.getMethodCodes()); + Heap.INIT_OBJECTS.putAll(VM.heap.objects); + Heap.INIT_ARRAYS.putAll(VM.heap.arrays); + waitV8.countDown(); + } + + private static VM loadVM_v8() { + VM vm = new VM(); + Map classCodes = new LinkedHashMap<>(1024); + for (String className : CLINIT_CLASSES) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v8(className); + classCodes.put(classCode.name, classCode); + } + // v8 add + String className = "io/nuls/contract/sdk/annotation/PayableMultyAsset"; + ClassCode classCode = ClassCodeLoader.loadFromResource_v8(className); + classCodes.put(classCode.name, classCode); + + vm.methodArea.loadClassCodes(classCodes); + return vm; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java index 3c7dbc6014..cbcda6d799 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java @@ -27,6 +27,8 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.vm.util.Constants; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -51,6 +53,7 @@ public class ClassCodeLoader { private static final Map RESOURCE_CLASS_CODES; + private static final Map RESOURCE_CLASS_CODES_V8; private static final LoadingCache> CACHE; @@ -68,6 +71,7 @@ public Map load(@Nonnull final ClassCodeCacheKey cacheKey) { } }); RESOURCE_CLASS_CODES = loadFromResource(); + RESOURCE_CLASS_CODES_V8 = loadFromResource_v8(); } public static ClassCode load(String className) { @@ -88,7 +92,19 @@ public static ClassCode loadFromResource(String className) { } } + public static ClassCode loadFromResource_v8(String className) { + ClassCode classCode = RESOURCE_CLASS_CODES_V8.get(className); + if (classCode == null) { + throw new RuntimeException("can't load class " + className); + } else { + return classCode; + } + } + public static ClassCode getFromResource(String className) { + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { + return RESOURCE_CLASS_CODES_V8.get(className); + } return RESOURCE_CLASS_CODES.get(className); } @@ -170,8 +186,16 @@ private static ClassCode load(ClassReader classReader) { } private static Map loadFromResource() { + return loadFromResourceWithResourceName("/used_classes_sdk"); + } + + private static Map loadFromResource_v8() { + return loadFromResourceWithResourceName("/used_classes_sdk_v8"); + } + + private static Map loadFromResourceWithResourceName(String usedClassesName) { try (InputStream baseInputStream = ClassCodeLoader.class.getResourceAsStream("/used_classes_base"); - InputStream sdkInputStream = ClassCodeLoader.class.getResourceAsStream("/used_classes_sdk"); + InputStream sdkInputStream = ClassCodeLoader.class.getResourceAsStream(usedClassesName); ) { if (baseInputStream == null) { return new HashMap<>(0); @@ -192,24 +216,6 @@ private static Map loadFromResource() { } } - //private static Map loadFromResource() { - // InputStream baseInputStream = null; - // InputStream sdkInputStream = null; - // try { - // baseInputStream = ClassCodeLoader.class.getResourceAsStream("/used_classes"); - // if (baseInputStream == null) { - // return new HashMap<>(0); - // } else { - // return loadJar(baseInputStream); - // } - // } catch (Exception e) { - // throw new RuntimeException(e); - // } finally { - // IOUtils.closeQuietly(baseInputStream); - // IOUtils.closeQuietly(sdkInputStream); - // } - //} - private static Map loadJar(byte[] bytes) { InputStream inputStream = new ByteArrayInputStream(bytes); return loadJar(inputStream); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/MethodCode.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/MethodCode.java index 2b339003bd..55a6292b90 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/MethodCode.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/MethodCode.java @@ -43,6 +43,7 @@ public class MethodCode { public static final String VIEW_ANNOTATION_DESC = "Lio/nuls/contract/sdk/annotation/View;"; public static final String PAYABLE_ANNOTATION_DESC = "Lio/nuls/contract/sdk/annotation/Payable;"; + public static final String PAYABLEMULTYASSET_ANNOTATION_DESC = "Lio/nuls/contract/sdk/annotation/PayableMultyAsset;"; public static final String REQUIRED_ANNOTATION_DESC = "Lio/nuls/contract/sdk/annotation/Required;"; public static final String JSONSERIALIZABLE_ANNOTATION_DESC = "Lio/nuls/contract/sdk/annotation/JSONSerializable;"; @@ -325,6 +326,10 @@ public boolean hasPayableAnnotation() { return hasAnnotation(PAYABLE_ANNOTATION_DESC); } + public boolean hasPayableMultyAssetAnnotation() { + return hasAnnotation(PAYABLEMULTYASSET_ANNOTATION_DESC); + } + public boolean hasAnnotation(String annotation) { return visibleAnnotations.stream() .anyMatch(annotationNode -> annotation.equals(annotationNode.desc)); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index abaf2a6726..a46bde16ad 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -25,19 +25,24 @@ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; import io.nuls.base.basic.AddressTool; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.sdk.Address; import io.nuls.contract.vm.*; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.exception.ErrorException; import io.nuls.contract.vm.natives.NativeMethod; -import io.nuls.contract.vm.program.*; +import io.nuls.contract.vm.program.ProgramCall; +import io.nuls.contract.vm.program.ProgramInternalCall; +import io.nuls.contract.vm.program.ProgramResult; +import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.contract.vm.program.impl.ProgramInvoke; -import org.ethereum.vm.DataWord; import java.math.BigInteger; import java.util.Arrays; -import java.util.Map; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.vm.natives.NativeMethod.NOT_SUPPORT_NATIVE; import static io.nuls.contract.vm.natives.NativeMethod.SUPPORT_NATIVE; @@ -53,18 +58,42 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra } else { return balance(methodCode, methodArgs, frame); } + case balanceOfDesignatedAsset: + if (check) { + return SUPPORT_NATIVE; + } else { + return balanceOfDesignatedAsset(methodCode, methodArgs, frame); + } case totalBalance: if (check) { return SUPPORT_NATIVE; } else { return totalBalance(methodCode, methodArgs, frame); } + case totalBalanceOfDesignatedAsset: + if (check) { + return SUPPORT_NATIVE; + } else { + return totalBalanceOfDesignatedAsset(methodCode, methodArgs, frame); + } case transfer: if (check) { return SUPPORT_NATIVE; } else { return transfer(methodCode, methodArgs, frame); } + case transferLocked: + if (check) { + return SUPPORT_NATIVE; + } else { + return transferLocked(methodCode, methodArgs, frame); + } + case transferOfDesignatedAsset: + if (check) { + return SUPPORT_NATIVE; + } else { + return transferOfDesignatedAsset(methodCode, methodArgs, frame); + } case call: if (check) { return SUPPORT_NATIVE; @@ -77,6 +106,12 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra } else { return callWithReturnValue(methodCode, methodArgs, frame); } + case callWithReturnValueAndAssetInfo: + if (check) { + return SUPPORT_NATIVE; + } else { + return callWithReturnValueAndAssetInfo(methodCode, methodArgs, frame); + } case valid: if (check) { return SUPPORT_NATIVE; @@ -100,22 +135,15 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra } private static BigInteger balance(byte[] address, Frame frame) { - //if (!frame.vm.getRepository().isExist(address)) { - // return BigInteger.ZERO; - //} else { - return frame.vm.getProgramExecutor().getAccount(address).getBalance(); - //} + return frame.vm.getProgramExecutor().getAccount(address, CHAIN_ID, ASSET_ID).getBalance(); } private static BigInteger totalBalance(byte[] address, Frame frame) { - //if (!frame.vm.getRepository().isExist(address)) { - // return BigInteger.ZERO; - //} else { - return frame.vm.getProgramExecutor().getAccount(address).getTotalBalance(); - //} + return frame.vm.getProgramExecutor().getAccount(address, CHAIN_ID, ASSET_ID).getTotalBalance(); } public static final String balance = TYPE + "." + "balance" + "()Ljava/math/BigInteger;"; + public static final String balanceOfDesignatedAsset = TYPE + "." + "balance" + "(II)Ljava/math/BigInteger;"; /** * native @@ -131,7 +159,19 @@ private static Result balance(MethodCode methodCode, MethodArgs methodArgs, Fram return result; } + private static Result balanceOfDesignatedAsset(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + int assetChainId = (int) methodArgs.invokeArgs[0]; + int assetId = (int) methodArgs.invokeArgs[1]; + ObjectRef objectRef = methodArgs.objectRef; + String address = frame.heap.runToString(objectRef); + BigInteger balance = frame.vm.getProgramExecutor().getAccount(NativeAddress.toBytes(address), assetChainId, assetId).getBalance(); + ObjectRef balanceRef = frame.heap.newBigInteger(balance.toString()); + Result result = NativeMethod.result(methodCode, balanceRef, frame); + return result; + } + public static final String totalBalance = TYPE + "." + "totalBalance" + "()Ljava/math/BigInteger;"; + public static final String totalBalanceOfDesignatedAsset = TYPE + "." + "totalBalance" + "(II)Ljava/math/BigInteger;"; /** * native @@ -147,7 +187,20 @@ private static Result totalBalance(MethodCode methodCode, MethodArgs methodArgs, return result; } + private static Result totalBalanceOfDesignatedAsset(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + int assetChainId = (int) methodArgs.invokeArgs[0]; + int assetId = (int) methodArgs.invokeArgs[1]; + ObjectRef objectRef = methodArgs.objectRef; + String address = frame.heap.runToString(objectRef); + BigInteger totalBalance = frame.vm.getProgramExecutor().getAccount(NativeAddress.toBytes(address), assetChainId, assetId).getTotalBalance(); + ObjectRef totalBalanceRef = frame.heap.newBigInteger(totalBalance.toString()); + Result result = NativeMethod.result(methodCode, totalBalanceRef, frame); + return result; + } + public static final String transfer = TYPE + "." + "transfer" + "(Ljava/math/BigInteger;)V"; + public static final String transferLocked = TYPE + "." + "transferLocked" + "(Ljava/math/BigInteger;J)V"; + public static final String transferOfDesignatedAsset = TYPE + "." + "transferLocked" + "(Ljava/math/BigInteger;IIJ)V"; /** * native @@ -155,6 +208,22 @@ private static Result totalBalance(MethodCode methodCode, MethodArgs methodArgs, * @see Address#transfer(BigInteger) */ private static Result transfer(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + return transferBase(methodCode, methodArgs, frame, CHAIN_ID, ASSET_ID, 0); + } + + private static Result transferLocked(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + long lockedTime = (long) methodArgs.invokeArgs[1]; + return transferBase(methodCode, methodArgs, frame, CHAIN_ID, ASSET_ID, lockedTime); + } + + private static Result transferOfDesignatedAsset(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + int assetChainId = (int) methodArgs.invokeArgs[1]; + int assetId = (int) methodArgs.invokeArgs[2]; + long lockedTime = (long) methodArgs.invokeArgs[3]; + return transferBase(methodCode, methodArgs, frame, assetChainId, assetId, lockedTime); + } + + private static Result transferBase(MethodCode methodCode, MethodArgs methodArgs, Frame frame, int assetChainId, int assetId, long lockedTime) { ObjectRef addressRef = methodArgs.objectRef; ObjectRef valueRef = (ObjectRef) methodArgs.invokeArgs[0]; String address = frame.heap.runToString(addressRef); @@ -164,20 +233,28 @@ private static Result transfer(MethodCode methodCode, MethodArgs methodArgs, Fra if (Arrays.equals(from, to)) { throw new ErrorException(String.format("Cannot transfer from %s to %s", NativeAddress.toString(from), address), frame.vm.getGasUsed(), null); } - checkBalance(from, value, frame); + checkBalance(from, assetChainId, assetId, value, frame); frame.vm.addGasUsed(GasCost.TRANSFER); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; if (frame.heap.existContract(to)) { - //String address; - String methodName = "_payable"; + if (lockedTime > 0) { + throw new ErrorException(String.format("Cannot transfer the locked amount to the contract address %s", address), frame.vm.getGasUsed(), null); + } + String methodName; + if (mainAsset) { + methodName = "_payable"; + } else { + methodName = "_payableMultyAsset"; + } String methodDesc = "()V"; String[][] args = null; //BigInteger value; - call(address, methodName, methodDesc, args, value, frame); + call(address, methodName, methodDesc, args, value, frame, assetChainId, assetId); } else { - frame.vm.getProgramExecutor().getAccount(from).addBalance(value.negate()); - ProgramTransfer programTransfer = new ProgramTransfer(from, to, value); + frame.vm.getProgramExecutor().getAccount(from, assetChainId, assetId).addBalance(value.negate()); + ProgramTransfer programTransfer = new ProgramTransfer(from, to, value, assetChainId, assetId, lockedTime); frame.vm.getTransfers().add(programTransfer); // add by pierre at 2019-11-23 标记 按合约执行顺序添加合约生成交易,按此顺序处理合约生成交易的业务 不确定 需要协议升级 frame.vm.getOrderedInnerTxs().add(programTransfer); @@ -196,10 +273,26 @@ private static Result transfer(MethodCode methodCode, MethodArgs methodArgs, Fra * @see Address#call(String, String, String[][], BigInteger) */ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - return call(methodCode, methodArgs, frame, false); + return call(methodCode, methodArgs, frame, false, CHAIN_ID, ASSET_ID); + } + + public static final String callWithReturnValue = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;)Ljava/lang/String;"; + private static Result callWithReturnValue(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + return call(methodCode, methodArgs, frame, true, CHAIN_ID, ASSET_ID); + } + + public static final String callWithReturnValueAndAssetInfo = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/String;"; + private static Result callWithReturnValueAndAssetInfo(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + ObjectRef assetChainIdRef = (ObjectRef) methodArgs.invokeArgs[4]; + ObjectRef assetIdRef = (ObjectRef) methodArgs.invokeArgs[5]; + + Integer assetChainId = frame.heap.toInteger(assetChainIdRef); + Integer assetId = frame.heap.toInteger(assetIdRef); + + return call(methodCode, methodArgs, frame, true, assetChainId, assetId); } - private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame, boolean returnResult) { + private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame, boolean returnResult, Integer assetChainId, Integer assetId) { ObjectRef addressRef = methodArgs.objectRef; ObjectRef methodNameRef = (ObjectRef) methodArgs.invokeArgs[0]; ObjectRef methodDescRef = (ObjectRef) methodArgs.invokeArgs[1]; @@ -214,8 +307,15 @@ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame f if (value == null) { value = BigInteger.ZERO; } - - ProgramResult programResult = call(address, methodName, methodDesc, args, value, frame); + if (value.compareTo(BigInteger.ZERO) > 0) { + if (assetChainId == null || assetId == null) { + throw new ErrorException(String.format("Missing asset information, assetChainId: %s, assetId: %s", assetChainId, assetId), frame.vm.getGasUsed(), null); + } + } else { + assetChainId = CHAIN_ID; + assetId = ASSET_ID; + } + ProgramResult programResult = call(address, methodName, methodDesc, args, value, frame, assetChainId, assetId); if (!programResult.isSuccess()) { return new Result(); @@ -230,12 +330,6 @@ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame f return result; } - public static final String callWithReturnValue = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;)Ljava/lang/String;"; - - private static Result callWithReturnValue(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - return call(methodCode, methodArgs, frame, true); - } - private static String[][] getArgs(ObjectRef argsRef, Frame frame) { if (argsRef == null) { return null; @@ -252,7 +346,7 @@ private static String[][] getArgs(ObjectRef argsRef, Frame frame) { return array; } - public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame) { + public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame, int assetChainId, int assetId) { if (value.compareTo(BigInteger.ZERO) < 0) { throw new ErrorException(String.format("amount less than zero, value=%s", value), frame.vm.getGasUsed(), null); } @@ -262,6 +356,8 @@ public static ProgramResult call(String address, String methodName, String metho programCall.setNumber(programInvoke.getNumber()); programCall.setSender(programInvoke.getContractAddress()); programCall.setValue(value != null ? value : BigInteger.ZERO); + programCall.setAssetChainId(assetChainId); + programCall.setAssetId(assetId); programCall.setGasLimit(programInvoke.getGasLimit() - frame.vm.getGasUsed()); programCall.setPrice(programInvoke.getPrice()); programCall.setContractAddress(NativeAddress.toBytes(address)); @@ -273,9 +369,9 @@ public static ProgramResult call(String address, String methodName, String metho programCall.setInternalCall(true); if (programCall.getValue().compareTo(BigInteger.ZERO) > 0) { - checkBalance(programCall.getSender(), programCall.getValue(), frame); - frame.vm.getProgramExecutor().getAccount(programCall.getSender()).addBalance(programCall.getValue().negate()); - ProgramTransfer programTransfer = new ProgramTransfer(programCall.getSender(), programCall.getContractAddress(), programCall.getValue()); + checkBalance(programCall.getSender(), assetChainId, assetId, programCall.getValue(), frame); + frame.vm.getProgramExecutor().getAccount(programCall.getSender(), assetChainId, assetId).addBalance(programCall.getValue().negate()); + ProgramTransfer programTransfer = new ProgramTransfer(programCall.getSender(), programCall.getContractAddress(), programCall.getValue(), assetChainId, assetId, 0); frame.vm.getTransfers().add(programTransfer); // add by pierre at 2019-11-23 标记 按合约执行顺序添加合约生成交易,按此顺序处理合约生成交易的业务 不确定 需要协议升级 frame.vm.getOrderedInnerTxs().add(programTransfer); @@ -285,6 +381,8 @@ public static ProgramResult call(String address, String methodName, String metho ProgramInternalCall programInternalCall = new ProgramInternalCall(); programInternalCall.setSender(programCall.getSender()); programInternalCall.setValue(programCall.getValue()); + programInternalCall.setAssetChainId(programCall.getAssetChainId()); + programInternalCall.setAssetId(programCall.getAssetId()); programInternalCall.setContractAddress(programCall.getContractAddress()); programInternalCall.setMethodName(programCall.getMethodName()); programInternalCall.setMethodDesc(programCall.getMethodDesc()); @@ -307,19 +405,13 @@ public static ProgramResult call(String address, String methodName, String metho frame.throwRuntimeException(programResult.getErrorMessage()); return programResult; } - //else if (programResult.isError()) { - // throw new ErrorException(programResult.getErrorMessage(), programResult.getGasUsed(), programResult.getStackTrace()); - //} else { - // throw new RuntimeException("error contract status"); - //} - } - private static void checkBalance(byte[] address, BigInteger value, Frame frame) { + private static void checkBalance(byte[] address, int assetChainId, int assetId, BigInteger value, Frame frame) { if (value == null || value.compareTo(BigInteger.ZERO) <= 0) { throw new ErrorException(String.format("transfer amount error, value=%s", value), frame.vm.getGasUsed(), null); } - BigInteger balance = frame.vm.getProgramExecutor().getAccount(address).getBalance(); + BigInteger balance = frame.vm.getProgramExecutor().getAccount(address, assetChainId, assetId).getBalance(); if (balance.compareTo(value) < 0) { if (frame.vm.getProgramContext().isEstimateGas()) { balance = value; @@ -394,4 +486,7 @@ public static boolean validAddress(int chainId, String str) { return AddressTool.validAddress(chainId, str); } + public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame) { + return call(address, methodName, methodDesc, args, value, frame, CHAIN_ID, ASSET_ID); + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java index 8f485b6f16..bfc42307f9 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java @@ -27,10 +27,13 @@ import io.nuls.contract.sdk.Msg; import io.nuls.contract.vm.Frame; import io.nuls.contract.vm.MethodArgs; +import io.nuls.contract.vm.ObjectRef; import io.nuls.contract.vm.Result; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.natives.NativeMethod; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.vm.natives.NativeMethod.NOT_SUPPORT_NATIVE; import static io.nuls.contract.vm.natives.NativeMethod.SUPPORT_NATIVE; @@ -64,6 +67,24 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra } else { return value(methodCode, methodArgs, frame); } + case isMainAssetValue: + if (check) { + return SUPPORT_NATIVE; + } else { + return isMainAssetValue(methodCode, methodArgs, frame); + } + case assetChainId: + if (check) { + return SUPPORT_NATIVE; + } else { + return assetChainId(methodCode, methodArgs, frame); + } + case assetId: + if (check) { + return SUPPORT_NATIVE; + } else { + return assetId(methodCode, methodArgs, frame); + } case gasprice: if (check) { return SUPPORT_NATIVE; @@ -134,6 +155,37 @@ private static Result value(MethodCode methodCode, MethodArgs methodArgs, Frame return result; } + public static final String isMainAssetValue = TYPE + "." + "isMainAssetValue" + "()Z"; + + private static Result isMainAssetValue(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + boolean mainAsset = frame.vm.getProgramContext().getAssetChainId() == CHAIN_ID && frame.vm.getProgramContext().getAssetId() == ASSET_ID; + Result result = NativeMethod.result(methodCode, mainAsset, frame); + return result; + } + + public static final String assetChainId = TYPE + "." + "assetChainId" + "()I"; + public static final String assetId = TYPE + "." + "assetId" + "()I"; + + /** + * native + * + * @see Msg#assetChainId() + */ + private static Result assetChainId(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getAssetChainId(), frame); + return result; + } + + /** + * native + * + * @see Msg#assetId() + */ + private static Result assetId(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getAssetId(), frame); + return result; + } + public static final String gasprice = TYPE + "." + "gasprice" + "()J"; /** diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java index 580f4cc977..f5c0b72fa3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java @@ -71,6 +71,8 @@ import java.util.List; import java.util.Map; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.RPC_RESULT_KEY; import static io.nuls.contract.vm.natives.NativeMethod.NOT_SUPPORT_NATIVE; import static io.nuls.contract.vm.natives.NativeMethod.SUPPORT_NATIVE; @@ -599,7 +601,7 @@ private static Result invokeExternalCmd(MethodCode methodCode, MethodArgs method BlockHeaderDto blockHeaderDto = frame.vm.getBlockHeader(programInvoke.getNumber() + 1); long blockTime = blockHeaderDto.getTime(); // 使用虚拟机内部维护的合约余额 - ProgramAccount account = frame.vm.getProgramExecutor().getAccount(contractAddressBytes); + ProgramAccount account = frame.vm.getProgramExecutor().getAccount(contractAddressBytes, CHAIN_ID, ASSET_ID); argsMap.put("contractBalance", account.getBalance().toString()); argsMap.put("contractNonce", account.getNonce()); argsMap.put("blockTime", blockTime); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramAccount.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramAccount.java index 8e6b7a2cad..542aab4158 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramAccount.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramAccount.java @@ -12,11 +12,17 @@ public class ProgramAccount { private String nonce; - public ProgramAccount(byte[] address, BigInteger balance, String nonce) { + private int assetChainId; + + private int assetId; + + public ProgramAccount(byte[] address, BigInteger balance, String nonce, int assetChainId, int assetId) { this.address = address; this.balance = balance; this.nonce = nonce; this.freeze = BigInteger.ZERO; + this.assetChainId = assetChainId; + this.assetId = assetId; } public byte[] getAddress() { @@ -36,8 +42,13 @@ public BigInteger getTotalBalance() { return balance.add(freeze); } - public void setFreeze(BigInteger freeze) { - this.freeze = freeze; + public BigInteger addFreeze(BigInteger value) { + freeze = freeze.add(value); + return freeze; + } + + public BigInteger getFreeze() { + return freeze; } public String getNonce() { @@ -47,4 +58,13 @@ public String getNonce() { public void setNonce(String nonce) { this.nonce = nonce; } + + public int getAssetChainId() { + return assetChainId; + } + + public int getAssetId() { + return assetId; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java index 969de33038..d78e8eba10 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java @@ -51,6 +51,16 @@ public class ProgramCall { */ private BigInteger value; + /** + * 转入资产的链ID + */ + private int assetChainId; + + /** + * 转入资产ID + */ + private int assetId; + /** * 最大Gas消耗 */ @@ -156,6 +166,22 @@ public void setValue(BigInteger value) { this.value = value; } + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + public long getGasLimit() { return gasLimit; } @@ -222,47 +248,28 @@ public void setInternalCall(boolean internalCall) { @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; ProgramCall that = (ProgramCall) o; - if (number != that.number) { - return false; - } - if (gasLimit != that.gasLimit) { - return false; - } - if (price != that.price) { - return false; - } - if (estimateGas != that.estimateGas) { - return false; - } - if (!Arrays.equals(sender, that.sender)) { - return false; - } - if (!Arrays.equals(senderPublicKey, that.senderPublicKey)) { - return false; - } - if (value != null ? !value.equals(that.value) : that.value != null) { - return false; - } - if (!Arrays.equals(contractAddress, that.contractAddress)) { - return false; - } - if (methodName != null ? !methodName.equals(that.methodName) : that.methodName != null) { - return false; - } - if (methodDesc != null ? !methodDesc.equals(that.methodDesc) : that.methodDesc != null) { - return false; - } - // Probably incorrect - comparing Object[] arrays with Arrays.equals - return Arrays.equals(args, that.args); + if (number != that.number) return false; + if (assetChainId != that.assetChainId) return false; + if (assetId != that.assetId) return false; + if (gasLimit != that.gasLimit) return false; + if (price != that.price) return false; + if (estimateGas != that.estimateGas) return false; + if (viewMethod != that.viewMethod) return false; + if (internalCall != that.internalCall) return false; + if (!Arrays.equals(sender, that.sender)) return false; + if (!Arrays.equals(senderPublicKey, that.senderPublicKey)) return false; + if (value != null ? !value.equals(that.value) : that.value != null) return false; + if (!Arrays.equals(contractAddress, that.contractAddress)) return false; + if (methodName != null ? !methodName.equals(that.methodName) : that.methodName != null) return false; + if (methodDesc != null ? !methodDesc.equals(that.methodDesc) : that.methodDesc != null) return false; + if (!Arrays.deepEquals(args, that.args)) return false; + + return true; } @Override @@ -271,30 +278,54 @@ public int hashCode() { result = 31 * result + Arrays.hashCode(sender); result = 31 * result + Arrays.hashCode(senderPublicKey); result = 31 * result + (value != null ? value.hashCode() : 0); + result = 31 * result + assetChainId; + result = 31 * result + assetId; result = 31 * result + (int) (gasLimit ^ (gasLimit >>> 32)); result = 31 * result + (int) (price ^ (price >>> 32)); result = 31 * result + Arrays.hashCode(contractAddress); result = 31 * result + (methodName != null ? methodName.hashCode() : 0); result = 31 * result + (methodDesc != null ? methodDesc.hashCode() : 0); - result = 31 * result + Arrays.hashCode(args); + result = 31 * result + Arrays.deepHashCode(args); result = 31 * result + (estimateGas ? 1 : 0); + result = 31 * result + (viewMethod ? 1 : 0); + result = 31 * result + (internalCall ? 1 : 0); return result; } @Override public String toString() { - return "ProgramCall{" + - "number=" + number + - ", sender=" + (sender != null ? AddressTool.getStringAddressByBytes(sender) : sender) + - ", senderPublicKey=" + (senderPublicKey != null ? HexUtil.encode(senderPublicKey) : senderPublicKey) + - ", value=" + value + - ", gasLimit=" + gasLimit + - ", price=" + price + - ", contractAddress=" + (contractAddress != null ? AddressTool.getStringAddressByBytes(contractAddress) : contractAddress) + - ", methodName=" + methodName + - ", methodDesc=" + methodDesc + - ", args=" + argToString(args) + - ", estimateGas=" + estimateGas + - '}'; + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"number\":") + .append(number); + sb.append(",\"sender\":") + .append(AddressTool.getStringAddressByBytes(sender)); + sb.append(",\"senderPublicKey\":") + .append(HexUtil.encode(senderPublicKey)); + sb.append(",\"value\":") + .append(value); + sb.append(",\"assetChainId\":") + .append(assetChainId); + sb.append(",\"assetId\":") + .append(assetId); + sb.append(",\"gasLimit\":") + .append(gasLimit); + sb.append(",\"price\":") + .append(price); + sb.append(",\"contractAddress\":") + .append(AddressTool.getStringAddressByBytes(contractAddress)); + sb.append(",\"methodName\":") + .append('\"').append(methodName).append('\"'); + sb.append(",\"methodDesc\":") + .append('\"').append(methodDesc).append('\"'); + sb.append(",\"args\":") + .append(Arrays.deepToString(args)); + sb.append(",\"estimateGas\":") + .append(estimateGas); + sb.append(",\"viewMethod\":") + .append(viewMethod); + sb.append(",\"internalCall\":") + .append(internalCall); + sb.append('}'); + return sb.toString(); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java index 14d73319d1..2c4b421af6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java @@ -38,6 +38,16 @@ public class ProgramInternalCall { */ private BigInteger value; + /** + * 转入资产的链ID + */ + private int assetChainId; + + /** + * 转入资产ID + */ + private int assetId; + /** * 合约地址 */ @@ -74,6 +84,22 @@ public void setValue(BigInteger value) { this.value = value; } + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + public byte[] getContractAddress() { return contractAddress; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java index e87804fcff..b22037b536 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java @@ -47,6 +47,8 @@ public class ProgramMethod { private boolean event; @ApiModelProperty(description = "是否是可接受主链资产转账的方法") private boolean payable; + @ApiModelProperty(description = "是否是可接受其他资产转账的方法") + private boolean payableMultyAsset; @ApiModelProperty(description = "方法返回值是否JSON序列化") private boolean jsonSerializable; @@ -109,6 +111,14 @@ public void setPayable(boolean payable) { this.payable = payable; } + public boolean isPayableMultyAsset() { + return payableMultyAsset; + } + + public void setPayableMultyAsset(boolean payableMultyAsset) { + this.payableMultyAsset = payableMultyAsset; + } + public boolean isJsonSerializable() { return jsonSerializable; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java index 0c51bac304..1d97a147e7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java @@ -47,7 +47,7 @@ public class ProgramResult { private String stackTrace; private String nonce; - private Map accounts; + private Map accounts; private List transfers = new ArrayList<>(); @@ -145,11 +145,11 @@ public void setNonce(String nonce) { this.nonce = nonce; } - public Map getAccounts() { + public Map getAccounts() { return accounts; } - public void setAccounts(Map accounts) { + public void setAccounts(Map accounts) { this.accounts = accounts; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java index 9e3c394cf1..f24e82175c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java @@ -35,9 +35,15 @@ public class ProgramTransfer { private BigInteger value; + private int assetChainId; + + private int assetId; + + private long lockedTime; + public ProgramTransfer() {} - public ProgramTransfer(byte[] from, byte[] to, BigInteger value) { + public ProgramTransfer(byte[] from, byte[] to, BigInteger value, int assetChainId, int assetId, long lockedTime) { this.from = from; this.to = to; this.value = value; @@ -67,24 +73,45 @@ public BigInteger getValue() { return value; } + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public long getLockedTime() { + return lockedTime; + } + + public void setLockedTime(long lockedTime) { + this.lockedTime = lockedTime; + } + @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; ProgramTransfer that = (ProgramTransfer) o; - if (!Arrays.equals(from, that.from)) { - return false; - } - if (!Arrays.equals(to, that.to)) { - return false; - } - return value != null ? value.equals(that.value) : that.value == null; + if (assetChainId != that.assetChainId) return false; + if (assetId != that.assetId) return false; + if (lockedTime != that.lockedTime) return false; + if (!Arrays.equals(from, that.from)) return false; + if (!Arrays.equals(to, that.to)) return false; + if (value != null ? !value.equals(that.value) : that.value != null) return false; + + return true; } @Override @@ -92,16 +119,28 @@ public int hashCode() { int result = Arrays.hashCode(from); result = 31 * result + Arrays.hashCode(to); result = 31 * result + (value != null ? value.hashCode() : 0); + result = 31 * result + assetChainId; + result = 31 * result + assetId; + result = 31 * result + (int) (lockedTime ^ (lockedTime >>> 32)); return result; } @Override public String toString() { - return "ProgramTransfer{" + - "from=" + Arrays.toString(from) + - ", to=" + Arrays.toString(to) + - ", value=" + value + - '}'; + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"from\":") + .append(Arrays.toString(from)); + sb.append(",\"to\":") + .append(Arrays.toString(to)); + sb.append(",\"value\":") + .append(value); + sb.append(",\"assetChainId\":") + .append(assetChainId); + sb.append(",\"assetId\":") + .append(assetId); + sb.append(",\"lockedTime\":") + .append(lockedTime); + sb.append('}'); + return sb.toString(); } - } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java index 55de695ed2..7ac7756b53 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java @@ -42,6 +42,10 @@ public class ProgramContext { //private long gasLimit; + private int assetChainId; + + private int assetId; + private ObjectRef value; private long number; @@ -92,6 +96,22 @@ public void setGas(long gas) { this.gas = gas; } + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + public ObjectRef getValue() { return value; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 0645395b99..1c58d88d19 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -50,7 +50,6 @@ import org.ethereum.core.Block; import org.ethereum.core.Repository; import org.ethereum.datasource.Source; -import org.ethereum.db.ByteArrayWrapper; import org.ethereum.db.RepositoryRoot; import org.ethereum.db.StateSource; import org.ethereum.util.FastByteComparisons; @@ -62,8 +61,11 @@ import java.util.*; import java.util.stream.Collectors; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC; import static io.nuls.contract.constant.ContractConstant.BALANCE_TRIGGER_METHOD_NAME; +import static io.nuls.contract.util.ContractUtil.addressKey; public class ProgramExecutorImpl implements ProgramExecutor { @@ -81,7 +83,7 @@ public class ProgramExecutorImpl implements ProgramExecutor { private final long beginTime; - private final Map accounts; + private final Map accounts; private long blockNumber; @@ -99,7 +101,7 @@ public ProgramExecutorImpl(VMContext vmContext, Chain chain) { } private ProgramExecutorImpl(ProgramExecutorImpl programExecutor, VMContext vmContext, Source source, Repository repository, byte[] prevStateRoot, - Map accounts, Thread thread) { + Map accounts, Thread thread) { this.parent = programExecutor; this.vmContext = vmContext; this.source = source; @@ -246,6 +248,8 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setPrice(programCall.getPrice()); programInvoke.setGasLimit(programCall.getGasLimit()); programInvoke.setValue(programCall.getValue() != null ? programCall.getValue() : BigInteger.ZERO); + programInvoke.setAssetChainId(programCall.getAssetChainId()); + programInvoke.setAssetId(programCall.getAssetId()); programInvoke.setNumber(programCall.getNumber()); programInvoke.setMethodName(programCall.getMethodName()); programInvoke.setMethodDesc(programCall.getMethodDesc()); @@ -255,9 +259,7 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setInternalCall(programCall.isInternalCall()); programInvoke.setViewMethod(programCall.isViewMethod()); programInvoke.setSenderPublicKey(programCall.getSenderPublicKey()); - long start = System.nanoTime(); ProgramResult result = execute(programInvoke); - Log.info("=========== total use:{}ms",(System.nanoTime()-start)/1000000); return result; } @@ -267,7 +269,6 @@ public ProgramResult call(ProgramCall programCall) { private Map contractObjectRefCount; private ProgramResult execute(ProgramInvoke programInvoke) { - long startTime = System.nanoTime(); if (programInvoke.getPrice() < 1) { return revert("gas price must be greater than zero"); } @@ -290,9 +291,6 @@ private ProgramResult execute(ProgramInvoke programInvoke) { blockNumber = programInvoke.getNumber(); logTime("start"); - long use = System.nanoTime()-startTime; - Log.info("================step 0.1 : {}ns",use); - startTime = System.nanoTime(); VM vm = null; try { byte[] contractAddressBytes = programInvoke.getContractAddress(); @@ -339,16 +337,9 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm = VMFactory.createVM(); logTime("load vm"); - use = System.nanoTime()-startTime; - Log.info("================step 0.2 : {}ns",use); - startTime = System.nanoTime(); vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done - //Log.debug("++++++++++++++++++++"); - //Log.warn(programInvoke.toString()); - //Log.info("this.contractObjectRefCount: {}", this.contractObjectRefCount); - //Log.info("vm.heap.objectRefCount: {}", vm.heap.objectRefCount); boolean isUpgradedV240 = ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) >= ContractContext.UPDATE_VERSION_V240; if(isUpgradedV240) { if(contractObjects == null) { @@ -400,9 +391,6 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm.methodArea.loadClassCodes(classCodes); logTime("load classes"); - use = System.nanoTime()-startTime; - Log.info("================step 0.3 : {}ns",use); - startTime = System.nanoTime(); ClassCode contractClassCode = getContractClassCode(classCodes); String methodDesc = ProgramDescriptors.parseDesc(methodDescBase); MethodCode methodCode = vm.methodArea.loadMethod(contractClassCode.name, methodName, methodDesc); @@ -413,8 +401,18 @@ private ProgramResult execute(ProgramInvoke programInvoke) { if (!methodCode.isPublic) { return revert("can only invoke public method"); } - if (!methodCode.hasPayableAnnotation() && transferValue.compareTo(BigInteger.ZERO) > 0) { - return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); + int assetChainId = programInvoke.getAssetChainId(); + int assetId = programInvoke.getAssetId(); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (transferValue.compareTo(BigInteger.ZERO) > 0) { + if (mainAsset) { + if (!methodCode.hasPayableAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); + } else { + if (!methodCode.hasPayableMultyAssetAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payableMultyAsset method", contractAddress, methodCode.name)); + } + } // 不允许非系统调用此方法 boolean isBalanceTriggerForConsensusContractMethod = BALANCE_TRIGGER_METHOD_NAME.equals(methodName) && @@ -435,9 +433,6 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } logTime("load method"); - use = System.nanoTime()-startTime; - Log.info("================step 0.4 : {}ns",use); - startTime = System.nanoTime(); ObjectRef objectRef; if (programInvoke.isCreate()) { objectRef = vm.heap.newContract(contractAddressBytes, contractClassCode, repository); @@ -448,18 +443,15 @@ private ProgramResult execute(ProgramInvoke programInvoke) { // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done if(isUpgradedV240) { if(contractObjectRefCount == null) { - //Log.info("新建map和heap.objectRefCount"); contractObjectRefCount = new HashMap<>(); contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); } else { BigIntegerWrapper objectRefCount = contractObjectRefCount.get(contractAddress); if(objectRefCount != null) { if(programInvoke.isInternalCall()) { - //Log.info("共享heap.objectRefCount: {}", objectRefCount.hashCode()); vm.heap.objectRefCount = objectRefCount; } } else { - //Log.info("新增heap.objectRefCount"); contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); } } @@ -467,20 +459,16 @@ private ProgramResult execute(ProgramInvoke programInvoke) { // end code by pierre logTime("load contract ref"); - use = System.nanoTime()-startTime; - Log.info("================step 0.5 : {}ns",use); - startTime = System.nanoTime(); if (transferValue.compareTo(BigInteger.ZERO) > 0) { - getAccount(contractAddressBytes).addBalance(transferValue); + // 合约相应资产余额变化 + getAccount(contractAddressBytes, assetChainId, assetId).addBalance(transferValue); } vm.setRepository(repository); vm.setGas(programInvoke.getGasLimit()); vm.addGasUsed(contractCodeData == null ? 0 : contractCodeData.length); logTime("load end"); - use = System.nanoTime()-startTime; - Log.info("================step 0.6 : {}ns",use); vm.run(objectRef, methodCode, vmContext, programInvoke); @@ -544,14 +532,11 @@ private ProgramResult execute(ProgramInvoke programInvoke) { Map contractState = vm.heap.contractState(); logTime("contract state"); - //Log.error(programInvoke.toString()); for (Map.Entry entry : contractState.entrySet()) { DataWord key = entry.getKey(); DataWord value = entry.getValue(); - //Log.info("add storage row, key: {}, value: {}", key.asString(), value.asString()); repository.addStorageRow(contractAddressBytes, key, value); } - //Log.debug("---------------------\n"); logTime("add contract state"); if (programInvoke.isCreate()) { @@ -600,7 +585,8 @@ public ProgramResult stop(long blockNumber, byte[] address, byte[] sender) { if (!FastByteComparisons.equal(sender, accountState.getOwner())) { return revert("only the owner can stop the contract"); } - BigInteger balance = getTotalBalance(address, null); + // 链主资产 + BigInteger balance = getTotalBalance(address, null, CHAIN_ID, ASSET_ID); if (BigInteger.ZERO.compareTo(balance) != 0) { return revert("contract balance is not zero"); } @@ -633,14 +619,14 @@ public ProgramStatus status(byte[] address) { } } - public ProgramAccount getAccount(byte[] address) { - ByteArrayWrapper addressWrapper = new ByteArrayWrapper(address); - ProgramAccount account = accounts.get(addressWrapper); + public ProgramAccount getAccount(byte[] address, int assetChainId, int assetId) { + String accountKey = addressKey(address, assetChainId, assetId); + ProgramAccount account = accounts.get(accountKey); if (account == null) { BigInteger balance; BigInteger freeze; String nonce = null; - ContractBalance contractBalance = getBalance(address); + ContractBalance contractBalance = getBalance(address, assetChainId, assetId); if (contractBalance != null) { balance = contractBalance.getBalance(); freeze = contractBalance.getFreeze(); @@ -649,25 +635,25 @@ public ProgramAccount getAccount(byte[] address) { balance = BigInteger.ZERO; freeze = BigInteger.ZERO; } - account = new ProgramAccount(address, balance, nonce); - account.setFreeze(freeze); - accounts.put(addressWrapper, account); + account = new ProgramAccount(address, balance, nonce, assetChainId, assetId); + account.addFreeze(freeze); + accounts.put(accountKey, account); } return account; } - private ContractBalance getBalance(byte[] address) { + private ContractBalance getBalance(byte[] address, int assetChainId, int assetId) { ContractBalance contractBalance = null; if (vmContext != null) { - contractBalance = vmContext.getBalance(getCurrentChainId(), address); + contractBalance = vmContext.getBalance(getCurrentChainId(), assetChainId, assetId, address); } return contractBalance; } - private BigInteger getTotalBalance(byte[] address, Long blockNumber) { + private BigInteger getTotalBalance(byte[] address, Long blockNumber, int assetChainId, int assetId) { BigInteger balance = BigInteger.ZERO; if (vmContext != null) { - balance = vmContext.getTotalBalance(getCurrentChainId(), address); + balance = vmContext.getTotalBalance(getCurrentChainId(), assetChainId, assetId, address); } return balance; } @@ -709,6 +695,7 @@ private static List getProgramMethods(Map clas method.setReturnArg(methodCode.returnArg); method.setView(methodCode.hasViewAnnotation()); method.setPayable(methodCode.hasPayableAnnotation()); + method.setPayableMultyAsset(methodCode.hasPayableMultyAssetAnnotation()); method.setJsonSerializable(methodCode.hasJSONSerializableAnnotation()); method.setEvent(false); return method; @@ -772,6 +759,7 @@ private static Set getEventConstructor(Map cla method.setArgs(methodCode.args); method.setReturnArg(methodCode.returnArg); method.setView(false); + //TODO pierre payable method.setPayable(false); method.setJsonSerializable(false); method.setEvent(true); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java index a717b32e18..ce7e51dad7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java @@ -57,6 +57,16 @@ public class ProgramInvoke { */ private BigInteger value; + /** + * 转入资产的链ID + */ + private int assetChainId; + + /** + * 转入资产ID + */ + private int assetId; + /** * 当前块编号 */ @@ -149,6 +159,22 @@ public void setValue(BigInteger value) { this.value = value; } + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + public long getNumber() { return number; } diff --git a/module/nuls-smart-contract/src/main/resources/languages/en.properties b/module/nuls-smart-contract/src/main/resources/languages/en.properties index aed53a92ff..83ed0c00cd 100644 --- a/module/nuls-smart-contract/src/main/resources/languages/en.properties +++ b/module/nuls-smart-contract/src/main/resources/languages/en.properties @@ -13,7 +13,7 @@ sc_0012=The format of the symbol is incorrect. sc_0013=Contract Locked sc_0014=The value of decimals ranges from 0 to 18 sc_0015=The value of totalSupply ranges from 1 to 2^256 - 1 -sc_0016=The minimum value of price is 25 +sc_0016=The gas price is error sc_0017=Cannot delete contract when balance is not 0 sc_0018=The contract deleter must be the contract creator sc_0019=The contract has been deleted @@ -38,6 +38,7 @@ sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. sc_0040=Duplicate transaction of contract return gas. +sc_0041=There are too many coinTo in the contract. sc_0100=Insufficient balance sc_0101=Transaction fee is not right diff --git a/module/nuls-smart-contract/src/main/resources/protocol-config.json b/module/nuls-smart-contract/src/main/resources/protocol-config.json index 314183e839..4afc546e40 100644 --- a/module/nuls-smart-contract/src/main/resources/protocol-config.json +++ b/module/nuls-smart-contract/src/main/resources/protocol-config.json @@ -1,15 +1,15 @@ [ { - "version": "4", + "version": "8", "extend": "1", "validTxs": [ { - "type": "19", - "systemTx": true, + "type": "16", + "systemTx": false, "unlockTx": false, + "verifySignature": true, "verifyFee": true, - "verifySignature": false, - "handler": "ContractReturnGasProcessor" + "handler": "CallContractProcessorV8" } ], "validMsgs": [], @@ -17,48 +17,16 @@ "invalidMsgs": "" }, { - "version": "1", - "extend": "", + "version": "4", + "extend": "1", "validTxs": [ - { - "type": "15", - "systemTx": false, - "unlockTx": false, - "verifySignature": true, - "verifyFee": true, - "handler": "CreateContractProcessor" - }, - { - "type": "16", - "systemTx": false, - "unlockTx": false, - "verifySignature": true, - "verifyFee": true, - "handler": "CallContractProcessor" - }, - { - "type": "17", - "systemTx": false, - "unlockTx": false, - "verifySignature": true, - "verifyFee": true, - "handler": "DeleteContractProcessor" - }, - { - "type": "18", - "systemTx": true, - "unlockTx": false, - "verifyFee": true, - "verifySignature": false, - "handler": "" - }, { "type": "19", "systemTx": true, "unlockTx": false, "verifyFee": true, "verifySignature": false, - "handler": "" + "handler": "ContractReturnGasProcessor" } ], "validMsgs": [], @@ -66,7 +34,7 @@ "invalidMsgs": "" }, { - "version": "4", + "version": "1", "extend": "", "validTxs": [ { @@ -107,7 +75,7 @@ "unlockTx": false, "verifyFee": true, "verifySignature": false, - "handler": "ContractReturnGasProcessor" + "handler": "" } ], "validMsgs": [], diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 new file mode 100644 index 0000000000000000000000000000000000000000..b34b71c558e0af5fd7c8260bac47eecdba678611 GIT binary patch literal 9061 zcmb7p2Q=Kv|Muz@(R=SbSVTz{(V}-&7mL;V>Vyy_BwE<0AsdMjB?wWX*C2wZ(Mxnu zf+#8e>*n5<Q!=0|0OV0ER?!9l$xm1z-ZKouP0z z3@-Ss8vxM$Wlwz6sDFAoxC#EcBk_+NUA>**zv)f$KYClcxq5j*t-XFTjNx~~;5JTw z4J8NQ;^G3{C;a%A1^zTt&e_e{Nf`#Ufq4r2^^YSUYHoA}y z&`%WjCo8Gw-lHBDmC$gId$@=wlWKD{yE0}SjtOf;Pax(K^SWNntjx?}hz=~nBW;Wx z^|j^X^oi8}lo_~Lv;6WPct+CtD84b|8$}aV9aRgir!3~qz0{O;GfKGP>wBq%_sWar z5X2vifOF}oU`V^^u)9>a^m}wagAO{Y5p<)Jol1Zhx}VfdaT_0zo2J4I1#=g%8p@~n z`ED<}tuw8>dulP!U6K~7>f#jXWV;xLylM=2ct5rq@=pI@8q?BRF>QSVLw$8`TZC=_ zR5SyxV;2$dV&tjV^Y(yV=M_bf34Ry52i}`h&gr!dlli035Ierg7=M*eammW&9M65y z__aPm$BxR82Vnz7qxc5$0uaHq;S2RTi8W+t4fPW3*o(c1GC8S`%nR6 zdYmLZSAGuY6l-^3f}=Koa3Z0IfjG{?vpxzQ7API=omyHc-xhmd8i43WzDG_JQM%G8 z!fn?m7fXCoT8+z%)+d=;dSfQ|j^jA6CuC)>#@O>I6B_#C_PH9Q6}giNt&16dG%l>7 zRb22?)W6F}x>lD-)v+K!)xq7-LfyG4L~6y^mf36#%|t|0?GQT1sQX>mirgW{8ZM>j z;9nvqI8bdId#azNQXb{b1Wc;w67nK%BR9@gmpgXX%;mVxl~fv-7#LY?V;GfW#5pjP zNErrZOH;_(v03+5PYQb0G!z}tZQ#wbe$}whs5wpGb?C#KPKs>reqW!vv~E%lz~cc* zF9#CCm0~&Joq~c)Rp1XJCMOwvcsNHr==s~qJFEVWzm252cL42d*o+p8`2;Z)10sFy zJ?B@7$dTCxbjL$X-i|}UEYt@gKVUviSjuOcB6il#c(^R#4<$iFq!X=2mGPM_`@Q239n(6H+2L*%N=VsqM}(9Pa1-GD1i7z z89ZYVz;vTP4BbKcVD4b^Nr=3=;?V2uqhmT?G&u9Ph!$IH@C?^Tf0Mtw7H zcnF!))c$~p09D2+T?VenhP{YSCAjM_38nfv|CO+}3P0Po&yf|GYBdvTo|o9ILdw8a zFKW8VT3ORl!mXFlXEZBl#FfYb)$_I?-jW1sv2<)xfE@4+&~sW>Mvs$aNJfRoq6rG| z8gC)}Nz!C2<5oh91%cbq8WQ))UqvnkKOY!mgXySe+0Sq0WxFwk2YvL4DhggDEcg^W z#L4>Edp@0EG!rgnr}Qn!DwFl50R!_BIJ;ij9?3tPJK^?>6U^9O@NtQ+D?4`mo#Oc!$)%T{dYb`Ebc zY`*|eGnL=SKIC$q5&TyAA!)DckY{3)Q0(^f6NiO?=_Lz^p~(nMxS)~oofC9zH5}ah z%tCc-OaMR^_+51Ww^nigNvjlnV6I-@RqD#V+o&`)HZ~cyj}JD)2V3kKcFF9Qw~yZI zSG~^EXYQ=zzw}H&kgtqCF;SLRN|Y~{`b;(|Fm>j8yim; z9R7Xr#riXD6Z+)eT<6#%m`E#Z)BUnMeRZdW};VAaR zyBQ(OFe-~fj1G%q0I3%#(d|5z9dVX6-)B?(K3!S4+@qZbS-Ur8BoF9MzHV)W0F2rq zBRuMypadzrX7>@5kM8$48XM#}ah4eQ5g87DY>0M3&)x8{5>&y=GHJZH_39dPtE;t0 z?AOwl?Ai@0QNaN!v#ZBBox7&!9VSCNn2zhgD^n|56?KQ!@9@A_RF$w&4(sdn%Nf_k zcU8Otrs8R#GRm|cxYe!SY0|0Kz4VYwk~4YEp)zFK)^!|ot&VNb!g_d1taWHT0Q6u( zR25cQyJgIwofRu6w`Y*J)LlUEqWfj zTfvoNAr{H*_;fl>Sc>21h96QqCwTHx$+08%hoH?jd`ff%qAr>8y^*m%IxbN0{Xwxe zR?QvWK~1?KlZWX>RXcbBV}4|AK>91`@sI+}(w-5b$H#l>47vs4DTIo)Ej#owHVa?I z%G6cqi&e%AhN>ACCN#(oF&y7u;C9})8Mg2(a$azfx1WMQq#9CfV%ACH2q%(AjDX^G zqPg(+vG^H+b3*Mta`hmwUeD@l)~btAxLkIH5p|r{+@JQ*jtsonMxT(H+MdY?^@sP{ z!TYtSpFFv|xj_$AQ-T@}MVYr=_SgJeiXecP+8LFHy~xTl7&@v;SWc3<-lmp*%y03g zKqjx0H2cMZKxT$m_?Z0BGFqT9+vjwD&@P?OM1J8@2d6BEtSRB3prhI2K!b z7ByPZ9ze-`fjUFwcHH#UYR%V0>fQXPX3E!Qbovi2BSdJXm=UnLm{D%qxCqnt7HH4l zRWaqp6epJBZFD1eIFL#|fg{>*%^SRWm*(shN1!yu`@#LmK1*48yoaQCNwoVebxAp5 zob?_>= zl(@>m*d-S-6GoRo9G7OE3heMU^l<$IZ39KD0)qqVz-0BLu~$B`g$b5=yp%xzrif~h zGUiy^+4dWE`)c5QWsN6?#}}H&z@C=YgR&QV>7AjbhF5B93tOca!1x#OUxu&2DGI+} zAvY@D;35oF*nzt)6g>-b%n7RnxW_?n?YWRE+0pu|4H8A~%@HJ!3ErIrsLXCF`x`xy zrC`eaFDYNyH>B8Jd)v6K$@8$Lk^0o-j9lktqb8%96ViYMA?iMSrK)1=ArgM6T8S~` ztvJHLzsm5YJ#g+oadJoNqkcQXQZMam<;$UQxRpXW9?ZfcFF_wRZ*i-_?t>a>sq{Z3 zb@`NF*F{p-u}N@s30+updQuF3ZTmR@gNo4Bd}yH5eWo2_qoz7ek?OON$6U_pJWG1` z;%Ye%zp=6o_y(4``{JZL+HxmPQZ$%9AfzJa&CM#-4G%+m8;x{!gS?D*?96fn=Z`YB z@-mkaDBA`W-z=+V+W9ozl!oiHT#7S*8+Fht`C>MKDFNk`B%IH2I0aW|J8(c<7qcYj?m%GnRRS%z zd$y9t(up*v$zzKDgC|(`Wv5L_)m|~ zITVNk%=d47i-agsRPVkJYH7@Tn-q~yRCpUMP26$ur* z_5FKXmq+zlrJNq5SX{{<)7(;JyITQg2_a)eyvzK00oiab7k6LaskyUX*GS&FAz?Kr zW^k@rOQLWD`1xk5z}TkD`(~Qr5wvSvgEs=M!~mCvwT?9@7Pg}kBF9FFQdhryq%M@!;`M389d?vB=JQj-tpM0$2%{n1Glq8Z58UElZ%(h5_9g6`G zrxO;ccvOT8zE~7;;^M3zb$ft)Ni4ewm%*#dATZozuM{H)?Ud+*GUz8P6v=hJC0gb` z5UmaMhgvzqG`yX?{AE!Q{@;FLL_*&w;~kCq6T`>P0*JxN!}9Ui%^7)ehU7&T*Vo$h z(g`^(Y1oLHj(tDY^F=s()w5S^g?GOS(=09QeqdEp@l8`cHVb41|V%4%_n7acsOk7I1nEPj+M|RU1oqW=$ zknpLYEqk#;AUmc&XKHY5tb@=e6r~q9xJ|pcWOyjbdwxs1^najTRZmM(59a9rb#@3i z<^LZosn={3I@J=2@vBF?$^-=YP5p^Nr686|xWq2nq(-S`2l_SDVyc;{iv!et07kqy zA?>V`wM1^`g<}Ts_-SVmAA{%1-^+(G;}E!Eyfl` zn7d0Br04Q2xHiC__}l_d5&{bmW`5M{M6DaP#3XU+&-RM>3$?b#)exk5d+^O-X`w{CTxEE#&wJWh9jh&n(!JEf}O`RiISMPdPl<9n+ z&KPSE+r~O&ox>j=e9C&)Z&|VAMBfiT+a&Bi7*V%fZqm`Mw!FV*2fe^iZ{CGWh9}ANfEUq1kE!H^7X;OC}LF?hV zP7_udE9Uc*4tdLb1MT`L$07cvk!UD>tA5Kd=bt#%fZKg1)mx`V69Ys}FE1d+Opn%b zfdOercbQoCb~rh16sD@|@xZJpb8T(_~!>UQWF-=$T`G)~I^ z=&fGfRdFUSGj5}lpEKfh(4yu%pf!&)`Qk;8o9y<}#e{ z7lIdBO_Xv&yGhBy3(C`@#DoT{-5uuHBCTF)ure0;N^r@u>9dQrzOh(vGZ%@e5Q?lA z9@x+rQM2)5v7mNjr`@(=WH)PXE*{pEO!^|CC5)$kBFX4EL8J+rgh1Nl247{0rkFj= z1-1An4U(^9AzK)R*9M_iKH6mH2EN_r=stN2*IIF6WV-<8isU5kElH_ibZ;~kw%1#Yq4jTV(G{OYkVKOXcl*gG>X!1T zlP$PoKW8jV-Ia*PiocWZZ`M-Yi2#js)*9sHxRv-sU8llFz)L#VZ;thpC zXc+SNpZxXxw|TaRFXvf`P4iR|YZIE~L?w7uaSouOrYk4-N~RHvpJ?Y088fV4pO)5i z=kOP6_o$pgW_k}oP@W79E??k_5quQKv%kF`fAl{Myd0eWPGTSs6S`!w#F2q=uUxGp zFB*$e&=}-`7yV2goTR#9LjOLFO_sjZc;n_ z&gyDb*4CD!OYoO3pBMm}tcAfW!0U1}^R9zeY)$j-0aHdi_f-$087+eS zEf8@=#$6c}tM(VS3b{PyTCjk~174jy+DES~JooKMkL!z{RPC@7ykgOW_e=k6ckPgN0 zNDX%y*F;+NXgXcF)!jXBY+o-~O*8vkS(_q#P_K1BWaaDRbYCi^?J}>}9OdLlduo0i zfJCDLecmc#?2fu(ra_w#*UkdgylzJRSWGnmU#hQCpUH5;)TgaSAw(m4CT|bja(os- z8T}9OPw$S&s@~WVN}Iy4e;2#4{Yjr-r`gNjgl!`K4nP5B{_TpMY!6g-c`iic~q3s}#>6dQN+uaV{2H8#CwHjP|@1-@C=II1k zKSxrzH;%?u(;a%ORDKhSxK@6PoVE-R`6Ctug6g6@Ro9RzP5@!hKP5 zXy3+#G%ZC|(5pR-3#oc5&U@9exvd-vL!L5*+REsJ>SF8I!xP1INOf|0Pjc>lK;=jq zuaq9+-WGD;VeVdB`i5HJ>kR7LcaNqnEqa@%ed0^4-$(DA4i5eH7?Vv@D}kc)+U{i< zXG`*oJv6@PyB*XIS>Ht#D2u)2X5{jI8#&0^_wkcRMQ4M*EQbrso&&3ZrIo$A;81xg z>?y?zpjZFhWru3de0GBykL6+%`ci?9PB7nfVHVijT9J|cr2PB@M;U~b21!r*%k%CB z=d3(JX|L&D@jn_m9^ls{O4KSY0!)eL$%yv=D z-$MO=1<+Hj&SRgi0GvLMXO@li2kdj#^k>xb*~HV$Ix`cL%=~u6KhzR_#yy{C`f;^3 zs1x^F+;f@9-<_8qQIQ0HKs}di`gyJA(=De-t20~v52$A;te^4EXBkeDHfN?p`0rQ! zV+!ZzInIaFr}>IAD<%5(bNnKE@$+QoBgxY!{mi&X{{3YCJ7)iRuJaMqX>59C4@m$0 zTt7srKTmPq@jngC&J2zG4^#ZVK<#JD^N#Lm$Z%%$6o0_{F@X3P_`DbJ;}u|``UCJe zulW@9SK5E-L7bU6?H^G8@h5&%tMd=dsYh{US^p03Xa7Q54GSem0F>C014>XWB>m~H F{{t<~AMgMG literal 0 HcmV?d00001 diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java index 7edda051b2..058c733798 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java @@ -34,6 +34,7 @@ public class ContractMergeContractTransferTest { + int assetChainId = 2, assetId = 1; @BeforeClass public static void initClass() { Log.info("init log."); @@ -62,11 +63,11 @@ private ContractData makeCallContractData(String sender, String contractAddress, @Test public void mergeContractTransferTest() throws IOException, NulsException { List transfers = new ArrayList<>(); - transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 2, 3, 4}, BigInteger.ONE)); - transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 2, 3, 4}, BigInteger.TWO)); - transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 3, 4, 5}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 4, 5, 6}, BigInteger.TEN)); - transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 4, 5, 6}, BigInteger.TWO)); - transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 5, 3, 4}, BigInteger.ONE)); + transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 2, 3, 4}, BigInteger.ONE, assetChainId, assetId, 0)); + transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 2, 3, 4}, BigInteger.TWO, assetChainId, assetId, 0)); + transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 3, 4, 5}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 4, 5, 6}, BigInteger.TEN, assetChainId, assetId, 0)); + transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 4, 5, 6}, BigInteger.TWO, assetChainId, assetId, 0)); + transfers.add(new ProgramTransfer(new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 1, 2, 3}, new byte[]{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 8, 8, 5, 3, 4}, BigInteger.ONE, assetChainId, assetId, 0)); CoinData coinData = null; CoinFrom coinFrom = null; CoinTo coinTo = null; diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java index b52dfd5bbb..bc87573fb1 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java @@ -262,7 +262,7 @@ public class ContractVmTest extends MockBase { public void createAndInit() throws Exception { // 加载协议升级的数据 ProtocolGroupManager.setLoadProtocol(false); - ProtocolGroupManager.updateProtocol(chainId, (short) 4); + ProtocolGroupManager.updateProtocol(chainId, (short) 5); // -------------------------------------------------------------------------------------// InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-testA-testA.jar").getFile()); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java index 8802f10397..5d6b4aea9e 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java @@ -87,7 +87,7 @@ public class ContractPOCMLocalTest extends Base { class VMContextMockBalanceAndBlock extends VMContextMock { @Override - public ContractBalance getBalance(int chainId, byte[] address) { + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { ContractBalance balance = ContractBalance.newInstance(); balance.setBalance(contractBalance); return balance; diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index abee6ad926..5f99c917db 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -44,8 +44,10 @@ import io.nuls.contract.testmodel.TransactionDto; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; +import io.nuls.core.constant.TxType; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.io.IoUtils; import io.nuls.core.parse.I18nUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; @@ -80,19 +82,19 @@ public static void initClass() { @Test public void importPriKeyTest() { - //importPriKey("b54db432bba7e13a6c4a28f65b925b18e63bcb79143f7b894fa735d5d3d09db5", password);//打包地址 tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp + importPriKey("b54db432bba7e13a6c4a28f65b925b18e63bcb79143f7b894fa735d5d3d09db5", password);//打包地址 tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG - //importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD - //importPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78", password);//27 tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24 - //importPriKey("4100e2f88c3dba08e5000ed3e8da1ae4f1e0041b856c09d35a26fb399550f530", password);//28 tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD - //importPriKey("bec819ef7d5beeb1593790254583e077e00f481982bce1a43ea2830a2dc4fdf7", password);//29 tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL - //importPriKey("ddddb7cb859a467fbe05d5034735de9e62ad06db6557b64d7c139b6db856b200", password);//30 tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL + importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD + importPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78", password);//27 tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24 + importPriKey("4100e2f88c3dba08e5000ed3e8da1ae4f1e0041b856c09d35a26fb399550f530", password);//28 tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD + importPriKey("bec819ef7d5beeb1593790254583e077e00f481982bce1a43ea2830a2dc4fdf7", password);//29 tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL + importPriKey("ddddb7cb859a467fbe05d5034735de9e62ad06db6557b64d7c139b6db856b200", password);//30 tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL // - //importPriKey("979c0ceeba6062e46b8eaa0f8435951ce27859581a39d4d2e7c0eef1baac15d3", password);//5 tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM - //importPriKey("edacaeb4ae6836ead7dd61d8ab79444b631274a303f91608472c8f99d646bbdf", password);//6 tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29 - //importPriKey("ab69dab113f27ecac4024536c8a72b35f1ad4c8c934e486f7c4edbb14d8b7f9e", password);//7 tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf - //importPriKey("14e86ce16c0a21fe3960e18a86c4ed943d4cf434cb4dc0c761cf811b20486f43", password);//8 tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S - //importPriKey("a17e3161cc2b2a5d8ac2777f4113f6147270cda9ec9ba2ca979c06839f264e39", password);//9 tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja + //importPriKey("979c0ceeba6062e46b8eaa0f8435951ce27859581a39d4d2e7c0eef1baac15d3", password);//5 tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM + //importPriKey("edacaeb4ae6836ead7dd61d8ab79444b631274a303f91608472c8f99d646bbdf", password);//6 tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29 + //importPriKey("ab69dab113f27ecac4024536c8a72b35f1ad4c8c934e486f7c4edbb14d8b7f9e", password);//7 tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf + //importPriKey("14e86ce16c0a21fe3960e18a86c4ed943d4cf434cb4dc0c761cf811b20486f43", password);//8 tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S + //importPriKey("a17e3161cc2b2a5d8ac2777f4113f6147270cda9ec9ba2ca979c06839f264e39", password);//9 tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja //importPriKey("2a1eff43919f52370682c527a5932ca43ea0d65ebd3b4686b5823c5087b33355", password);//10 tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv //importPriKey("425c9c6e9cf1c6dbb51fe22baf2487b273b0b3fe0f596f6e7b406cbb97775fd0", password);//11 tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB //importPriKey("3ba402d5138ff7439fd0187f6359b1b1e1ec0529544dc05bf0072445b5196e2d", password);//12 tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE @@ -121,6 +123,7 @@ public void importPriKeyTest() { } + @Test public void transfer() { TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(chain.getChainId(), chain.getConfig().getAssetId()) @@ -178,7 +181,7 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { @Test public void getBalance() throws Exception { - Map balance0 = LedgerCall.getBalanceAndNonce(chain, toAddress7); + Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, toAddress7); Log.info("balance:{}", JSONUtils.obj2PrettyJson(balance0)); } @@ -260,7 +263,7 @@ public void contractResultList() throws Exception { */ @Test public void contractTx() throws Exception { - Object[] objects = getContractTx("3de9c8c84eb5e2ee9ebb53009cf77bbcd047f7ddcbf9e0e3fd7ab0bd36b1e141"); + Object[] objects = getContractTx("5135f7e55862c08257ce55fc5d1659bf0fe8c59eccf7a23b18f4020361f187c4"); Log.info("contractTx-result:{}", JSONUtils.obj2PrettyJson(objects[0])); Assert.assertTrue(null != objects[1]); } @@ -272,7 +275,7 @@ public void contractTx() throws Exception { public void getTxClient() throws Exception { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); - params.put("txHash", "3de9c8c84eb5e2ee9ebb53009cf77bbcd047f7ddcbf9e0e3fd7ab0bd36b1e141"); + params.put("txHash", "f0de6f185c99dd2c8b20ec0a17e83d8278552fe5aaf4ed45e3f436ddaccbc8d1"); Response dpResp = ResponseMessageProcessor.requestAndResponse(ModuleE.TX.abbr, "tx_getTxClient", params); Map record = (Map) dpResp.getResponseData(); Map resultMap = (Map) record.get("tx_getTxClient"); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index f9e6783a37..33bea523a1 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -110,7 +110,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); - Log.info("begin addOtherAgent"); + /*Log.info("begin addOtherAgent"); this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("047b1c71c9d99d8adb016def355e207996c573364ec7eace3dae6c1746e62785").toArray()); Log.info("begin depositForOwn {}", sender); @@ -139,7 +139,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { Log.info("sender locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", sender)); Log.info("toAddress5 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress5)); Log.info("toAddress6 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress6)); - Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm)); + Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm));*/ } @Test diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/VMContextMock.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/VMContextMock.java index 4031855876..e2c1ff9cf9 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/VMContextMock.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/VMContextMock.java @@ -44,12 +44,12 @@ public static void main(String[] args) { } @Override - public ContractBalance getBalance(int chainId, byte[] address) { + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { return ContractBalance.newInstance(); } @Override - public BigInteger getTotalBalance(int chainId, byte[] address) { + public BigInteger getTotalBalance(int chainId, int assetChainId, int assetId, byte[] address) { return BigInteger.valueOf(chainId); } From 0bdd1e1fb0a3fcb1f1c0c3e60dd56491fa216f82 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 30 Oct 2020 16:42:04 +0800 Subject: [PATCH 138/304] contract multi-asset test and fix bug --- .../contract/vm/program/ProgramTransfer.java | 3 + .../vm/program/impl/ProgramExecutorImpl.java | 8 +- .../test/java/io/nuls/contract/base/Base.java | 10 +- .../mock/contractvm/ContractVmTest.java | 2 + .../tx/multyasset/ContractMultyAssetTest.java | 202 ++++++++++++++++++ .../src/test/resources/multi-asset-contract | Bin 0 -> 4412 bytes 6 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java create mode 100644 module/nuls-smart-contract/src/test/resources/multi-asset-contract diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java index f24e82175c..0b7b23839b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java @@ -47,6 +47,9 @@ public ProgramTransfer(byte[] from, byte[] to, BigInteger value, int assetChainI this.from = from; this.to = to; this.value = value; + this.assetChainId = assetChainId; + this.assetId = assetId; + this.lockedTime = lockedTime; } public void setFrom(byte[] from) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 1c58d88d19..ea7669b2ed 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -403,8 +403,14 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } int assetChainId = programInvoke.getAssetChainId(); int assetId = programInvoke.getAssetId(); - boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; if (transferValue.compareTo(BigInteger.ZERO) > 0) { + if (assetChainId == 0 && assetId == 0) { + assetChainId = CHAIN_ID; + assetId = ASSET_ID; + programInvoke.setAssetChainId(assetChainId); + programInvoke.setAssetId(assetId); + } + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; if (mainAsset) { if (!methodCode.hasPayableAnnotation()) return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java index f0e8ba98bf..008582474e 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java @@ -336,16 +336,22 @@ protected Map makeCreateParams(String sender, byte[] contractCode, String alias, } protected Map makeCallParams(String sender, BigInteger value, String contractAddress, String methodName, String methodDesc, String remark, Object... args) { - return this.makeCallParams(sender, value, 2000000L, contractAddress, methodName, methodDesc, remark, args); + return this.makeCallParams(sender, value, 2000000L, 25L, contractAddress, methodName, methodDesc, remark, chainId, assetId, args); } protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, String contractAddress, String methodName, String methodDesc, String remark, Object... args) { + return this.makeCallParams(sender, value, gasLimit, 25L, contractAddress, methodName, methodDesc, remark, chainId, assetId, args); + } + + protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, Long gasPrice, String contractAddress, String methodName, String methodDesc, String remark, Integer assetChainId, Integer assetId, Object... args) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); params.put("sender", sender); params.put("value", value); + params.put("assetChainId", assetChainId); + params.put("assetId", assetId); params.put("gasLimit", gasLimit); - params.put("price", 25); + params.put("price", gasPrice); params.put("contractAddress", contractAddress); params.put("methodName", methodName); params.put("methodDesc", methodDesc); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java index bc87573fb1..530f6f6c99 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.nuls.base.basic.AddressTool; import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.mock.basetest.MockBase; import io.nuls.contract.util.Log; import io.nuls.contract.vm.program.ProgramMethod; @@ -261,6 +262,7 @@ public class ContractVmTest extends MockBase { @Before public void createAndInit() throws Exception { // 加载协议升级的数据 + ContractContext.CHAIN_ID = 2; ProtocolGroupManager.setLoadProtocol(false); ProtocolGroupManager.updateProtocol(chainId, (short) 5); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java new file mode 100644 index 0000000000..1a6e15c1d7 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -0,0 +1,202 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.tx.multyasset; + +import io.nuls.contract.mock.basetest.ContractTest; +import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.Log; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.Map; + +import static io.nuls.contract.constant.ContractCmdConstant.CALL; +import static io.nuls.contract.constant.ContractCmdConstant.CREATE; + +/** + * @author: PierreLuo + * @date: 2020-10-30 + */ +public class ContractMultyAssetTest extends BaseQuery { + + protected long gasLimit = 200000L; + protected long gasPrice = 1L; + protected long minutes_3 = 60 * 3; + + /** + * 创建合约 + */ + @Test + public void createContract() throws Exception { + InputStream in = new FileInputStream(ContractTest.class.getResource("/multi-asset-contract").getFile()); + byte[] contractCode = IOUtils.toByteArray(in); + String remark = "test multy asset"; + Map params = this.makeCreateParams(sender, contractCode, "asset", remark); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Map map = waitGetContractTx(hash); + assertTrue(map); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(map)); + } + + /** + * 转入NULS,转出NULS,转出NULS锁定 + */ + @Test + public void nulsTest() throws Exception { + // 转入 3.2 NULS + this.callByParams("_payable", "3.2", null); + // 转出 1.1 NULS + Object[] args = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8))}; + this.callByParams("transferNuls", "0", args); + // 转出 1.2 NULS + Object[] argsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; + this.callByParams("transferNulsLock", "0", argsLock); + } + + /** + * 其他资产转入、转出、转出锁定 + * + * 如 2-2, 假设资产decimals=8 + */ + @Test + public void otherAssetTest() throws Exception { + // 转入 3.2 + this.callOfDesignatedAssetByParams("_payableMultyAsset", "3.2", null, 2, 2); + // 转出 1.1 + Object[] args = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), 2, 2}; + this.callOfDesignatedAssetByParams("transferDesignatedAsset", "0", args, 0, 0); + // 转出 1.2 + Object[] argsLock = new Object[]{toAddress17, new BigInteger("1.2").multiply(BigInteger.TEN.pow(8)), 2, 2, minutes_3}; + this.callOfDesignatedAssetByParams("transferDesignatedAssetLock", "0", argsLock, 0, 0); + } + + + /** + * 内部调用其他合约, 转入NULS,转出NULS,转出NULS(锁定) + */ + @Test + public void innerCall() throws Exception { + String methodName = "callOtherContract"; + String otherContract = ""; + // 转入 6.6 NULS + this.innerCallByParams(methodName, otherContract, "_payable", null, "6.6"); + // 转出 3.3 NULS + Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; + this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgs, "0"); + // 转出 1.1 NULS(锁定) + Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; + this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0"); + } + + /** + * 内部调用其他合约, 转入NULS,转出NULS,转出NULS(锁定) + * + * 内部调用带返回值 + */ + @Test + public void innerCallWithReturnValue() throws Exception { + String methodName = "callWithReturnValueOfOtherContract"; + String otherContract = ""; + // 转入 6.6 NULS + this.innerCallByParams(methodName, otherContract, "_payable", null, "6.6"); + // 转出 3.3 NULS + Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; + this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgs, "0"); + // 转出 1.1 NULS(锁定) + Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; + this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0"); + } + + /** + * 内部调用其他合约, 转入、转出、转出锁定 其他资产 + * 如 2-2, 假设资产decimals=8 + * 内部调用带返回值 + */ + @Test + public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { + String methodName = "callWithReturnValueOfOtherContractOfDesignatedAsset"; + String otherContract = ""; + // 转入 6.6 2-2 + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "_payable", null, "6.6", 2, 2); + // 转出 3.3 2-2 + Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferNuls", innerArgs, "0", 0, 0); + // 转出 1.1 2-2(锁定) + Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0", 0, 0); + } + + protected void callByParams(String methodName, String valueStr, Object[] args) throws Exception { + BigInteger value = new BigInteger(valueStr).multiply(BigInteger.TEN.pow(8)); + Map params = this.makeCallParams(sender, value, contractAddress, methodName, null, "", args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + protected void callOfDesignatedAssetByParams(String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { + BigInteger value = new BigInteger(valueStr).multiply(BigInteger.TEN.pow(8)); + Map params = this.makeCallParams(sender, value, gasLimit, gasPrice, contractAddress, methodName, null, "", assetChainId, assetId, args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + protected void innerCallByParams(String methodName, String otherContract, String innerMethod, Object[] innerArgs, String innerValueStr) throws Exception { + BigInteger innerValue = new BigInteger(innerValueStr).multiply(BigInteger.TEN.pow(8)); + Object[] args = new Object[]{otherContract, innerMethod, innerArgs, innerValue}; + Map params = this.makeCallParams(sender, BigInteger.ZERO, contractAddress, methodName, null, "", args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + protected void innerCallOfDesignatedAssetByParams(String methodName, String otherContract, String innerMethod, Object[] innerArgs, String innerValueStr, int assetChainId, int assetId) throws Exception { + BigInteger innerValue = new BigInteger(innerValueStr).multiply(BigInteger.TEN.pow(8)); + Object[] args = new Object[]{otherContract, innerMethod, innerArgs, innerValue, assetChainId, assetId}; + Map params = this.makeCallParams(sender, BigInteger.ZERO, contractAddress, methodName, null, "", args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } +} diff --git a/module/nuls-smart-contract/src/test/resources/multi-asset-contract b/module/nuls-smart-contract/src/test/resources/multi-asset-contract new file mode 100644 index 0000000000000000000000000000000000000000..4ea5b7a9f56c15099960b28e1ed8963854b08550 GIT binary patch literal 4412 zcmbtX2{@Ep8y+M}4KahVCz8P!W9;kLs+qBqEo7?@BQsgDrfg#=YY{>sQOZ8n?AuuS zvL(q{N_L?n|IAnF`!Dr<-}V2`T<`myx!&i#pL5Q8&Uv0&A5F7|5kRq5?$!o>Hoo5& z$WI+DW2E>=U2O^d?{4&f5wcqdM}Un7`E?li0{_)b2dR5fTg%88s-wN4L+Zq!#i7rD zXmLn4si)Ww)+aSK?IDKhZWBX`tJBj>WuHo57kw(|O-w~e;ZXQA$U`tA+$fS@h(oRT z5K|)!L1;sxrwuW*5$%Wa7;7UO^L!XvF6Z#$kST`v8p9&wn%T^uCa#oQiyliJRDhj6 z?j8yaxsOiRAA{KKK>y9b?a~F@-*~b7#mgS+hWD_w$N!Bx_pjVtFI~X<*y3=GKauo* zPQCqF$d)l301yoV01*Fx)S-|dDI^--y8*SoKql=v<>CcuJrpodSx{n4eXEV%9=g}r zAeORLxM$ z3cS13x0?K-zvE`2hTLi@Z<>^%)B1GSZ(hnI5Wi>c|NOG*W}bg;V9~J$jU#K6|uy z3gP^K)=Cb+fDIcl@BhqCCfJfwC9Eg1p2OJBp!p@FHk<#;1Cz%e0%)&j4n_r!osm2T z8B%m+BQ15j4>qrK5}T5L4!1asSeDXmXSMf&pD#3Xq?L%WXm-eqlMv>Jq^)ug8*cAM zjn-llI&;#vL9a??m?{U*i~=vDCu=7KA6rZ_h}`z^X(p*crWrhvlKTP1y2{ZEcnEM_ykzdeI`+oA5$E*6c; z4IaN%cM}gag?CP)net54NWT^2B=;GOEvN*QzgB zY|$Lk=h$CqGZp85n`H&OAac+L(l_X5>*7<1z{&bx7!zC=nFc1TBs&K@>K}Kd=5Lhd zGAhC+xJ+-pkgl*Z3yI}Ea{WeeD(l@wAWUwxP*sR2kZNtkdP?{MTd{E`mUcxCY+HPX zm}Ug@2rEaNN$_?Qh_qI6?JqGU5HD(QtKT@4^M;D=CMLDO-anvwu)vIQ4fC>PqDInQ zXVk-7w3cL%H6aRVVM{&Whc#d8NN_Smg&c|v2cci?IS=iRu6E|DakO(fUODpVbwpcg zR@5;5iJ=9e&?0L;&xm<$cSMbX!o`#~bLkSM1%BOPc^eO65WF)RoVB`JMOiCAo~w56 z9hJb1*!LUkqXvr%HVSVP3jLM|M16B!Rx6&@EnZD!3y`4jugYw%2bXBR=(k>9wC4?t z0rM`)fw?`fpO`*2#od|N5DCbceCutx8gTe>orCgFw`ObMq6<%5J=WxlZtKEQ`oS;A zdg67{f%1xUvkDhN-jUkWS<7KBMZ285*GsYG3y&n1ZY=WHi_mkqxSYL`n4vswq%u-$ zU%M{onL~1$WfrRBG#L?p#QnLdk}#xojvxlAO?13t!fWpnFHj{L@xg7MVY%0e-*8w0 zv(9Lcj17-enb2ri2GM!xT8wl>DBS!WNB@1E!6nVB=ZIfDN`HFCV*Y$`=aY`jTBl5xM3D~6>!IDTN zQ>yu_l8-)PpOxJGp>oeQ1wS)9iuaK?6MCNSsSA{(3d#Q_NJVpy3^%Vx9+VAGbPs`Wcsl#0ln0W2Uev>Of5!mVoC~ z)L5X&Melw1{*XtNz5R2&n+*OzhdyzZ>f-R`>U^P)V4vRSysIU2%5zA)s$MO<`+Qjv zVb?m8O_M(|MFhrbO4Vs7UsqN0g@9*(>)Cx3pDScpXQErOp0xSSgy%n*`INxU+}yz2 zfLf&CP6jrWzI#V!Fs;Y;wRp3DmAScn{(i+7s*_Xq_xL8x%@#y9R$CmwB-&C}=+Yh+ z$`pCv6_*jpfC3#*a@IIKr_a?OZE@RSL1CTNL9ZA1hnH##OxKySI3O6`Sb^LWLHM_w z?l;CfxMe8$Fw3f0hwV^^a){fuxXT(wXOGYu!VRCj0^GQsb?-U9*{swX@8HNWS$dzi zsoY~7f?C9rdGHJ8vSBOXZY)P98RD0&wR<->DA~f(VUy{wK`YxwMVcdVx!V^7KZDO& zMOaUCD~}{!5;UZ#iA^^~@cNJB(_X%9-zBMY0vs)UNAI06WSQSE{zR^3mvls*H;jE) z?YI~zhXBgEFM6uarocS3Mu!szc1XADGAK~YzTvnT3U-MWHU*(M0Lo8_(#_2E3JQcz z4X~kCo9;2Rk7j_;LKhEbbhI53Ide^thw853Q{Cfg{RiF?ii zy2Xw_9ZG^6*1OI;1>!}g7#7V=vKD79gDy*z?9=zxhxB*tCfq^L7n%fnUVe_pCtn={C!W;Wh1SkGUTiD zdnzHJlA^c5lf&hnXUfh{NhJCV2gls;{g5BdE9+hsmSGh@sv@}3>%tDSs&aHT`<2ct zg&y!AjX^SBO~LtyFZk1FdgHQa>qyS>HWH_1*JoBSq6hf{(djP~kg`gd8d-S1%@c7;U8b?fAXsc%u zQ`e2pH;l4vYr)>T&zQib_-d_>Um750^uU~ceH8=R3p6Xfcr@;;j+<+!W#wJ9%3&GX zsbljWfPhpZ=)9D7ny}5D+CtftthS2Hfw3^B$(O9|s*c^)-eoZDQ>`6%4KK4N*gtxD z@SM#C&O-mL{U)Rj1st$-278d{l2FZMfJ@nfDhy*8Sq_S{T@Y8Sl^6-Vx{_t`pb#- zdpJdL{e&Zb1^+MowZrsl1-8SLeZ}`5n0}|n{%%Go+2flX0Bmm`Cadiq-()A3>~wGU z=iuMLlGnlZw(f55FLKN8*(llNn^D-J{sr4_a?MVNUuT=0AlX-5|F0pw=boSQ`s>~Q nGZJzCu6f-xHNPATCDPBcKp#y@PMH9}e)2DYycgntlz;yLd;GR_ literal 0 HcmV?d00001 From ecb2f82bd9bb7906ade59b7b5ad28504750d84d1 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 30 Oct 2020 18:06:00 +0800 Subject: [PATCH 139/304] fix bug about balance of contract --- .../ContractNewTxFromOtherModuleHandler.java | 10 +------- .../test/java/io/nuls/contract/base/Base.java | 2 +- .../mock/pocm/ContractPOCMLocalTest.java | 2 +- .../io/nuls/contract/tx/base/BaseQuery.java | 6 ++--- .../nrc20/ContractNRC20TokenSendTxTest.java | 2 +- .../tx/pocm/ContractPOCMSendTxTest.java | 22 ++++++++---------- .../src/test/resources/pocmContract-v3 | Bin 0 -> 52579 bytes .../test/resources/pocmContract-v3-test2.jar | Bin 57483 -> 0 bytes 8 files changed, 17 insertions(+), 27 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/resources/pocmContract-v3 delete mode 100644 module/nuls-smart-contract/src/test/resources/pocmContract-v3-test2.jar diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java index 7b1640683f..7fb3b344c8 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxFromOtherModuleHandler.java @@ -139,7 +139,7 @@ public Transaction updateNonceAndVmBalance(int chainId, byte[] contractAddressBy contractBytes = asBytes(keySplit[0]); assetChainId = Integer.parseInt(keySplit[1]); assetId = Integer.parseInt(keySplit[2]); - programExecutor.getAccount(contractBytes, assetChainId, assetId).addBalance(lockFrom.getValue().negate()); + programExecutor.getAccount(contractBytes, assetChainId, assetId).addFreeze(lockFrom.getValue().negate()); } // 扣除转出 Set> _froms = contractFromValue.entrySet(); @@ -246,10 +246,6 @@ private LinkedHashMap[] filterContractValue(int chainId, Lis List tos = coinData.getTo(); for (CoinFrom from : froms) { - // 只记录主资产的余额变化 //TODO pierre // add by pierre at 2020-10-28 注释 - //if(from.getAssetsChainId() != chainId || from.getAssetsId() != assetId) { - // continue; - //} fromAddress = from.getAddress(); if (!ContractUtil.isLegalContractAddress(chainId, fromAddress)) { continue; @@ -264,10 +260,6 @@ private LinkedHashMap[] filterContractValue(int chainId, Lis } for (CoinTo to : tos) { - // 只记录主资产的余额变化 //TODO pierre // add by pierre at 2020-10-28 注释 - //if(to.getAssetsChainId() != chainId || to.getAssetsId() != assetId) { - // continue; - //} toAddress = to.getAddress(); if (!ContractUtil.isLegalContractAddress(chainId, toAddress)) { continue; diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java index 008582474e..a2eea12738 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java @@ -327,7 +327,7 @@ protected Map makeCreateParams(String sender, byte[] contractCode, String alias, params.put("sender", sender); params.put("password", password); params.put("alias", alias); - params.put("gasLimit", 200000L); + params.put("gasLimit", 800000L); params.put("price", 25); params.put("contractCode", HexUtil.encode(contractCode)); params.put("args", args); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java index 5d6b4aea9e..65ec60942b 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/pocm/ContractPOCMLocalTest.java @@ -177,7 +177,7 @@ private Response defaultRequestAndResponse(String moduleCode, String cmdName, Ma @Test public void createContract() throws IOException { - InputStream in = new FileInputStream(InvokeExternalCmdLocalTest.class.getResource("/pocmContract-v3-test2.jar").getFile()); + InputStream in = new FileInputStream(InvokeExternalCmdLocalTest.class.getResource("/pocmContract-v3").getFile()); byte[] contractCode = IOUtils.toByteArray(in); ProgramCreate programCreate = new ProgramCreate(); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 5f99c917db..d1460b3fca 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -90,8 +90,8 @@ public void importPriKeyTest() { importPriKey("bec819ef7d5beeb1593790254583e077e00f481982bce1a43ea2830a2dc4fdf7", password);//29 tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL importPriKey("ddddb7cb859a467fbe05d5034735de9e62ad06db6557b64d7c139b6db856b200", password);//30 tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL // - //importPriKey("979c0ceeba6062e46b8eaa0f8435951ce27859581a39d4d2e7c0eef1baac15d3", password);//5 tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM - //importPriKey("edacaeb4ae6836ead7dd61d8ab79444b631274a303f91608472c8f99d646bbdf", password);//6 tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29 + importPriKey("979c0ceeba6062e46b8eaa0f8435951ce27859581a39d4d2e7c0eef1baac15d3", password);//5 tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM + importPriKey("edacaeb4ae6836ead7dd61d8ab79444b631274a303f91608472c8f99d646bbdf", password);//6 tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29 //importPriKey("ab69dab113f27ecac4024536c8a72b35f1ad4c8c934e486f7c4edbb14d8b7f9e", password);//7 tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf //importPriKey("14e86ce16c0a21fe3960e18a86c4ed943d4cf434cb4dc0c761cf811b20486f43", password);//8 tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S //importPriKey("a17e3161cc2b2a5d8ac2777f4113f6147270cda9ec9ba2ca979c06839f264e39", password);//9 tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja @@ -181,7 +181,7 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { @Test public void getBalance() throws Exception { - Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, toAddress7); + Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"); Log.info("balance:{}", JSONUtils.obj2PrettyJson(balance0)); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index 5c02fd791d..f2f9db2971 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -67,7 +67,7 @@ public void createContract() throws Exception { String symbol = "KongQiBi"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; - Map params = this.makeCreateParams("tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", contractCode, "kqb", remark, name, symbol, amount, decimals); + Map params = this.makeCreateParams(sender, contractCode, "kqb", remark, name, symbol, amount, decimals); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index 33bea523a1..602b56fbd5 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -25,11 +25,9 @@ package io.nuls.contract.tx.pocm; -import io.nuls.contract.mock.basetest.ContractTest; import io.nuls.contract.sdk.annotation.View; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; -import io.nuls.core.crypto.HexUtil; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; @@ -39,7 +37,6 @@ import org.junit.Assert; import org.junit.Test; -import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.math.BigDecimal; @@ -50,7 +47,6 @@ import java.util.concurrent.TimeUnit; import static io.nuls.contract.constant.ContractCmdConstant.*; -import static io.nuls.contract.constant.ContractCmdConstant.TRANSFER; /** * @author: PierreLuo @@ -63,7 +59,7 @@ public class ContractPOCMSendTxTest extends BaseQuery { */ @Test public void createConsensusEnhancementContract() throws Exception { - String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3-test2.jar").getFile(); + String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3").getFile(); InputStream in = new FileInputStream(filePath); byte[] contractCode = IOUtils.toByteArray(in); String remark = "POCM - consensus enhancement contract test - POCM_共识加强合约"; @@ -110,12 +106,13 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); - /*Log.info("begin addOtherAgent"); - this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("047b1c71c9d99d8adb016def355e207996c573364ec7eace3dae6c1746e62785").toArray()); + Log.info("begin addOtherAgent"); + this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("f5202662646e63afa3625f4f02fa07b8f250acd15dcef05fbdfc11f8eb0195b3").toArray()); Log.info("begin depositForOwn {}", sender); - //String nrc20Locked = "tNULSeBaN9Mu2No49JFyLc2Q8KvBWu5XoToaQJ"; - //contractAddress = "tNULSeBaN46smZqFkndwG4WaczH2RRd76axdDq"; + //String nrc20Locked = "tNULSeBaN8w5ioWD9m2GE16QpuawaKtMDjdDRk"; + //contractAddress_nrc20 = nrc20Locked; + //contractAddress = "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"; //String pocm = contractAddress; this.invokeCall(sender, BigInteger.valueOf(3000_00000000L), contractAddress, "depositForOwn", null, "remark"); Log.info("begin depositForOwn {}", toAddress5); @@ -139,7 +136,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { Log.info("sender locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", sender)); Log.info("toAddress5 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress5)); Log.info("toAddress6 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress6)); - Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm));*/ + Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm)); } @Test @@ -220,8 +217,8 @@ public void testQuitProcessor() throws Exception { private String pocm(String nrc20Locked, String authCode) throws Exception { Log.info("begin create pocm"); - String filePath = "/Users/pierreluo/IdeaProjects/pocmContract-ConsensusEnhancement/target/pocmContract-v3-test2.jar"; - //String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3-test2.jar").getFile(); + //String filePath = "/Users/pierreluo/IdeaProjects/pocmContract-ConsensusEnhancement/target/pocmContract-v3-1.0.2.RELEASE.jar"; + String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3").getFile(); InputStream in = new FileInputStream(filePath); byte[] contractCode = IOUtils.toByteArray(in); String remark = "POCM - consensus enhancement contract test - POCM_共识加强合约"; @@ -442,6 +439,7 @@ public void transfer2Contract() throws Exception { @View @Test public void getContractWholeInfo() throws Exception { + contractAddress = "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"; String methodName = "wholeConsensusInfo"; Log.info(invokeView(contractAddress, methodName)); } diff --git a/module/nuls-smart-contract/src/test/resources/pocmContract-v3 b/module/nuls-smart-contract/src/test/resources/pocmContract-v3 new file mode 100644 index 0000000000000000000000000000000000000000..5b64a24bb52060a29d07d3414941551dbfb16f6b GIT binary patch literal 52579 zcma%j1C%9gl6G~OUAAr8wr$(Cx@_Avx@_OFZQHKusxJM#`_0bo?4FtV^PIey=iG?Q z$jo@-dEUr~RFDP%g$DYMB*T!C5A=j-6JO&sp(M~X<8vj zh{IyFWHjnN5|8$5DQ0IWmmI1Z6lf;ps7NJesRz&Y>?kEpfmpDJG0Y0+o(R(l zPv~K4`>SAg0FBI|qsiLi+ouRp@ z)4$Lq`?tC#rVjSbmjB9df`57pdv`liCua*whks!K&Og<*wKp;SSJ(Z|HBH@2?f%>1 zzkC*CE%hAu&x3|U00N@?r|10ZR{wdps(wzKjI>Srv;#j!Cl_J#q? zfk3qJgn^)tWCffEhno@6M65k%XN-3|{4-->EHUnej+3QUCK*YAq_d?&fIqK!{k42R-v1pRh@gy_7`<1G`NAMxP=uWPSg6Ab(J zn~`t*+~-(AfrL$4tGNZ!JU;^#wxR-h&JtRagHof}07T4LPjZR;#hDz~c7Vo=i46-^ zbv_jn+F6v?cQJ1=2=CAi@5oDUr8sO!+J0ZF8w(b%o#`#pVp!{5U~}t@bYS&X&Jt=3 zbXFxV8$M4J`8W%4WFKW*)&ngg8ENeOHNUe4v*_qRTSWkD*)ej)Z8oNS=z-a|l(i!@ zk3D9@ErEWFQ~#{pMD(1Lpt$v2^}1AmTQLjbRJ0|$-Lz(NiqUvVq9FAXGE%DTSBxTx zf?dXknAKt(O0e{gQ|k718$s#GB<35H<>c_>o@)6k5yiarZfoD|vJxJ?qLDc9#ABbx zw+Sus@69m_HT@L3A1w#j!sJ9 z6+GHbmAcmpnJOpDb#0NwC(%Hrdf=$ip8>nyW`bu%>z<#Q5X}Q?MDGc_r(a|;jfbV8 z8Wl;bRCT0X&Bw;Ly^F&e_piGpuLd<*40wF94$0xSjY2&wy3M%s$4u|4ZQ$SsX__kI zmxO)}CmZGz$Aa=FW*gVldJJ3xe;PXT;jVbYDI%h_H*OFzR9cL&!yP5}S%X8K>6K`i@sIU3UHMPYOCN z%*EqiD=b?bqHSdOJ-j?GOFf2cKS@f_#?I`oQaYB)vCYiVx1K0#xtk88@Vk%O^M_P6 zXz9M(X@#Y=*fxQU#q~>cYHT=yOog_KZ7RLx1fh;I+ku&rob&~;Sp-m_=y^rOq@i%| ztvL;??Hc@aLN3M#r*l1qKj+KpKvYXcS{=+&Ax>K*x+taja&We=lOBZVBF6}>545w| z;1O;I*by@w>%HDt*=~ra~k5YJ_gKZ{hCM)J~|fUsV^#2qKpQcvqFfmc{|8&Ta`( zCn*JfPY7>I+Ex?V&O2d!w+-rbGaerG?e53{6C8fgO*5~{8b_sY!N%=uzwB(1J?dw3 zE*|}@O3uhVuFHDv^V~Y&b_iCa@LBTr^9C_kn*8u3zRMGL{O`L^8>+$i!K$LM*`Y+6 zI1~=*g6_2Qx}w{Y*<$@^KFPq`tFkcAQBO}kuIKCA?$rp+X*@)2R8l9HCs(e3D zcc7GdN~;FOZ^dt5?4G^?R(_C878iD>C$tc*vLtWWP*7JyOzHdF_9KS3L3W17HQptD zWQ(PeAsF?f&YcOOBA>)5H^WYj($6In)>NRv(J$BxD!(UveJH?Z#9s1la&g>7>v-d& zDq<^+aaZspLGgJ+TOL{u;tnOP?&Slr&OCsfSR|lsG%*Z4p&~R4AyKAdVjsoTV>$e0 z2WZ4dOk^{}APxcQ#*0SUC8O%ovjgE7(G6@tGglY3Kn7W5i0A_`kBiXy0 zoPm`347A7ExYNpbL)c*HW5eF~!?VereAEr9X|g%nyDhr%D%+ZF;GpAsnzQEny+&&y z;Vw#d9vL#d(sbJB_Qc?CXzbA{9xwCzbj+z?aiCTo8`dB)NC%~cH8XkSv zE}p67JBJybQLw$Tiznq@+?Sc=5uYF}3Giz^eB&#ktj&nkQ45O+KcnQhsUd7xD}qN& zc{lG_puUYaLbp-&&&?w(e)1#f5Tu|Je#+bQktgpmC21NVsZ;iseRYEJ4LT!HG`E13 z3Hu}YK(8u(yFoG=LMiVCuIcWuL&fF`r9#J^fe}7Wk)@pX)BlO9L|=)fIgmQs*QO&+ zSCCqyW39BHymHUwcTF|v1)l)iOO$Vlm!_{gyK`H5k`l#MX?$X$A@g1=EVtJz zF9ipL+pdsrS8u2km1U7&6s;ZjXB$B!`;O28G+yEbty8zE&Pb$8rPlq%z-`Ut9-$N& z4t`QI>xcb+G0VS*gtKO7OgktL(9s`)%>GY_#D7sQ6?+#$8_l@Ql8qNXj6 zt&Z@C7LA^LBnOGHjx-;|h%TJC{UhE%)?%`RF-;(;W#l=c+u(+)b7ai8M53bdGl=46 z%6(w65^E@%l0Nm5zes_9;d%Cx5w@{~=bE!y`s;C)y;;}$)69)OP#f$7_s3VEkj3@j?N>o8PhZm)9Cheip5Es2Rk3}mscmFXqqgf?;0IR zyy6D*B!QMY1}i!A&{%}RlqPjwF|Z6pi%<~JY)L3+uttrbx`0yw#sjVK>Qz#uD&io~ zHuMZITbs1Fv0W=UNV5;Eo7*YWGeM!Un>iDukPT^Zuj0w;D8J?rq%+v)>#fmd7`8HH zvNVG*eiNB3N8WMjGToFD{EDX$5Qe9-@<6|-Se>nlpo8;sp=?vA-BeMNA2KC$Ra<5l zWmqrTqux|@)Ca7*hz+%3Vf>ct$sJm95D`ZCzye2Dn2m8)8Dw>UwZceEg}_iun2isv zHIfFf0b?miSTh(^!MF4a`73~%CT6aQ8i9L^P*~zEmX!U zpQ9cVaZ+M%Sr*4;ntRB|H!f;$+OEhcQ%@eDEX45OW@;JY>3x|;?nlDq*qWfe7^9g7 z(reaUKES88r!0r;lH`BY(7IVl(I|xF3pdybS zkGr7xr!Ub;t>CRzGw@lrN#sSy{a#fmlCs0wsyyuBAg>|KaaA}>oo`IrwoBA4Xyj~z zAl3MQR_)gp2s2-SY8RP7^El-cnfV6&y&%Hv+PA^tRlw&5{F%xvA~4;lD_7O2N>J|r z^7U6c(2?_``e~8dQh>!wXFCGxDSdC{6aC`! zv?r$tL28o+u0(v)1#8;*oIeE7Gq|a~Z3#lHkethenrIxe(d5D{F-p=CW-PeQ+cl3iu&vCPTRjAFZ`fxegofl zscVLm$_)E_{(UO`<#g6UI9_Rn@gSb+xTqo8de6i?-H%TgD5|zPNu)Pl1A~Uws-}^PX^@`0TiU z?mP@Q-|+h3^x-s5$4TEM2b6s{>{S@K>}ME(-o-I_E%!P5VW7QkkiLA+O&f7Px|8Sg znThish5_%n5vR;W+K2b?nCpWN`Amf8XL9I<|Jnz{eUuN%i}X#9zEJv+#pPkYgy1)O z49RczCeQW$ru?O<$xT?a61;bD?@Ghd5`>Cz+8$aQNTk|Di){nlZ)z?EjI0t3?YrIyO$#*5}m&hUmB{WZ2GLO!{o+l>i z7=RW&j;AY>$!GjzM5^mZdB}&lmq*HH{IPr9@w~!m77Y z@!;@wBNWTN{D+VvRVQn%-FXCgBWB2aYL)SZF&xO6h`q3NwSR(;qj(`X=EV2n188fp zpL8vy-SsB&!s2W>63;YNlEqkwAl(_EpDOD5!s=8RvLhW0aK07S9`-?K^VwZg%@&lH zX)Ysg${8XpqzPkGi-+}gk|eD|ogqCIO_K>BLpRhGo>UnTkV=~O8y^V${r zyR(78T11$(*=AcwbM^2y=B1^;L^iVG^&Sx2xM+WyIN*n`6kDP_z7gKLeMd zz7Jc^Q9}oC@Qv)tV2liQbZ+40pqee_jrkrQna_Kaq-Sg3PS~J|%ybA|a(fBCrB)s2 zu8F3Gl^yt2Tsdlc)WzR6TIywwR?9$(Yz41TOxjRkU+5+zsVuX`%Q-h&deh8V>rMeIz0h~4Yg*T`Wri0fyp1ztvbXhl zx#VRRI!T<2IMFygMihbqcr-&9iA$HPAVqDYyh+AIo*B8Ln^ z^z6|gVR9sM5l|m;e`c<5$wezLrbRz@X>mslY-EtbzZ7GJG2`2awPmEjkp87$YVTH- zLZ#l#uLcI_%8zGMFGCtDO~BE~1u@ml7R-<=PQ29oZN#1PQXw%SogrD3z|+XrOw{|R|DxDrdd1qI(FUByuq5KJl9CUf9CwMN&FGuH8ax53YE2YjTbdcn zr<_woro5lUe#Py$)3XA<>9M~Mw(ar4Y=7Ck_k#6U z)szjn@#wj>G$B*Rjq7_Um;6*d^iSWT>y;iC=WnR#o;71taaY`TPaATZcR-9W+4hxQ ztZRcYR%Fr%6@gSHm35I6lb>}x#+8~JcKd!jCY9hOGOXBntV^$_Y)d%2O6ciUbidQt zGBTk_Oq6xYiApoc=c}MOk*`XRv)a)8P0PVbwIr}B%C$_4qBJhl-kU4XqIOA>BZ876 z$Q`olg;AV;Z~TTXDL}y(ZvTEij?(J%kgH=JVIap?})n=zMT^3ynU)DuuTf%Z| zl~#d~#jKsUxHlbXLzL2c`;$;osj664=`2{zJU4clI2E@~6o1WGf=1eA?j)3SczsF} z^jRBsy($`I;YOZpd7Y3%E=#iE(+) z3_rs>|>wLl(dfbZgicUqDxHZ7%_O?d@`2A zha^|joI1zH>f!+SQcq_pNrZ%DmXa;V{wDryl9^~1^&I+zu8Y@m>)9mU+Tyw%8I&}x zj37B3*lwsa6%z{G$z({}!wAv!B>TgNQtgQLV`sLt&9|3m=VwP0N6%GHM#~V5=YpANRyM6^zO%XWpGg*vw(iXDql`O^>Iz$7VQRmDYkR|+dcxjy#z1%uGkhR376c{OtyT%<;reN8xHajx?z?gOzQ}p)1w8`ra2bcn$tzd(cLZ zOf%X$rZ{Qx6Y4u>PoIJ0ytbQCq)C1nuDnNvl5xC$tiRw14tlc>mOfEUcn2OJ&2zh< z_mCoL!}idu=Bky~kejDWp&%6VGBg0h1!@StbxSS`DAW_tIoK|LSc}miETEUgp^R*s z2D|Kt*@1055@vg@+O?w-#(m@Ll6QM@)FE65>qXTu(0lx+O`2Y zFdUyXq{Mz9YZ{j)G7a`W@O=EVNhYJVBK9ScEoZS~J3y`%79MqdwgJK3^vLtR#almJ z^`$CIH{J7=BQCSGL7T3n;;!eQ27{=4RCfx8ISIXDLoQILD)uPb1|1^1u9EYo8<#d| zHFbn$t-}b!YuwE2qEaV69rG2LR+wxB=Td# zLO6+c0308h6h>f|QG19usduGH$XhfkB^-krJOg6;*ff%HM3DfRWnqmNVvV4YjFvb? zRsW>3S12NnX)6K^a2v)DaMGued zAraeYZMnjhN0d@Wr^L^LM0(4OCJ0Mp$>SKj&QV*Zg)VeAkuB5*V7r_bsvU>sS{Vc%yi;jcoy&(>5r^GZ*?8sc-)axQl20slPCXom zVI*a|9g3dAi0&;6Ku9G^(Uk98uOA#f{PwLZzc|!`H>j{k)~${%9K^MU3d3vKwX3k4 zDl2RAY5K+MS4$Rns)Cw32Jek7z9+e`-vXET=HdMU@j8m43F9w5(ld&BD(dpCcDk;Y z+6dnvYPtd}E)FHZG(C&*;Lojhj`c6PCwb$z@VEyQ6W^~Ia&9YmnO3RPD`;GZ>BDGH zqq~9w_A7OS*;HpN^Sv+nJfF#!%W2{lOO%gahO(w=2;_x2+!o24!`0RBCe z<30E6)|Ts$d+?ED+R!&+l4{TlM6sk!rrn{QN+`?8xai&>>3$En5<{Ju|95f(t`#i6 z2V*Q)iCi(?$JnaH)G1+|wnumE6z z@j99KRTEZu2qCAsT^6;XxHYkfv5-f)L-Ud`@33wjiKTwad<0dhT4kR-#Ep#m3aisz zVYGy(vx!ux!5e%$t*~|^tg&$B5?f=q#mK>Rf9vg;<=!p9hut5Xq*AjnlJoW^gmOihx_OwZ$9Uym$gVN3L>LKerx3Wt{Xd zu0hdP;z~qGqYV+}Z#B}V`Qmn%oQU&^u?%l096KPpa<+oN7Hbk#l|GtJrnID$TqTL| zbJ`RwBbw9-I#U&wt=w|8wDf>1b-&vRyr=ryF%EkF8|pBCDv*#BhQ1uUtI+H~)s=5s z$@w-mQ`&l3nU7UpRtaX&rCCASfwg8)ru9`j=aKyu#wXr#VS=ea%st<(^hBwXW^~|Y5_TtcX)BaEJhB*@P*a66Z_}jCFkvp1BQBr2($o|~V^`FIi zre(9(uZ3pTnB}{n{RH{PRJ3F6C;IE3G_*4+5D?41O}+@*+c}%sIlKO2!X-!j%^PJ2 z(~o?uE@=vM3=2s?BpNJfE0}d|nT?1P*vf*=z=#1fQ_hXt(4-OD-Mrrdk(xpZtc!qv zh#?R{4N0+Vh@m|<$I@h`9#=G~|+q5^? z&F94uI}pq6FFcyQRHE1u{`WZe-F~pPpBO9qpGL7Qk#ivXclp>GJTGi`_XgZ<9tzPp zM!yZ=@#EU=%Ih{LOYxKHCxS-mH)444l8vKQThya-?#2`)7x;Qa|aI8iy6??&C#xet7na{hdp~YVMfW2-l*a=Z=@y9wHjr#7uvTK+jBC)Mq~p~j zDd0_~n=27h)+99I=|h_d4Ya{h59`djC}AGM?P!t}G;|k8`Aq8scTs7@k z7D!HP%N(e*r=+tLpVu$WI9Ua4^KVv)r;0v>E7vh)n$4(|a$I4|2YU79+7YgWYi%y* zR|=fCIS6*eb;)bB^A&^%o8->R(8B~8YUA+W&WX^JZ{j5sH zYXL%F_TeK)cWsF5lIdT)k_Fg1>JHR?yTkCPKFHW1Z+c+TjzPC81A|V@(ShuQTzd~S z8zXTxe^BeK?B~tbi8XvoTrQ6PRqkC_oP3vqiO)tqbC$mQ0WBE+KpZK{=huBjKIQ}p zY*hSq#K(;Jkiu-x5_C^&D_FHVO8KesE%Licf9L**w?~-5h&$ew%}QgQz3<@zK;GBO z>n-DOA}$x4z;npP!g(CdcdJ;3ovR*vN1zZec?6QKPT+@C~=) z@yo~Zb}seGY)LcoP3~`2XqU~>-4oy;`aZdI-ujbxu)#GRKbK!GEy!qeVEEzde&O+f z`jH*b*OS*@JR2OR1Rw}pD?^-;52gBmfe8c2+?`r)wbqV__+DDrisxc^i>y*qk$xTsa|4~wI z+26cU7H&;CAgJpne9GNR!__9D+5sIx01IsxjCOlATx>?ib#A#Fwer8w|FV zH4OH;l`dQi-411P>|Wq?My;ZZbRi9H&A_HFNR3_aWS3ON66vJ0Nc;M|i8x}B+~xoW z-Tv8tlvli^KlK__u`Xr@r&Gpz@frn7!ZPBIE_k~YW(QQS?lQ-M8B<2ZZQjT;;__Ya zJN0Cd5+L>TZ?!SC8=QL6g*5`SNwUfc=0Vy+y+kOKbTr%X-y}Z-V=%i`H+tvOhwMeqLP{s^N=YuanT3r7T>^ zvAWk3-ry}eHlO*&nx4J2}Vb4S9_86${fvKJz4jG=4vi2-Kw;d5)*foXjcg zA&DF6Z%*=zW<%_78Sw0BkDcKqV&Ik+To$*e$$IIOK~o4NXVqsNXlvRT6x-~li6Jk! z_vM83KALNSPs7O(F}%9Y_Lhj#>oE%HxR{>ssae}Xdy^H-_6VL*<8jU8&U&|mLtT=b zAsgpW+jpehR2}n=hz%x zQ=VgPv5?Z%P8Cv3~?d5PT(2vV~0kY3_jtr*M9@QM|$|Q#Gd+))Oko0u8AuF`RqHvmwd=uJ@+>&`T*1K*MCiTVAqTDC%<&m z+e5}o{#l=NcU!b?mn$3PgqhrlYFAkjZO_T1XR763&)G9cpOZG{F+jpD>xY~7D-*@; zll>p5BwcCyS}Zsa(9NGJSK5C{CI7piQ{LUq(8$L0uUdv0bxmhvafHuhE;Tfm;Q^d| z9mp^mV;Ba)2*Mxm-^qoT5^3Y17>O-yXeBz$+)WwUZ-O`73E+9|kt!vqAgNUD)5G4& zisu{kB!@=@RPT4!a&j|%cJ_Xjs()VO?R)~&L97Iwim-({W?PCP&`0dqAkZ5V{czqN z10DrS5Elf8H(&~f8(={#_7%m{La^naU#5qYmIO)xnH`c89(F;fiig`R^vL|CvCl~e zNL7R~C`HY3l(gxlF=mrUqBim%{hFuSYRd4bAmp@?juM$#_x z4^D<&w1Apwlr{GwHPYBgT1;Sf*fw}O6Rr#QuC715~g15b`NDurfbrgw_{)Lo=FpZ1Dg5bN25 zTr5ArB?cday5Hd{x|1Gjk6)5FIcR_>qw1(h@f2%h0X|)E1(>ynaZ0RizcW_L5H>9-8PGlR`=37~3w}b(+?$ z=nfo@7BQo4LOgOYOUv?2u{i%wwDIK2+Z$5CHEg5<6m)oZj!ubKIn2;O8OPmyrK^UO zF*Qcjf3vmHXnjRt&q?>~$UuLgZ4pe$;FPVg>dAW?n53lA8OdOtN>6icb_p`ILyr*( zOtIWY4s)BpNT@p!WQ}G>a$DW>5kQ+8aZ1@or^eb6yvLNmMrEFfvl5z)q+Y;7%ofru zRUg)d-WJOX#B-rujj+SKq3}R=G0flP?V>LrmmE@$uwI($w36XU%5-L(aY@lXevO<` zow`oA3kZb2O9=jxVzVZ(k&Yf(2=N^$(=hurdt}4I?M9;;o`*kr#p_%D>tzC@#?NQR>uR2wofgN+B?$>OXh~H27@QuJWT|Kp1SwDvi?C;$}6MG>%pm zOT{j;51rxD!1{NUCMCg9Ev}+n7#~W*Elt%%(BN?_k$TSNIbU0L zj!fogB=e3ye21%m)5P`%9{FxxS!LYZItqv0A=j{kr??JxBC4X)syvYiDHCnX2>Qq7 zUT2+w^-=}n7P9YS$JxgfZV7i`YpCk&7@qrVpZZ=A4=H=5F_7y`63R}=CpO6!nUGd$ zH9_1vR8p%mrDYLfigjd|ye3Yn6zj7u2`Y&uV)#w-lv8x2*?}GSgF47{VYE|Rt3W_S0wW6?{ z1cvP0tp-q9XE|CVG2UbMz-#5?g~VRyN{@J2*L}z_pU^Y79{z4}JhH~&vp-^3?1(^7 zsYiGC!qv{RhnPK5bCGg|@pBN`7&9YS^ZGh;A?~?{Z6ChBZ35o5mO#GGK5(1@cb@{g zBEXVO}KGsW@ii%@^mN(%|1gPDi`LUcfNqHut( zfddbG1Z7+o%V5o>anJD(O>(WDZr9kr)>xU7LyqKXDuzD7GP#lU_)`O13o*k3?;W1K z?TObiBMpF`;hHg2LIl6q{@%WQ%v}yL1Mi!MYy;BPt=B||;^oc{3n-=nGMu+jQge%5(e_A3XCSAM_90)>^Is*cAovEhL@_$U z=dm@!_{748g=34m3jp&w`#YtI9ZV#xj19H72rk2hJ&Y|16h=HTbY)(TUl1{hyZZkK zY&cX5KA(R&Ksx@^{)_+r0~^U7fcvX=LB+|?&e_b=$;s42^gsFv{?-+sB5jYYit<^@ zd&e=oTK{lLT_7u+f1s|D3$`CxTpIEtDY>)~v`XgElBa^(*zD3o5f2GCLe>xv$!n4X zCNY>&u2K(;#Qg~mJl)Rhh;%Y1L36z6J;NJ!<8w0k@sPKZ3+#c}>W$cc!C35&;%;B( zkrZcNK{4zAr%bc0#)vCSUn|B4xNt=)q1fJg0*}g~+E%^G73kW_v`$^PM_aaCK;_VH z$qwAA^bUzMX4fs6r}0>N3(2rrV&%10BCyK32(T^IZ0x$D20n{b22}8@KDn$;S82uo zdtywuCcP7jPPAky1G9b%>Wvt4eX{wg3s7>ZD(CmwtR4GY^f#Ps@3jGgn3fqW-eA=Z zod{GoXabv~yE$w+!fkY#chqWj*PE@&ezRRJ?Nr*jDOUf+pf zAt*Sf>jJ z?z*tIUC>tPnXW$)3-fILO440mhyz1w4S(HSorWiU!nb-%>lL!SGE?8(ERcmGOOz<7 z6|1Onq5=c|bw`mRa&Uw^Psrf4390xNEe2?+0`~kc==|=+Kw#N0;b&eNTaUjaEv|1I zz1@pqfrTg*z9Ik9B%B;bg3OcQ6sP2knM3*>C&$X==PXz9n4O>r9&z%REn)VUz2K{; zS6nRukV zC6Q7)m9TY>AcEGeXEemLvdL5cF)U{n3=>&1+bajt0Od|42ptij<39R#utFCQM|iON z{XKzXI|A#&MnBN_Js`*ralz`|Q8JkeC9*eUujHvqHlz$TuZG8u@Z4LoXLpg~^jh0< zR9ep8>k9q?U*JZZ739=(#@Lj45@qrI;J-b8L8zF5NO>eV1(S|Tvq1F;3%ydR_{dT8 z=C{8jD)@yE^^~6XB%F@;=-@s|ODOMvi{P7z3>}6fWX5GJN#*NN#a+f@lctAp5Azlgx7R*&433SRjwgG-4Kl(jl)CcsivEb|b5bWJRsqnmNVt?3@ zbe0{y@hTTWSO|Hjj;}ZfPJ{3wq?4$;!2e^25pt*v*aZdxO8CQ{+5TyW`Kz7j?@8Fd zmB2~bnc4rXAXr6Lc|ib$cO$iw7SSpII5J$dxG4mvkmw$c$RY&-0|S47t;KM?c%it5 z;}aj>Rct(Z`UT`&G1i^^41&~jIIWYt^(5E(`O@y|{o@t852=MXoCtZC;MgPmL@=Qa zVZaE~R|9$vNDo>@P8cXzOwf0Ob z0Vp8xMV87!bz$B%v@NKz+)Z+AE-Eav2DKTBFvz;2U;`WWV(dbsn`(=tv5duOg~kFl zNONm;dxe^_#;x#p91Gpzcp-BzWYQqfaL->pif~=c zC7FBW{xF$;j2EhMsnQGu=*l=l1EPU~`cK7|=*^CgguRp?u~Qx-eq zR78-FleUG33VOM@BEulAinPuw>c}VsJ>jPv;Y6+w(zek1mXO*@uMRw+aBX~;#~~rf zEUn3u@+b>#cv!qZYdr1w+BIP?J{&&Jg41DD8(-fT{iAO<7(JosLcIdWo<(5*B>zt{ zztq?#_r(uf*9@ng1aP~Yk|KSP`hbAvo)=YMy@UbZhJDryFM+f(ges39-ma3LG_kj} z!cP%ZTteX_y8N|Vq%ZSdfA7!yt8SEepSVct4=j8Bfn~;jGiH=b-3^^ggguRIO#flH zI4`In@UA%87$*mFkQo?3TfRCV1-;N1%*PKB?ivwrAcTsG_AnZmP!f;1V1%}QX7e>M z4^1Xx`T_A*F6c@c5a}~7q;>zQeZI`?_IBa_dYd5!QorSi(_H+%M`72fY4!k#o?_r9{lX&9$_b2qet?Pae$=!r*4+8Lu2n}?LU_1R9bTP6KgE;#ad+_SAx_`?<(gjrENry^k2n30%OnVxo_V#nx>Yvz^4kIToAgB#m|~YBglEDw-SUylboMp0eyj zLY&u@?iufq6>vzYHP&@*>*;iz>h z*L++y3PMc=_J9b4C40aU&Y7cN4HdvBXzQ4yYaH+QNq<8KC->k5JrBr zN#bIwq154sfqRQC%R<0KHDN)sRDp_4LX% zJNt$$9$6;Qi88~WbF$xz^JZDyWQD-v+3?^pZ;2YM{|1IuEk%^JRD>yy)GnE>O&p%QKc~~L3YH*~INFdn%BrJ|I7SjtjbvsEinz>$URp*z z{lq=wkh3gqqVFS6>rfuYb5Rlp0Ha-x`^6~OIbh-<^TepifpoQi!-jjs?2E!-6Dos0 zB&eQ*LF|q0YO@bj6LhVm-`R;Nw)6Xcfg8L-Nd)vCa4Y)L^71dO3+#Au`=v%~WwB=|L-i(oN9;hvAxO1ra76;rR z#aK`k3l6v;mFloCDr|*1l8aIXOh(+jGVfi+doofTI+QEdPM=zpZVL$g7rAw(2?yMj zQscCXw%zBike;p#J9~4ghAw_xmI><2^sM|x2S3$>~(0N#iA_YXrfDy^Wd$W%sh$~jH2tMBZi+r`>Kj#<;R zU)(PhoF zk#>pt6c8@w)vRCGRQhI0u~2qd%X$e6ma_IT1fq9PrWeDpg1JE*Wb4J5+@-=rqnZ7j z$Q)jIN(k17CaowYWjKRcpmRU#dx4ADzF8ujGlh3UI;lWAq5m2exD<_NTY8}ucwDg9 z(^Yo<`d_|P2kM_@@yE9|{`i*2zX5^2`<9BKwW*Myv9+q5jJ>h-|DjPOD%SGIf+)Po z<93?ppm8>l@wSB_zf5}6ak1xn$c zrmrZP%vKfdy)qeKP~+dVZdN|*&T1t!)3PJ5&iM@I^QP6ps$trhc`G|Xz}~t3q{0ZD zm`B~H@e*bE^ZER11>(JPV_(5>DT)+ENo zmHnuU99Ng0DT+&qEUmFzZ?w-yCc8O60yzJ=A`!lyoS7I;sI$!a-EeLq-iXdFv4>^P z60B{Sek0mubWz%Hp$<3mSX+!LF|tl*kq4~Bd)pE*sL*w(^a*7TslD7T{F}JjA+*15 z!?DeU+l@ii-ZFk0O&82n4`ql_Zl9}}a-0n+PSO5QzVAMSKHRsECKP+|`y2>}ndLAJ zczi#ksWC2_7^M&fr7D+Av@y|q(*VxtjKA2WvAP^gzYm468)O2k?p$rb(rEm18YZzw z6w3&gxyS|9T!+{xo~YJMInWT5ulUY|$~)-Ck&u+Nuzcx;1ckdk<7}v7WET|)f3Pn0 z%Ct}1TxK5;Cq=?J(g**RtJfjDK{$Qo&K%(Er`Sq3-W+L{672;j*%5v?GrDgNSEuU?vuMaPmZtm zx04;9?XZjiP%6o4L*58Sn>vrleW)l|G;Nv|O&-(wq&{>?m!iUb%%7b!xm6wsMCA0U zT}pSP_`W6k)~K10yr`+vT7XSe1v@O$LpAknv}hMp z8FV-oW1E$fo#CaV#ky@eymVV{C@>nHD(!GCo-=2EF4=53qL>5=3Nv4n(5{qHD_x_> zrG?0sR2$4L_PVy}Ou2=8+`BJ@*5>b!H(a&=Y$i5aSe^A-{~u%T7@b=bYzyYZwr$(C zZGW+Co#4c_ZQHhO+cr;s)S2TflJj*B_QxD7cfti!LU zByF|mIx7TNF}*3*Xdbg}Sk06a_6XrXZi^g~hhZam$rs1=w^>WHx}s?;yGG4b(u(f- zmFb$J#G`lHZ$D%nd*VijdJO0DxKSBq_yEa{k=|&g^B%MwIA(R?k605( zDUiev{`u(=?Q)q=eSvNtQQoi)XBAqkN>&PLqe47V{@S_WzNgxWk?QQi>(vR8x1a0H zC8V97(5@dK2>aZC$9t7qch#nRt3mVrli736w_rBv=o>r6|hw`ua|2q`%;nIQbi94Cr+RD)_F1fKvIutkwMj2LH0 za0EYm1}gQ13#1hv;4KU!6n8JfM<$3LFUJKM^pOSPM-3(gCPb|q_u&+$ig?7d&I|P` z{Xq!5ehK{CDzK~Nb!B`Qy*@5B5~5v>-f<6)zmw-7`8o)P_1aciX>0<A zW@P3rm)C}1aP!43J;7r(u{58X1pa$UCb

Linl6m>~Y=x=h6NM-;Vl`N1>u|AJ$x zwhD`isJ=HlSf+zqBOXX-sH5y~wrBNseStKGCK(SjvHC=KvHR4H+BA=iq9aFzszQ;5q#+gB zd?$v*Au|o7$3pAS2H4%NgYKd(y%A>vDH&mtk2_WrqyCv)i>_d;(FZE3sESqFEH#x_ zF_K1@FSL`ckRGaTsZxV2$I&$OOfVKql4)_JKJ(G^=&l@#2NIc)sggAl<706Hl zSnZchmbmN0@r|?lGc$P1?v9%qrV#0T8m%jHFcH0MuAU(N=21-YTo6%Y+_5@73azAv6v3%Y00(rRkwKd>B1T^rL9S zN!|3q3FYm+NuoG2d-X}bX&JJM7D8`uN4}rV%$U~CGMN%CS^}C5`e|qF@=QtFh{^-e`Jj%D67VD z)yb^gv(B3BNhnIA*hnAY)axyw4($=%<%teE-Ix{5&3ZkvVi4_ySJ?FLHH3|TUIPUA znIq(RWcS~EMwinsM9q+r&mC1MmPp%cw~o!`rJ-3x$M2`E`QL1I3m62YeqaQ=S#}M) zS-(|K9!tm{q(b}OP~yAfOL6~VSrYj`rF;R;f_3FipW&EQjVAGnmVtrT)r*p?|)ceK&H)zN;K@s=L~1NJ#cqD6`nmk!@Ol(k5ZWrRK+pQ`n!SI-7B4| z#Sdh`1+5Eq<>CsK==vAM*ZX@^p`S;=AS@=aEJ8q@W^l|H?SO^tLYb_fjRmAHfehV( zCX{5!5)gjYdmeVSodT2I_5U*IM;jwf@%kgHOSlKxAju`;^XJa?Fgn#%-0EqpOW}(r zpq2qC0}B6v4jZKfH?EoE%j z)7UspH&~|(GmLyMvD1;;E)dKSEW6w^00UM*MVOty{ zlMkE?l5(hQ$wDxp_=kBzHg3&|m6`De1tX%9P~IIP&(1>B;|@WK#F}b0v{YYI=owDzHt(5?cVzpw#p#GuozirK9keL2%S2VHj!vPyJeas*@h?A|-MyR_O*e z!c6Me>>>laO12Oej8yJb)6Saa^|BYm`Usa4o?V_k)uqr3L8V-xSi;E-~N(FO1*hHd*>Go8>?2WNp9vZSZ3Jv{gulKb#>X0oyQmeo#;JsZNV6!%w*b!A0G^> z?M!!G@FU?0mNy0lY~eN?Fj4FJ6>c^qS)}-jm-0rcLan>IMd|UPiWmb+RB0`YGl0gN zGlAAU)4b34eFf!7V=puoMv{VHb?$|f~Vu@(a-XbE^A{;>IemO>G3PSt_>dBe9*Io#8g@B&PUWJb2aNIacF ze3^KnL+D8J=*jw@Q;A`Fne|8T8YOUuwLc)Gu z>>wfVTS%(Cr{}=M?OWe#7o{(0pv9;>5Y^6NSJ^LKI6{;@B_M2?7!XbxPIpU z7(d5k&Lk^63(L~Q4Y{)E%Z3Yr6c04H)DAilCWqXo0#YVv;}*DDtmR#1@l_YV@2govWZoTnkDV(oII2to)>Lkh$@eGpv;B zqPJ8;gn9F^?scUYMjpkfaTKt)8uN;#JXRzty}YNd1x0&)Ys<4>kg-aTzmR&UpBDwa z1f{5O$gCG>ubImBbj2$_@fGK3t+gx|<6Ekxg6;WN%@2sx%kUDv zv{eCARJ7ISG2Yw^=~9u!9!{5qrO`f}FlJQaO^&S<=4D*|>OrsUxzipmMwCY|SL;Xq zwW@Ya49Gwqz9s9%tjMGd7{RXj!Z+&OKlsKyvv(jH!L1URB{(sdK-3I>Kd_(p)v+m637{++{43a^=u!Uq+~E|qbY>^ zViUa$$R-%0+*ciOo*H}mRTAYWY7(`Fe&1fMA)S$<4ug6l_HQdI)iH#?)04=M(rvgb zE0qz^nw54OGornegKE>LnPo}(1qF>)okRTep9j?;6Eds0zBFd zsdEl^^GN^u3%YB}k2fgI?&%LU+>l^PQKq(@K;>(-Y^S)hEPJ$eoM3%Y(~XE9RFb#e zG}3HR+2)1nj6(Y!x4r)7#3RQ!Ko{+%dWY2Y3h`ef(A(UQoP;updwuh+?o5X!(Tg+e_D>3|y%nI(S`+u!=Jvy$=(k)my~@fA z*O5vuIkbZc9`=Z9xx5mSW;PX323Q;?d^RsnziB(4_p^@})|EXfHL&u!qDWB;(hwym zHKH1}N3+D3&CQ)9H8Tn$rBj~x`SU0Zsn0@5*%EId`H3q-uLz8Hi1m5CAJbqDqL2+jV(x*kdR~R> zk_q0*aDpDp4hIsFkb)aqXycGV{H3|Fit+3mV^Dw3e!c}c9#l^lXgh(cRI+(w5vjth zi+96eqB1K8&RX?p(-_3kw7w5RxxIm3f1I8{x~3oOsB2LCVa6iZj|AVY7 z{{#K_zmfI-kSWw{RZuigeN$`_$Z7(R5X+>0S&9G`X;-2pPh>*F83YrTRRa>(Xl)uS z8|q!T|1In;oVU(2Wh0wi$odKTsg|B@ZPTt#hm;RawV&p!o_1}){U^ZI9LfQw-nZfC z?@4jc8zzpUCo-hluy{_GPzaHCI`Ya8`k%_`G5(Dh)*roR_Q&T{zk|!gPUHjg1Oo%( z-qoX`q+Zi7xVt8d8RV3OGKcXRuE2Wn>TW94Ad{@5X!x6;#;}PD?gX)6O{cSP_3tV` zNtbHVOR07zeon+_aOp+1+p;1<{Y#O7wRT!E)}^p*_BBC?ePZ~paDK(A6>@^Si3$xy zW2RfODk_^>YSa}MRQ%FW3#jKj^;r^)d6Fx{F}k^lIZbW)ruOn)Cr#3|Pav?lb4W7X z>a=!?(Xq^Wms(4u_RdTSWlB20Ns;cHyx`6?y_(y01SF7POmLHY)&U=lfEZ0eN(`%zddHl3#3XAREvl?-!UUM0tWGgMCHNXM zR7>riu7cXCtz^J#F|t2~ZV9fj@88+q{?~u$YD%Nlcc#RP&MMWr+0{PV6u6PhEI6Av`qNZRV2->=s1L!a@VG zrQvSxij>72mN;mSa-FrWRA)~MYMWMI1xpvd3#i|_tdb-2$axnHGq=c{B*cgq<}bO# zu3=7}j*}cPi*uVMpFl80FlsRz0bQ;KxX!bVuU!`xmVeK#f`=xhT@vhcNK?;nPS#cNE@cRaF=1w3bp@^~sfvC0;%v1i0R=RQ2E!?nI*?v_03vD(cmOXg7v}r8FdW3Vt?aNw^Ty5ZmhDH*xmDKA`r91)tR!QH zxIU9>B>lPk9DE6UW@e%)CDbGzBh@0r{xm4B_sw1`GhN-fSHLFeB}AtQ|?E39hmNUJ+@##dwo8o9X@gL1yky-ew{lh7qRpJ zT>sc4%&J2We)4nO2hPO|1>kvNLmwG>NEitb&W@joK@e(e#qdJ=AUf5NFo^h9%}qj| zhv9-IP~-|j5E>iVlVa;*##tarGNDS+<4UqZ9>sZ2!3&N62(5QwK1owB);uF~wvC_2 zXF1}InAjYM)=%#oPd@PU@=3V%?&87e$szFc%zVf83#SlJcKd$!Z&1@UUwbrH!&FB9 zciyUfv8hw_>&F7}BcIUx59s>e8f4K*00r!yro|vI%_Xs~vhBYzVk+fJO?@`<4J#vI z*7*^L-4IjV5!y~OtWUtk8vA*mKp%l=S0iEpl&JpAE7$8*`e^Al0#HlcMc;@nJi$Fx zDD4Se1bUQKQ@zO{i-_JE^OC@^>ymoMv|<$?9H(DLnB#BHL#!~J50*WPiMwjq6Mf*% zY9e#V?=b9yd_|Rf-kYWi<}b2~Uuxvm@e~2hNHmGB5tiGkqF==&#Q1Ij?7cBv=&uEe zqXUawV!FR}S)^kICc|2yKa_8~)!B8la7w0;qrnGtO&xZ}nsEU5A@OddIX0#aGX?Tj z<07V{G0&^^nCKYr;;v{005mMY*sSSV%mIu3M0?lU*Wj}*$r5xd$D@@u3vVkh( z0$DCOw^OA)j{zS4aeNF4d$05hzN$@rDRwG#y+15Icc>-5_dv9hiF0eQpH_P%dzBAJ zr(LoCr68hp4)PJBOwYNR`8jf$ngJb?NBjB(K8OUQ`+)!N75%j+pN{`eMPK%lRvG`N zL$`D?ak6)CFm?JbRlUl8wyOqTrYDRyl@%2gldeJ3@8Lo~qsU34N%KhGZ9DNMh8m^GtM>~ zK=<8#jfsI=d*HU~V_Y6?zS`^CK#sQM*n_)4VZWDcBVIF@n>yeZxoX!qWi6xD{i;~3 zaQtotSUYizIbWUhT*I{Aq8a!56Cx#7+|jl!+UQ8+EH>cI!g+5(RiQhwRZsV%*}is5 zkkCE)-AO0sMX|Da)Zw@hnxhx;GHxKPb#cKae`*o$;6B*ABRtkwue+%ZMqx##k|_JH z;*G_vKXUgB>O)%^z8pAekow2aI!W;^-9v`NNVP{92jnBF_bww%bH8Gd3k2niWWF z?q2YW*u!&4;6XbV$||0_2KjG{HaXrIHPK)}QTwrJGmpElEOn+&TA$Gg__|S8VV)a2 zS{;Px0<$2-KQ-7T2^w7?K(KDpyEX9A5wBbKlc**~a9c&PA+5oml5Agr$~UniKqsD7+^w z$Vm}ChhnG>k&f1cNqJ0eD+0M7I5=%dX7*2MH2c5WW#z6^vz&hJZfe=i5CXJ^c(cR7ZCCp z)?Gi-U&cS){ORY6mdG;fBoO7b{+`DP(G3{t!GP}~jeGT+lVkwFerg~XvSWn{{*Cv6 zvKm{+djGkUtynw97fsSn!i2_0bxAwujo}j^70z~IX`kO>>K^%|ZA5kH=8rqBS88TH zIdkTw;YG5dhuM;_shjj^tgC`5R*7-XdjB_5ka~Bw>>}Ny(O|zmnAuLVY`i#tdNA_4 zA^Z))NdUICEtlF5#O17(>D+H2e_Y9B;fSz#b*UTH2|=gnr`<1^PPU;lgTQ!d0Y1%@ zBjnD_g1M`@%wEkyT?!A(;(A1 zMa{LF?=vltPVFJl+|m%_Y5hI{nt+z8*kWTteFSEqCgxslrr^3Z-r&UP3_ofyu#GD^ zDHO#(LwGG5_q#1O@a#!4?j^w(YwXuDt{qT(jAY!lu*8#^L=Jku6&g=LZ2+#)^gVdo z##TH;h1oa5{|=knj!qpuKY5b&$Nu&I-&OJ-Hn9H!ovPQ$|6!PXFEiBacN$lGqdx@aQ(Wq z`1QX!{gZ2PbCHwTl13FM8V*{b!HUf807U5jP_xA*Xz5NrFl9_`QxxdZJDGsCudu%y*_^> zryj0UA5l?XyutnP5@7h+EYC^-(@~tJHmLMcZ6rpeO^!z2Ast)?OJ<)QW5%r(>a5A` zPFJuZ#0QNz1*&2$OKktMLX)ki;e;L+dLb1HEE=Rq#b14#T(crdC~Ev{ z&=Kj?l-5{KTtG+JhAR>xX`>_vXdh2TK&W^jr+0yc8NZ+}MPg}3^IgHX*j%(~OmjFR zY?OJ0N%%UZ*eAz`@bJp&;G36_&{5RY)m(w5gLNklD}FkMp}JN%*v-z8W23C2w>F(M z_MWiy+Z0ZCuxStB1WR<{!5qO4!JNK14_MzsVXpPE@ z3rf62pk&khCYW+zvgDeA345Gm3DFdRs5WZ57+32i;`u8o791(^J<2!)@;Eq3_*?i^ zVb+IjSP?HVSCpsbB&)5u`5(E=$pHxb`z=?{9WewUKlW`(#JfWB2oSi4!|3quJK3gJ zyn{xQE1>LPUFC{>O=3Xcl#PSO&J5Y1-2I(~%ktc|OQuCf^qW1(?O%0~+4wMwv6nvM z1mkR96P%+_IpkX?IrGS%^${7~;1F{;;RgzKZ^;7Xd6VQFyl3K8ndf#e0Q`c#uREe_( zN6?s*9AR}ln5r>-{#(`!=XYMV!OB%Sj;H^ruS^Ccf+ z*lqsEZ$6Lp(;rj$TxPA?ed+llRtK)bz4`eg7lz-?u>M_N>Ze#o*U=F};0aC_#-*8G)2|6Rl((DoMlbjRTJHa_fE64KlD)?0q#clJO7h*8NtR6XUu z_|E26XnP}gIx&H@M@1w_+hY=jl){*%!o_b>=Ts6LI7YTBz4I`L56kc9P#H3!Af5r? zcvx0NzD1?ut%DsM(nq4ZmnWSgi>I$XOZeGX&kWFBEQSMg;m@l#iO7q7V9pD@h*dzaKd{ly4^l1Y5@+j~DrU+aUTU9YX3XG!9DN>;)5@mY+u@JcX7v8ntTWoGGb(6AEKHmb*GHfcKr1$ zkR+Zf=RT-w)Fu;k7Zz`XN_Fh);!b4ck0}>*G-nzmqZ=em=>#B--8t$U(oDq+eI%kE zVK?ehk-h7~F(P*538znN7Jnp2O%s-5a11Y3{Z>v*6W`W5K~6<^)!-aX#(%@45R%0Z zDH{q!r!qs_+@gXmYm1|N2N;oe-$>d=WEr7j$5NI|+EAy9+@5&s)loWzE2mOE_K_>y z7;XnIl2Pj(P!}jkrM%&8gIOf04gGGGnQ{&HB#r(1WaclUdyTw0ciqg|4HJInIs`6J zh`joHh`2t@X{2^)c0XVQ!4l+M;>Z8hW z4L_A6$|;?ManTY=#Rwmh3G%ieW=I6ba|zebJy2_KFM7syec|@^nceLD4HFj5k#)cz zf3E?aL-X-+v;8sgDbHFi(ZP|9pz zjClr@?5m&b*VNl)p^nD?^QQ*dhxCXVI>uWjBjbR+qV5GvKEC&(cXIIB<{cOqnP&Vk zAx*L`HSRS{I*vDzMg*!%rHsTI%>>Bsnn;yaoQ@vjsQy@#4 z)EX75GzHja@-OgvaGqtgVY2QAZ?v({-@=Yc>9rLd$ej~#emrgECQgx)zmwHcLA}(H zFp^%VDH$p&p3qdEsp%M=QlFTy#;7v2_|LqFqodH%@${brNU}pk=xG|LDAbcR{z^}M zJ$Re)XQ_h!%OEjSJ!7l4Bq>@ZPf~BY(+=sGprU!2HD|2*>#wxeMH|Mx2x^1%d;3 z7f`Y6{J27Fcp)X9qOF0|EMD>E0!L}fn%&D-qRbWp%g8zdN^`c9cSe;5EEqG(#}Vbd zZ5=TC`MRFN`W=hz!Y(v{29fHIo9LS|@nr@#SgA8fSNgCFV1_Di>H(-Ct4YVfiaJ9U zDzNIvIf!uK;F9bYQ8^@%HBJ=&C7txoS0MA`PiQbgm@6_x@k4E{CZqL$g_wv^OEtP) zG+9oMt!ron9qEYup6$b#(Z-bElb@XD41_8|(NI*zzxy#~(=5#%q{IA7k|klJuCpJ? zMb}6Vm9wupBvzlIX-rdBJxymS`oD8DuIXD$>v$LU4ru6NEkv(Uh67KSSOo_gSDNK# zjk9Btip{%Uv<5Q_xIyNA^Aw6~Q9fz>jgWz5?w%Q1jIP5$yvoQ~se>GpqlrahtlO#f zz`KT-YPgBcK`xxBsj*snnPYa!`^D3w_{P%JRWzh8$Rd-KR%h2ALaUDV%xQco*EC4$ zDHLov?Ki^*$ALKx^So_b*x-ZBUD_vI>aj?*GvJNT$X)7@DI{Cm+vHudtD2o=1uJO7 zk5G;3T z4mYggn?`komu!y%yW-QbsrZ&PmAkO!o0&A@Ja(rr22NlE2+8C`WuzJ0V?Hg+r~DUY zjJ6yADrPErP*qyQ3pq_iS81OiYp)g>A*0?Pj*Qytw18)@uQNm=5*Z=x-JNInXk$6+ z01s7H>0bA{2s#V?a0EGf(?gYaRQ(<1^DRw|CDOYU{`W}wu(mjjmaZ5}RGvMjq9$JU#u$l69(=qp6YWCFagMn`4-sVaIpcvg=CmP< zjnOsY4K#T&n8;*ZS)rO$tOeoqOZh8`jAH_>WN8QJrJF$YZMN=Ju7p(7{PEiz7Oo@q zVAug&*k<3zyFdz}wZN_PXHCXb+f5Zg&yOnial7oC1p}TX^zYdw^3nUI+`Ykk^-Y;5{zIfT2T0dYr6 zdeL*ZQX4CASiyZswLW5Ws71KJ(pb8novv!>y*>(QLSg~&?RVCVXX&harsXxNpL2ve z7VW40a-0BxmltFLERT`H-(1rXJysr;Yge!end#u4vxoA1cy1yl= zE3mrI0}#&Kuee+-bPT~nm})1($#TlfE=A@klKh+*TznB}hGBZ%})B2-{VzGm@<~%cD(g)loKY&<$%&JNdxwaf z)A?)^0?{B+Wuk&9w2n(Hhs3$8@;TOsiG4T(VJMiJwHlY}6-e~dtRLj3aDlBz@_e|C zsb8>V9frfwBoZ!~57-~nLerCdou|PcQ9i1tjbun%5OiSW(l{!4i%bT#$&Q>|w<(oVRQa&d9P*o?>)%Y-SKPu*EPtNH^dZxjxZ z(*XxS(zz6{omXY;ll3Y7(hhyUW7Zz5znCgr4ewuFPfqRuE0X8#%m5TN2HUjE)EN5$ zx+HwIWm9#|8nU)48qr+Zqv=~!^xcsut`(Bo&#%PY66tqNC$U`Mw>>P@I^WM?Lg9Bi z3-@0#W3PPL3AHG&PVXOoP`yPeC-<*MKr8dK zcsUNDTw=HIMl1_o;;#EfDxtXCr@!f9=!Y@5w!n%FY20nnGI6L0f@75)W?*hL+}vH@ zg=)~Q4DSwWxctRdJD6K+MLKoAT^c63F_;6h#&7rQ96yNYhI_5H)NB$kBF&zPQQvm- zcxDlIM>4Y9g9qTAXy|01beLB}k{pz&;4Tge3~|7YWDF_lwbF5f;rX1@gpeWNRrJD{ zU*6qxez*Gt3++%!_|_-(_`D-r`PudU`Ui0!DHXT5y5}c>@0ZrEB}XNW_Na+_nO~}b zy=XRe?ziEr5~1Yf7GdxD!dAPoF1zH-9&3{a$%gm~{r048JwC-!n@8&y9^g&Uv#JG! zB}KK&Fc|q(`X*$)smtPV^sX#?jD}7&XyOA_t1UplqTqU+8r~vpB6>Ln~&T9-^C+T=g z_mZ_L+gz^mQyRSH!A{}zbQxU;IesPRzPAMD``%J-ruRkqUK#cqs_o#kTLd(GtYuv1 zySTPw+b$2=SB&h#ZDzbwHPWmlpB2Q=bsnw-zOvb@heYHxQaCWLC9;zA9tQ6U=ds+~ zz0e(wz|XQ6fQRG#zAFjIOvTr6%48mi8oaaO*!9{nrEvL+RCMWBsXbw1zTKl!u*RujL@G$ESt+&pj46DFd~!wpo}M_%rtmSQD^aDZ`VnZ~U{^(3>1+e&*#cpqaTf!X}|H9Ql?`6{Vj^JvT2xo*x)A7)Fm;yIKuO1ga^@IFGnUW$%ylIu+q+6 z({;9f**f-S&0jStB}`q5>g@E`6SIrBRwCE4Wd9^PA0L|UcM5$YX~-@gl}&$%guTz0 zZ>Y0HTKqUDCC#Z9K{W_G|sGj$O1fQ0xQ z>WjM6Ln3w1ls(!L^rSjoDTiJ{TF(5N2uzkm7DmF+WxXY&gF?YnGAyPLv*i1`X8kqUt^U32zxh*>PF_cX{TJ1w_v@6lM{Z`brt@QLm& zx_4k5{uXS}W8}vX12C7rL=^>(zFocakMkN2jSlKZntInshc2G=xC+1-h$(Yx);Aql zlm6Cr>^@X_Z;CMhIg-rws3E_0 zo9am#lgmX}gCXTi`dU)x#q#>tI|p#j65xxXxU%d(xDc314JML|77dQwsE8)|BH*;(;#;nY`@_o--V(*?yW z$o*^SL#n9QO@RaenB~tzzB$kWWYo7a%4=Oevh2_Y4RnmWubg;IOC{{#9FGAzi}_+qMYd7RCJn6jrLl!8|h?Qm|JFP2zb&Az(kdGatfH_q21725=TRbIsue5^v+_^(gG zR(LE^vQy$kbmygfuee^+YN$vSuCd}Y*a`&&*p<0B#qU_ia}shB)7}3e2@Oh|D6py$ z9q4Kov4{8>=Y{(!z>^peoXX-EcZYMbqA0I(2X9boqIO*WJ&pBB!`^aPNC+t2FTD;p zK4EW>RqNz|e9S+9!LOE-jouO~y{L{Th{;p9z{+-q;wjiHC=2&Kh$L>8#KT$w(Xe!tQgZ~$9_JMyg|P!aS3Ay^xrx6f*^*abMClnAsB_eb z>HuD5k-fcQoSDR4CT6XOt_L95`by-))8}@mo;xa`z{SD{+)8IKk*k_65ov;(v(2ZT z?TdKlcUxHIL@!UkHQ8-XVQJxdsNT)Opw45c%&DkcCM}uGtV8rpB8L)64!_*5uXu9( z<@%fWP?N>U&*L{x7JpbfHG{(=RX)D<8Gq8c!mI$I6|cAB@7s{!@Cf@%Ql?KY17t{X zJ~Ne*k-PA+zlb(&*J!v=?9#TZZ;Cfyi*;f;mDoD$A76~7#u*yJ<$Gw7%ApD;yoKs` zK+V{imnq7{ZbcEA8Y+r3{IdGZ>WV$T28~OwB}Jcq-6XncCA?q$YPnZFP6fBo$5vT3 z>;ygbj0MiFo%#Oc8Y`F_%dVm$8Uy-QOnm8_vmteksC+<()Sq&ZdCbDXZNG0b@{N1)hh*z&CXrKM9~qoDF{R>pV!0rEX(PGWN2S*SZ;R!YSK+#+ zYG1&DLGaW{Ztmz7zTOtC99wp(wF#QxgQmX}n;$LFQ zlp<87B@ZjQxXthP@FyNR1SawneX(_*%Ri1Q%7GhP1nES?P&o0ChV*LRP+$HDolPN? z6jQI$-PzFZ@s!@k_9Wyl@Rthd&)%f%w3Bnx;6+QPG$Ktkv3|J`dh(d5Qi~>Uy{16o zeXSUK-zC~n{(xoPRJG$nX+?yptGVcV!M-jD(Wo565eeKkLCJ8+dU=N?nCxounP$Fb zX1v(my7SAW{Zc0aN7U*l8VMJC`yd!O^FeF@7c=8E)4sLiIkc@NJ_sP&b(fRD1}u-+ zb+I@>2+TWv{~1Qjk)`BwDU@_PZhUvep@I0&t$vr9$ZE1H#mIZltTKYCq*y7^I ztq7T>0U*^2ZbHg%q&NiClP--_YDYR(Ro4ud{@D zn2r_U*66(?9ifPz#=0q*coRC8R+!n50n$^iOC~ge#V|?X*dW#y+M>z}tmil_5I&YW zv01OPW&|(eZy)6M6=4DDir_D((>)(LSVF4|Id4LKx4PV!VG1TfaoD-;o78>Y+D`PD z%HXQ#IhAd4*qTtHX9wQ_upx?MgIW-y1S6Z1kOde7wr9{xFX2qHN^CO~KB?AB_(I3! z!8>eBA!gk46eW9(ot=PlI4No z4}*=Rrzm*6^dd5@ge<+()$8Y_e$!`%zlmjT0o#GAv4%i;w_s4GLNb`3wuA(7pGId; zD)lDVQGX_hAWDoa*<=I$I$-I-@wcIy4Y)Ewr1a^wVb%CI*TJsz1M2Ww27KxW*at4} zfN%pK(ji(H8F+_gLPE8$ZA{beAaQ_W8|v$#<$^~M5nCGn-ht}C^UQ&|HB8q<+6Hdh zK=2Od1Yoy7SgrpmGqxAz`;G8Yr(nRq1OBnbP?!4;Ucnh0!o%7l#eCrLQ`f^E!5_nu zy=#ggFwh1r=8AkUZLQme?q31YPBqD#vioJdd(91GTu{g6A9A{7JpcHTo3Sjsix}AT z@|&?Hz=a+BPWv(dYsXU)`*QSV(2I#S@!1ULUf%rGcy)cQ0f}8GDv@u`Bs1$u=)@!w z%lN|o3j}ilIkaIdpR;Z&UzT9v>kkYj&V-5I=Lg=6u}+*U0m8tr$kU;$xdYpm;gw+v zS}i2Q9KmQzA%w&L+OxxPB6Nf#0xv0478~4-qSIoucF9)Q013F@K4)9SrMOsDjvh>p zBr!pO0l%_nLUcsR-TjSHmhK2X$->*;He#R5>8)%|sHJN~)m<#fo@?&O4d}5AQXw=q zFT?}IT^Oa^e{76+G9?q*X;QgQE$9&e7u&()P(6KA|Bw^*Zs*W@0%q>mOawt94j6TT zB!okFmiAQTQb9yN6<6T7HtilckVZwGH;DZj!+L{^4rDOB<*I|%g|tW$ANmC9PVE)J zdV@jV;Jfa8B<*c&_xb%V?4IiSQ0=f^7$u$+1Nic?Q;CN*)>Op1u@@K+VwTVDC9dxE z*A5jpXL9o)K9QMGEMH`c>a)wvWTRC9A*3)bn;%yL`NY_lo9O9r%XzpnA zVvSRK^TYfQ&gs{0=-1ES%Woq#MzhBFYa*@=N%e4u(2rAs*qtx<-8OxW(tL(8d}PHI zl7$u=O`c=}Ot7)bNrG&u|n=uc})K%0?qvwUH|binnV?+<@PNbZcV)fYbztwmpZNjS9*#sN6FzYfU+?|AKx zwqTNJ(5=W>ZH7pJPHR9&F+88vV%ov1ZGo{X4?f;WGcnmyw})-0116Yr+zFW>DM45F z0%*2C6GTFTobyGL8zwD`Bpl23^(o zLU+e@s@+p@WzUm#n|mHl5-*!3&3wu28pNu++^nqIYJW#n8f$IJRaxLO>7vU;L`VR_ z^>*bd5hEE7WtfzkNyR&k#Xxb!o%Yy}W#nL~N7fp884F!Lip(F?6iBQpG*}ZU#&j|f zC~LUmD!7?23_EeewrJNsa8)QaMpSp4mr=guFub!J{g+p?9W3iG`_!^-=Z?`;H{ z+@G1Ic_StT($6M#Pry=D2$v)82isgWggAW-_uLuTlMm~jHpnVB_D{usxQJVz;qyD$#s%@VZeDn%T;@WAW6o?@8pICW=Uj0n%wyKV>LI6~lp zzAmcerLD@Dcdj*h7|=j=OV?S-&akeq-GC-RW4Z$PCUZn+I>9|Dl2;v;Y}X$p*ZqxS z4H@b%`iIH;JsMm8&dJ;(59%>bja+@39*yU@As)*DIb*e98&Y!8&Ymi+YGhrh{Xua^ zN$h4%!h<-K(u~Ac;$FX`$mjW!*gX%awP&{=trox3#KA6>_!()M_K9}HhA+X*jBU5w ziomX{`dfgyKpA&Yy=HpSW1YDPf^tIalEiwM&Uix<-CDylj?!$U|AZE9d2YcgRD)#M zErG0K3W#^|&~;@X1#pKr8~}x|+P|XhQG||P9c*hs{v^K+ti58aRsZza#?gY_Vm|C? z9G&NdSCppy4^#uXMx`2W!163#Gh9Hish8)^CGt zVr<6=?>tDej>ecM7b>m(=S>|l$((MG(3*v2#K9gu#I@MrPx7F38bo&});5wloPc4; zN|=>o=;EfanHxK{pup6SxBtF-@KW;%rG;Vw|=uO-K^EMcU7I!)m5jsXTzyK zg;)}Tt{U)pVxBrL!MoLcIb*;;=vKbr-x$yuv7Pb8KEz?=@1BZ%<4wjX-wjka>nmth zSWk#x8eIeOkxtHMoJx#d9N(=jw%~rr`U!Ff%$RW1aL}IR*c`iPy0M0GCUHIB)jK@x z8Xb|msAShS=izep6;e}H16u4#UsrWtA4u96DasSp!&Q7S8w|@u!aQw0W|KIe6GjA5 z8T8{%Bnhn9-Srip7ZGHY27|sUm`OfgPt`!2+%sF~b22g6D%}C1m(qd7R64)ZYzHYrMkbLQIxuJ|iWHRhes8_L!H0EV+)R%i1LC-L<_U z_JIs^_0nCjXAbQ)(HhQG;g0YnM_G-1v{yRd@<4!r2| zk})+zjfd)6t);Prs?%A}YprFIAwMXlfGOorZekHuUU)Lk=_xYcuAwvt0!XYk-0v+(cON=XbtNL z8+hIvKhkz^%HKVMINcyH;45GZe++wrctiex`4GW!)0p(qNYp+i039(vuPFcru~(aM zmM0%SmHngXU>uCl;<9oLxb&9I&ASo4@KZ*n?K%6a!lEZ{Pzf=;#o)Ts zFy66V{+piQ<5MtAn1m^U@kf1j{{xUP%Ib2hlFL?b29afG^TBozts~SpszYjpGO){t z4_kQxM5rn%6^qm)G7lq;b&|7CWiKr_PhHLy!@kCPM^-(w#c8gX4$d&3;X?b(N~z46 z`bK*`5HsP=w>u%RmhSd&Q->UR{o<)^|=!-ps zR@m20)romFW||EraOVdxNU>S+6&(bJi@x2(gi02V!9{m0mhXKPg?vSx?s?z@*HZzh zVgq4YVt6(gJ_oqqd6O^34`^}@>2$C10(Wj!ZsKNvb)A{KcgI}_Xf``>r*vgkFa-6$ zWRGw&-M-VR@N+X8;AQKto^1MdZ|$189@I*_EL(Vm$CW-2lhY}=bA&RR(QIs-)a6PP z+m}?!6+hcEvZOm?=j-|=Kqa+D*W7kzygJY>Nq^B0UwEi(B*RYp=?U>-?+onN>_blN zz^c#s!4_y6WYohOE_e_#($_|$c;D2uDXv2fdxt9?{iZ{r;Y}$G-#U!GenMC-`Sd|+ zBE>rd)RCkIa|{cRE-ElEdBNNK)=(Brz{tSjdei&tMcE3a$H{_la;Es68IDxJ2!$HT za{T8pGUd@65B(NM{zA#xb0_5nzB6og(sE(H$2Id?F-@G6L3xp`F-HSCdY1MWzB9L& zYCIiW0i~l}G)7m^`VT8uc~bc~XT?O+j2`Hs-jRor7kZwS0!u26lRSOa5E4vg*oe*`he0nljd>XEL zs!waWf^_RuT!;v0j)4(ROZ;ZEOFx*qDrH^`WB;hn2W*xvjyJdySnIp$umHp|!5n{4 z4pp$z*E1{;6r_To?8xnH`*E8IkFk=i|1AjN_?n0*l2(-p8NO{b56)PrEZ8=(HmNUM zhd|HU3sxOv5s1p(&-M@3c*)U$83@2KUJ4c*4wmX2g?Y2K+1DQ?I1E~EmlFrQexK@R>^V84Ko?8A0!)*V`v>D1k+y zuey?DrbKpFPjs7tf# z?2SSL8X`nyWODd*~^|TfwljPG0XNODU5%&Hj!68<=(wUpFZ{`3_1>cU$VxY(rMufd& zTHhcM>|W*LG|U%4(C};fPA!61U%4|n-t!K<4rk1c#wB1H1z5aXk^H#{Lhc&~bSZy<%E{B~38+3FH4 zqaU4|Twk7brn9|*R4XI*;JsWQ-CGcWjq?>u&+ViB$^i$1y{En~R+xH^EBLKYYj*gX z);+FnLp|?Y^FeM2gb$gQ8RcnetWS1!2*|g6-{Q^n`MnJlD0;S%%|@ow#ayf-r6^AW zm=BRgYmiA_50S_bQ;p&jZCfMAT0pjT=(WoOIxDiA@Rr1y5)>@*c2s)btXa|AHA@dG z^ny`hCTBTWfWy#j%v}n$+AIlR+56zU`-Y`vYoU3?i1wD8z7gybIX+x`aufpOq%fW@ z0{8j8A(}6+<6R_GX^NsUV}602Qo<*@8p}SR?l-EGvUc!NyGCDaN;1g_mqqz!z<|fa zw5%af!5po(%v0-2#HgFVc4hha!?zR|=w&NGF%iy+GpVu`Zc{22Vvk8qwKc7~``;p^ zwxHnd2aAAv2!W%&WTr1+B16yiPY)s3F^ej>7;-ZtoYSDUmWW=Z{L83JL;(I>>kxeF0>2A zoK)ZN7n2%HgtNyPcf>7;9Nm0hp(=JIwvZp`c_*GM6eNfnSkakrDI6%pN$}qHP???w zh?>cu3)0D#mA9|uYB+Qjb*g2>+4^ie|k^&5sK9XL>B&i`u!mjAEbcP=urm!zAw!= z*$VbDj?;-HQ>E8pA7kU09rFO@6xwOM;-$d*7*Eagt8)K>!P)VvKCIU|Gn@|W>XHL@ zC%~DaI9I5LOp+!+6~6H7p?IL)?zEnZd>A{>XJrEcU@PAHQoPG=`-pF#Vbi<0Z|O^v z5N6D#8Sf8a&^F}krG*;yY|;;nolFQt9^3diyzJRm)a->5WKx*5@HoW+@q1&s6b^_*sNtQymq21r|v94wySuFD^Aj`r?sC z3fZ$yGj#n?Pn540#>~D1K|6yn#J@wCiBi+qD-v<2oaeWMZ`fFAnW82AT2um*QW9i> zEa;UEn>oNMiGG>etO>LqUcTk!056NS*o$sNJchB@qwBy&hY@LzrU{4J4}aFuf_xK3 zewMBYLl~B^Wn8#)F#kYcO<|5DiL@ z^Y^Z=E0E>*URmC}mSjd~huE&DSRyl1md$<3Ps9+7(ZxJB(#pY3%`i+|yjY8&b*^_9 z%~4lXc~+uvj#m_ojX}BIDTZL)mO>IG`3!Rn?KGL}Mg0>Aw4ZB|X zr1stb3E5Ora$}#ZQKfANb|7}aJqb+myDKEQTh)sQ16I{9ZbA_9BkKn#r$Vwif%mae zm70+2{jU$m*}H-KJ#v?z`uaiRNC|=*j97F@n!4f6k=}$$>A5BMyI^NzQMn`tUI_+`>& znFjVdS*N;Z?S^440}?o8kRa624$xX7_^5|zEYJ6Hdfzgv9Ft>JWcIxxRvib*MC@+k z)Qp-w5o`?V0&P8WTDGR+fgt`Ht8FG+ca&vI`$g~dR8CNeef0oONUc1xcR$>3o$G6gz&C6{J2- zLzkcfH&5)Vf-47i1g=%-X9 z=MS~&$FvW;MNyCF>ceq>a%cr+hu!AfH-%9mY(l;^WTTZ$DlHL8!VZ%*ZD^)Z!?p+$ zSc5%$slOY=y+kc7X>%ih3r+3mf00?wO#ww2hW+` zFi%z{IVc?A;^hfC_YC#Pc#i4kehn!ET#6Uk7Nv2_BKXh+U&etcjf#w6`^~hOQe$1< zH|K0NS({nV?cbZu#B3T9&z~^$+h;uWGVM^ljmgd}yaitg_Z7iBr|lhtew!?iQ*9n( zNY#v-(5D&2Od$i$kRng@hJh;4wj}Nall~|Bz^LFPW`xg)=RF+)Eg!P79&AG01PBW+ z2%(Sef-Q~L;J;AKCQhNK)66;v^0b7q=9);V?hIRD@KEv&-3!cc51Z)20Syh9-Ar^&Vv_o;B#Hxrhox&-dyN8 zRS|ENU6>R@4?E{>I~{#+zbI_Zxs>I3f}knB`;2nJ6pm2>8Mm=q$9zRID4tY|i}f%+ zXO!}B{H|=?7t9H5;SafIrTLus93a?Ag_6E~G zDB9HJbXvwQSlpeTnAM;hOU;nBmAR9j>g#I8;p?uK2eVPj0Xe8biSQE9(3>_r!#1;-1r47165%zRKVa^Q8T%pa54U)N+$-=*nI zX$ls_;cw5GF*>-dLy2RJoGn-!=?)^U7D3R3_STD}GurT!2u*=R$4tMcvMf0A8^|R( zI>!S%h!^v<%z};YXi=1cQs`dk*pN(SdzgNJD%soMGcGmn<~_Wt;*=RTD>T>J?m)#+ z97FCFG$_=s%#_(hG57M0b&$S+1&K8%GDrplU(r_xLhEr13ETr3OIx`+uZRT2Nh1c3 zy^7ynn0|G1(*Fj?ClMl#3^~tPSa2G>iKrbBuKXQ>Pd$;;3d}p? z&oC;A*s6+^p!7w#g*;5Ei$j7_Bh%xF9x}7-9d)2Md})y?YS1|EUZqFMq(uULkFq+3 zn$pS#y7~qH*ZEb(S>lxybehao9hho>1R`AV^@Q;iA&dhFPgT(5@}^4fP#`+zeXlFIXE}bA**iK&<6=EbkC|2rAuUNCj8>3Zp6mUlqV5 zJ&tdW7^MvJDQN4gLs^^q{mLT3!-KYM%(a@OMUZ`F&vcy}DQ`(0Q0bdtMRsiso8=RZ zu_DfIQR$_^z$0*RVBSfL4t@(3Ii$KWH z(0o&T8cjYhMN`a?jDW5!GRb-3W z?%bR?uR;Q+nUSIJVC%?uE+$Hj^V7?1acd18I zy?BA{j0^p)zQwDg%`SG?E^n;A%#N4I>zp|1epN)oAS*kg)S{-2q z_}mLTyYQo6Z|RYsT@at^F}a8^<1S;Y$eM%wnRv;IuJejdqSekIts~-5nOAWU%yW0# zIJw36BT_7HX!q*J`I05Z@Rwf{#Gc5aH}n`vvg`$|R3aQTAW}1RYV=M-FZIsf3)U@Q z-kX0jXju?2fpv?@*|%N2iu1g5%JpNBE}sgX}_OsvL_T7XD19LMy5n4qmwd(vZ#P8%8I!*6j~73 z-${rwZY$keeBXC(#NyGotif2%81W!(9ZTfw0YyxYL(IRJwPE7KQcDvLKPe|UT5ope z^+J$h7y+>tC@E&tV8IZ9F;o83Xoy`n+M?h^(OL%C>dLKlXf#qbLydScU4?1Bqewbg z9qf47Vb8lGDSfNySAKIa-KFTlGUJFgjcIX3=sm&i*~RF611r`oy0re%m2>(ibbi1%~GzKzMicVId`!?pmRcdFj^chf4K7mf#q&sXw z7+wOGU%=L`MDVe&>BG?;+mW`~@+Us>`ZV%Ij%5wR$5XsMu`oNw(Yc;rgD$O3oU5C@ zN@8IrQ|`eCRg8+1KG)7L(of7A%}GU-va*5l1WYQJ-KFa|n7M|MJJbV^~@%fu54A@df@zgJBX4;Kzg0qhh^bKx3#XdqL}468H`iSx-P18nNg@90aDY%~Y3wMRMw$v0q?qj^7+s z?3eKS$R{YUNZ7V|(23&DavNmcrzXU`dOTLj;=a!HLCr@f;C?`Mj6kW+#JV5AI#mx6 zTe*$BRl+*4!h0l^oWZd_kl5rsq2jJKW>SBEps@T94CkG|=e+$EQsn&lW95)gY3@BGEUh`OhYX8Tte3RL6iuU4XC%h zL+#M=TkRW`RyRcT4s@CAnMQa+VXT-Eyyh_d>+sga?Nlhzax<@Qu)g3bz78lw!Q z!4fZQ2jbWmEAeeol!Sc5DWq-b%|AL|qor``@0vrN$J|UUOar%aatm`vNDtkWefBE6 z&*g4c5x9HLRAD`?QOXiwBedVF0#ycvF0x26BW-y1C@AV1YkAQxZfW zfg;UApKGdwFE=>^ee8lG%-|DhQ(z(el8Fis%U`IsXv>|e$F+T}?1K3fx#Y3rO{&xd zPbsAj=4sxBf!-jlhgs;u^Ym_EO@nVU0O{S50BLJD|1rmf>34}x#=j)b{DX36lClmX zs1O!k{Y(1BH+kmB8!N4{Gw!4WRKyl!!uR}5`5`A&$MO$tl41RUgqsrKcCO{&GKBX` zEFX5?UcO`|%(goPveX>yeLn-HtT~aBDnuQK4pB@_7$A9Abk>@XJJo{9*TWE?iv?89BC5!x5yO!FC^i{zy1L6CxgD+!3J!JekZVpP z`N1Axx&t!5PNF_ujQbr>VZb-n*1t}xv&UeBt3;r~KwC~Jb7#$=G4#J3c$T9mNf)BB z2Vn4x|H0rtr4W7>L->=yU&`PDlKUlEvyZ2nN3p4&gnG*;ANXC#DXD5BH4z#>d#_i_ za=Nn6J`i8&Q#YX9Zz7&agu78}t0&&ag=Tu5F7xca^-Md;=+XdUuifhD(S|pz&^T|8 zz*K8DF^?+1At*a__%zCDY<^$d^qo!q zjj!T|31!SU&J!wNE?lbfCF#Xwe4pQgr27qHzdF_$FuQ)kS8i)K-xzsorbdcb$b82nJ@m0R*3M zpd?}x)ekx?3im~sy%4I>0=7#AH98#9*H2)CQ%Cy6(13`W8HL@(!-|i$uNMfX*t%bY zBLuaoGv23?PbDu(j9IW)&^%F{3@=I#SK0~hW2~}S%rRq*g78CB^SOu)lQ>Y|?y|Nc zR`0B-zCt>2qB}0vj~#Yj;V%!0u;K9li?r>#uVpHLKJI9-*m~F=WT+1f2)7V-VY1i} zGuV_>@A?UkMt4y$zibwBN3Bi98MkS8U4w$_^KB=sjCfh*JT zd4OEQ>~hu4<{4VhD!u^z)GxRKF?Nwu)}ZnLo<~lk4dRG&^2XynJb;VRgPa9$6v=+M)g$8QkzX?<&hSU)&9K zdHlxL1BLgyM(aoGuYzE?D5+zf9xRs$?VWsGKv+4L#=us{3#87Z)=0giHVwGQ_id$3 zy>lMq1lHlWkW8uB>Y77%vuWTpA8u33zLsuHVf|e?aZY_xnr>Wi{Gb_qik=--a z`UK&dK<`#g+uK8kIwy<$#kf~0FjTh)8)=VSJdDxi<*QGs94ek&+yooLY1YQb#2;=5 z<)L^kv5Bm`p}W}Tuk>yimc+a5CYwLT66qZW8uy#`Qv#oE`8+{i4Qct2$JCnfRLIth zE$@X!+@W`y*;L%?;p->1KT9q>{0&oL2hgE6-_yGN%lq;96A_)TZVM0y44!;1wFV|4 zZ7!nos7<403-VHwQILkl7sMZ}M@)%~f#dVY^2ep2jh%ObdBPt9AUAW7>a8f_l{JLp zUo9lEn00DBOn%Vs0_J^hi^{fUkrUBIvF22JVl+759r8)igfztUNmdp-Ruu07HM5M9 z*Qi8Jj5QuE^Xp{o6zQXM@ToDqNLoV9qwIh*Aq(f@qhGroWigrEwHlp(?0b0|MW^;O zTTh<&{&^J5j!D>~1B{?xfV`>yHi{~_SUCSaqx$1Bn7I1gXF{G_;cIW{;Qw-Bubh+E zTrVN1?Jt?5etlEbNuuj%6AeDG7g^pW_3;&@$7OKt2^WPg zn04-u{f)qBRA-CYHsZFGt+J)vRt=piCCBR$1(#ORhC}@!KYkH&XGOb+%d0+fswpWf zwDSE`s_9nQa@^M91HI4RfR6aOLKk@2BtGF5Dwj+(iYF6!r0;l)yiqI!<%AkJ@W4OI z&&iBXC54BNh%}^-0D^r(Ax6&&2kfj(Em!mfe?>z-XXVv5lRi82RFhtH|6zn(*ILYU zud6RIYL5u&XW#;DB8_dGDzu99x%I?XFl=r9_hEV7yhT=MZ0KU^3WBEY0mX(6zWCGG z)lDJpf@~+gM7DQTQLJS}-!T8|duVA%DBlw`Tl^0rm6)TWo#P+8E;@cxx=#=-`5hc-qt*V#md&8u`6cJo*98I*y&yxR zEK&N9wa$IdbKt($cW%3AhK-UrjdC6zKuD`Ga~6G2Zomt!O@c9; zx8iC1;@*d4GEn{?!dPJ@={~c$AQ2oj5(93B9xcvH^MR1PPmyq^!hv2_dfdyxv#!LW zFY$GUZmDrvNHVw_Fb@4EX_a{sV{X$8(RkNL+mttphjhz~1~>0nSUoSX@AFaMruc=` zyJ1esO=?1fDrO<+Tud86fY688WyR{^#m|{a+iW;9FZ36D0&b>QCQAz{;VNx~jE0yZ zYDK+r^n~Uks$*Z39b;IuIHn$`U&lE@ql~kli#|cuWx_DWBji1SEfbG_CL{_5Gf}oE z;(w;Sw8PSI#{)=fs}7K8Wc!!*lZd0Kp|dF(rHx`EhP4A$xz4Q%+0kVM)iFvy>J;Y}PUR9>h(|>xiwl zjR|q{G%Rb!RWUbw4{sOEcDtVLE*XK`30rAo`({bZ&!R#mEtc|f<@zvLy`)4!Lu_zd z&6mdeE_vIB`m#W@H?x?`>K89lPidJ}JuI@)-*-FTzxUZ(mVe3xxm=*N>b_Y*ELuFe zI1zC>2D>$?^E8JTe2?1p!6=!J6|y9i-GZ?!qd-;A!uV6}$x`2W&47579VCyw%Z)Mi zihTF|SU%kJ=NPNZ8Up?{(mmFfgJv-T;)=V9{#Kxm38al<8Zcw2+nY<*$Jt}ut`2U9 zv02xgUy`{vJ2p$<#|fYMP?A2pRZY?v%nyVI_p$9?kJDI7PMPMnrZjEgu5-*0eATP} zX$fH!8!%mdb8};xXu` zqQNmgw){<%h}`)?e%RKOR)eZqlB2)`M%xNWJdzulB5MlP@sC;;?yIWbOtcz_HKrX* zd2KHp2Mcj&mz+!mZb)X$6AJ8-mBW({O5 zzp+-D$^0^;32)oo2|-R}#ROW9qZ`TvPs3E*15$~RTP75(F4JI|7Q+1oo#}D^rC=Xp ztH+lE@_Hs!9vR1~FP@a*4TQc$pe@1Ka~9o`$R%+kvR~PY!`@6njhgN3UJ74D&3RRc zP0GaEa-|=6RT*sH+M^C~oE@^gFSg&9dIA#DhbJ!l08d=GC^B>~FAJsBkpNFztl>z! zb1lsu6re{Rq&QbTfTY?{7Q%FmJLwzw6ll&lAp%hvA?XaCRz<3WZedF@j9;KRaJhJP z$dAG+JfBg5B}cVM-vZyQq1xE1q3RYLp1Nni7b$J_~t6e{o?wZ&)V!2Koai6fbJAwj5d); zhEST~p)Q~;3CR4W5M?2&4M_)t>hegBl;aSQ6hBI;gLy=ykAoq7V&uLhEhXiej!#D0 zF@8tNg=_-Lb^;a`JQV+Mpo2%o7~ot$gt)1KEvX0Q5tEJyP2}8muo0Yf6G0aM4| zRzMWs6`gK}B4`;;8e6c~Om#EVtQ-e_cTFEb^da}XERa@2)v1{>k{Z~dln}wFkSg*H z7Mm-`kRwas-2Na@UEY5`r|-o1oV zNOf@S_hurWInp@{kFIel?QFWo?Kyh|vR^q3#U=W|+Jxm);8)#sG;O36^lPS@je2^A zMaN{msNn=N6Q~>L1;{WwY;hxN*@f{m`S+1aCl91>enbgpo(+>WM9Zb)cNb#TOnW~`xfAVekLf7e82eaz? zkoe|)Q#0fW(xxBUMY;yewP;2J+XzK;`3NC#@=#vk)x73MsL)U};ZO|AxFiJwWMROgub7o#(qG$GXz5BAK+l?{pe$|4Q-7Sx=m5=B^cj8Em57KTVl#c+X?Jo1 z%()(x-}U2>gaSGMcsA5aMN?ORM|%N2{QpnSwg>1tm^wOJm^!JrDvZm}OVdfoDM^;8 zp2^Y4jBhKu(vGN}DKIE8u`4pMHZwCfF|(@JBOoX-F*7l5(#X)$OpHy|v(2$gvCP0a zUOTwJx$a6cjxf@n$<~gKEsoNTQ!mI&Owv+I%Q9?9)6opef-?I#g5M3ln^1IEXEtU4 z#5sUL&_H1Twg2nL0eE14KahY{(?61erDyj@};y)39{?nO1N_;;9rrEzA--$;6*A{kwQRQb%zxV!+TfUzGN#TD# zz85$GTmuSxAL4#l3Lt9rhf>JjC-}dY`aYulvM9!nl0e@Hd7l^k!@&B_mB#%OhW$Tc zxHwx_|FSX!e*!A~M<5$RTSGHb$6sPm{0VFKU$IO~?d_Z_oPUW)^e0Sez`Nj2{rum~ zvU9UFb#yYfu>U0*-k;FS{t@jry~kg9&7YBS{}IXbKU*|Ek$!V|(BS=6!?3D$ z&W6^%2R`I}Gxpz;9BA+r6Cwiv#gYO63I1RJoD2M!0j>G_y8j^gVe#L26r9ZgM*Ah3 zL)Iha9iTZ*=)Y+<{2(mwuO|LCHo&~X$rO-n>DLSlMemklAb@~Qe^&tg$#4%4R{Hz) z{PZ>jH(Ns^Ytz5)Dm)q{uSdXu)Cw@Q#1Gv6bk!^%4D~-klL07xb8S^eLtCd;rT`sm zlRvBypF4rDeU<+vz>DGmZDRiuDLY^a_4lN|`TKwS>v!|~RKIx6!SazbUmMUc4?x3S z{E5So`_~-Grr&inL_CbGP5&7l(Y`Po2GE3jfG>X+?D%mM_@e^emH$%{{uA{5XNDRu z-xPBI!zzG5^aniPT;Ojf_&+kJ8d{kO8yZ`w*~;1(Tm5U7L5t15^Z>9y0U`q5V~{_N z0)H-%Uo-x;Dezny@wrK!YpMUl2a)_W{?F~iKPam|hkq_6{S)3m=GX8)_cZ?gA$hLA z`x7}>{@2L=+UE|>Bq)DEe^B|Kp#QDYpR2I_B;eEfHNn65=X0g6pTNvI{{s9sx?j(Y z`CNGECpxg+uhIWIMEs}z|7w8e$~!-aEDZivqCe~KJa5W#F_51OoF@Oo@KYM(Iok7o zyZDKQSNuCa4 z<3Hcm{E5F`@oW5_Bf>8_>G=-dPk7#{U&H^$HGhHpd^hMPvSrP$k^g>g=y}IHkNE$@ z->dsI{`2_%bL8hy<)6rF4ZlYI#~AZZiodSmzK4o_JCJ~$o-E(}VKMe2aP)J9@;uH& z^rI|bmGktJ^4G$D2?hPCD&Ip%za8Jv=Klw@zXq0m)b;N}OF!@n{7GB?($K%u^*Q?Q pfu^5L`1@7Eqwv8;?wr$(CUDaiDmt9@9ZQHhOTho8u|12KtX1p;M^*|2+852dKZ#vZ5-2w32dS^a}q8g9O6+3tNUpGIIR; za@gNH>i-Fo6_k?{6IE8BlNGy{ofwyqrlp&OlcuGbnwYLvVpw3_Idr0tni`>zrWJyO zI4Dp{M5pc{^=QqMVs@5t$)c)6g=SKYid1rzy7z3&j8a08R#NWiiv^1q#VUpFiZCtp zgdXx5@=8XOrEJrqTqX3Td4S!6la=vk^=Jk9uMq#=m4N;Y(bE2Zt>OO#K>h<@=W65p zZ%}am2g9`^2brcTZlmJa_Wf`9#i+1i_!{=0SmYo@82 zsonpM81jF9DH5>-b7*0KfXx5WsQ+ce|9O)B?hBRwI9+tcHipj5jp`BpDvM}eTPE>o zu)+ZXAW*+#fXLF)7>raI2oV_<6xfK2z?w%Vr0-0UIbaea(SJba(NL8niPnPY009$0 z5$~wkG`@GyCx@&&65K35wLf=ydP1QXJuYw4w_aBr`y6LpXFDGU`*%CS_cXq!^V#*d z&0Zi*qU3qb{iO653(TTB*rjBwmu8Va&WD}mxUGQM?s2BO7{UiUMPBm(vN5(XbT(?Y zBQSJd$h*kQ;5i&;B825SNa4F_mh_P(%Yzxv!|*uvdK5AA`WZ3Ma4{yKW;?EWBr%5a zbxY0=CoLI2LqW}TN>Jz7cPcEVB91zKy(FX9NA+?W-BcldXJh)UN5Jg8ccE-M?zF@E z?DT{|U(_0?s48$=f9;GJ5F$sjLL?U;YgKrr2X!2rSs3%=^4=Y*Kr|&qL8~?f!qLPQ3eJ)VeB4yxT85{f{({iRs zl>(G>R6Uep!khLziLEXAu*Y z$E%@qi)KYr6YdO`Cw@y7HD8;Eu9{*c8G~$P%oqwN95haJa&~iroyBtuTVyy34|42; zs-;NX!IM`EPr}*)POH`MC9EV{VAySGB}%qYLUBgEEeTrZPjRo~F1Erd-6kDeS8^2V zAHj#oK;2*n=<@r#WC&rvGNn;qFeQBW+;je+t&MV%01jWD5r8WX;J zx6sQYl*#x>lOSG(UCQ)`+?*%=G_v0;`kVfWtT#*0cl;pxsu5kM$WLAA5({<|_e}F> zViK#{Pt2SSZE9k}1|^V^m3<*ERE?og^~s-aW?JhTaCfkomU%kkwvA@0!5qVpgCfgD zUGkapV3wjXQ&EInA=*H=YTnmKnk^Tyz?n_~1!mTkLpspvNMf~-N}hh&G8%)GdOAex zqu*PTt>k9Su-d0{JVdk5<``w+7mx;BkH8^<34tax1l5WsJey z}HSX2dpQFQlo8j_Ak1Q2ZWFL7z!ikG8`?HxQ?7`3$C;~ma=R!Go@sD z`7$!h`vDaEr9y)cCZ1&(WG1%y>?b8-QeXKFNp%*%)|5nl1nLy0$?Wv_v!6tmXvriOARxJ%7z}>J(FXlKpz)Upy#cP?FG* zEj`5wQv553%gXgZ=T!9_C1uG74=h-u&dx`&N!p{&IMT*`On8$MNs+BzQcivp__lE5 z3!yJ)bKadE-~g5`FmP$xig+yz>EA`7ntC}x{&K>bAWfCGszNrt-Dg>|E~JH{sNALe zm!DaahD&Bc^~4%09^KedvgK_)k#VOLv6=K%5_)qUo1QN__&wWhtYwO}p8P-6^!P@> zy$_i*3pLa&&5MeliwjoeCPChnv4Wt#tTI8QcH(w~6un-&TNP9YUQL1bmdUMteblWv zTu;{VXM8tn47p;Ce#NBre_?Q<>`3ggFMA`8F}5D6HF-KY;hwFwJ;J3%(cf}UYh+E+ zQ){XTHgyG2L7=kW!PG&Hac+pu6aa%w_Vm#NUHBsDvj6!b+7d$xM)__Smf&pfwN7~f zdv|3MwvU?0yZM3Qu*f0hM8DG%-vN`V9`9X6dc6VTu!7K=t;|sZdKJF`58L%CjS`XB z6Ax2~W8nm@+)*WkV@;ujyWX5b-NzPlHZZTx=;>3;pY&byDYsvL!UlH`s`?rgwfY;? zW{dcp^1!29{!hWkR_GjCG#}WzTe z-qJGy+fiGW8dB3K#`IS^d=QVId4(3Rp-1 zG!%d6p(Trrm<(}gQzZucj4D$;epAVmgSH?DTDk(oT&#Mufe^jXhnYi=$h2Q5z)hW6 z*SC_>&<0$hpmNVVKt+aFs^PQU``5$-qf1J4E;@Ag-m-=eWpehOp9^@pa`WgBtV36K zx54dC8GK~%@eiYLIV5!+)1gV&bn`Ds(6fN_N$!8$bQ^%a~l+HQdlknoKwYGr>$~ zfm9@pZW=`K*_To$93@rO%N5Znvp!Ltfht29FEXM54FPj%p+s4N?s+c7Z&x&D`-T|c z^ELjVLE($G4;IcGUfCgopaGPe0W@BCjJgUV9iZ8t&hUG~oRIPnI}(sBXbLW(YL5u! zbSwq#j3#yqwgUQR;fDehXX(fm8W5>0&}0XQkccRF06VCFTtn|NLM-dRE#jolN>F~^ zfTH1Ei9ne@t|iK_?$t=0bzT(yxZE}=?xluK9?egq8^C4W0P|h@qonu$aAc_Q=Ia|KXo^91KN~wCy zI?3x{d9AnfMPHlM?8^t4o7V8xz`ift1sk$0cjHx$1CJm9zvZY1K1wl!KC6S*%^ycY z-l3na@kGxfGA1b94zN7duso*dJc~aQ*3tywSe74z^5^|93VCA;JwhA&mx2l=M3l^k zDVcvKrb$G~k|Lx@Z0$$>Qp|tvOYeR((KSlcF+zRhFi-Fu#)d#qd3L{dik~hu&^F-O3*pDP zf*;%tElwE=>>=05egv@wkirojg8#De-+jES6FVcUI)xF6yEBaB7Mj8<sz0z%i0h(W>lDS-Oy#$CFwk+r4q}e8p||++9`g>T^84?Efcv~fM)#0*wU7wwYk?! zabhdv5%$z!4RwyG{E0cg#~3=82M9ROux;LF?D~}$NU(uX$J27@u~9G#8;tL{M`nGU zn|oD+;Bh1jgL5a7>3L@!cQc~qX@-+eS#{f$4Fcot)FH_58hb!t*&umJ1yZ82CxIFD z=itqH-nE^jZ_6Avpf8Hy%|wzo=@gJ^YmZ($_D8($ufx;!+rS+|b|CN9B81ujSRk9P;zNs`2A0c zhCyQowRdI3rsJ46A__|$p%@TjPRbV3DAqwJk~@67`$m1c!&2D^5{vpKyyaMGN@*oB z7SMWjEbFl4fhBFq2d!NOE7-@sB5r-bfy$pW@n|P3UzKF#pT~+3eaf1|spKF0eY+?f~-#=o#KwqjhY<3J= zs5V&n!%ij39v0HxBK}RLq5lRamwaVx-Oy0$<7z3il1=aqgkb(6Hy?gu@!}he!;&14 z%!fwR3>%5~4f0>2#y|E%czHur{@?uo_E)iC{r}k$q=F6(PWEnwHlqL0*Z!j?O;X#G z$5loB-ppD}Gv)HB7Jz9|D5q(gtdzCMi$F+! z$mLtHFk+$Q`?Dm{B!;q&LjEP|m*s7)VW3IKchP#B&H0?UeVyrS|1|CI_X^ju-;zfZ zThFS%Ffj;;k-x!KWTeyoLvQAW7y~8sV67lBg$1{F6;to%92H}pF*C|AwEVc$Lv*kr zk~6gAKGwDkcDR@ZV2g3D$92BaWo`1=kfJRYci>cY>iG#mE~u{hBvA!{oZC z!8%7B+MS5shz_vb)?v|gQU#}3zYD{pBZZIk8d)yeZD)qPOHCjFdQ?uf&8DuRNxkZ* z{RNPoPfTFF!|HE*;bR&5ia%srh((325?&crmt8lX0oWSxCA0HP7fhRv89>Xqnd1Du zrpa*g${ts4Cq|r2s25#tR-1@E)J#0<*u|zUvTq}4x_k+>=VSwuQ!}?r^qs3eS{EH> zbw*`uvUp<_6z4+O40|L!O6qKfr(~ti5bHf|YAf;NX5+CXKe56o+$^r<(LHfxsr7e9 z%`-lTcm>T>-m1ZvXNFOqtk~Z6jR@rIQ1<4Fki%L?TjSgwp_9h}n-xfRlIk?^kQQ7n z6nQ2kBT^gW;bdML@G+lqr}h3#)CHz50$+iunc*C1x0G4)B4Cl1QQVpl>o#$2Ay^*E zMi;x68VfU0;*mu3$uBN6Xw8M+kA;Te$`fObsYP8Ijb7P7;pwwHYQ2XIf7TMR-0Bgm z@Z=JzZublG$t6-7z(aR_G7KavYzl=HtBM!ouvhAo_Gj7X3@hCoO&YUQO*gF0?1aN& zC0wU*_fHWP*i?8fdu_9%_dEJhS$Chmbv*pdwM6vgH0(2(Fg6co~yx0g9d$EQ&t z)F0LS>&ufrpTP~|^HlTL@>>wnMQn(YPc{NlPj&)dikVz;bzq9|*YU^RCB3W*yS^;@ zTynoyu`m<4H3TPob zQDS_EGIWG&;2w3}LCZS8HMIbU@qd1k689X7?6ax(2(ok)K>LY0bPoY_5xu!PV7cFt zccHOxgMyf*v!BF`paki``H_d?|NECY3DwtjFmf-0}*+o}O&EWcS#7#hcH)v5N>8LcO`$nDP7U$Y-Ya zID`6npM)%N&A#U<;}CU%B)Nom`!vj+li_D^aOzrw3}1I1J|jsmu7&N(Xcfi5lHQ6! z1yWkJFi%2SyLP>xWXV|6;rE7O1utL%#TY0K5amMU}9*y)^cZGGM_3%OVM!*lZa0kQJZlh z6}hnb)6ZJt6VrbBv-zc?j?0XUB5B33R8#FQ-O$E^R|vhE#@*Xs&LHl6R7e40>(!%R zDbIcv^_UoB&$W8FEs8_f<-PM6%6HLmV+%c3xOH#4wtDWOOJqOaYmtvdsTexi}8!nE;)I!Cm z*_6p@>SSy56A{<>hvN|R&(Yqf1%=N3oj@4q$td)~eDzizJ%%BRESSWLTpe=@ta~fP zlmv6?JVda35u0tuV5!i~QhK`%hWoFR9TM;(2Uj^?yRFQ650rtQLH#^3!t`pa zF1gym2<$12qW#!TR9yx$-{v?a9wocH8!EL`yKGksF3ZMgRT_msr%W!HE3a_fF8kQ{ zyNvAm@hoY6+gJd*G(X4Tfnfl)7~{~4mOf7?HJm8Idxljqj0!rh+^T${BuA+fD8`-X z33qjC$ydx;&;e6Zvut}0Ln06DwB=wQRm{>L!P5-qt?y`BJ-=~)-k6+%xsXsux!kp7 z2n@a0T=o!$@3kmF<#vH;gjm|p)Pi-5iWk9e6*B@QD+_|VIHP6NI^FR2NreN%bcSg3 zlaoJkEn-_LH3Xj?Fo?|ADG^xHxJb;|+I?{808%DcdxHAw9o;(ISUHkyY}wC{k#a3R zQ4aeEA1y@0BV!38h7F&TJWn>!8xA1?jIH&C<5-Sd>hLlmHKBnAKh___i=bGxkffWK z;VK9wK~FN-zy*LG@wq}d;Ka+IX_k;C8a7;DB2^GhaZelkppeT^fTDH$>__%Nhf}?x zIetQ_>q3N?_%h=3qV4B!Deu$mTpEW>_>v5Zk(p}fM{ZI#q-jWg(OWNYVC2_=ec(C6 z0G|LhzF+cH#7$8@az24ow|>%GB0);dNFX5*O0%HEU>xhtC2d#^r)Jc)9K5%~9{Gm7!0zX8x%L*x=@T=o1sR+IyRTHPdZG(>kWVB& zathoF#Kb1aC;H77$X>Ek7IBU^hGg#60@;VIP@3$y+73rCzrn)C<(ajN@`92-@fP-Q zN60zNV9tG+7N1R#PgGoIIJF)XNa8|&kfLF{F_!zy#d`q{BCMYf|D54y$I_2nA%K8D z5P*Ov|7BhGk73T=0fXw_sm?!Yxk5E-XB>4bKQ*oMHaF8@xqXeu%>hZ<)!KMOA!Tk$ z+hyS5NSi(B3`~ae$2C3ixwg46NoGi;(X306B7EDMJ2`-m(`3Z)8cRzt{ zMp*sVImy7|Ox@9;-xd%<`_8NP+0VXP$DY%iZ}&P`1zIL)Yh&tV-Fm``YIh++uw z`C#GG->bL36Z%QgM%$wa7~!ak%`GeNGNg)^FF`=nwwz+AZrokvsTIO5J(YWTEvfCz zq*^)a8A_*3UkfR1alG8L=rxS4d{wf@%1aE~*XopCm6}quYGZW9YVPF(*)vr}YwJoK z{nGaWazSIWa+89(s?JJXmO(DZ&xzBsX0Nw&n$D_3zWs zD$iDtnc*kfiyn%j+xQ-xReh76?Veh*RTeauVwi(D+Y^t!+N#p_H;Ye~lx7qd;O4bh zVGc#NCmiS08KMel%%LaG0JxhR&O-XP1&|oht#yxXyJc$Rz`9ysx2#~aiIIw#P{js^ z7=X*(SI;2@hZ^gl&FsbdC`$LnZto&uXVKlgkF>=0Qi)~3O+2cVTgjrBL)cDQ;yJJgk>Ju?)k9Arni|Ngo_Y1#w0M68~Yz8Ks z%(!Va(qR2OW)YDk^f?`Tfr`QaH)@M2wJ4)YO1SMFc2*y0mhGYW3IsTe+1y=j53zpt z+lrtUe-eET&sa?>5B%-<8{ZFsei#qMekc=`jt~MX4_GYp>x$5n!D4lh`B?a~n(FJC z(D#~z@^{t?I6&_e*ce?THTv zT0(C`bDS>q{jIeVA|rsf5ly&7miuKMkys3WOmc*JbIKd2fM5Nol;R~Y;Q-FX`^5Z( zh*GdeAcgzCafpmX;oMs%eLj%H;<;sb_AbkvIFInAwp7wXx@zyr!F80RS#P>4_fGC8vad30oN6W1ZSl28vgM!Z6`eJ z3{9)-!X04mA0V+7+;HhDB1g6lVMmmH8gZTVtLDoKgC^?|H)@=a`rgDawy}%Qkc>>3 z3hRT%J!D1=xCKX_Fh^+44R<&n2RJlH0%gaIs)u?B^aaEnYVGL-VlAFMS65UhQTy|^ zhs`!x$bN1Ab>39Bn<7yk!eXN=WD1dA_RudfOU|+mnIJW)fx&QJnZ3K;GZ3a&jL1W` zqE8^|uxEHLiQE=s41-Azq=gQ(o%@E|A_i~(ukC)`l$m+yU%bc`S#4_BI%3B3?Yk62!D|rza7sV9F1;kiKsU3fOG@{_ zTl3Z8y+uXnpbiY!Gd%=IQ9Tfdj6+pBXy{u!h~W1a0dv|iMK77u4OfC^uw;iQ6y5hV za)@IaP2k*~qyy0_ptm?63;kwmsP4pwRz3Hbg>`cvc{xHGHk}?y`0TKVWu?AqS+5jB z6{jQU9l3ViiN_m^*5*(nC7tipPIMSyAx4vcSZN3F<3SleB}Z{4=f31CsCtn8Rqi8F z=_CF11DvgDA8KlP4_x~08I6*Fn7u0T-E(1FN$+MQ;;v*;!tDpZQ3TYzCagd~HrJvZ zIcBLf{Z4lxV6}vHN?6DkkJ`S7d@^?K46) z&|Nf9r_|rz|9tJvfL)h-{Od4r`D-F!|CiV9|MF9)*t;0oi2TDCA^Q)H#eb?YspbQGD6DCNqPU6l^vnJz1FfCr0oR5#Tj`^O`xHG!HU-#*Onh9N^cimtyZX{vdZ%XU<<{i|< ze>A_>{&^C`%Q2Q5=H0j+20heVqI44-G;^ug%jK$~JpUc*%CmF}RyWq1OH@oWZ6Kk3 zCndJ9(MF3kR5$$sW2e@-!Jcw?*G3|$=>Y@VpM1XXQ`vrjy`_J2*nz~ly=cBQ~LF(8GV*-Ls=da+^V3m){IHKKA%5#!kzuSIo zN+l4E*6YRQG0AAW?z5xHU6txT1g+oD+|H;?AoCt%D*u4%2z!Q;F;MC+3Z(zd;D7`b z8nrn_!+s$pi4@}rH%v6VNeQY=VX?wi6RZm-59{-jbd))1eH0y*M|7?S_6b&}uO+k^ z&L=oAu;I=piW6=d>jj_Rf)HI)hut7Bq}%hTl@M*s-ddvF$S&Smylga5id|d~))^4f>*y|~;g+P1-ew8mm(Fr( zr`B@GaynBW`8@KGL$)?;bY){a#9-$cB>nptWOdnp166M^S?O26KD}+L{@u$s{56XF zsB~IHzEUOC9&COOHvM# zs5P#k)_lVhaVRHje*sg#tjqvQ)!dW=+%o8lcSD#;>B2Rnxw*fs;Az)8`X~FuJEHMq z4G^(VF+w=AZ{#geJg^3v0mmnRSbm!jdl`PVI$)dF4KfS<*0}+<&tf^^4a=R&Lay0j ziV%$uMxV@psc^>(fl$lIs`06_@@g$I?$XY^xoMLYWcAzqDk}p@ zMyK)p{kQY<>lEkqbJq7Wt{%td0y_|mimjhcq%ru{5&}jnT0W@1dNkKZ=R}v~jp%MBj?7x1^mjwrvBqfGer<1QKKHp<&LpU-wrBi~0)7{QxjAVEX` zLCOx`r4;ttWXIf3W&hak&QH{=`i=5A$Mjm?li%i;Q9a$>!k_6Oydkat`$b? z)}*4b+FYEbld_FOP>SVdL-*Hg_=sH6E@iUYyGfVei$*NxpjzU~XuQgocyG zpNJWW#*S=e`+2&$wy{&t&Q{Y$e9v|DmOe@QXiU0XLw5}jh9|t8N-h*4>xsnt~PpzM1U2glH$wY?L=DvW?@wFTG39F zx$&t5TasF8s(BuHMw^U|Yhp3p$)xA{8^|%g$}fgqtg?7crQRA~#Z+}|%m&8V%zHkR zz@Ri))BK1=PD#@&-%}QMoF}n;sB=qvx_O8fU31^bA`_-$y@YTxCPpv+!;=CQ>74kH zh$D@IXvSFVhr>~(5Jw(2v9;iwsER8q1T)N3cbA)~a*q|Kxz8EAr7jcXbNCt7-xNths8_RngD4^W;XL|uc4-{@ zTpxg;r)Q>8mrSJTeOin&hgf&?pn3+m>uXVG7;@ZDue|rH7fShIu|Fe3EUZaak%cG_*llflnp>-h zS{eGs7`~Xcn%*%}D)RO!>4^4R$*0o4k|I%H&4A^6R}&v$v8$SP_BYxeGIY}LpabjS zE3TpdC9I$lYZXr_`fbchm?;iWsAc2#2VD_(Cj}ismk|-v4uz#t!1B6a*tUHml)x#s zc1F}qSXS{7_!n%dKv2rEYRVM1ml<~4Uo*D$_+7g%#rXc`wK&^thi~lF1jvtYtcxm( zR@l-n?{{R%z9O>f9L3D_S(|;>?<)NgNVME25XzGZtSY-P+yox`QS2BBfu(a=9exi@ z`*9ntA6sD&mL7qnW@VJ*e5Gc!ZmCvHT+1rXDwTa72v#=AlY_q^==YJ77l~}k2<=!^ zA+w60&(qS)%e+Wak5i?gO%#+T)fzIR2X>WO2p1!CyT-o z_gq**qoEkpA}fV*)7H=-?0(kMD|P12g@eXmRwU(0)pHXIlgO4fF<2Fp+|O|2F)Ojd zmUKw&;dEglWnI#%COz!_IR#lg1UkSJR_?*0H!G5`EyJSNqD=|9a^n~^2|-sm-l4nN zwV21WojxhaA%+b2ZIf$CLk#i!#RR0c5yXRE#0gRifEma50)@(Y`U>f|Zah6xd2^O) zzOmSkd6lse`*daaZ7<%u%&Hm90zWM>((9eV+7kE*>>x|lh$$TKT=X=sba^bCFdIS_ zfPq><0_HUo^wFWhNj0V(b9QmRCKg;Zi@lz+*o_Yv$X$w&?_AhFJ@MI8a~6;z4LE*h z^5tf+;6jovm(8|$MVq4i;ZF3#w>fPY>^Z8nJ~lj>Y>`Lr7P@+8kn_BSe@u!pJWk%g zqSNN9yj~P~bZNb;yRo#@5TR(4@>_PoFR(UUD^yHVTKW75&K5Vb+>}#AYzc8^8&Cws^2 z)|N(mGF;pzb(sL1DU3q{WR*pmAXnI|JjeaoMBmeLl^>%d za?c!kq1HPo`qr_0a%1h3hdfK|#e|XJe40&NX%xx?WinT4AiNIrA4odN9fg)?Y7Dw# z0_(2&ttoyrzbR=+L; zXk#=UT#Virumd;z<*3qO2>)*_%_7ln*`xM!NOI;rnrJ^5A;d#A8sdTuZ zyH{cDB|aO9(aQ(Lic$sRp$xf@c!!5q<_fiq6f1tHDB42PM{??SE+?2}FZKtO$-Hbk zxHbbiEc3{;8ewXc3og<%m5CE?H7QoKyOq8x)8-@N!@azQXaodI4hBg)4}?`sF6w#h zapK^oh@NjLIl{7HmaEuq4T+sM&I}%h5-W3TdvrOd4k@qb@PsuQ0xk#!P6IeM@PWKX zn-)o{DnE@&VljII7y~SMJlUtpA2wnfU4e}e2~JPMMYDG3*XJP^g5jx_R}4dJ<|dNA zcExRJ&0A-XkP|ns3#AzpinZ9+^pgR=Hs4Mh_Jw8y7;4!nk26D=R4c7K$8$J_u>P9&5@g=sfgeLA4*megs*inf2Guv%V8k8oaG zPN5Q8Jx4~a7(x}O z?<2$IkDN{QuqmfF1$qGZzv^9d|GZc(*uu5M{0xSKCq}*H4|M2}j}nyvA?pR6XopaB z1=eR!;0b?=WuRo%epkex@C3Pkyi&OWm%6wVh`4|_WX^B(_we=@DA86JWgHZ^GEFVU zdeY>2(gW#?L%asGK&0X$Fbz}_jf90y4Bvu*`19xbhbQ`heE%Tw3$5`_sPTtj-xc-I z!fC=F>-dJU6(MLf;rND)^t1-G%jf(&XoAi;tO(iGz6HGS;1NoutQNybZ{VqWKsDcI zex$tCbM3a294ar6N~x#zR((aez{at)lTt*jXC0VbZVvJ~26WzJinL;z72tqh6#-`6 z*l$-1xqula#M4P!xWXEZckn@DTzeQXLgkR4`;R?5d7{U!r!8~`Jc=CUi%?>OER6PgC*XN8p_I2iT)4$FPvGxN z$X?+zlJO?amQ?N*796e>g^G2cR?Ty4_r-h{#UuHbtSW3wCYfvjeYy);a}0!S#_c(T zNY3Cywt!wSD?jk!UK`hS=0KeQ&*3k$RTnHUWxqRDqO5XOLt1PmW%K?)2@jLJAo`4? zIu1SI#IH&y`4bA*MQ*43GHR?3;96F@|6_9V=Rn>zFp0^!mf6vI1^!*q5CF#3v%)mB)&Lkz9aAaAvo-eRItpbIF`Kdz&>TyeKpqXFpJsoz39DVel{(+xxagO#WB;k7-Jo#iNebA7#?=M(7xT6MnkaLEDTcNZY+b z_oQJu2klLk>pZvQ+CkvvDOWTkg!cTi%HDu5zYY^bX;<65+O!a#tEndA*38u!zQsUU;Ps+x`!uYMNY9le5v z>$!csJas>WMvt`QcfO?^2+wN^m#x_n+ktKJhRghgg~1Hz#wXDZf~B?g(cT671b3bz zk1M57v4h%ar;enDF?33u-d{^GUFbD#bQdKs5#`WXKTUkAx(#60{5mDfnvA_km1UbV zU7d7$NZ46RRpDzh3_hL^_*2x))aEn;a~Nj76YFzkQ~Ax~-k}M;sWxv|`MxkL`sr6W zyQU(2Gv)n*r=G}R=GIyEt8oq1Ea(FJgJDw53YMgMuAO_<%-e0Cythbrj`JFHVPPCE zb>s~;J7(cOq*~-p&#H~L#f$a4f|hmex&_!Ga}G^MW0xaDF9Y-&>)sgFsiq`tPCPo+ zHXB#88&*nK$_NJ7a@CnAtI4%GNEoD?v@c2@HloI)^5@=x&MwETHJYh;!xZgwo%BW5 z*8I%;I~&jk*)hxfU#R1_Eql%e{e*G147omN@!s4A9-dQ!P%i!|o$36NDI9|?j@THr z6pc*qO%y*X$6~0HAlj2Kc*nwg%Tf)$=&DqUl);HzTC2|oTGCVbM~%*j&eR!lNgLnw zj{o>(?WZp@Jdh0x)%yOr(-EP~li`o2x@T#nXJne0EZ_Rw}d>0m!42U z55s+#_T<#gdq1*aH{H>D7h^(JwW*>eYREpAh`@jH5czEE z^Xtjl*&S}j=*;=&2@1{kiN&RuYTT*kA_?Zs5*aZisrY-Ceyy%OY}X}cAt@`~U=gs* zl%mJUuP<1GaS4Shldk}({4x{)5!K#n=l+6$-~xkY=@ zR@nGz^S7z#fxxQ4DT^{4MP|FMtT^3fg&)Bm?3HE8d}u23DiV`whL;-WmWAYP^U7Sy zc0)pKQ|2eQ)EcD)*Uro^$!m+@&(8exl&6+zw4$9pZNtu-yxFeza@oyKS9Ry}DjxFE z3E$C+@mW2ps(?a0M>cQbX&+(p{cb~gQht53qnc!&DeaH$e^y%sB~ii@|N21EP=J6~ z{#%Vi*xt_B)Xv%UpLLNe^>b|$b$q|DAIN(%LL#V*ReM^2e~_A{pO9wJZk1>-s40R} z-6h1rLqo_>W}CFE=}V|9?JCvI8_UaWT{|Jv8aC~o*T$DRKOutN40Apqe4bXHCuG1w z20DEVoQ^*1uCJZ8n0+3rGjf0_`nPpc!j-woTe%i$x>1e=mHSZX=m6kD{JeTMa+Mf?k6K0;I7h1G zIvWVvJ4{6x&f*|S1`O^eI{2+c#0^|e|A=HZa$O3{;dY$*nYMB{;CcIA>*2H4SKPAG zC;HJBAuUwD9x>jh*o^32%sjvP{_O}se1z6Dxz^K@9%vlJe;3(%ojzjnPFr6dg5kg1dg8BjZllH47Ut%t@-AVWabK%koX@)nUVR6~Xu ztU!nw>6T{8#IV6|6@S&pLsh8}1K--&tu;OgJTO|OBUXrn^>MMgP_4rP_F4Up zV9VL76iD!ZWtBC+JtQL0sn9n4TUlP+xiBmZl1OUfAeK`7c%RrqWufc}q2lVs|h2Po1e*Opkc zWFA{Yry?Y|@|s1T@@M|Q)$UM)8+T)kA^_eiFEvh1TdN_76`M>G73Rlh1+rw49+i*a zJz+a`Uv0R&E;b@FpWVS~2JOa(M(nZa0HeNGk_XKo6IA^-d!5rCbupAT+?T>=IvX^( z<#CN@vcBzm8Gxp;=|)Igr`OCTvqO>jO=os{bKK|sQdi(sIcT#R{6#m5$L&PVR>Jdk z%cVefv~~+^?#DNP18X`r{U-s>(W3*U%o zDA%1$>1X(C{~6z%Uh(1Ur^k&r{q}W#x1EjNUS5KY?e_C6x}tBKkK_+VkH?3dTHfH! zPf&09*%5_S_lL>A=BkbEho;a zmYV0tK(3uE-Cq5BI8&2{vU)+3L^gW-8z6x$Cywa54Du_?MJ4QG5qz`dQRr`R3`%tQ*0`}e`UKHCsDhxR~Aebi=DH#tYiH>otXt~N(IgM9^F;`034z`fIWCS3np<;D`V$7-@}XBJ zJ4af9n*~hfky=kdqjUOOJfnGHR^bkH4Du|G^ttASXh<)^$9rL0GI!@gP>^PL)qb?W zHv?if#?{8?bn}0I|E`$BJH|p+OSkJNY1Y~Et>1chC+=MhsXDdOv1L?mis!gnnag$J z%e7{mcZV55O1j}+tZDc-PWxikY=E<|z+Uc{o{%v0GU=ft9%S@`bPw(7_S0a@TmovS zTL}HcN3l$UpD_kP9WPHs6#oiKCB==3;UL%2lwqo`fy0S(6N9<~a&fp2!X1#K&cI51 zaXkRBC$45H*+_U;s<|xGv1=gTwMJ2kg4EcT3}6Hp)vcCrWOMyq$uPPi`;&b0GBXtK zFF%sdm(%AAYh#G48`6zde?xU-#BItAdDUnrYsuJK?2Ni}vUBXT6}=#Wz5nYL(HPG{ zo1zs%3V~5nUn%C9S2g~@`fSASQfjVRwr$Gn3QSYCQy@MnU|{E(VSQ-tfK-cOu3rBJ zGbvRife_gkwV0PF66)MoqFEQyF30M}nMFzPO$ zvtQ1GN4Sb(Djc5>G{;n4)=o&KNvZrf76x;MoU@!rsk?@AU4Lc*(-B^s)a1uKL0%$Q zwyFjwf9CLs>1SPNPl?d}h_QWY%?V>mn|?n?yk|&WHfucT&GYF#*cIGj^heLr z8vEU64CynuIyx;s8k^O(*I#ANb3=+Zh_!nEqo7Ua79Fj-rnG z6)M9-6blWUv}0R?E-bLuNvrj@GD8IhH3DsPi^mnSVuy%7FZZf~0&WzfMLsCsjn%5;AEdfM9FGM}E%|NeM_2mpOy3+2U(G{j7?o{dD} z(}~#iG|9(2yw^abA8@9(Q;c@Lg#sJI#AZPK*?WAh zxUu7`CMYS$30;rQZQwX73C3>RQ1iMYvMZ*z8)xDfnX|3rpxxULLJQg~W5z9N%+xPa zZgix%JAulq3uRR;3E(B$bW9~7+J%8%Z##`F1>*O0>cGP57(wyS!C&fez zd*|;=z$I%m-EqgZZQC~A*fu(L(y?tD9ox2T+qQFa=6rY7oHJ|geCz)9`~g+9t9I?$ z&qqwzk*(G|nMg!}%IylH)LhooL*-CsHY_B~NN{jZXk?oA@1r<{|7YPn?b|iOI9TLgjGisN?5@m& z4V!xsZgsrCnSX|&hVDf5bd2lPz{p?3H^70Cz2iVxp3}N_>65!FDjqrY=>pMux^zounw8vU89P@sXRbV{8|FSliUiqDjWr z*li{ko(Pr+)MX9VnXTn(@h25RseXsBM|zwWl{JnvR^l`^gwqO3bDV){6_7Cp$EzOh zvlAUDUJKt>wl|RuUbz*#0GFz{Rvu&E_RG-0_d?}eF#=;!FdNO5*?=xjPF7LYH4|j| zt~*Kfz5OaOYXn-}Y0k3Bao~42hJqN;f=wzEkjHPb664C*B>&3kBK&BI&DD10ta)oz z=?kt{Ezp>>@^S6t-zRo&oPMaUI;%okYAi8sRE1=zPs(X1;_Vx=&Cx1H5`M2#m;i?u z#k-Q0V0p?1D#0iGEtJ7#P`L6$KSq2Ec(P3pI{klh_u2_b{niA|;G`6+ z{ClPH+bR_ywF{XWHOhl}9^uFOjyn0xF}DR8M#v0wL3Ql17PI1!m^U^Vce%o^&@t9x z6NI*CCv^eSH|%-0+s@2q?U6G9Ot{#-;8^@m_SZv7zu?JiS;b3sgpJNA;DP}!ait5Z zlGW5cQ5(@;^bXPi>-?3hv321B#P9gBxy7Tcj*;x)vzyT1*<#vU47WVUFR=Ua?O7?g zk4T^{{iuTY`PmY2t#PIH6V{gNIfj@W-BJB~mugwvl3pw{**_;TPIF zZ_BYV0Y}viSJd@*sL=H>?w+cu#O)w?LO@0br(yls`0Rx|2%%T9`e7twpni~1$S8*vGu9N} z)K5mF)&O$-mVvPP@$}$UjD8^6k;K54;n(ba;csVfA(7ePM)n&_c08@$Jx{t!uJe7p z9IydR?K#usxpG7ySKeNtpjO@9u)qwkSL&w?oMD>m9uF*_o49pM<{|fCwQuU#0s7K0 zHxb2|xh*%GH9vQShHgP7ldYS!>rcINcR6LI%9)|O9|ZIpH6Ez9vJpc#7W<}ISIbvE z`%!!yhyL!UEIRXOH{Mw~=kwzpN^TH-nawz#AJ+3vu-7czq(pVeY@x_Y*(@NUldnZJ zOlxS?v~yvr>Q$esjK6Bn)xBU-D$`1BpYOs(ab=x6KT%KBm9j0;6jS6(aX6}$rgz%L znx7OTN@HWhr$|(4OlZEfG1wGj&qo*dbf4wj7)id8uLu^$dwp&K=3fhp7yniwf^@={qN zm}!M3WZY1gv4w^_^&NFSyWoj@M8N#+M@Ir)9v+^;el&w7R0jgpOIHmay2y!=tpr&GQ=j4sxRG zC~8jKA|%AJ@8h}r^EUX8x%^o?*dePhMvcL18GeYc{;C*DJ%>A1V5?g@ zo~oaTFTC=&Cr@A5LdZ02ZTzcRzkh5g^acxz6>?ONRo)z7UEoTPDG7#!zP*7rJr7ed zN_rqqJSxQu`A3Z0%ghX6)F~}o4)TBq`36JzDNvXXcl$I)S2XRF_E<|W$q`{+JYBGA zk?wOaCCF0=ddRf7U1EeT`N>*bnYRQ#Hul&sq9moAUIXfPod(Rp*uac-`3GWO@_cs{ z`O%Vx+C*@35cvcOx7Z2#gj>m9j2pTeYyxhOz(%0WI9ls24cYJ!0l54zwZB}83TK-6W z7Z~F2>kE4fs0P<%M&4wbH#--n%9Ec8}aMxrh-(P+|81jf; z8|$&u$lDs)2Eh0D6p--#2+xQo7%*dI)8DXR?4_P4+Sp5sn@nZ!I2>|qd77H|e7xM^ z@UsnuDS!+_1GP50#CmKX(!SY&s&7F>c8l#JdwM1aBU%1YY~>B8aQ~gK%y-1cd(q1gQ<$-JnPyJ%*5UtRvOY=2{FfL zR0RnN$wGr%v^cbftysgsEp;RJ8XeTiVRZ6%kXnf3!U&uikA(g!A$5Yd9w9TFmJ8GA zRu}`NBtaqY2gbLIiy?#n(k^J(hmvL|DZ+uBjwk}6!IiHpw>(SI9zzrEhil^z>ir1% zAOu@e3q~S>2v>t~mp!!8msOZUmN@-sSaj4Mb^tVr2MChDY}rLXx@igDDTMsjf};jg z95ha@zZb_crC36i*UQ?`LCE{7{QI>z^UN1HP#hGkd&v|({VJ6P$%we zd-@n;Q&L2;lfm-Y`jY`s8{0usAU%wje7ZP;+IGKTZ_ok&?+f%~dMKhcv z$(e6k@`lNp`H=r~5I$=FjlO_@$Iz0eWe$88fG146T;v^~%@}Lc5yF?=se?-D2n3)N zF`ekqaCtgHPh!0HrK?xW6iZ{eL<;swsCrYl^&PzhPfU_I7 z3cwyHh_!`rm&JwX5nmL>s@~qwl2B#DSqmzwrt%j;?dL>=!2Wp9-SMao-L?0DExw($ zzjlKq;Yhf&oo~{OAU?C2q^Y@x@7$yll7nG zZ~saC{~vv%gpG;q|4~{iX#?i?k$KjVif9lle1C?8C>PWR0_73j!VsDzf}^A3&9OG> zuNKS|bh3Zq;W>$pMoc~fzbiz!u$_RD7!M}5u{9lKc|4xme7%3XV09xl5`_>V4dNfV zrW^^xR>SuifOx6>+JV$fc5}t-t%J|Ha|{edLsTJYH-ab=nW% zwqK$)gZ5Y7nBH8X;;3-WI~>JCGdo0$a055VvFf4 zGqENa*gQH~X|9&0zfi$riWNL47Ee4TGO=lcMW2!JP|M#~nIp>GIAkm(e27n6mMT)x zxa4S4F5$D$7P8=rCHMG9YLq@H4wjurbk0J<< zANoM1QkS%Zxc8)&w2SB*Rf3!5%xDFXDx}+%GN#>@o6yF;)^>~pM9f)&7D2wC>)+Y{ zNf=}f;FK0+c&`tD;4|_jhepUfhDJ<10v>QlH%5L{U@s)U{@7|-EXg4^0ckh~(y|D8 zOR-O9gO~{Q7qr(j6IMbiF;$@N$5E2fnnoEKCZ{9#v>_PF5=7h-eBTgMdG6AJBM_>L z33lBlAfBc%ng9$lzFg@Do#7|+$n1MisS z`9knjnRq8fJ-Ez&;5en)cgBL*WESS@3fK7hK6XAU|I~@?^{U-vNpK7lWD_2+3X ztfG#(t`vF*E#njnA=c)rICx3Ovt}ot0ri06VFk!7uZd--!Ot)Oxcq{RGf-K$bFi) zT92K~Z!H%g!^8ZTICsl(^rM+FShBiHyjh)Y6TMc{ZQ_I>i@`bBD1zH>v@%>u!m{6b zsL-o8d(7b97GGOki`V&xG#|t1yHtqtR5IJR4ra0upF725H6Ewdj6x}gh)_m#2AOqg zlGy>sjKxN~Z)l(J99aAeEV9IWjM`E6jLJOOEW&mA6veKPo1nL0~D?@PvPl5^1{t?)c@P#_r*P7LXDDMMDCBTEIjOtMy! zMUHZF&oDXpfh87JEZ&AZMXz`eSZm!F4 zC^`cP0i*M1kXR;3LS-#!qzl#PKkX)ecEVz z#i&p%#V8YQjxRO8W!JkXr1b|EYLFEw=A+Au`7UjNPI0Pc5T=&x^Z`-i{F|Ho$gKb%ef z6Wjz$zinOqORmPr*v|382W>@a2cru~tpB0xybWq&t4_Ao zvc1#Bgv9*Q{b$9A7vBz6%fxhu>5iA_Ot;JD9poB2T8rIPz7G@EqON$t8wFe$n{nQi zxWIkr?uSr^#|YmY{tn}>NoCZrV^ATMaS&B=(apeS$vZU$=CFPORsU@#>`Vy~!dQjc zJI16MPJPz}jmrkg+U24R!)mURKs~jqLB)1Fm^Z?=;kVG~2=n21+$jUEY!GXf5QiYs z4R)A)@)7?sW^6EhO65Tz6zIRIh>nV>P^rqq9 zyYxw#FRqj?*NCt$Bj_<7&Y+J4rHXiKc~$vNnI=ru;kH1T`4QmvyevYeZdZ+D3^^** zh~fsCFq=4Ca&X7fa+WVFN?jAhC`g<1MV(lBa~WG{e32VSE<985 z-_M!tXagL+{w=nuL41&pmWZPgxuehwE-1?++K?e?Ykz=tDe!=@}}BGP@&udDrFiR302kN6?1}P4T1s zB=L?@mK2Pp%kp+!81>Mp@NSycOYgR)HR2m+*x*@aJO^`lk}IKAFl&iL)S@fgG3IZG9XyRB+^C>$te2IN3NmWYcOfE6$}v> zvUbgyb)4ighTegv9rU$}ak35hO=k^hjmrt88RK0QsEG-o#MDSa=qBi0!s)&ps_nt` zqMV!=_W-2m>YOwY91)2|C+q1*APvC-IS^Yqu+QzNlDG&b=a zOk3svP2-d+k!FLlqS`Z6n5p~90u=F~RRXi@pBg;ZjiLSW?dOW0khTz-i!DO0L><3_ zdb-!_njN{E>1AxqV>VH>L7jAv2PkBBIU6WOSs|kpZ1?55Zv*KvRx(PYRV^0x3_{R42558T$_XWMA0L?h9%}A47Z&?320zir^XuEw!F~qkY zGvogf$uj0P<~F9n#*X^tR{y0&CcfFODIpJa+33io@rvV}gh%q@nWwQ}MKH87EDjAS z&N^GR)n5K+4oz<*b~ffhfw53e^_My}U`|L4ox@y5{!w%UfKtPD;tdM4@h)VGi zRW>&s%vCnF3y^+O1w~0-pKdl-c?;^b+{BqCb zWTc}QKl{q)gj+pxLjhj9(E_=%${?k6c(Ac?h(9$$9v&HB2|2i*w{nlQZzU1h|I zC1W;L**d8->10)7fre#7HJ>;|#Zi?B)7W7vkNKXN?x?h?@~z4z=`!}+O0D-TBj?sk zr*e#rS+J7r00omf+^$8GNVa4khBy}6=#O8yBeGR@Z02L*)&d=Xm`}=U`V1s0|Anz_ zGVZmtUZhrbS>}slQe6xHe|q9wyhoV!bjmAAD%baFIqueH{Frx8$TrNW&sJ&~dQKs3 ztxnTc%EyfENxn>VmvPB#q9C`84+DHvV3#-m9nMWUH@vgKT%_I}NoC$XWC}giJ)6ZrVlX_8y)&3>DkY-?C za%9(lPCW;GBu=+(mG_pHf9Eq4Ti}x$9^A~;LFo`1z)O&UYZ$x(Psh5)n2CyVtSj11 zD}UpPdZ(Vlmyx&ZxM{`qmNCXD?)u3uf`*pltgYo{TNvj-wXmvL{O+{MmwoeayXgk@ zi$&gdADibR1j3*m6{;#1*;{N0lF%R&m5?k1|j9&v8{Eqy`<|XG1#b%U5TRTpdW`L~ibXPV$ z^~|V7O)p-^`zkEXlgx^f2KjR(iszs7&KsUtlOa3r=wS}mQLYYIRyJ<9KEW~=w5PZ+ zU%q}CNO5imd%&+-1e-DbU4fW2qdPkY@yW3`!6(KTVfg(@WFrCCI0(OWvh)G?7<0UR z*nwjZiBD`G^;kboK_G#c8z~+Ve%x3Y4v>Ji3}7EhPzg{0O2wEr`xqtoeTEfo$RDY< z0;o0fU?&#-C0!u=jfMDQ34fVlAU@FdDI+!D_c2z^gZ^C4(+>lm%nSST+)DnsmFH!d z!4DB-^&r4!`keP9rIDdl!_@wDE3T8K2H%gL-UlDkuA64>Vc~t-N!5L$d%Wot=~#4x z+@VzjxHolu$(E_UUkeuP{c3GP{AtvpctH# znm$`t?uWw86*+SQi(11_d#LC8cSt6>@C$(Zp34}%iO2tKE)#OHxBu?*zU!Ikf2m_i z)^c<5$ljNm7{+}ZgRTfD$V03pKf_>!_5Z+vqtg?=R#-VDSY6CIc`|$w$;=On{}X1kXh*9Q%?g3?u+B+LRaukrv7Wo`5Ce1$@_l*9uYcAgbD$1s(>c;?!U)9<n;%=9&Q=Ira8 zO1{Ct&=Zm-5P0S?9mH4U8Q0DJ{&;h%O#H24@qG1Pu`453S`%<_H_hS9T4i#laZ`2d_s?xnC?cvuJq5KA?Eq88)@t z86E(nyCTwCiQt}Rq}X=ZV(b?Ta{@2Oq|cvIpzYZc$55}Qo1h_EkVcCr!+xpr!2MSs zaYY%@c=+!%ZhLLbM?Zf@F89gh zS4D>q22&4z_%_?CCtYo23ngSUK)5(Fbx~pru7Mtei=3N=$eI0^w1K$glShr>4Mbu={@rMH{QtHddUL>gc0W zXAPUyDkWAJnrl~Bog^tLjFSYV{7pc9kfzX8epJ5bD>4`OllZk7Z1Ur2f$Dog`g>GyXjWpQXF=A7ATOaGfUPw zA+jj6 zWl1SyYH|fZ8rVrS09fd9Mr?#nx_9P@1#@s;Ec@ZQey`(+J-nR^<)jOO2(x`S3t7 zTTgc61m589!m=zz)0YvDSB8sb^9JHxS z+2g2P(oMS!Ul)-rZY{y{c^| zuq(tMwR1+M)BfsVN57L9XH2LrcX-`k-@1K2_%nHLfmy8{x!$pp+qZwT^E=0O|LS)f z0mHRojNv~x?vY>4(&(}V^Xo=-OtrERF83gST)}S@2AV2e|FdTFBb4?cyT?Yz>CMpR|1zGiw8FyNw(-48z`3KHCoTjPq^^MvpY-%|&XRVNUMk0k{A0>S(_ z8GJ(+;TQ1PuEI*Q!AeE-;we%`4H-It^pIGJZt*wgd=;fbNsTc7sL6D-v__G+j6}1y z`b=Hv!q8Zmt~}YQB1d`HWBg9Xt?)D`jio-R8o}0OZoFgumPWI-so~ID@(hvItti3- zY1#cGkV0T(UZzlqg}Tt{FidiidIg2WluCrD3PW-bk3T}t7Nd(|s#dC?q7qj2KvA)&Gd@ON13pomB(Y{(WJ% z=+@>RxqL|49NRt}SYO|hLlV%M>M2J|`?pG9%u@A~#$uUw%odJxi9;_3VVc>-|B5ru zX&a0>_D;TbBRQAu2wJA1{-z)##JbfR(V)#F@padCl4oOUz6vUWf+%!_KFatwCBZIo zAow{1B1|Ks<7$|_M+yV1axBH*i%^oWNc|0+iIMdBhr%6_PQ|IHP8t05)J61Y9yF3M zDxV~}T=rcQwdD7)y1RrKQ|u$3wNXTIIvzS11_Fk7QwKx1z8WJgfl%}`9ij;>`-@{` zqm2e}<4Od2O{sdY8kdq6Dpv+H3Hmrjp*Z2awlchv^}#W9##w0-G*4f86p4fYlGC!RhrjfmEE+Kb*L zXj+AmM^~shXqY08Vz98w45kKf&s+kFL|A-9N@>@NO){^(ZqHbxr9?+$>8TT!ztKw; z0AI}Xkx&n$ZVMG2`WoIsLw(4!e&d%s(iYy)l49m>HeN%kI3DLuf9}385||;i-=7T? zdjA|s4HZfq_K!!o;yle7EZ`Dx7{v_5s0w+2idK#_&#rD!uI!DIEwtx9GsB* zIpbO1E91&-Z~bh%nr#YZnEiqEIs!i%iJ&1=%{Fs6-(9)OO;5}go{wEfH?K?d3M5ho zCba)gnV34B;{)zuuvSNMQh#;Xx2ie=-Oi~ch^n1MGB2oRiPr-2W14O|W)Z9*pR>Vf z=;r_^I5EBUIZ+&CsOur zoOxXBwH#e4e|}tD`2bOO%NjzT0Wb6G1F>BPh{O&6P}8X!)jSh>m&~E{(g$F}H<&@a z;(K*4{ne7MBOZ9efgyttI}@*Qe7xv(S_04zy|?LT0u_H5|3IU1->|`)G$~V=#rhf0 zn`+%+(nKxREq(bU3 zk0E%pbOEv-LdqK>;2dp9>6b&R@^=|cY2nVW8h7q1CFVt%9Lh^r#ykd`IAjLp^B=2o z<4L&PE2$86S`hrFS|Kezmv&-`dvdi;>QS+=jv(A%k0!aC;|~2jmi%)JN8^_4U3+RL zAok4gUYk{dYLS7ZQq6;C;tV~GK?+>XQ4!iqt{EdU(qFlkVs8j|C36XdhTa%$YE$$W zMhvj8Mp6vypzz=|73OxJsTg(gDEAintGMyY(C!kNe9 zK3wR}q2rPE1J0O9!+n|)vwWLr+n+JQ5iVh}3_2{Ta?kFwOMp)vYwQzfkWKkGj@MO^ zHvZRE`(FYtNHs|PJS6UvH^Eq3GWH;laeMF#0Z`2m)IkiAEhx34I;i7%NzAG#cU13T z>;u4oohS*ZT`}AOaZVYw65*aQoI6{^vM~lUnf#nW%yR7f+F%GW(_6$FayzgO?;K7Y z(ypu}rUMtfB6~y!bKIF`@wvN=(dtfJ0)>z>R~z;cOC|Tr8ON-i!QRCk+e`D+!``FN zEO%hQ;7rBhwv=@a)>>vlhm-7dAK}(o5jn2D``WKKonisr(vNZ*VPVM)P+E52mjta+ zoeW{34l#_5`7`S-UEtl!+g|NPn9Kbx|D+x|o< zXv<-KGxB{usm=(!6|Fx?2q_fL)O1-$S1k+#nP&#Uw}Ond2C3UjFy6ISmswBz`MU9p z+w0)-Acb`=pE#b@Q-_Mb;DEjjIl2e6VDWA!f~gO2!cZgB>uZemn1pnm8Rz*9oaR+p zC*;euL$P`^1=(IYZ=(fiyfAE;j9ipT?rHs%)wxW?zd|tMa^(TJ+?VyIjGrW@Ka@!= zW6As+5UApx!pt|6gg*<52yvbLSi7RyQJ?bUhkEDQMYMiwF-b=Cj)gQvzA0XHsIY3P zV--yxMuPQe8UNlIZotyU4T^Ox&ayK8J((waJ|bjH9QCkdi;jv0D{4*MrY0~s5W)Z; zZz0d?m-k-6aTFyahtHjoJ5`;f&crQ<)j8hXz7NnhT!!%P{h*6Pf)~O(n!exTY6&P15dHrGT>|FzM)tP9e;eEXmys3l&s|L4aM8@(nl=KtGC*fwYKB-n4rf6iH z>mQ1i!}0TfQb7Y6V1{aveZmZpROBOt8Nwv~>`97hNp>WlQiE+2>+yChp>Go0dgxCr zeFF?nY-di{O>5Ai57WGj6-5`Uh4tB8@- zY}+uGNUS%~&4kN()8o6mLgy{2N6aOZTA!tJrFLHp+Lrbl!w%<%ofl9oS15)(zW4}< zrPtI=b5@#SS#!16Q!t)ukmaa$EEN--Db`ONVnj4|KG%|oIT6gvuGLu1_@=1&-1Msm z%k3P{iSO!!o7lHjuW)zOmMhLmeGwRu$wZ32OE|+ZD|eioeY(HQ^&fZbREd3~sO=@V z=Wif_q9j@(4E=K9Rk{`sCODrkNcjS?2GgR3Tm^ZRdZPtC?h<^x=4(PYf@TkF{Wlj| z0y0+#T#lDpN`&SLJ3MOIgy6pMv}v*$+xS!duS?zod?(i#o-6fqFtcd(GQ`I)bz-ao za=hNGyvAMqS`KG^N%Ca3q%OVv&x<-ixfxEdNEKj)Q}n_tKVj#aZ>mOQ#HnHEK~x6# zHmvL&<-5Ea&C|w6a>}C;aZ1D!<@uGC9OBlDS1O3I`KymVh^kq@^-J}C{*_CWA6WU} zb<^2-*39r*g@aImGQQeD07E&mI4kf6L1<@8fW16y7FmBaJPoxGgW|BvdKh9}U|`BT z;5{7PEzthjU@LZG6EtlL!N(&gAeLK1vQ?-@+{NJn8N)E)7I3UzF$SzL(Yd(x%jt;i zUpp}p2n}1f?{JR&?#8(OmvH{ib>n{&v;Q_`X2xk-&dH+>eUV83)=VlJojR>57iDDX z^!efG5(HM@aYX1yJLKjJlVeGV$R0Eyf1&n3@%_P*^qiECuuk6;-)`r2)A9cDxqX|O z(gn)elRzO|MM=1pr^RXErrgVk5DE%oJ5=~)3X-8CKNFu;9E9jF+tADrh4)mUHHo}& z!tuTMGNIjiyC*SD@61x;R$nFe$8M7 zY5DbcqQSNk$2_@Bi_-yP-q+&w+c3ifdf>bvEk)-u-@MOf%2!SEL=yE7F`)2JoKg3A zqIrc$gt8o(+vYYJyM*6s7*L!!`(lsi6q}fiO&&X|x)Uwxpf|>?X(hZHY5|Z%%Fu3@ zZ(h>*DYv#tPE(EQ^mb|j8Ew=`Mhg8X`@+9!L!Z&?`Jk(svnlm~9gnLRPJCu_M-&`q z_wgH+<~yM6;WX>NciG~pB&(W}aP&uJU=ti!0xq0P=vzt)tQB08#jwClC7S+}>G$>I zKiQEB-QDMa<|QVLPl?GaPKhxb!$wQ3YNgu7DLJ-sy(Yv`DP6@H8fydGEMG@K;!v{X z8?CG;_d(5+MO^-x$T=;K)Y`K>Gcr<7GAK#0|JjNMf4F6cb zwgHNb5|7ys6uVaz%R==#N8!q=^21h`xB-hnzm!g;3&nq^0V%8j2EPjNkq4^$G&JzZz47sXp`cX!`I8g1hrTM`R{$Ab@Y;8i zIX|;|909j2#Id;%q&PP}!`GJH<}to-EJZI> zS7FuCWE-pd*-Bo3bsCjR)2@6G_viDqEbO#X1@+;!_Qb+?q9}QzvLbD=(!`SF%G^q3o{nR6MHP=%VX(wf3m&bLQD{ig<5W-_SO!W88` zg~tj55ef}b6xvqFz-nj`+ter%PUT<+HC7jzyhQl`||f6)qoE8%PToVq9bpyof6F$}+&;JGa>V;>O3f6LxYk zm7{89-ps*>oyelAs8S4cwlQa0EotqlN@b3|!EgF9#uQ3@->MAu*Q{u5%`I0rhQujp zwXB%V_c`6B9supvww#c6s*?pjI@T>p{tV!RH%Q6>gtYixQFKbdFAtmZ zNa)g$@?k7haM$~~Ve#RN?h9X+sY5&O2DKeQmmQ3c>T;8sA7Ji__CZ4Ym9gi!8o3< z26BrCN7EYo$rCaL3^C#j(g-->2pCf6bLe`0#+!9W0XHE>gqzwJv$cxpADQ&AUU1x- zbtjNb5jX)K)(vv_>wMBMV3@GI$k4BA>G~&}-8!Rlpv*um#nK%$LT&$XtKY7hlO%gG zH`l6;3)35p>1M5w&$dWcFDgP)u_0)~kKKlGhMC?*So=dVh*yv@rr`lAgHqgqL8dZ@ z7j8J>t|F6_QzmhH+OIJG3LBo@rX+^nc!BKy{X_Tv2pjU>A0Yfw$lK8Y{{55iBfIBi zhwWiUYCAF_DgC^Be~h4+qF`){yr0A|KK^J7v_3H?6Xd`z@?DK;g@O>6A5e`;q7yHa**gIsd&ZcEybzMzABte=N^eOW*C_2J&psJrc4_UYvhM)A zNq8z1Ul{F_0RW^9YL{D-cZ*2f{F_9~E|tBqjCamYHa|}u9-Ew@$ou9{+%jcvrX6P} zn6^X{^%fIzexMwGJ!GpxwtY*@R#`&Xc9Qv&SjS~T{nUq_*0qXCx8t)sJ zUBR7Kg@5bJG6!oX9U-DuIYYphJ~0-!iZ6Y#%_&zAJJHwLlv^@}PwcrF zXbKZLiF~I4Qolv}FBvEoX7i(PAMVX^D&LN4vT?zWZ<^!zda?`tW{2&_-I*$VmLpZ} z`V=?%Oy?YhFiZhX@E1DxqtTQ<I`l?*5;lBD9aLGq!&tnt zMS91}dxrn%kg2+w-qW`5ni|hWF6MU|UorA7 zx5qaZqgygoh4~fP{VAJ*z4VM1@Wgb_j?nkDPiE*E59CfSto~aW0$DzHx=)nF`JD1x z)>Wk>ZJK%Kcke{+iBUw-0D|VCZa@C0;E=j7^)A^iGeT7;h*p`I$V6zG_^hxcWorx% zVJd%PD1!Bi1hV>$bC`1;PgwnNPFNJfbEtc|3Y8XY@vEZM!*<+jg<0yylx{`T+ zNmBqtq9o5rtZ1~OyHN?@9OPEqx|dYmZN;%jG_}QusteFyjYnrpVZYLe0?)8+91TxpczAUp2@-?2>1PIL*iQLeMO3B$@~)L zG)cn}=A^|KxvD*8J6udc1%7;}6NLZ+{6WAPh>UbWR6H|-Iud}HK^bYz>~oBnA#<8b z7s+g;C_ME(B~X!+HfP8xuF1u0Kk&XeMA$Ho^l-cB+RUJmG>k<-FcUr|*(9wvOi_7U zH89$jvk~7^!+QoDYy=d|1J$i|lxN|tPV`msj;geyaI=&EIs>1~vsk-qjY}V-Lp1fOlJ}5tzdS%r@Dt8*#GBvwx8tAqZL+=c_ zqk5D|e(O3~q{7FliN;K0)D8+qYqDxZdV-qm1JrZ?Sx4GxCr>-jH6|hg#y3B0A^n{X zvPcMU>?I{j+r52kjAcM`0S5E34<2Rj(7P~>7NuUs>Va8-A;E^VRrS39Z9pIZC7=nG zMQ4l~rBFS-tPH-80JL+oJS>gTXR&v5_qKd@H0+d8&dy22%{a7)dQ2F<%RuKKW(Ncl zfrf>Q_sR!YJ4C9IyaAs~Syjbjbo}KP4+`!+ioZ9FFFmJ`j5#laegjM(ifp?|uFMMx z$tDRjSYvz4pK0O0gat@~xhT)?>;i%i^rbyIN1{qFJS5tr627r<1_)%0<9k(;4+$vg zKj({j+X~zjON`WOHM9WA2Nfl(#tS;k4ZrtGBtlRpcb`e-XK=o=L&NPg|~(0tF&j9r7P-qRc%W!i*e%rpK=4~xHqcA-sw zt6Ly>pVbD*G*>k?CkSZO#i zJgIrfyU_i;QFfF1ox3Um#UlkX8lseEl0L6qr;$@vT#DS&6ty_njT5DTF3KYpJ_7;_ zd6Fq9IjA}{#1f0m_**2Frgu<%x8m`6R9q0lC^OV$xDITZxyXePWbn83?C2ZJ+i}b) z%i>-(9yt~hiHLSPt%usKfu<4rvD(}yD6;5{1Uk>ua&oLdsJz%M@K+`-KpegZUJ4B? zVYe#vQ_D~}P@pSBB8ZZ9@OQR=bYfGxeeBY{jx-FXemL!<{a7laI1ivHTwYRe2@h?M z6J)Ic<52(=MTyWKqGw5gZo)SgHy;d!6?0CO-6hZ`t7+7NDZy)h_9mRFz%#{AL8=C9 zk4*#p7VlzGYpgxhE)~l3DG|X~<~IG|mjzDh#4o@hvY)RKgTRivogE8`s3S^D>f>QQ z$B&fRc(unNE0{82aHi6{+9JnKak$x>A@Keh1E#*_gid8^9d{QjUGFO?>{{D6~dP}h1_s2P^ zr0DD9k+sAxerXSr=1JUmNZ9up?qAlb;_EV3)E^d(j%=P@ zXP{7#Yu%=TK^TuZUIIK5nAj(-wK~~7KPiso4r6hNMS9k*0}A7%FZkFnRc3adN@|z_ zkC1v1a9;U-62}1YH8#F*F1P23DQF^8L{ce7m3=p#!oC1CFJ&{ZwbADZxmwUBU&==1 zJTXj2<`cRAo5PU{LL#WX6?Aj42n6j^gA6sR9T|xb3=HI8xc3-#rYiH|Ml7)|e!6)C2*I8O1NtT7Jet(=xmIODJ0r=FsjabNd zGb-ZoJ3#YxIIx5;zK83pE9V{U`N5~Y`I`RkGM4=O$XDV5M084;?cAU;MxB~|NXL2x zoq$bRfO*(@K8%I#)V!T(?HEH8;^y-0wV4=IQ+GdIIixTFfHHR9j9f84pNe3G$0P(3 z3)KPubet~60l$!9(yxGR6~*?*BG~xttFD8MSl0BApzOv&B2~=1)j5x*@`5VUD6OvN zvAjCQnu1=9Y{WlqUp^(rkU6Bf!#CBYgz_`rO_BkM`*XY0p)Y7nap+)9(g}*q+#wAP zYU_GXKaSt}!>BdSMr%-=nSN;bD4hl}VI$BX*Goz(rjFe_@<+4p`|K({%zo)0H7%l< zL`&@E>41)Hp!${UL^S;PHg6Z8viIDqJ*7MZ(ltQ=1-*9wY_p(;l+4#5P@*D^v(l6| zjxIq=fwd32GwhUK{pO8!AQoqWDKsf4L@5kBUUC9vwwlJ`5X$6pa4=Nyf`oN9$FoHQ z4cj-0;(mc%V|aKTbwOo_BNAWbvdFolpngEI*1wHBfbnPC1me(eQPf>&yN)4GN~v0f zKtJkK74#3Y62zw|kwccb`&gFFT0~*FgYcN6p!`(CmZA00qiAss5($(4hqJc~t|Lem zHN~tWW@ctai!El0nc;{TEoNr0n9*XEr6Xo$vdChVEQY7qz3=Yanb@5d+Y#N-KN=z` zv$CqPGQZqa2j>rScVOzj@9X_#YIMmzC#EIP1U1q!qpW%WLNTdCW@6@e@XkqQu&s>h zF7i`Vu<7`nJFzlC3}EP9T+eZ6nCMPC&A{()Jhp414WxWU2>GNE9b} z5M7@UEB)k5j1rAxau{l4Lk|qk><7SB%<*)n-`1Vzms2}4Ge-LS9s*{hxYCA1#?Q@~ zXol5!qz;p53XgM6l`g06dpV~B=|aTyNmB-DOY2Nyfqq^iwWx1hrAI*z>|S7vD(9Q3?C3c|7zbi+yXU(WY<@V8^V2XJVP*ULV7 z--Dl#kG`O4%7$#T6MqnSc@hLSW{Jnh9$dFAi7QoeuUO0+f6r;>8=&Q=+SSQ9-}ZCm z#-z%_N&+B>!^t1t}G>+8|Hmo_FAQ?@UBK_S`ob_$*2QRF0nIH!fm+2I25TG#1R}Xe+;G7P4 zFC20pDY!zyi1pJnDlbu;(53P zzvqI893DF7b7nB`xMs@WkYpjWcQu4%RSNj|tLOUQ?-0a{;au;I#xUIQx1NWQz-)#2 z$C21@k3=^LIS)Hr%x~MOd1%uoKrWIP6_hF8yHOf~pX)?6Yco{&5+C}n;yBZ2Ow1V5 zrd^gmpew&l>&=l`Rq^nuy?gq_l887CtW2pPDhoPDBS%UkyCOugCEfL&+Xr^D3&h-S zOk}f?ndt2L;`iu&Rv>_%Xzy_*OLk{KJ@u9hS`k+Q^15H1Syt z6Y9i~U*c=M>+1cdEB0l&sNYMXmfh|vJjJoBs6QreU9U?$qhrR_k>)=7t`Q?Q1v)&_ zQDz2xD8(+5P56<300(b`NEfroxc=qEJoEyTfpC7Oz5fv6+Sv{J*+@} z&M!PkA2*Tm9`oPFyBNjjFA}d`v9LNGQyx?XEju3d2+7eo!z4476w8T)lL)-;f~=T|Mp~%A zLZoM{pTi>BL!#1%q+r^rV7QhIs%;|Ao=~Md=?%(~3`&|q#7L-4p`r`KVY&*^XX#f8 ztEHru(P|UZ)WHyAri@CGFX4XN4!%l#pbDt1ox~WbwF+WZTQjLkndQ0}Q(p#Z6M21! zti+S@2i#U$zY6L*-4bUQHv9GzOMYcZmjCem-Bnm7=1-BDBl{Zzj5Tvs zwdPEsN#Qo_-fWAdMo~G;QjBqzsfpbJ<0s3|)qUG(9f?5O6XT=&nI`EO6hNFWDp-ZL zUidQbh;ExV&=q4*#W^9Ljm=zQjOpK@OYItg*8H`gC*^{@D7p|&RaLhw3$F{q?(40d z_{AGiD4FMbzNTi_1-NDI&}Vp7mj>Uw^9`c26m|^48la}Dw0f;IA;LB6ojhV{rKfV8 zNp}XY6NDP+6}@Fo?ZuQ_ma!C8uD>wu=YG8MMmCJAn&!+fK9=D5OO_o_Q?!`O22X_M zEToikd5z#Z5fQU7Bt<=H-bC@~JiX0(}hrkODERzQ(<#&yffnnR5Xg z@pZ~_nDn{0CL;q?VBttFs%bu74N>%=mx=}!f;OJ~YfqfYaR>L53g+JiNdaJ{j`5Z_ zyTd{%R9xTslhW)8wX506TO#+nTC>D3h44{=LVH}J%>>AjvAq0kkph(DTUH(((CL%`?O(~78&Fu`fqZQw>Z!_ zijxwW{c10xSP^Z$mAk!?`ZV%OY;0$fd7H%8)mFDILWQodLtJwL!SS_^QsTBkQHv8( zKOJ)T{240G%C{l#$tC8}82ZAtW@o1+$eSyqzD7zL7-M}QYrOH3F?e%Y)WGVAK=82N zj75ntxeaWsme0l87biYE@>NPHuG2Uj6eopJzeg1%Scy^LpUGezi{LEf z=9E@+l$52}m1}4OAF6sKq$6C?<%FQMXcw zjXp2IL|MXTQ{c8{;J7H(aJ?9IvOd?Z5brL^dtTuJ>wC#d(M`<1D0bL1obN(ZOzCbN zP>bhNpiAWX8=|s-2s6%ym_$2%O!v zKof@h&L*H5a)#jWGI^yH@T~HU=uSxxcHE6MAb*u{8}hoj=r1?i?|}eZHW3ej+;EWn zS0bd^;4`KfIc$t@?%p~W++0uQ9T_g((*Rt}n9vP48^<|iOUH5!SF5-)W5A+*2bU{l zO%=GaEm^!3FFjKcwp5v0bts#4ZH5kRH0MO#j>d_x9^?;AL}+VfT_()Z_B$O~a_{{e z%QIP&`k~^!N1cp>gC!edlPtNKP#Ks->TuN>>{8rjwSL>O9pHRo(BX0)Qo0{xxwRYX zE!ad>V(#p0O&gH8Q_juSK73sp1&6cuOo-M!D0T1F4>w?XT_n(d24O0&g%!I4w^i=J1wYfEnO^WtR!Eem@y_<_jJ`~V3_p>22B8GgcmV__ zSpqDzpli=Qck;BTbfv#1K**)%tFmiXin$D!MlQYY$eX9L5A7qq zLE?gvr0Q1C+UkPPcE-TC=}2}1CwdNr+1?A(p~3c4X8Ka`o4t)_PIH(E(Zqj(sTm^6GgT} z`d)P*WVrcZBH~NTfqW3UqWRY^Ht-z-Vi!7Q5DEgggC5L54y|nYc7w%sQO1?B$}`=~ ztgr$T$|pv|ei+Pd%J?a#iUTyBC|*y(ZQGDmuq1ujS7>H^!>n+^@Y;JukV2yr1Xqt} z(xmRly4KqR-@l6Rb5A30r|{-EvMpUOOrZKjk4RgtycDKRX#jc$Ip$=}aq_bYyl}1h zYuPei@?-kvm2+!47K7`ISk(2l?*tLBAe$kT<4!9kG|a!WcA#J*WcY(IgVrj6W$Q99 zONOwE_LdDb0Go}e34W~*79Ao+_bRjOw6<^6x=}1r%W|9abAKAnm6O9tVA{HfYe}W2 zgV)bDU^UrSAg*DzEAh+#X=J(f&44t^;kN7VZgqXJ!9TeVW7rO25?xI8xFETHz;ymZ zy6;#hZ`Tk7=(&SwOiEA7FP-dk04=k0Wm*>de>+;A&s*E*;Qw-UtX_?{Nd{6FCIiP) z-hR>?&?R~4ZUcRZr4EQh{|ZGpyCUH|Lf-|j%*y-4BE4b{^*$(reaZKFMmy+LQU>(o zvpr*_fgG%2{KK=id9#W!>fqlcY6Rd>L@~0^L~a9Pj35k55qx{qA7iYqFkE^`CL+gh z`#G`4*Xntff~oS!Y3j+Uxd_ISRwb5T_JZAyP6f2W%+ZjHmm9v(KFk|)cLKWG!{l>^ z-@}~3F@%E!SMkN?FlN9R^;wXW*%^#@>IhWC*T`P8>l8&$K7p%pkeqOnBa?8`pD|iK z?ueaO>H{vNY_O-W+GpJE0{GcnrMLu*wS)NRdn);yAk+M;QkZuN%4w(`0*)JLi;{0&Di`(n=>>J+L`TeS^MEDJ&?b0sOF zYUVy~p?nw~O9uNtPXYG7#RAw*cb0&qUGjMe7~Bi@W15>S{rP6rPB`VlCz%&Lx7uLY7BX zL4y$(G317OS+i{gT>RgGzbt8?`0v>HcD)*tI{{MnruCs{l6vy6Fz5$D+< zI!a`WmywL8Nx58%fDzy~QS#OcRF2``8)Sh3BX{c@b(gYL<0W_ab34W zS`Fi7$L1Szy>tkq^BrXly=1L>PSgjdSxr5HN-Nkgoa(5Aq~H{U z{fPHIl629Jlk!6AOx2%SG8yMzsQO#Z^m} z?|3MyMzwL;Law;ru&u@B7zV1gPSvJ5$d-^YwueYrykw zJ-2C)&jo5XLX`M%I?|_>;st?#g{Nxp2s`nL@#z#P(c%&qW;#@XsIS0S3E^R+gi)lYsty6|MF}@VBY-r>X?65Emd0r@NpfrV3v$TrgyabGQ zsX5uTRBI;^owi_%q~0j#cqWM!-RP7+m9S3Mlqpv=-BqTnD$9N8uUQs-3*gn%GrEWQ zkwZ_yX_?-kAvQ{AlfQ03UZAp396G3=6OpG34?eHdhUEbyIzx=Q6m+E6xd65LBq}@< zJgrA**bulHqli%Z;669zu%-w>5VyeU517_vEba=rISNz_7h97E4%`<#3deoMrQ^bs3zsQf_B$QFvI z;T|YWb;WZZkV#e)9VC4UA#2EBeg#IIDL-Zjg(&~1!%aOg#uOmZ9~1}Dq?zn^(OSgk zdk<*?1_RvFp_xciv`MpAi(K)=BEg4i1Aw*ZAMSGSLh#cC5=qL1NEh&rFfD5_V#MMy z0~>y}D%7I|NmAfEVJP5yDfRvSG0k-3A~H>QNw~~<)~X%+x)7%Es2PsN%GCj;Frlb_ zA%8GiX5dz&;mTChg-f7hnxQ>FyCgduwFPts#dsk{-mp-vo#F!C3HVLJ)`PoagRTJx zL!AlZTfs7Cei`G!A?){P&wrG*ZSF~$?DCAyuJ|na!^KQOhvkPDGT1OW@ft3TN9_ZN zJ+sYPgQ{0eq~LOlYs^}S_CSkC1p}4eJ}-~vz@KKXi!)yvxN(8_6qiXYyR!kQy>+_E zX-LUPUu6yCr{SP{B{MbJJOVhGf*&P)5i<~DwxlP4#x@ol3ykH8`gDgDh9-~CSW*Ut z;ym}r#q|!xU@riv`b%T-7Zp{rw!la%AqBB@nacb=FLsOF3=BXrTXF!WbSkEb5twU& zi9@4?%|i8HmZWO+VBQQHD)bw?A9DTR-!B$2NBwY#@ArR(OBu&JcfCAwe%*uinpzHH zZZMGUjp1NJrHjjOfdPtIo>^i~&V?F4ol;gS4nLoH8eYmo;UvM9B)==9#J{WLjl#rV zWRR~sk~hRpwn+k+rOo*+_+S>CNV3rBDJ^u|*@#n*NC6s@U>uTil#wW|tOc+FP<-t8 zIy;r$zw!wK&R0oBkdbf_x%-tvU9>QM4C7%sf#0@4EV~fUClYbHV70g)6CVOR0|j;{ zYIXGp!q!AKNPh{A+00@(r(6zJ=W-cs{$QN8>hbO!KU@87_`|WT^(+yubm8 zpN|M(d78NPF7SFI%jE4}o}HEGbw1+k0;XVJHDqzNC7?upm2M*6KZRWwo$A zfG`B{L3hU;7U$xRhK0wgi8)i@cG4d%65X-MyN~c?0h;0 zs7A}Kz2rsaQcK%K~7p^Oi9VJNThj@Mou@65XnE5n;F>zFQI>l zQxWg2rObS!o4iuXZ1#F?2;FqxrLv=%BGcw7U!7BwDz_d%YDH{{OE>EUX2A$VH44pR z9wNCUk{|7R;*FW}B~?SL-N>d4h9(TZvF2*_Ga69f2rc!F>)a9EE45oeGbbPpc%qbM zpIIZCPBH}vF1R+Q)wtK#m3?Wm8qz6cwcUq(J~dKQa) z(8lE)xBlMA$NT0DqIBm1P>;{bbd(+ZqPu2t78R9AB4F|57`PTFfc#C4Ce22w1?S2> zKg~MU%QbzF1; z+=M-{#uTwp+9Yox6VU?VRDzQ*<$)HR0gJWeIG;9Rt`j#$&T!-_nOKH5DExrUMkNEK zseaS?*lcQRR6}|8_a<0;!C%jK@YNl^D`D(2CiFCIDLGZjO)P+-ylfTFNqxSl245l-m z%)&`u5BXfiY0NK515i3a{1V|YcIA7E%`+B0^Qrb!b9Tb8_+Q{gU!ggbSj2JOm8Adt z6mfW`M>_Zka(rjW=rasQd?IjU``}^Rb?9?`$FAOWFui*Kbc}i!lYA#J*eB^-f2Ht@ zC!k?ZFC@{1-uuIr2*5F2x)nYUQq&3=IyYUo!#zSqsZ(NwZ2%dyW&1_dF2woUV7wq{ z7x!UmjSBNj?QM%kSCGion>4saaE-NHDY$3EN{OBY9dm_>N4fsm{~Dtmzg<0~_qC=y zZbxrugrz#sRsl3Zb~>+NZpaNnbsX8pHZA>GCpMIASTwJ(kN2CTt}9Z|QUXWaXV0LQ z=kW=99?!Jr23>*ze7zQ~xFyP|RAQJu7E=Ayz2dJUZw|U1Q|!&e`b?Mk_+(eQwEW5T z2v|})a1(1!^)fgw)~H%8i=mV_&SH2jp&7Z3LSTyMs}GLzp5k8PRAYms=C~H~>$zf!;&0@H|PzADGwjSn$=UR)cF%5=;7&^#+Ap1eAKf2x$unNrE(% z4PcbjaA`E)jC?kcsrNFp5TjGwHPQPo^~u>2Zk6A3SW!t9BL54xoKqbkwb76~0dHqM z!%JjrZ%1&(@yCQe$Wu}BL$*YVn~1}1H3}cgYI0b^lrgHT`PfxbWVucPf5<$tNiqLt z6}Kz$j(XOx?r3$&8@Qte2f*BkCV0StrU1kKmF-^c1iQVnEhymnu- zpK{rjah!vz_$6pmva|Cc?gA?P=$h@i`_x+q^a-fBU7?hQ^&zicc+K9yZ^N=}9%20z z^J{n-a>mho)=XEiQ6;|eS8lL0-G(Q-&SLlXuEY(TOIS!e3?A7T? zdoUm*+N;G3;aVd#m@+n@Kg}4#1lJaVbwtCDq(#nX%7-PIAnZq4vl{$BnIAyPV6vF~ zume+%SfxeA0imbSqc))QPI8>E z*~|f0xhd2P*o=PgTJj@y9H|e75X!#X7mKfxMdIG8O1By<&89PZM#w4;iY+A3n?;jo ztHz#{2a=hfHJGtAn8M4W%Nd8YVID+{Gu0eLkJIe(8o|gmsEFM$X<%mi)NAcl$`6)b zc(vomm7Er1sk51LR2#8lIwOzPLI-VsF-F&^=-f+`2V8KD6ju+hjW`=5riqyqGX3&Q z{|rTwGN<63SJf*=4%bKEH_Zk%L+ik<=-Tdy8MNa3_?44dnv6(6@5dm zBsxH5eWxC^MT;R3J?}`h2CHDCtY{x*Nfa&{b5X2rD#<}K%4P?%`fJn5sMXVK@ zJB_ZYcW{;ylMGJ|$!4Nz1|@pAa7Yi;_)b`io~51otc(Z9ZH@F)!oHQn`plm(i?n+Vv_ zxYwy)gN>u3G=T4tx!10Y-V9IxlU4?qQGHg-cU9cG%gs+EgnZOF>-sl zIIekL6a`29v6brgcCBk8Ej#*)2|@EdVg z!1?BS`Bc;d#yhmqz?PkJxQz4#+I|d=3HW=J=Z29@m`8gOwp41VjqM%hLMw&T!Uzgu zsOJXMu$>`u4%SF7uUa|=6Bg9x8Apcf8V!S{F{};d>`#|Wpp^>!0NR$tCG;$RYS5w} zEU$epl02}ccY?jxH@~H{^g}9gHXm^xW-R-Tyt1dZCgS*(RsxTm9CJbzwSr+RjvZz$ zJb0_%v9rIrH1N2khxf~Yvu7nR-Ww6@NPf@h6{Hk~MavI9|3$e(1UX~@N$Z0Yy-OZF zhld=+Y$tc z#Vj#Jgdr=}_%;I`?I0H9iMSW+Q4sBkGB+?>u9}xG`v#jcW65gh3rLR;$F1cuA#}vG zNBz33;e@ml$zoLXh)#@V*w3)5`>5;-n-_7p6Y&WC3;RnS%PtKsnZHHUV=CW(!vvMT zrQZOF>K#o%&-VdL7vuwRE{AXv>tH#fKui~b>fl*bk#8fR4#hKbli9yCR(|trA7~lU zrAfgpL!Z^Gaf7>v$IpZnUw3unu0U-9jVDb$y8?8U_))7i19a;}D^0?;q7W!Bk)`MWxK#tao|3RV=!lxMPIa=8;ft~m8?{YAJ}DBO z($>f<^rKg`b1=fn8&~affH=DI9iI}4*HTv#c^Tt+S)8;|SM#@2dq&;ksW3XrdcBfx zH--bUiL??X=r5in34A*U8RjdhZ8=kpB}{IO%wgssXpVYooa{_qX>EV5<4W89$bc}c zZo_UB=MeZ;P`9+VQpnKGknX?K%RXU*C7Fts5tb0{mI6M&Huns&t7FWAhHRaUygX1QPMhF<>& zMBmB?=-dJ*QeehyP8o1twWv$DSQBhVZU^aT#W^uC0zcROaN2Pcj8~2lP{eTwe|SsC zb7q}c%L@N&d$vQHGYymN^_@GChni?$`h@T3t&KP?25wO;Md%S789-=Ilv3dYh2^sI zs6T5JXA$d_2@GM$t>Iy?Ua;+J7E?qPwT@A3jkSfY5hlgZf4tH|R z+NOdBAV_gB{>ct;Pe-xCM}=dce6!7E&e>HE6FQyZUJlyY4@jG-J) zQ*S+n$t{;TcEB*d;%v^}sh9~`qUBiiHpgBsoUnMH#i@r)C6_diG5{O@}pIg-czY0=|PQoCpm@wLglqfqT&ECWze_2A>^k@+D&X! zqCQb5cinPKmg`j?p*7zRM+&4gG*u+CejRIZPTCMGi`S+NLbUPcYzmVVMwgH&!UH(i zQ=>S?8~+)(`)Es)K94R29RREk);ry~5|RK!{1_Vl3o&tmJAGPfc-8(2?_&&?^r-}_ zdv>*zT{2dU9eWX16lgsN(IJ`j=RpUJ()RcV5-C&%x(QB(lG z-bo+wMd&b6dZqrPAg!`nB#hJ9N5xe)@;5W4>2)v?F0jotBDH(gkemTJT`|R7^cp;j zNz|}w`O`FUh`wS$zwYL(g7a1p`0i$u+AdbeSP_*{V@&R#tO1=%?&+XrAbg$9`nr&Vpza6iP*9(U{|!^J$)1&!|3T?)*b z94dhcpY)l)fZ8W{vT@*qa;cq^t!8HT#*t0LiH_(p6r7z%Ge|qUz00-ZCY($+N>2^P zQ~`RK7U(lCN7O3f+tEwBDl0>Ds)Nc-8R^E+Sqkg599_#vKOI!~N)-F_B|r6sut_a9 zobwN949L0QhFo6VAZT^$OM$G{U`JLW4ACkRyP`uZOl_V#j1$vRO;TuAkJoX{k30$w za9z>*{Tj5K))JzQCD18IZUmJuT=W_(0z-+?&bbTstE^^>H29y-z#PusM`ED?Ge(`6Jw0w=GLX>wG#rF%LOa8xJtL0i+tCm-e2(s zY3X85)c*}r)io@y`-|9qht|ex9gLvv$DX2iRS$n~zK!_QE@(vil2p+3Sx{EFQV@2A z=75vTuFsZFxDMBeEk3^KLQW{SdEdT_Ua9vx!rWvu{>|>f+mKKUthkxqd6AI2ch^&*`rm4-rLL=y0Pv zso+D;wz>Fz4{)yrYvh&~AG!ZSsKe9jBG^w9C_q_kF3A*O)pR8Jz zePRY> zX~Pf#35fl^5nmL(Z3d1z#*=mb^esWbRUAjga_l*kd?j-f*g*CrLeRWboJk`7N#pER z5qdNAnr(FXeNZ+TButJVUR&VnwRNsHekH5tgE`6rq3NlBM!)wE-16%iTK`4DO#_YJ zTkC5*yxK<#d3a#_ieSGM%c^`WliS;HZQ59>@%or#4`}?)j?ahz%;rog%~*`~^Y;*< zes|WmZ?M*8xHd&U1C4!(kMW{@KZ0}GY~KFTvRlYgwl)d=m501WPc)7sX2>CV&r5wY zmE<9MjoF>NIH_58vV>SocP~2J_Ww@e<1Mx2U7fBnBxB-aD6#~Pcl(5kb5%ADuzqrJls!C^(f#@ zK}B5$wS~k8-fy#dp4Xj&;f3tZkgf^yc^l>GYorJDo<{O>LU@kP<*LBp51-7_>>f=p z?)n`NNC(-xTJyRq3g=swnN>_NK5^xx)5$oesnv5C$gB5OUP_Nb7pa+oPhB*PCdk-h z_o0QwwDyMfkEIjuu5on(B^-xvRJ`N>$_*tN{fiY^~u4PtjCvpzw7qZ*w zMuGb`neax%Dp(tUB={;(EC1#()1^XS<7G>xqP5por`(X;;04HVlvd|)W%<(a-yPQtFI-f*UbTI^x6)=j8>@)7l9=(9jO*NKl zvRdg>>8e!nfLMY!Kf?;c)n)}XM2W?~N^OnNqN??7!qkc3E)>i>zj-fIWpBLL9Q|nd zjRK`cm}B*X>3^!l`xLQ=%coj&e==U!|AQS+HMetcH~+ujF8{0$iK0qVg?{*C6FFexl7<`tPy+UFk&NNzXyC7Zpwknf$4+cVti9^yw*kX9A}%yVTBWS8bTDNUc^Uw zoXUfa^pv|7wf+R8eT8-5#d2P4oH*{iBU&96=OPpU7w!lFJ{ z9vj~^EcpYK9dl{bqd&6FO5Ko;avXG&_|=B$v;A!l~-NU?Pb zWKgbLC-=F5mOyn)oYN2`vGC_84d!VjUrx4yt622(5qWHl>gzRWNfZS1#aG4D5`Ooj z)PW>aXjMibFNnVgfB5R>3yrNAl-a;f21M3iCT>zIo77&Q3#mwTAe>RpQ~dv>EL1I% zNg2$i2oFC`w*Mf)|GSRDKaeT^EI}0oIY>5Czs4nfeOpc2>+Q+ta!JT;4R17P zx%Nd;9vG{W_uswH1^-b!Z5Q||0#$&XG2!FIahufjOQ;77Hy_6o+!k$#!j%Gu+DBp6 zM1c0(S<%wB;6+6Y)QFhC*BqOO>{I;4Jf&@6KQ+-zbP)?*V`>2}QyJS)9vw;lbDz?( zGoDEA8&7I*7Hm3TH9!M?x#Rxb8XKowVS zDNrq6H?evU9`%IPYiU>gY(Qj~-1RS&&qv>IzV3fE=>0#KH2bAA8w9&ufZAwF zlc=gGmT0k*%whRU`(^sKVb5m}r9B4MhIM{aC-sI){kh5TpkLUDv>8R1`-i+dbi4%N z4Mt8Sub@e}f+S}mQqJpi{S3vsZ0MyalXzxQ{=593EC~ni`+Go_0ZkdD!{2X=U*w0x zGyT!~rSTsqQD;Sp#{_W(D~T&&K$le^!^yOJhRH?~!IVoCaGdFCc((8C#g9XT)_T)D z(%NwrRvXGE9`5a2-+O>UJlXI|axt-k2--+D0xKC_dR?JX8s%2m3Lnn-2Qut3kWU(! z=ep680QvB6hAY7~t?L<)WaG<^+E8P+z;`E4YDjv!N$*3u)ngp{zbgeO`7qud;rB7fF5y6mIF zOJYusFeiua@ulsa(pr7Rgp_K;X*4GjPoUBJ6@V!LyyK)_OGvX<=pmibM03@qqvb>< zVlzOk!0GdU;g#maB^@w+T2QD@=-Yp?qAG6IuKzWo`sY5Fy#5cJ3HxwUq*QQGw2})f zrAbm=MCZ|KiVES?lO#-`e~4>DSTA)q`^j*vL8?OL1cJO$j?iA`TRni#Zm}Hxc)dMe zd4D@RWC3HDVImFg7o6i&P2VF_bmpDh!4tRcJ8WUt_qlYRAWAP_Z{xl|+DtYnMG0YG z!Mzb@YeqWe`?14%^T@6>jbvMi0<`s>Een#hvJv=6jS=2yrmH)TTtXo|n$V4zmf#nb ztk`6$w?)KOY`BgQM2iwK2)WB(D!4bc#T~mk;uxY6KHBukSpN4(WToTJq@JIBc58>V z?i`zZ#jSw7%v&pxK2CUAzww%QFdf-@dkD()DylW(E0U*phUHNrdcYD)GKS>Yb-^%1d3biDYAQHH%4xK{j1JRnMVg8!Mn_0gDR)$%hM&Kymk9$2% zmhatz+_!gt#ufCJPVwf>Uuq1>Oa+Z(cL-dafzJ_zeuAa8m|R$rn@S?)oOeloTNrFyb_KL{B#LI+!>t{=VTbEm-n-W&VsV2I zW7J#;rm&4)hd$Tf{oYR=e=g-q6sN*P)mT$(a#<7wT9MHVcw<`w&zVKPP7ESp(44!9J*qMigw`R) z9xYt+F=c!9=a>#wJc=?^noE7oX)R8M#)!s7+GoN{u+(}X`3xZ<*{^nD(vzL^wf1Q! z_v%mf?$)a?%?wL}RshFmI+0adG&AKl-;zjlkG4-wSw3c5Wih%R;^6eT#d|J7N1729 z)96JwuQIC(6RnFj8Edu=Ekn(pL9M~XJb>>e-eLcs=mv*1ZG(LtDR&; z4yU3CjXhn{Hf;&HZ|WQ;XS1$}V-hzT-iTu$`6aIna8%kk|0=yL0FQIR5rndh^EYbe zM{`obB0a~(S#8|C(94fy%RfCIPq!>!o+KUg^8NGVR#!1$)7C461q%H*oW3&R;bC_8 z?p7<4{kMW$BmKD$I@`IdmW|7|8J7&K>t5EmSwp?9&qMy(tBM~55VuPVw!QZ&D5cA% zH|OFWXHbtO4L(*d!$TOIzfIDFIAO~(xUE?#vy0V5tW8e}&R6=c>jtH29bg3v-R@2C z))af6CyJ0}FXC)->WGCqDGoUGhb`m2NGbnO4zz`QPoij^&_tNX*xO$DdzLrR>+a-% z5}*5*_aTjsw|lz+d6ML#A3gQ=5A{^t;i6z>PjwDehFAdPt&e}i+rh(({_ z$qHZ{4<$ZhnJXU7A6tkG7Pi!K-UV|4YM6ViVX0of9}mUXbYDlj-#Mq3qo&uWYyv)} zba*0wt7uy-s$j817_lS0!>G2N{4_X;#lBjako=y$6iCfExvPESxvu_Zrrk`YIqPID zXn*TGTtdLG;$r^go_yXaxi~1vPDXs_h*_s$cbtlRHFGxx_~J~H{-#xK_R^WYPH>Gv zqZ^8oIYjm+2h>GW|MKPujQbI37{zCZPpx)Oxg1KLK6t9WiN#ZKVfbdS=`ox;n7f(+ zRGG_p7|}wu@BIZsMQh6n*@&+f&WB9T`V$0EgI!Q58ml4KWS$wupMu5ueyA_f&(h)b za75L}sxBbsT>IcdBh^Imy%e%7G;hJWcN(ocfn5HTyDTDQ8gATj|Ie-1UCe@St>m;^ zqCH>Msc)^(7J(ziFwfO7*HD?`*31W(q#-g{$!}z`nq~2kqeXc*?d~LGvNBC)vi-lZ z!XZHhOd-k(RfDMN-IZaie+j0)M}Guc@lJ`uR76R;B4^f8s9;&!laCS=YYpBmUmXjh z3yLjfm*XnXZZowZ_iCy)_i3toMExwk;WYgAh}Tqj(&#Js_wX@_aO4)tOL?2YxnM+d zKRBxWvUfcZ5oXF&L*s);wI>%Rc@MNssGJRq0K@Wx#ZUBv^uREPTlX*y9V}dzg`L-UH&5G(btvOTvvxThF zMw6khQl~<-M88>;<)mtvcbjo#gj+`A+ebGB0URY+IyH;u!NkP%gmDB3w>esM8@Jf# z6KCHJ=XO$s`Up_??P-srBU_j-b}rCRXK@_=BPlkKN4rv+vUNNL(YBpkkB~H& z5|fQ=3?{G13^T*p#Ww6NYSWg=Bg{IDI%z4Dl9Ho`h8SDzrgtH2wuIAeZLN;Ie=~pA z+?oHM(>=$TagO`>-q-KvfA8;q?(ceBOVJFB)}B_papQfXfa@j&g+Y6I&236|al^zd zG<}P!mNDPiJ{q02aEhmQNl>@u6N|jf z(e#1f(3cHE6{cSH!cY_8)I0ZWo>Y1EJgWRf8dS3BFr#eO_JObmdPRqi&(iLc>g){5 z_-*T);Y6FkEPcU>n5Q05waG{Cl|N+tRQYKS{d>1dl2ljylg#LQ--N$RGr#qs>{3-( zq2N!?%*RtM7MeeM$JP>MIv=WSstBpnTiorUC>uIW#o@7-)3(v#OS=yxqbau3V5?c3&&b!unNZE2C9U|QA1eN5?$e}mZ5vTQe*5ED0jQ`G-W@vpb9+>MP>M~nu z!1TF`mB+7MnbP%@K-eIZZPC}R($x*|-KWFj1c!QuYuxB9n02dbjaB#W`x~@M{WChw zH0IAV^^9NAe}16<)%4}>a`KV=$PKBPECDQM0r+u!&t=U6H&e5d1hH&>VDj2_Uz(3C zow06pC3BEr>)YNFkZjY+|5<=gMKybZJk$b+O2N-$~tVUeEjUXd~B^-{IndmCTYKEIV1B=yzdxk2M#wh zG>x@%L912W1+Y>@F~IuW@vmd%535bX<^q@0scRUK2>u`&{21eZsVEZBV(@LO8pC}J zeU(=r(~hwU5>$o3v$dk&!mZ$YEEl*E@|J>YY{yl2Ca-||HOg8uh)NhPV~9W1bL~fK z;ckqws;N>{XSC`#Z%W>1b0r3klp)~8k9u`-(i|mHB`HZLh~-drYn~FQhZMAhmB5N- zCsDE%DX~5VZeMA1$A*YtMX`BYeyo6!IbVqxNy_A=B(RhCF|j;Kn(_pclhWil1E|)Y zG6~P0roON2(FhMD$urIGF>@Ewz|JBXVDQWZM3IP0fF-CWDHa7-r%Zf#$nSMU!A;N7 zn>xTGZUI{t+zyE%5p4(04OCzXXwH$7)p)9HZQwNUy%13(BC+8lpqB1D;OmlEoN+rN zwB7YCT{=5~L?7@#$`X5l;Z4|XOJ)))fxnqOe(#M+&{~V12tkfJO)wBvL>IuPM3e%o zNxg*Je87;e2X>@>#P@%2m;Mi!Gy(8P_!ACMBqFDUWLUxgm|Oviqd2Q#$PG-rNLqgJ zt!4uZyRrboRuBr{QzA+Sv#h@Dga~0}3Z1or7+@%rYVLHS>~&xwij3rUg%g4jQ8@@@ zQmcVSK|VWyFQir|IgV}9n2KR8z#-%5)QBPxt@I#MfEKijWNwUnJOj7RF#->QIBH#t@sL42WFFX(ex|IsX5|4ZkMIyQ$NUagT z#;=a|OpWBQ$?-FJ6}h^g3%GB=@1!S+MD*>K)cCP3jD`lt70_hvP@yw;k_r=~c1MQ{ zO}Y&g%R{LZ<)I@q%@)c>bKydM9E+L{gU;hJ*~}pN9A{GKi3S}_Gz0}Q!6Pt5&N$@42 yPp+zTRHdybU2z-lV From 2d701f49fb43968b4503fb5e2e09cdd1a2055f73 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 2 Nov 2020 18:16:50 +0800 Subject: [PATCH 140/304] fix bug and update test case --- .../base/protocol/ProtocolGroupManager.java | 1 + .../helper/ContractTransferHandler.java | 2 +- .../contract/helper/ContractTxHelper.java | 75 ++++--- .../rpc/resource/ContractResource.java | 2 +- .../java/io/nuls/contract/vm/VMFactory.java | 3 +- .../src/main/resources/protocol-config.json | 2 +- .../src/main/resources/used_classes_sdk_v8 | Bin 9061 -> 8978 bytes .../mock/contractvm/ContractVmTest.java | 4 +- .../mock/contractvm/ContractVmV8Test.java | 202 ++++++++++++++++++ .../io/nuls/contract/tx/base/BaseQuery.java | 14 +- .../ContractMakeAndBroadcastBase.java | 4 +- .../tx/multyasset/ContractMultyAssetTest.java | 103 ++++++--- .../tx/pocm/ContractPOCMSendTxTest.java | 3 +- .../src/test/resources/multi-asset-contract | Bin 4412 -> 4378 bytes 14 files changed, 354 insertions(+), 61 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java diff --git a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java index 1b34a6aeb3..27b6892a9e 100644 --- a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java +++ b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java @@ -129,6 +129,7 @@ public static void updateProtocol(int chainId, short protocolVersion) { } }); messageDispatcher.setProcessors(messageProcessors); + RegisterHelper.registerTx(chainId, protocol); } } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java index 4f8dfc8d64..fe53f9549d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java @@ -310,7 +310,7 @@ private void mergeContractTransfer(ContractResult contractResult, int chainId, l coinData = new CoinData(); coinFrom = new CoinFrom(from, assetChainId, assetId, value, nonceBytes, (byte) 0); coinData.getFrom().add(coinFrom); - coinTo = new CoinTo(to, assetChainId, assetId, value, blockTime + lockedTime); + coinTo = new CoinTo(to, assetChainId, assetId, value, lockedTime == 0 ? lockedTime : (blockTime + lockedTime)); coinData.getTo().add(coinTo); mergeCoinToMap.put(addressLockedKey(to, assetChainId, assetId, lockedTime), coinTo); //timeOffset = tx.getOrder() + (i++); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java index 80ece4225e..85c5e847f2 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java @@ -30,7 +30,6 @@ import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.manager.ContractTxValidatorManager; -import io.nuls.contract.model.bo.Chain; import io.nuls.contract.model.bo.ContractBalance; import io.nuls.contract.model.bo.ContractResult; import io.nuls.contract.model.po.ContractAddressInfoPo; @@ -132,7 +131,7 @@ public Result newCreateTx(int chainId, String sender, * 多扣除的费用会以ContractReturnGasTransaction交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData, CHAIN_ID, ASSET_ID); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -227,29 +226,53 @@ private int calcSize(NulsData nulsData) { return VarInt.sizeOf(size) + size - 1; } - public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData) { + public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData, int assetChainId, int assetId) { long gasUsed = gasLimit; BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, price)); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; // 总花费 - BigInteger totalValue = imputedValue.add(value); - - Chain chain = contractHelper.getChain(chainId); - int assetsId = chain.getConfig().getAssetId(); - ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, CHAIN_ID, ASSET_ID, sender); - CoinFrom coinFrom = new CoinFrom(senderBytes, chainId, assetsId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); - coinData.addFrom(coinFrom); - - if (value.compareTo(BigInteger.ZERO) > 0) { - CoinTo coinTo = new CoinTo(contractAddress, chainId, assetsId, value); - coinData.addTo(coinTo); - } + BigInteger totalValue = imputedValue; + if (mainAsset) { + totalValue = totalValue.add(value); + ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); + CoinFrom coinFrom = new CoinFrom(senderBytes, assetChainId, assetId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); + coinData.addFrom(coinFrom); + + if (value.compareTo(BigInteger.ZERO) > 0) { + CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); + coinData.addTo(coinTo); + } - BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); - totalValue = totalValue.add(fee); - if (senderBalance.getBalance().compareTo(totalValue) < 0) { - return Result.getFailed(INSUFFICIENT_BALANCE); + BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); + totalValue = totalValue.add(fee); + if (senderBalance.getBalance().compareTo(totalValue) < 0) { + Log.error("Insufficient balance, asset: {}-{}", CHAIN_ID, ASSET_ID); + return Result.getFailed(INSUFFICIENT_BALANCE); + } + coinFrom.setAmount(totalValue); + } else { + ContractBalance senderBalanceOfNuls = contractHelper.getUnConfirmedBalanceAndNonce(chainId, CHAIN_ID, ASSET_ID, sender); + BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); + totalValue = totalValue.add(fee); + if (senderBalanceOfNuls.getBalance().compareTo(totalValue) < 0) { + Log.error("Insufficient balance, asset: {}-{}", CHAIN_ID, ASSET_ID); + return Result.getFailed(INSUFFICIENT_BALANCE); + } + CoinFrom coinFrom = new CoinFrom(senderBytes, CHAIN_ID, ASSET_ID, totalValue, RPCUtil.decode(senderBalanceOfNuls.getNonce()), UNLOCKED_TX); + coinData.addFrom(coinFrom); + + ContractBalance senderBalanceOfTransfer = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); + if (value.compareTo(BigInteger.ZERO) > 0) { + if (senderBalanceOfTransfer.getBalance().compareTo(value) < 0) { + Log.error("Insufficient balance, asset: {}-{}", assetChainId, assetId); + return Result.getFailed(INSUFFICIENT_BALANCE); + } + CoinFrom coinFromOfTransfer = new CoinFrom(senderBytes, assetChainId, assetId, value, RPCUtil.decode(senderBalanceOfTransfer.getNonce()), UNLOCKED_TX); + CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); + coinData.addFrom(coinFromOfTransfer); + coinData.addTo(coinTo); + } } - coinFrom.setAmount(totalValue); return getSuccess(); } @@ -275,6 +298,10 @@ public Result makeCallTx(int chainId, String sender, Bi if (value == null) { value = BigInteger.ZERO; } + if (BigInteger.ZERO.equals(value)) { + assetChainId = CHAIN_ID; + assetId = ASSET_ID; + } Result accountResult = AccountCall.validationPassword(chainId, sender, password); if (accountResult.isFailed()) { @@ -289,12 +316,12 @@ public Result makeCallTx(int chainId, String sender, Bi return validateCall; } - Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark); + Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, assetChainId, assetId); return result; } public Result newCallTx(int chainId, String sender, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, String remark) { + String methodName, String methodDesc, String[][] args, String remark, int assetChainId, int assetId) { try { CallContractTransaction tx = new CallContractTransaction(); @@ -314,7 +341,7 @@ public Result newCallTx(int chainId, String sender, byt * 多扣除的费用会以CoinBase交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData, assetChainId, assetId); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -549,7 +576,7 @@ public Result newDeleteTx(int chainId, String sender, * 没有Gas消耗,在终止智能合约里 */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData, CHAIN_ID, ASSET_ID); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 8897f23d8e..e498789ca4 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -327,7 +327,7 @@ public Response call(Map params) { Object[] args = argsList != null ? argsList.toArray() : null; String remark = (String) params.get("remark"); - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId < 0 || assetId < 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index c2a41ad92f..9f531b7780 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -314,12 +314,13 @@ private static VM initVM() { public static void reInitVM_v8() { waitV8 = new CountDownLatch(1); - VM = loadVM_v8(); MethodArea.INIT_CLASS_CODES.clear(); MethodArea.INIT_METHOD_CODES.clear(); Heap.INIT_OBJECTS.clear(); Heap.INIT_ARRAYS.clear(); + VM = loadVM_v8(); + MethodArea.INIT_CLASS_CODES.putAll(VM.methodArea.getClassCodes()); MethodArea.INIT_METHOD_CODES.putAll(VM.methodArea.getMethodCodes()); Heap.INIT_OBJECTS.putAll(VM.heap.objects); diff --git a/module/nuls-smart-contract/src/main/resources/protocol-config.json b/module/nuls-smart-contract/src/main/resources/protocol-config.json index 4afc546e40..b08e6286a0 100644 --- a/module/nuls-smart-contract/src/main/resources/protocol-config.json +++ b/module/nuls-smart-contract/src/main/resources/protocol-config.json @@ -1,7 +1,7 @@ [ { "version": "8", - "extend": "1", + "extend": "4", "validTxs": [ { "type": "16", diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 index b34b71c558e0af5fd7c8260bac47eecdba678611..1abfb941081e0b1f33711e8aa663c911f9c04f21 100644 GIT binary patch delta 1504 zcmaFrHpz`Qz?+$ci-CcIf#GgL(nMZ$W)Nkr2Bs3U!Bn3Km^x~~9Mq7siE$+hh@M=? zr8l`-j(hS`)_N8oKXCF-8R^NrTtbtlvhmkP`(JSo`InZTnjPt|r?H_TK5FZuSjTnu zt}Sp2^!bumw*6h0SNQF9_6MWC92Ku`{B)>UjjNOYn7Yp&-(wYNRtp~J`7e7p^W{wA z``_mp7yo*EefoL^zXzN6WYbGBEM}_~`<-cPkrd;8Zrbxg;^+*6$5Lt%CUJV~eiBAG z^QunFuP?a$xbEn@KBnvIc??t9V(<65No;%eKUQu=qKEIbQ+&?1r@Xel{<_#zeaG4E zdCCv6RNtNba6t6_shM4?^a8*7?lirbA%uE_G=F||qFQdE6`g7PZYJF_D?&j?PCw<};$npb+Np6Bk*W7g}r?&@k^zSnM7qy0ko|IFOMaPC?&mWHd$9`EG~ zc0XLQYcbEsKL>1IaXv4spIiNK*SsBpH7}+tQWQLpmA%_j_u|svvt}nQSjm38^v3j` zM;Y5!)wN-j5xuuNJGdV8T}!g%iT=bJ`s(u5s(>QBor`wzT(x(1SeMQ!w$=M5H#eKb>v{c!S#vk0 zy;)X2(Qm)jstFfdH}lQfuH?S0cVC`@Bmadoy~df>goKuTl|0%1#B0IaH)%^wq@8?~ zVt&!BS)n2Kqgm8@mM1<3jNP^#4tum%E=)PpiR*>ab|qO=la0~FYu_jZ)t@MNX*O|T z)*r=-VV)*$T>4cOp3=Ht$6D21=DBj&)%wfc8(x0hkeqRFM~i8wpZ12E5@F}c7RI}! zuPpiNajNFqike4-`rl3#+VidWsL;z<`0Z15!-rNAs{qxvvWjZ1_m+K?dwHd4YtNjW z9X+n^t(Q#ZzGj|r{fxhd-ePB-_7|}(r)_Q>d1JlhicQc-)+UcrExRoizvq&oRJtC-Y9SFH`W%=GT?tDi?K^8X+5)Rt)r zHhT3XKfs%v!`nOHcsw%$LlHXz11KYlFmP~iFa$L)CT%X{vSI>dTW~(@m*?e1$R=(6 z!V}8~%EX&P_|hPZz5FE*hKXP?gt1B}5yIdT*$H8s5`~C>jNBX}&dm%qKTFCEY}9Hg zCWwU_WX!=5uVl=?w6d%+0n;mFJ-`LXXW2+F?JpP12P!}io|(Ks&I>H{S5BHq zkZW=SmzH*bHzN}l1H7aPWIzHMNNffMzsdRX=3wnB<)s;?0D0PzKgf%LMK~3tnZEE& zE|Axn9H1Zt7Rm(*#qtA%v?uo|vQ7TWFEIJE0uNZ~7EtPn09bXdpxESDiaZJ+ht^j{ zw=ps@Fl+~6QxvPcgrMd~K#J~!H!997d5)U{4*C% E0Ab5xH~;_u delta 1651 zcmbQ__SB6xz?+$ci-CcIfkAd+>_lF5W)Nkr2Bs3U!Bn3Km^x~~{A5DxCdQR4AbPSK zm)_)CtX*JsI-70%{ruY@BLDIp9qE0orY)QN_LgB?@0E9AY){jV-`bk2v-mDctCAt- zOEtsJ@at^1Z{9axX%dh7!F(+47lTlV5P!#V#gFESN6OdVy-;>?-ZG8r$G^|}TzlX0 zyUhQ;@88!mL>y^rE!>lx$TM9lX4=%Pi>95K%9rDkuf8`seC2hO;oLVSUiGOPcD;{O4VY2$@TkhYZ&pmkUms4qKK0$k+Wf|s zf_10XmbkOkHqDn%O)7IK*t{~+uh%AQ`8FRR{n*!@_BlZtGFJT#i1yW;@3%OE_nMi& zkAf3xZFUvEzNWE0QPW@Zh5z3z-zQH0_P9V>+u^mRG4E@$?Bm|mfzR9Sd}PxP-?QXw zeNF0})W7Z63XS zZ`rOTGA<<*T%VQAvh9|Lv#6N`-@JEkLj0@FM>e0gs85bFYg5Tub+6CJRwtsiVxjrs zx;x+2{mRmKTl4Omw!3twN$woyvu(Yc(&~n5r(Lc$JC}6uSZU3HW%YM{%!=6lkxTDJ zg>XKnjP3ptfhd#>Kr#$|1W229k%v#S|p;vauJ-+QL z@`E|+95cu9+J>gb|Joku-_g1t%457EY)4egamlP=ev65%iCo7Sb2TdzE5dCSH>Q75 zKfRFk%!3fWUG+XDqPbRisr<+Or%bz77SLARa71Rpj2TDgs3lewUq~;$;4iUssnxqT zGKt>qiQ!k;V-H(Z`u*N8l_xAZJz`VSwt34#ul(FI;rV3S_#@u4e(A)WTWP<1gV6kK zkM-uvHfy=z{PQ_ub)@p|S(S#Lr44ScSiLGUdtR7hG~Z?YEbo^}_4Be+g2X~5XYxM3 zctPrh$0TneZPghj;;GG5Sq@v?DT)zDP6nY&6l`cQ0MwlQSEASe`-cP9(zgn$e(}x+Z*AgWozt&xtQub_Ku+|SDuE|ng zbN5VMY*ut-Qj>KRx4ql}&8HSj-nU*qst@pH=lH|_dF>`<1_lXWDF7-DL>M?YI2eGL ze6t*v6%#1)gLAvSA`cIW>_VPcMo|9W%*dApVPx@_Ko}1NiXn_}p+pE{xA0B~qg)gs z0yfiLiF>h#I5XG|aVa~nX%SLP5KCia%)t`VWz4|z1sQ8F%_r*urbA^tz{Sr3*+?+` zM>d!b=$t@=e{dn~{l&0bcG+l9y&$$TL|$QCk}* zA;JI;fWUL|{<6$(5GAh)Yla@%kL^_~P`I~4uuf|EZ8IB26=SYH|4 z#t2lr9f(a)G|ZjMujm3c^fTMSJsCiGLna0WH54_BBH%EYq$mmrCPitcy`o^DXNpo_ zy-_cNZ#)C)Yhq(y&_L0vC_Y(12@*4rO43ZRQeb^km4qNh0fpv4gq|s>u`QGV=>-5^ Cq>`ur diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java index 530f6f6c99..7893dd5d5c 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java @@ -29,6 +29,7 @@ import io.nuls.contract.config.ContractContext; import io.nuls.contract.mock.basetest.MockBase; import io.nuls.contract.util.Log; +import io.nuls.contract.vm.VMFactory; import io.nuls.contract.vm.program.ProgramMethod; import io.nuls.contract.vm.program.ProgramResult; import io.nuls.contract.vm.program.ProgramTransfer; @@ -263,8 +264,9 @@ public class ContractVmTest extends MockBase { public void createAndInit() throws Exception { // 加载协议升级的数据 ContractContext.CHAIN_ID = 2; + short version = 5; ProtocolGroupManager.setLoadProtocol(false); - ProtocolGroupManager.updateProtocol(chainId, (short) 5); + ProtocolGroupManager.updateProtocol(chainId, version); // -------------------------------------------------------------------------------------// InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-testA-testA.jar").getFile()); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java new file mode 100644 index 0000000000..6396d8a7ca --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java @@ -0,0 +1,202 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.mock.contractvm; + +import com.fasterxml.jackson.core.JsonProcessingException; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.mock.basetest.MockBase; +import io.nuls.contract.util.Log; +import io.nuls.contract.vm.VMFactory; +import io.nuls.contract.vm.program.ProgramMethod; +import io.nuls.contract.vm.program.ProgramResult; +import io.nuls.contract.vm.program.ProgramTransfer; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.JSONUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigInteger; +import java.util.List; + +/** + * 测试场景: + * + * 1. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有0 + * B有30 + * + * + * 2. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有10 + * B有20 + * + * 3. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 + * 期望执行结果中 + * 有退回到调用者的60可用,10锁定 + * A有10 + * B有20 + * + * 4. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender + * 期望执行结果中 + * 有退回到调用者的50可用,20锁定 + * A有0 + * B有30 + * + * 5. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 期望执行结果中 + * 执行失败,余额不足 + * + * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 期望执行结果中 + * 执行失败,余额不足 + * + * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 期望执行结果中 + * 执行失败,余额不足 + * + * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 期望执行结果中 + * 执行失败,不允许转移锁定资产给合约地址 + * + * @author: PierreLuo + * @date: 2019-06-11 + */ +public class ContractVmV8Test extends MockBase { + + String contractA = "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx"; + String contractB = "tNULSeBaN1gZJobF3bxuLwXxvvAosdwQTVxWFn"; + byte[] prevStateRoot; + + @Before + public void createAndInit() throws Exception { + // 加载协议升级的数据 + ContractContext.CHAIN_ID = 2; + short version = 8; + ProtocolGroupManager.setLoadProtocol(false); + ProtocolGroupManager.updateProtocol(chainId, version); + if (version >= 8) { + VMFactory.reInitVM_v8(); + } + + // -------------------------------------------------------------------------------------// + InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-testA-testA.jar").getFile()); + InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-testB-testB.jar").getFile()); + //InputStream inA = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-testA/target/contract-vm-testA-testA.jar"); + //InputStream inB = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-testB/target/contract-vm-testB-testB.jar"); + byte[] contractCodeA = IOUtils.toByteArray(inA); + byte[] contractCodeB = IOUtils.toByteArray(inB); + + byte[] initialStateRoot = HexUtil.decode("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"); + prevStateRoot = super.create(initialStateRoot, contractA, SENDER, contractCodeA); + Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); + + prevStateRoot = super.create(prevStateRoot, contractB, SENDER, contractCodeB); + Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); + + // ------------------------------initial----------------------------------------------------// + Object[] objects = super.call(contractA, prevStateRoot, SENDER, "setContractB", new String[]{contractB}); + prevStateRoot = (byte[]) objects[0]; + Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); + ProgramResult programResult = (ProgramResult) objects[1]; + Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + + objects = super.call(contractB, prevStateRoot, SENDER, "setContractA", new String[]{contractA}); + prevStateRoot = (byte[]) objects[0]; + Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + } + + @Test + public void test() { + System.out.println(ProtocolGroupManager.getCurrentVersion(chainId)); + } + + @Test + public void test1() throws Exception{ + byte[] currentStateRoot; + String a; + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test15", new String[]{}, BigInteger.valueOf(100L)); + currentStateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("测试方法[test15]expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + + List transfers = programResult.getTransfers(); + boolean success = false; + for(ProgramTransfer transfer : transfers) { + String from = AddressTool.getStringAddressByBytes(transfer.getFrom()); + String to = AddressTool.getStringAddressByBytes(transfer.getTo()); + Log.info("transfer from: {}, to: {}, value: {}", from, to, transfer.getValue().toString()); + if(from.equals(contractB) && to.equals(SENDER) && transfer.getValue().longValue() == 70L) { + success = true; + break; + } + } + Assert.assertTrue("测试方法[test15]期望 退回70", success); + } + + + private byte[] callVmTest(byte[] prevStateRoot, String method, String expect, String viewMethod) throws Exception { + Object[] objects; + ProgramResult programResult; + + objects = super.call(contractA, prevStateRoot, SENDER, method, new String[]{}); + prevStateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("测试方法["+method+"]expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + Assert.assertTrue(String.format("测试方法[%s]返回值期望a=%s, 实际a=%s", method, expect, programResult.getResult()), expect.equals(programResult.getResult())); + + if(StringUtils.isNotBlank(viewMethod)) { + String a = super.view(contractA, prevStateRoot, viewMethod, new String[]{}); + Assert.assertTrue(String.format("测试方法[%s]View期望a=%s, 实际a=%s", method, expect, a), expect.equals(a)); + } + return prevStateRoot; + } + + private byte[] callVmTest(byte[] stateRoot, String method, String expect) throws Exception { + return callVmTest(stateRoot, method, expect, "viewA"); + } + + private byte[] callVmTest(byte[] stateRoot, String method, String expect, boolean containViewExpect) throws Exception { + String viewMethod = null; + if(containViewExpect) { + viewMethod = "viewA"; + } + return callVmTest(stateRoot, method, expect, viewMethod); + } + +} diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index d1460b3fca..84e8f22b68 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -181,8 +181,18 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { @Test public void getBalance() throws Exception { - Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"); - Log.info("balance:{}", JSONUtils.obj2PrettyJson(balance0)); + this.getBalanceByAccount(toAddress17); + System.out.println("---------------------------------------------------"); + this.getBalanceByAccount(contractAddress); + System.out.println("---------------------------------------------------"); + this.getBalanceByAccount("tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"); + } + + protected void getBalanceByAccount(String account) throws Exception { + Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, account); + System.out.println(String.format("NULS balance: %s", JSONUtils.obj2PrettyJson(balance0))); + Map balance1 = LedgerCall.getBalanceAndNonce(chain, chainId, 2, account); + System.out.println(String.format("MTA balance: %s", JSONUtils.obj2PrettyJson(balance1))); } @Test diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java index 7333984233..34a33455a8 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java @@ -73,6 +73,8 @@ import java.util.List; import java.util.Map; +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractErrorCode.FAILED; import static io.nuls.contract.util.ContractUtil.getFailed; import static io.nuls.contract.util.ContractUtil.getSuccess; @@ -201,7 +203,7 @@ protected Result makeCallTx(int chainId, String sender, } byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); byte[] senderBytes = AddressTool.getAddress(sender); - return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark); + return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, CHAIN_ID, ASSET_ID); } protected Result broadcastCallTx(CallContractTransaction tx) { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index 1a6e15c1d7..9c757d605b 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -27,6 +27,7 @@ import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; @@ -35,6 +36,7 @@ import java.io.FileInputStream; import java.io.InputStream; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.HashMap; import java.util.Map; @@ -78,16 +80,16 @@ public void nulsTest() throws Exception { // 转入 3.2 NULS this.callByParams("_payable", "3.2", null); // 转出 1.1 NULS - Object[] args = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8))}; + Object[] args = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; this.callByParams("transferNuls", "0", args); // 转出 1.2 NULS - Object[] argsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; + Object[] argsLock = new Object[]{toAddress17, new BigDecimal("1.2").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), minutes_3}; this.callByParams("transferNulsLock", "0", argsLock); } /** * 其他资产转入、转出、转出锁定 - * + *

* 如 2-2, 假设资产decimals=8 */ @Test @@ -95,10 +97,10 @@ public void otherAssetTest() throws Exception { // 转入 3.2 this.callOfDesignatedAssetByParams("_payableMultyAsset", "3.2", null, 2, 2); // 转出 1.1 - Object[] args = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), 2, 2}; + Object[] args = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; this.callOfDesignatedAssetByParams("transferDesignatedAsset", "0", args, 0, 0); // 转出 1.2 - Object[] argsLock = new Object[]{toAddress17, new BigInteger("1.2").multiply(BigInteger.TEN.pow(8)), 2, 2, minutes_3}; + Object[] argsLock = new Object[]{toAddress17, new BigDecimal("1.2").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2, minutes_3}; this.callOfDesignatedAssetByParams("transferDesignatedAssetLock", "0", argsLock, 0, 0); } @@ -109,34 +111,38 @@ public void otherAssetTest() throws Exception { @Test public void innerCall() throws Exception { String methodName = "callOtherContract"; - String otherContract = ""; - // 转入 6.6 NULS + String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + // 转入 6.6 NULS (外部合约) + this.callByParams("_payable", "6.6", null); + // 转入 6.6 NULS (内部合约) this.innerCallByParams(methodName, otherContract, "_payable", null, "6.6"); // 转出 3.3 NULS - Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; + Object[] innerArgs = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgs, "0"); // 转出 1.1 NULS(锁定) - Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; - this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0"); + Object[] innerArgsLock = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), minutes_3}; + this.innerCallByParams(methodName, otherContract, "transferNulsLock", innerArgsLock, "0"); } /** * 内部调用其他合约, 转入NULS,转出NULS,转出NULS(锁定) - * + *

* 内部调用带返回值 */ @Test public void innerCallWithReturnValue() throws Exception { String methodName = "callWithReturnValueOfOtherContract"; - String otherContract = ""; - // 转入 6.6 NULS + String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + // 转入 6.6 NULS (外部合约) + this.callByParams("_payable", "6.6", null); + // 转入 6.6 NULS (内部合约) this.innerCallByParams(methodName, otherContract, "_payable", null, "6.6"); // 转出 3.3 NULS - Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; + Object[] innerArgs = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgs, "0"); // 转出 1.1 NULS(锁定) - Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; - this.innerCallByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0"); + Object[] innerArgsLock = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), minutes_3}; + this.innerCallByParams(methodName, otherContract, "transferNulsLock", innerArgsLock, "0"); } /** @@ -147,19 +153,62 @@ public void innerCallWithReturnValue() throws Exception { @Test public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { String methodName = "callWithReturnValueOfOtherContractOfDesignatedAsset"; - String otherContract = ""; - // 转入 6.6 2-2 - this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "_payable", null, "6.6", 2, 2); + String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + // 转入 6.6 2-2 (外部合约) + this.callOfDesignatedAssetByParams("_payableMultyAsset", "6.6", null, 2, 2); + // 转入 6.6 2-2 (内部合约) + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "_payableMultyAsset", null, "6.6", 2, 2); // 转出 3.3 2-2 - Object[] innerArgs = new Object[]{toAddress17, new BigInteger("3.3").multiply(BigInteger.TEN.pow(8))}; - this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferNuls", innerArgs, "0", 0, 0); + Object[] innerArgs = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAsset", innerArgs, "0", 0, 0); // 转出 1.1 2-2(锁定) - Object[] innerArgsLock = new Object[]{toAddress17, new BigInteger("1.1").multiply(BigInteger.TEN.pow(8)), minutes_3}; - this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferNuls", innerArgsLock, "0", 0, 0); + Object[] innerArgsLock = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2, minutes_3}; + this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAssetLock", innerArgsLock, "0", 0, 0); + } + + /** + * 查询所有资产 + */ + @Test + public void getAllAssetReg() throws Exception { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getAssetRegInfo", params); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + /** + * 注册一个资产 + */ + @Test + public void assetRegisterTest() throws Exception { + Map params = new HashMap<>(); + params.put("assetSymbol", "MTA"); + params.put("assetName", "MTA"); + params.put("initNumber", 100000000); + params.put("decimalPlace", 8); + params.put("txCreatorAddress", sender); + params.put("assetOwnerAddress", sender); + params.put("password", "nuls123456"); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "chainAssetTxReg", params); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + /** + * 根据注册资产的交易hash查询资产信息 + */ + @Test + public void getAssetRegInfoByHashTest() throws Exception { + // Build params map + Map params = new HashMap<>(); + params.put("chainId", chainId); + params.put("txHash", "b51947d09b1eeca55de84703f840faf2638257f6d1b833e46efcc62229383b43"); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getAssetRegInfoByHash", params); + System.out.println(JSONUtils.obj2PrettyJson(response)); } protected void callByParams(String methodName, String valueStr, Object[] args) throws Exception { - BigInteger value = new BigInteger(valueStr).multiply(BigInteger.TEN.pow(8)); + BigInteger value = new BigDecimal(valueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Map params = this.makeCallParams(sender, value, contractAddress, methodName, null, "", args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); @@ -169,7 +218,7 @@ protected void callByParams(String methodName, String valueStr, Object[] args) t } protected void callOfDesignatedAssetByParams(String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { - BigInteger value = new BigInteger(valueStr).multiply(BigInteger.TEN.pow(8)); + BigInteger value = new BigDecimal(valueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Map params = this.makeCallParams(sender, value, gasLimit, gasPrice, contractAddress, methodName, null, "", assetChainId, assetId, args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); @@ -179,7 +228,7 @@ protected void callOfDesignatedAssetByParams(String methodName, String valueStr, } protected void innerCallByParams(String methodName, String otherContract, String innerMethod, Object[] innerArgs, String innerValueStr) throws Exception { - BigInteger innerValue = new BigInteger(innerValueStr).multiply(BigInteger.TEN.pow(8)); + BigInteger innerValue = new BigDecimal(innerValueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Object[] args = new Object[]{otherContract, innerMethod, innerArgs, innerValue}; Map params = this.makeCallParams(sender, BigInteger.ZERO, contractAddress, methodName, null, "", args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); @@ -190,7 +239,7 @@ protected void innerCallByParams(String methodName, String otherContract, String } protected void innerCallOfDesignatedAssetByParams(String methodName, String otherContract, String innerMethod, Object[] innerArgs, String innerValueStr, int assetChainId, int assetId) throws Exception { - BigInteger innerValue = new BigInteger(innerValueStr).multiply(BigInteger.TEN.pow(8)); + BigInteger innerValue = new BigDecimal(innerValueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Object[] args = new Object[]{otherContract, innerMethod, innerArgs, innerValue, assetChainId, assetId}; Map params = this.makeCallParams(sender, BigInteger.ZERO, contractAddress, methodName, null, "", args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index 602b56fbd5..880948ca18 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -107,7 +107,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); Log.info("begin addOtherAgent"); - this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("f5202662646e63afa3625f4f02fa07b8f250acd15dcef05fbdfc11f8eb0195b3").toArray()); + this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("2de47d6fa7d7f26b48a1b75e668bb299c903e8f76b8ae0335ecd5a0cd7d0741b").toArray()); Log.info("begin depositForOwn {}", sender); //String nrc20Locked = "tNULSeBaN8w5ioWD9m2GE16QpuawaKtMDjdDRk"; @@ -439,7 +439,6 @@ public void transfer2Contract() throws Exception { @View @Test public void getContractWholeInfo() throws Exception { - contractAddress = "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"; String methodName = "wholeConsensusInfo"; Log.info(invokeView(contractAddress, methodName)); } diff --git a/module/nuls-smart-contract/src/test/resources/multi-asset-contract b/module/nuls-smart-contract/src/test/resources/multi-asset-contract index 4ea5b7a9f56c15099960b28e1ed8963854b08550..cb052dd797c62bef143b9a63c92565ce8134d2a7 100644 GIT binary patch delta 2326 zcmY+Gc{J4h7sm(L4HL$inPikP*)q0lPa(+?8Iq+*_8K8%E8j?DWEmrc$oAOAlB`*i zvF~Mj)X2;bp~${_@H_p^dG0x%^SbwQKKI;vKmXi!-KpeLU{gb;V;rDEv+%o303(<% z2S8^WVH9?RO^HJg;S6VwXu_a!{2(@itnf)FvVuS-`9L5v(Ut*DtY8oZUT&L=Dw?6~&*OoG3E_d1=!seyDJn^AV3I5^C!*7$q+kwtvdPvhg|>~QvEYxt z=8bD(raEIywDpGTs$8fYB@CZwb~w1@=XLcRofp(})!$Pi#xKVxH%1gy7)? z8w5NY#rEc$%x9P>S3e0R1VcaEDB-<@Kh1#+u0E(s5YbJ6gvrgvEDIMvW z9+vzX=WvPVEGw)!Ca)yg4SPRu&af``n0PwwW6VV;dF zvLcm9sRlN30JAB1SLjzr_j{yb@8^bc8UQl?JZ!*Wq|b1kPd5@jtx>0E+-+3lz z=QRbReE)l_-&WVaGQPcF^ADB1vcz04{0A7WkOB1rHhn;sNNJsBL zVMNBM%+OTSTCWJS?ADJ;f}ce2?~rb8@aEW%VpLK#Q3PIyiC6iU5N!#zB{D zsDP|OnjY9?F+Tjwgn&#BzW1uqYd-T`{~KID4i&m%+Z6n*TFCG$ds11eZH1?akJ1if z3EsUC1G3*$f|lIffCd*)!FBmG8F236JA4%sD1UEpi=yyMa>3PKaKX(V4u3Wtk-1I? zx3?WwR0z(ZR&D6Ech+vaS>9!^QnC=+EZ zDez%IL2#5{qr?w$nXg$BUT~u=$5xiPFY%hu9P^q5C-jvu&{9K`_!q*84B|_7CmRV! z;(8g>JVUXd4h}`5;fr3KZN}rz?Harueo}5R7eEUbwFdeJ@vGi#l^!sKa$Z)TDNfNDYBp@D zMe9!PSTrPI1@2VVpK#i6TGh>4S59br`#FsN%iGsqW6-)zFE~9R5gQiOe@BqW-y6N{ z_!|2j#pL9FVLK~fr6VO!e8KKg_BaKjQy$*a{6;5bDNzg4oH%OPi8P?JRyqMV!6hr4 zaF5b_UWU_vY_FG=$)#bdE z*-@2Y62);`r=(`aBJ}3ZdbyGY$@=p#TI=apy*S{58TK`%CS2L$-rx=IeuCJ}vPk;9 z^8N`~=K(F2pYlVT={NQ3IRQjqEG^6^HS6K{)oaaKxG9GqA%@;yQ6||@)~|x!t4bKG zu7kZi-f2%3;v-IYX_O26f>6)7x}a;^W`*eD6EOxi-ms2LH?6++%v5>S#x~MZC-_Rd zvrP5p?Y+o2M(_USc^rGORwc&TWZqh4^Zr-5(XbY5A?uj>g|b~KVS8t=|9^1G`LB=l3XGrh5osX}~7HEJqi4dzWd?Uuh zaD~(KsREDYT!xG0N?}Br?||M_U2R>v7(VHB+YfPbWM0Wrh|-&9^ne6BxByr!vh?gbbUh$H`X{ODvwngQ(k5y#r z@QCf^bC$JqYK4mG=|{EXN6oG|FJxzn^pR9ANsZ#Lwik=lys+!FT|?a@bgwTh2iqEE zxN*IBlnx+Zx6y zIj(EcM2F<>&c-ujH1Xar3R0h-g*5k2w@Y2QR-V@R(O_@C{TTEf+Dy)hIptR-Qvp8L zV%~yax?v`iR*Qx$IyE}Sw^p_w}z@8EW ze=Qm|SW{H)#QkUcVK>xXZ}+=I?pGE@-XmCD}UwrR_ z(q2pB(wggNmK3k%x+v{-+Nd}nATm*V_~IdBI^56(OF$;KcGE=83b2@2lNnKX`=h7% z2>ONs6fxafPk2pTtq#R0KcaaJ8ZYJ1h(f-x-$UO})gv6mbff$3Gzr^MiLLLE4Y`Lm zpV__m7RGbaXy|Uln2V|>a#-72sGHq66X8&ENonfDTMYRec2VtAhoBn}gz+jl>%pUP zm)z=}ov0!&e21sjU1_9)X*$~Ao79z;E&=~gJ`JrIB=F0;!%a3!%Dx~w9r`sdHhT)= zi%6!w4eUTF`P)&SS-*I0=ii2OJeP_>&?+uCwsPMJoI617{Xh^KeKZA;=iVwG$YGWq zuUg23&ZJJ8e(5v_=}-dV{PQEmZ#O;+K#?$Ap9s)GyB4Q2P8G=}{1w%glTp{#65^7( zjVV2t{jUN8f=c)eW=}O3u*qBC<5t24YMiGMLsJEo5c3KmA;^It>IF(j4c1>H#Ed_Q z!VevsIIr3@=-2e3C#`VxWj?<)W@g1enyY);`9zr{&xo2`IHDV@t?62P9bz`Mt6AT3Xj0eV)ruAr(=3l?qm$ z-NQ;vuZlHTY?b9KK_qXv&UoMvExt3WhenADe9l^*wMwXqv}!8{DZ%rSAKQXnRm>y9 zV}9ufeH>zgH?3aZUvQI(x`&Wj)I>=5`L02Kyh_ZR238fq@+Q9ola|Ad{L$#HGu&(R zx@3VO+1TW3w`uWuo}D4Gsozw6pEOumm2tL;LMu4hkT&Z$5~S^#SMZUYP&r?$%8p-< zbW`9Jr%*25e2}FxZllX$xHbHg4b1EInT5&Kh}p4}izU`;YiPs9o-`$R!vl{@J1Msi zx=gJG5c|z%zjbBM5_Kdx31&VTuI?E}L6bC%d*ppTgx*I8+zd1cxC+K=(Qr}BBrHOf1C^ocbHGu?#TFx*Sk zJ78TqVpB8Y-qglL=9fC{C&k(xDFCu!G-aI);HhoH)QDBHHT21S7K@EI0&?4nvRQVD zVSY7f>R}{2TkU?<=7aQO0i}?xjx9|v(e@K}z@$=RT{Vj(tFfIv`)D(`qeDjm%^AUk1l@# zWa|kf`*dt1eHGcUD_H2nb%|#DL@@k{AW(SgO)DTq*Ob51IJQV7mT7GRT{9vHlJbSn zGA(_3`OFw5PsfamlOJqda?ctVwc7ku*Rl18uMf-N?d0$uzsew1@~#JlPgUk?Zpe)D zp7fOXi8}md);QBFeLwY`b9S`Na90qZ9?RvaGHxe4T+0&vTv-BoaSu5$>W-W$qD4#i zwLxZ5EYjwFX_K1sBS%YZup6@ zCcNN&AKi-Y48NQ!j8BipS1=A6!F4L|RmA~Wx$zb4YEUxKi&h>Bbg@%i+iM_P&4{$J$jzUI+^uLu_ zF5jm!r*B!?Z*2KgI!7h?cBc+0bLZXp6kv`kXlod1cJ#wD`T71Y}843Ts zpTTp~*_^cauNeI?4c?H%sr=)evc}bC3NV*FbJ0sNJ_5%k`RMH19l_1+_zRc}^kfEl z==_D^G9y-E{`NK5b;QN3pLeTaQIWj;pb%mC)f2vs(JTZ(?%I*8&UR4+m)ok6pvTsKS(uy*O%11& z88*LP^y}La{>`w79OwQwz;;NN;uGb#v=*QCE*ZgmNHE{7U9X-9XbPqm9I3PEwG09E7A8H(pH18M^KZQ`IW zLhU#eQl{VN_w~c|DSRAzvLj-_O=C`4Lhp%Zv+2(|2IAEH~rlmy({SBPSm8| hJqYLA&iTL{Rrt;}{7=orm3y Date: Tue, 3 Nov 2020 18:15:53 +0800 Subject: [PATCH 141/304] test case updated --- .../src/main/java/io/nuls/contract/vm/VM.java | 13 + .../io/nuls/contract/sdk/NativeAddress.java | 12 +- .../contract/vm/program/ProgramResult.java | 13 + .../contract/vm/program/ProgramTransfer.java | 6 +- .../vm/program/impl/ProgramExecutorImpl.java | 7 + .../mock/contractvm/ContractVmV8Test.java | 243 +++++++++++++++--- 6 files changed, 256 insertions(+), 38 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 6f964f5871..8b223fa819 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -66,6 +66,7 @@ import java.lang.reflect.Array; import java.math.BigInteger; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import static io.nuls.contract.constant.ContractConstant.BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC_IN_VM; @@ -122,6 +123,18 @@ public class VM { private List orderedInnerTxs = new ArrayList<>(); + // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 + private LinkedList stackTraces = new LinkedList<>(); + + public LinkedList getStackTraces() { + return stackTraces; + } + + public void setStackTraces(LinkedList stackTraces) { + this.stackTraces = stackTraces; + } + // end code by pierre + public VM() { this.vmStack = new VMStack(VM_STACK_MAX_SIZE); this.heap = new Heap(BigInteger.ZERO); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index a46bde16ad..54d90504cb 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -40,6 +40,7 @@ import java.math.BigInteger; import java.util.Arrays; +import java.util.Iterator; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; @@ -392,16 +393,25 @@ public static ProgramResult call(String address, String methodName, String metho ProgramResult programResult = frame.vm.getProgramExecutor().callProgramExecutor().call(programCall); + frame.vm.addGasUsed(programResult.getGasUsed()); + // add by pierre at 2020-11-03 从`isSuccess`代码段中移出,可能影响兼容性,考虑协议升级 + frame.vm.getDebugEvents().addAll(programResult.getDebugEvents()); + // end code by pierre if (programResult.isSuccess()) { frame.vm.getTransfers().addAll(programResult.getTransfers()); frame.vm.getInternalCalls().addAll(programResult.getInternalCalls()); frame.vm.getEvents().addAll(programResult.getEvents()); - frame.vm.getDebugEvents().addAll(programResult.getDebugEvents()); frame.vm.getInvokeRegisterCmds().addAll(programResult.getInvokeRegisterCmds()); frame.vm.getOrderedInnerTxs().addAll(programResult.getOrderedInnerTxs()); return programResult; } else { + // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 + Iterator descendingIterator = programResult.getStackTraces().descendingIterator(); + while (descendingIterator.hasNext()) { + frame.vm.getStackTraces().addFirst(descendingIterator.next()); + } + // end code by pierre frame.throwRuntimeException(programResult.getErrorMessage()); return programResult; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java index 1d97a147e7..38e926dd37 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java @@ -29,6 +29,7 @@ import org.ethereum.db.ByteArrayWrapper; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -59,6 +60,18 @@ public class ProgramResult { private List invokeRegisterCmds = new ArrayList<>(); private List orderedInnerTxs = new ArrayList<>(); + // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 + private LinkedList stackTraces = new LinkedList<>(); + + public LinkedList getStackTraces() { + return stackTraces; + } + + public void setStackTraces(LinkedList stackTraces) { + this.stackTraces = stackTraces; + } + // end code by pierre + public ProgramResult revert(String errorMessage) { this.revert = true; this.errorMessage = errorMessage; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java index 0b7b23839b..b49d7d98b5 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramTransfer.java @@ -24,6 +24,8 @@ */ package io.nuls.contract.vm.program; +import io.nuls.base.basic.AddressTool; + import java.math.BigInteger; import java.util.Arrays; @@ -132,9 +134,9 @@ public int hashCode() { public String toString() { final StringBuilder sb = new StringBuilder("{"); sb.append("\"from\":") - .append(Arrays.toString(from)); + .append(AddressTool.getStringAddressByBytes(from)); sb.append(",\"to\":") - .append(Arrays.toString(to)); + .append(AddressTool.getStringAddressByBytes(to)); sb.append(",\"value\":") .append(value); sb.append(",\"assetChainId\":") diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index ea7669b2ed..f750f06421 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -493,6 +493,13 @@ private ProgramResult execute(ProgramInvoke programInvoke) { String stackTrace = vm.heap.stackTrace((ObjectRef) resultValue); programResult.error(error); programResult.setStackTrace(stackTrace); + // add by pierre at 2020-11-03 增加内部合约调用的异常堆栈信息列表,可能影响兼容性,考虑协议升级 + programResult.getStackTraces().addFirst(stackTrace); + Iterator descendingIterator = vm.getStackTraces().descendingIterator(); + while (descendingIterator.hasNext()) { + programResult.getStackTraces().addFirst(descendingIterator.next()); + } + // end code by pierre } else { programResult.error(null); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java index 6396d8a7ca..2dc19cd058 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java @@ -23,19 +23,17 @@ */ package io.nuls.contract.mock.contractvm; -import com.fasterxml.jackson.core.JsonProcessingException; import io.nuls.base.basic.AddressTool; import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractContext; import io.nuls.contract.mock.basetest.MockBase; import io.nuls.contract.util.Log; +import io.nuls.contract.util.MapUtil; import io.nuls.contract.vm.VMFactory; -import io.nuls.contract.vm.program.ProgramMethod; import io.nuls.contract.vm.program.ProgramResult; import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.core.crypto.HexUtil; import io.nuls.core.model.StringUtils; -import io.nuls.core.parse.JSONUtils; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Before; @@ -44,8 +42,13 @@ import java.io.FileInputStream; import java.io.InputStream; import java.math.BigInteger; +import java.util.Arrays; +import java.util.LinkedHashMap; import java.util.List; +import static io.nuls.contract.util.ContractUtil.addressKey; +import static io.nuls.contract.util.ContractUtil.mapAddBigInteger; + /** * 测试场景: * @@ -59,14 +62,14 @@ * 2. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 * 期望执行结果中 * 有退回到调用者的70 - * A有10 - * B有20 + * A有20 + * B有10 * * 3. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 * 期望执行结果中 * 有退回到调用者的60可用,10锁定 - * A有10 - * B有20 + * A有20 + * B有10 * * 4. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender * 期望执行结果中 @@ -74,19 +77,19 @@ * A有0 * B有30 * - * 5. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A * 期望执行结果中 * 执行失败,余额不足 * - * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender * 期望执行结果中 * 执行失败,余额不足 * - * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender * 期望执行结果中 * 执行失败,余额不足 * - * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 9. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A * 期望执行结果中 * 执行失败,不允许转移锁定资产给合约地址 * @@ -111,10 +114,10 @@ public void createAndInit() throws Exception { } // -------------------------------------------------------------------------------------// - InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-testA-testA.jar").getFile()); - InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-testB-testB.jar").getFile()); - //InputStream inA = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-testA/target/contract-vm-testA-testA.jar"); - //InputStream inB = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-testB/target/contract-vm-testB-testB.jar"); + //InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-v8-testA-1.0-SNAPSHOT.jar").getFile()); + //InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-v8-testB-1.0-SNAPSHOT.jar").getFile()); + InputStream inA = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-v8-testA/target/contract-vm-v8-testA-1.0-SNAPSHOT.jar"); + InputStream inB = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-v8-testB/target/contract-vm-v8-testB-1.0-SNAPSHOT.jar"); byte[] contractCodeA = IOUtils.toByteArray(inA); byte[] contractCodeB = IOUtils.toByteArray(inB); @@ -130,13 +133,13 @@ public void createAndInit() throws Exception { prevStateRoot = (byte[]) objects[0]; Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); ProgramResult programResult = (ProgramResult) objects[1]; - Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); objects = super.call(contractB, prevStateRoot, SENDER, "setContractA", new String[]{contractA}); prevStateRoot = (byte[]) objects[0]; Log.info("stateRoot: {}", HexUtil.encode(prevStateRoot)); programResult = (ProgramResult) objects[1]; - Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + Assert.assertTrue("expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); } @Test @@ -146,38 +149,208 @@ public void test() { @Test public void test1() throws Exception{ - byte[] currentStateRoot; - String a; Object[] objects; ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test15", new String[]{}, BigInteger.valueOf(100L)); - currentStateRoot = (byte[]) objects[0]; + objects = super.call(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigInteger.valueOf(100L)); programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法[test15]expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + Assert.assertTrue("测试方法[test1]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); List transfers = programResult.getTransfers(); - boolean success = false; + LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); + BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); + BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + for(ProgramTransfer transfer : transfers) { - String from = AddressTool.getStringAddressByBytes(transfer.getFrom()); - String to = AddressTool.getStringAddressByBytes(transfer.getTo()); - Log.info("transfer from: {}, to: {}, value: {}", from, to, transfer.getValue().toString()); - if(from.equals(contractB) && to.equals(SENDER) && transfer.getValue().longValue() == 70L) { - success = true; - break; - } + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[test1]期望 A: 0, 实际: %s", balanceA.longValue()), balanceA.longValue() == 0); + Assert.assertTrue(String.format("测试方法[test1]期望 B: 30, 实际: %s", balanceB.longValue()), balanceB.longValue() == 30); + Assert.assertTrue(String.format("测试方法[test1]期望 sender: 70, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 70); + } + + @Test + public void test2() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("测试方法[test2]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + + List transfers = programResult.getTransfers(); + LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); + BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); + BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + + for(ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[test1]期望 A: 20, 实际: %s", balanceA.longValue()), balanceA.longValue() == 20); + Assert.assertTrue(String.format("测试方法[test1]期望 B: 10, 实际: %s", balanceB.longValue()), balanceB.longValue() == 10); + Assert.assertTrue(String.format("测试方法[test1]期望 sender: 70, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 70); + } + + @Test + public void test3() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("测试方法[test3]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + + List transfers = programResult.getTransfers(); + LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); + BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); + BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + BigInteger balanceSenderLock = balanceList[1][2]; + + for(ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[test1]期望 A: 20, 实际: %s", balanceA.longValue()), balanceA.longValue() == 20); + Assert.assertTrue(String.format("测试方法[test1]期望 B: 10, 实际: %s", balanceB.longValue()), balanceB.longValue() == 10); + Assert.assertTrue(String.format("测试方法[test1]期望 sender: 60, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 60); + Assert.assertTrue(String.format("测试方法[test1]期望 sender-锁定: 10, 实际: %s", balanceSenderLock.longValue()), balanceSenderLock.longValue() == 10); + } + + @Test + public void test4() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + Assert.assertTrue("测试方法[test4]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + + List transfers = programResult.getTransfers(); + LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); + BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); + BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + BigInteger balanceSenderLock = balanceList[1][2]; + + for(ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); } - Assert.assertTrue("测试方法[test15]期望 退回70", success); + Assert.assertTrue(String.format("测试方法[test1]期望 A: 0, 实际: %s", balanceA.longValue()), balanceA.longValue() == 0); + Assert.assertTrue(String.format("测试方法[test1]期望 B: 30, 实际: %s", balanceB.longValue()), balanceB.longValue() == 30); + Assert.assertTrue(String.format("测试方法[test1]期望 sender: 50, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 50); + Assert.assertTrue(String.format("测试方法[test1]期望 sender-锁定: 20, 实际: %s", balanceSenderLock.longValue()), balanceSenderLock.longValue() == 20); } - private byte[] callVmTest(byte[] prevStateRoot, String method, String expect, String viewMethod) throws Exception { + @Test + public void test6() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse("测试方法[test6]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + } + + @Test + public void test7() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse("测试方法[test7]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + } + + @Test + public void test8() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse("测试方法[test8]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + } + + @Test + public void test9() throws Exception{ + Object[] objects; + ProgramResult programResult; + objects = super.call(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigInteger.valueOf(100L)); + programResult = (ProgramResult) objects[1]; + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse("测试方法[test9]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + } + + protected BigInteger[][] balanceList(int assetChainId, int assetId, LinkedHashMap[] contracts, String... addresses) { + BigInteger[][] result = new BigInteger[2][]; + BigInteger[] resultAvailable = new BigInteger[addresses.length]; + BigInteger[] resultLock = new BigInteger[addresses.length]; + result[0] = resultAvailable; + result[1] = resultLock; + + LinkedHashMap fromValue = contracts[0]; + LinkedHashMap toValue = contracts[1]; + LinkedHashMap toLockValue = contracts[2]; + int i = 0; + for (String address : addresses) { + byte[] addressBytes = AddressTool.getAddress(address); + String key = addressKey(addressBytes, assetChainId, assetId); + BigInteger balance = mapValueOf(fromValue, key).negate().add(mapValueOf(toValue, key)); + resultAvailable[i] = balance; + resultLock[i++] = mapValueOf(toLockValue, key); + } + return result; + } + + protected BigInteger mapValueOf(LinkedHashMap map, String key) { + BigInteger value = map.get(key); + if (value == null) { + return BigInteger.ZERO; + } + return value; + } + + protected LinkedHashMap[] filterContractValue(int chainId, List transfers) { + LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap contractToLockValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap[] contracts = new LinkedHashMap[3]; + contracts[0] = contractFromValue; + contracts[1] = contractToValue; + contracts[2] = contractToLockValue; + + byte[] from, to; + int assetChainId, assetId; + BigInteger transferValue; + boolean lock; + for (ProgramTransfer transfer : transfers) { + from = transfer.getFrom(); + to = transfer.getTo(); + transferValue = transfer.getValue(); + assetChainId = transfer.getAssetChainId(); + assetId = transfer.getAssetId(); + lock = transfer.getLockedTime() > 0; + mapAddBigInteger(contractFromValue, from, assetChainId, assetId, transferValue); + if (lock) { + mapAddBigInteger(contractToLockValue, to, assetChainId, assetId, transferValue); + } else { + mapAddBigInteger(contractToValue, to, assetChainId, assetId, transferValue); + } + } + return contracts; + } + + protected byte[] callVmTest(byte[] prevStateRoot, String method, String expect, String viewMethod) throws Exception { Object[] objects; ProgramResult programResult; objects = super.call(contractA, prevStateRoot, SENDER, method, new String[]{}); prevStateRoot = (byte[]) objects[0]; programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法["+method+"]expect success, " + programResult.getErrorMessage() + ", " + programResult.getStackTrace(), programResult.isSuccess()); + Assert.assertTrue("测试方法["+method+"]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); Assert.assertTrue(String.format("测试方法[%s]返回值期望a=%s, 实际a=%s", method, expect, programResult.getResult()), expect.equals(programResult.getResult())); if(StringUtils.isNotBlank(viewMethod)) { @@ -187,11 +360,11 @@ private byte[] callVmTest(byte[] prevStateRoot, String method, String expect, St return prevStateRoot; } - private byte[] callVmTest(byte[] stateRoot, String method, String expect) throws Exception { + protected byte[] callVmTest(byte[] stateRoot, String method, String expect) throws Exception { return callVmTest(stateRoot, method, expect, "viewA"); } - private byte[] callVmTest(byte[] stateRoot, String method, String expect, boolean containViewExpect) throws Exception { + protected byte[] callVmTest(byte[] stateRoot, String method, String expect, boolean containViewExpect) throws Exception { String viewMethod = null; if(containViewExpect) { viewMethod = "viewA"; From cca42e44053dcc1e8ed25deebd87262f5248b3bb Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 4 Nov 2020 14:34:19 +0800 Subject: [PATCH 142/304] update ps-module getAccountTokenInfo --- .../main/java/io/nuls/api/utils/DocumentTransferTool.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java index 8fb1da11cd..6b4e732a03 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java @@ -125,6 +125,11 @@ public static T toInfo(Document document, String _id, Class clazz) { } return instance; } catch (Exception e) { + LoggerUtil.commonLog.error("address:" + document.get("address").toString()); + LoggerUtil.commonLog.error("balance:" + document.get("balance").toString()); + LoggerUtil.commonLog.error("lockedBalance" + document.get("lockedBalance").toString()); + LoggerUtil.commonLog.error("tokenSymbol" + document.get("tokenSymbol").toString()); + LoggerUtil.commonLog.error(e); throw new NulsRuntimeException(ApiErrorCode.DATA_PARSE_ERROR, "Document to Model fail"); } From 2f103f6d12ab62b35f8b6d2542b010ad1879d8a2 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 4 Nov 2020 14:47:28 +0800 Subject: [PATCH 143/304] update ps-module getAccountTokenInfo --- .../nuls/api/db/mongo/MongoTokenServiceImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java index 1f20dc0d83..4bea28791d 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java @@ -6,6 +6,7 @@ import io.nuls.api.model.po.PageInfo; import io.nuls.api.model.po.TokenTransfer; import io.nuls.api.utils.DocumentTransferTool; +import io.nuls.api.utils.LoggerUtil; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.model.BigIntegerUtils; @@ -32,8 +33,18 @@ public AccountTokenInfo getAccountTokenInfo(int chainId, String key) { if (document == null) { return null; } - AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); - return tokenInfo; + try { + AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); + return tokenInfo; + } catch (Exception e) { + LoggerUtil.commonLog.error("~~~~~~~~~~~~~~~~解析错误~~~~~~~~~~~~~~~~"); + LoggerUtil.commonLog.error("key:" + document.get("key").toString()); + LoggerUtil.commonLog.error("address:" + document.get("address").toString()); + LoggerUtil.commonLog.error("balance:" + document.get("balance").toString()); + LoggerUtil.commonLog.error("lockedBalance" + document.get("lockedBalance").toString()); + LoggerUtil.commonLog.error("tokenSymbol" + document.get("tokenSymbol").toString()); + return null; + } } public void saveAccountTokens(int chainId, Map accountTokenInfos) { From 3c9cb6d1b7a6bcfab5d39662de43e47057ba0cb0 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 4 Nov 2020 15:15:58 +0800 Subject: [PATCH 144/304] update ps-module getAccountTokenInfo --- .../io/nuls/core/model/BigIntegerUtils.java | 7 ++++- .../api/db/mongo/MongoTokenServiceImpl.java | 14 ++------- .../test/java/io/nuls/api/test/ApiTest.java | 30 ++++++------------- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/common/nuls-core/src/main/java/io/nuls/core/model/BigIntegerUtils.java b/common/nuls-core/src/main/java/io/nuls/core/model/BigIntegerUtils.java index 271590fc0a..23ee8ef65e 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/model/BigIntegerUtils.java +++ b/common/nuls-core/src/main/java/io/nuls/core/model/BigIntegerUtils.java @@ -32,6 +32,11 @@ public static String bigIntegerToString(BigInteger bigInteger) { } public static String bigIntegerToString(BigInteger bigInteger, int size) { + String symbol = ""; + if (bigInteger.compareTo(BigInteger.ZERO) < 0) { + symbol = "-"; + bigInteger = bigInteger.abs(); + } String value = bigInteger.toString(); int length = size - value.length(); if (length > 0) { @@ -41,7 +46,7 @@ public static String bigIntegerToString(BigInteger bigInteger, int size) { } value = buffer.append(value).toString(); } - return value; + return symbol + value; } /** diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java index 4bea28791d..c7e81ee25f 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java @@ -33,18 +33,8 @@ public AccountTokenInfo getAccountTokenInfo(int chainId, String key) { if (document == null) { return null; } - try { - AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); - return tokenInfo; - } catch (Exception e) { - LoggerUtil.commonLog.error("~~~~~~~~~~~~~~~~解析错误~~~~~~~~~~~~~~~~"); - LoggerUtil.commonLog.error("key:" + document.get("key").toString()); - LoggerUtil.commonLog.error("address:" + document.get("address").toString()); - LoggerUtil.commonLog.error("balance:" + document.get("balance").toString()); - LoggerUtil.commonLog.error("lockedBalance" + document.get("lockedBalance").toString()); - LoggerUtil.commonLog.error("tokenSymbol" + document.get("tokenSymbol").toString()); - return null; - } + AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); + return tokenInfo; } public void saveAccountTokens(int chainId, Map accountTokenInfos) { diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java index 736a9bd018..7b693194b1 100644 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java +++ b/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java @@ -3,9 +3,12 @@ import io.nuls.api.analysis.WalletRpcHandler; import io.nuls.api.cache.ApiCache; import io.nuls.api.manager.CacheManager; +import io.nuls.api.model.po.AccountTokenInfo; import io.nuls.api.model.po.ContractInfo; import io.nuls.api.model.po.ContractResultInfo; import io.nuls.api.model.po.CurrentRound; +import io.nuls.api.utils.DocumentTransferTool; +import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.DoubleUtils; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.info.NoUse; @@ -13,6 +16,7 @@ import io.nuls.core.basic.Result; import io.nuls.core.exception.NulsException; import org.bson.Document; +import org.checkerframework.checker.units.qual.A; import org.junit.Before; import org.junit.Test; @@ -116,27 +120,11 @@ public void testContractResult() { @Test public void test() { - Set set = new HashSet<>(); - set.add("aaaa1"); - set.add("aaaa11"); - set.add("aaaa112"); - set.add("aaaa13"); - set.add("aaaa14"); - set.add("aaaa15"); - set.add("aaaa16"); - set.add("aaaa17"); - set.add("aaaa18"); - set.add("aaaa19"); - set.add("aaaa10"); - - int i = 0; - for (String key : set) { - System.out.println(key); - i++; - if (i == 6) { - break; - } - } + AccountTokenInfo info = new AccountTokenInfo(); + info.setKey("abcde"); + info.setBalance(new BigInteger("-11111")); + + System.out.println(BigIntegerUtils.bigIntegerToString(info.getBalance(), 32)); } } From 135698048e0f198b1236967f04a79138b7b72d8c Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 4 Nov 2020 18:06:00 +0800 Subject: [PATCH 145/304] fix bug about contract transfer merge --- .../helper/ContractTransferHandler.java | 3 +- .../io/nuls/contract/model/bo/Output.java | 9 + .../model/dto/ContractMergedTransferDto.java | 3 + .../ContractMultyAssetMergedTransferDto.java | 136 +++++ .../contract/model/dto/ContractOutputDto.java | 14 + .../contract/model/dto/ContractResultDto.java | 37 +- .../model/dto/MultyAssetOutputDto.java | 98 ++++ .../io/nuls/contract/model/dto/OutputDto.java | 3 + .../io/nuls/contract/util/ContractUtil.java | 9 + .../nuls/contract/mock/basetest/MockBase.java | 21 +- .../ContractMergeContractTransferTest.java | 1 + .../mock/contractvm/ContractVmV8Test.java | 427 ++++++++------ .../io/nuls/contract/tx/base/BaseQuery.java | 14 +- .../tx/contractvm/ContractVmV8SendTxTest.java | 545 ++++++++++++++++++ 14 files changed, 1141 insertions(+), 179 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java index fe53f9549d..bdfde5d0c5 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java @@ -299,7 +299,7 @@ private void mergeContractTransfer(ContractResult contractResult, int chainId, l nonceBytes = RPCUtil.decode(contractBalance.getNonce()); } else { // 产生另一个合并交易,更新之前的合并交易的hash和账户的nonce - this.updatePreTxHashAndAccountNonce(preTx.get(wrapperFrom), preBalance.get(wrapperFrom)); + this.updatePreTxHashAndAccountNonce(preTx.get(compareFrom), preBalance.get(compareFrom)); mergeCoinToMap.clear(); // 获取新交易的coinFrom的nonce contractBalance = tempBalanceManager.getBalance(from, assetChainId, assetId).getData(); @@ -415,6 +415,7 @@ private ContractMergedTransfer transformMergedTransfer(NulsHash orginHash, Contr output = new Output(); output.setTo(to.getAddress()); output.setValue(to.getAmount()); + output.setLockTime(to.getLockTime()); outputs.add(output); } result.setHash(transfer.getHash()); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Output.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Output.java index 9bdc8c78f9..ce223344f9 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Output.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Output.java @@ -32,6 +32,7 @@ public class Output { private byte[] to; private BigInteger value; + private long lockTime; public byte[] getTo() { return to; @@ -48,4 +49,12 @@ public BigInteger getValue() { public void setValue(BigInteger value) { this.value = value; } + + public long getLockTime() { + return lockTime; + } + + public void setLockTime(long lockTime) { + this.lockTime = lockTime; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMergedTransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMergedTransferDto.java index 377295b8e0..b3dd9d8072 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMergedTransferDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMergedTransferDto.java @@ -53,6 +53,9 @@ public class ContractMergedTransferDto { @ApiModelProperty(description = "调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来)") private String orginTxHash; + public ContractMergedTransferDto() { + } + public ContractMergedTransferDto(ContractMergedTransfer transfer) { this.from = AddressTool.getStringAddressByBytes(transfer.getFrom()); this.value = bigInteger2String(transfer.getValue()); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java new file mode 100644 index 0000000000..0b84c8006c --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java @@ -0,0 +1,136 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.NulsHash; +import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; +import io.nuls.contract.model.bo.MultyAssetOutput; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.core.rpc.model.TypeDescriptor; + +import java.util.ArrayList; +import java.util.List; + +import static io.nuls.contract.util.ContractUtil.bigInteger2String; + +/** + * @author: PierreLuo + */ +public class ContractMultyAssetMergedTransferDto { + @ApiModelProperty(description = "合约生成交易:合约转账交易hash") + private String txHash; + @ApiModelProperty(description = "转出的合约地址") + private String from; + @ApiModelProperty(description = "转账金额") + private String value; + @ApiModelProperty(description = "转账金额资产链ID") + private int assetChainId; + @ApiModelProperty(description = "转账金额资产ID") + private int assetId; + @ApiModelProperty(description = "转入的地址列表", type = @TypeDescriptor(value = List.class, collectionElement = MultyAssetOutputDto.class)) + private List outputs; + @ApiModelProperty(description = "调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来)") + private String orginTxHash; + + public ContractMultyAssetMergedTransferDto() { + } + + public ContractMultyAssetMergedTransferDto(ContractMultyAssetMergedTransfer transfer) { + this.from = AddressTool.getStringAddressByBytes(transfer.getFrom()); + this.value = bigInteger2String(transfer.getValue()); + this.assetChainId = transfer.getAssetChainId(); + this.assetId = transfer.getAssetId(); + NulsHash thatHash = transfer.getHash(); + this.txHash = thatHash == null ? null : thatHash.toHex(); + NulsHash thatOrginTxHash = transfer.getOrginHash(); + this.orginTxHash = thatOrginTxHash == null ? null : thatOrginTxHash.toHex(); + this.makeOutputs(transfer.getOutputs()); + } + + private void makeOutputs(List outputs) { + if (outputs != null && !outputs.isEmpty()) { + this.outputs = new ArrayList<>(outputs.size()); + for (MultyAssetOutput output : outputs) { + this.outputs.add(new MultyAssetOutputDto(output)); + } + } + } + + public String getTxHash() { + return txHash; + } + + public void setTxHash(String txHash) { + this.txHash = txHash; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public List getOutputs() { + return outputs; + } + + public void setOutputs(List outputs) { + this.outputs = outputs; + } + + public String getOrginTxHash() { + return orginTxHash; + } + + public void setOrginTxHash(String orginTxHash) { + this.orginTxHash = orginTxHash; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractOutputDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractOutputDto.java index 78590d08b5..728e4af340 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractOutputDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractOutputDto.java @@ -40,10 +40,16 @@ public class ContractOutputDto { private String to; @ApiModelProperty(description = "转入金额") private String value; + @ApiModelProperty(description = "转入金额锁定时间") + private long lockTime; + + public ContractOutputDto() { + } public ContractOutputDto(Output output) { this.to = AddressTool.getStringAddressByBytes(output.getTo()); this.value = bigInteger2String(output.getValue()); + this.lockTime = output.getLockTime(); } public String getTo() { @@ -61,4 +67,12 @@ public String getValue() { public void setValue(String value) { this.value = value; } + + public long getLockTime() { + return lockTime; + } + + public void setLockTime(long lockTime) { + this.lockTime = lockTime; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 478d99e114..0ee7020489 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -26,6 +26,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.contract.enums.CmdRegisterMode; import io.nuls.contract.model.bo.ContractMergedTransfer; +import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; import io.nuls.contract.model.bo.ContractResult; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.ContractBaseTransaction; @@ -78,8 +79,10 @@ public class ContractResultDto { private String value; @ApiModelProperty(description = "异常堆栈踪迹") private String stackTrace; - @ApiModelProperty(description = "合约转账列表(从合约转出)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMergedTransferDto.class)) + @ApiModelProperty(description = "合约转账列表(从合约转出主资产)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMergedTransferDto.class)) private List transfers; + @ApiModelProperty(description = "合约转账列表(从合约转出其他资产)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMultyAssetMergedTransferDto.class)) + private List multyAssetTransfers; @ApiModelProperty(description = "合约事件列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) private List events; @ApiModelProperty(description = "调式合约事件列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) @@ -120,7 +123,8 @@ public ContractResultDto(int chainId, ContractResult result, ContractBaseTransac this.success = result.isSuccess(); this.errorMessage = result.getErrorMessage(); this.stackTrace = result.getStackTrace(); - this.setMergedTransfers(result.getMergedTransferList()); + this.setMergedTransfersDto(result.getMergedTransferList()); + this.setMergedMultyAssetTransfersDto(result.getMergerdMultyAssetTransferList()); this.events = result.getEvents(); this.debugEvents = result.getDebugEvents(); this.remark = result.getRemark(); @@ -147,7 +151,8 @@ public ContractResultDto(int chainId, ContractResult result, long gasLimit) thro this.success = result.isSuccess(); this.errorMessage = result.getErrorMessage(); this.stackTrace = result.getStackTrace(); - this.setMergedTransfers(result.getMergedTransferList()); + this.setMergedTransfersDto(result.getMergedTransferList()); + this.setMergedMultyAssetTransfersDto(result.getMergerdMultyAssetTransferList()); this.events = result.getEvents(); this.debugEvents = result.getDebugEvents(); this.remark = result.getRemark(); @@ -160,6 +165,10 @@ public ContractResultDto(int chainId, ContractResult result, long gasLimit) thro } } + public void setMultyAssetTransfers(List multyAssetTransfers) { + this.multyAssetTransfers = multyAssetTransfers; + } + private void makeInvokeRegisterCmds(List invokeRegisterCmds) { if(invokeRegisterCmds == null || invokeRegisterCmds.isEmpty()) { return; @@ -206,17 +215,33 @@ public List getTransfers() { return transfers == null ? new ArrayList<>() : transfers; } - public void setMergedTransfers(List transfers) { + + public void setMergedTransfersDto(List transferList) { List list = new LinkedList<>(); this.transfers = list; - if (transfers == null || transfers.size() == 0) { + if (transferList == null || transferList.size() == 0) { return; } - for (ContractMergedTransfer transfer : transfers) { + for (ContractMergedTransfer transfer : transferList) { list.add(new ContractMergedTransferDto(transfer)); } } + public List getMultyAssetTransfers() { + return multyAssetTransfers; + } + + private void setMergedMultyAssetTransfersDto(List mergerdMultyAssetTransferList) { + List list = new LinkedList<>(); + this.multyAssetTransfers = list; + if (mergerdMultyAssetTransferList == null || mergerdMultyAssetTransferList.size() == 0) { + return; + } + for (ContractMultyAssetMergedTransfer transfer : mergerdMultyAssetTransferList) { + list.add(new ContractMultyAssetMergedTransferDto(transfer)); + } + } + public boolean isSuccess() { return success; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java new file mode 100644 index 0000000000..e84f229858 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java @@ -0,0 +1,98 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + +import io.nuls.base.basic.AddressTool; +import io.nuls.contract.model.bo.MultyAssetOutput; +import io.nuls.core.rpc.model.ApiModelProperty; + +import static io.nuls.contract.util.ContractUtil.bigInteger2String; + +/** + * @author: PierreLuo + * @date: 2019-03-06 + */ +public class MultyAssetOutputDto { + @ApiModelProperty(description = "转入地址") + private String to; + @ApiModelProperty(description = "转入金额") + private String value; + @ApiModelProperty(description = "转入金额资产链ID") + private int assetChainId; + @ApiModelProperty(description = "转入金额资产ID") + private int assetId; + @ApiModelProperty(description = "转入金额锁定时间") + private long lockTime; + + public MultyAssetOutputDto() { + } + + public MultyAssetOutputDto(MultyAssetOutput output) { + this.to = AddressTool.getStringAddressByBytes(output.getTo()); + this.value = bigInteger2String(output.getValue()); + this.assetChainId = output.getAssetChainId(); + this.assetId = output.getAssetId(); + this.lockTime = output.getLockTime(); + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public long getLockTime() { + return lockTime; + } + + public void setLockTime(long lockTime) { + this.lockTime = lockTime; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/OutputDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/OutputDto.java index 79285dd989..a329ac779f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/OutputDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/OutputDto.java @@ -50,6 +50,9 @@ public class OutputDto { @ApiModelProperty(description = "锁定时间") private long lockTime; + public OutputDto() { + } + public OutputDto(CoinTo to) { this.address = AddressTool.getStringAddressByBytes(to.getAddress()); this.assetsChainId = to.getAssetsChainId(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index edf0406b02..c1f14c543f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -54,6 +54,7 @@ import io.nuls.core.rpc.model.message.Response; import java.lang.reflect.Array; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.*; import java.util.stream.Collectors; @@ -614,6 +615,14 @@ public static byte[] asBytes(String string) { return Base64.getDecoder().decode(string); } + public static BigDecimal toNuls(BigInteger na) { + return new BigDecimal(na).movePointLeft(8); + } + + public static BigInteger toNa(BigDecimal nuls) { + return nuls.scaleByPowerOfTen(8).toBigInteger(); + } + public static BigInteger minus(BigInteger a, BigInteger b) { BigInteger result = a.subtract(b); if (result.compareTo(BigInteger.ZERO) < 0) { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java index d896dec275..78c1b5b493 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java @@ -132,7 +132,20 @@ protected Object[] call(String contractAddress, byte[] preStateRoot, String send } protected Object[] call(String contractAddress, byte[] preStateRoot, String sender, String methodName, String methodDesc, String[] args, BigInteger value) throws JsonProcessingException { - Object[] objects = execute(contractAddress, preStateRoot, sender, methodName, methodDesc, args, value); + Object[] objects = execute(contractAddress, preStateRoot, sender, methodName, methodDesc, args, value, null, null); + ProgramExecutor track = (ProgramExecutor) objects[0]; + track.commit(); + ProgramResult programResult = (ProgramResult) objects[1]; + byte[] newRootBytes = track.getRoot(); + return new Object[]{newRootBytes, programResult}; + } + + protected Object[] call(String contractAddress, byte[] preStateRoot, String sender, String methodName, String[] args, BigInteger value, Integer assetChainId, Integer assetId) throws JsonProcessingException { + return call(contractAddress, preStateRoot, sender, methodName, null, args, value, assetChainId, assetId); + } + + protected Object[] call(String contractAddress, byte[] preStateRoot, String sender, String methodName, String methodDesc, String[] args, BigInteger value, Integer assetChainId, Integer assetId) throws JsonProcessingException { + Object[] objects = execute(contractAddress, preStateRoot, sender, methodName, methodDesc, args, value, assetChainId, assetId); ProgramExecutor track = (ProgramExecutor) objects[0]; track.commit(); ProgramResult programResult = (ProgramResult) objects[1]; @@ -154,7 +167,7 @@ protected String view(String contractAddress, byte[] preStateRoot, String method return view(contractAddress, preStateRoot, methodName, null, args); } - private Object[] execute(String contractAddress, byte[] preStateRoot, String sender, String methodName, String methodDesc, String[] args, BigInteger value) throws JsonProcessingException { + private Object[] execute(String contractAddress, byte[] preStateRoot, String sender, String methodName, String methodDesc, String[] args, BigInteger value, Integer assetChainId, Integer assetId) throws JsonProcessingException { ProgramCall programCall = new ProgramCall(); programCall.setContractAddress(contractAddress == null ? NativeAddress.toBytes(ADDRESS) : NativeAddress.toBytes(contractAddress)); programCall.setSender(NativeAddress.toBytes(sender)); @@ -165,6 +178,10 @@ private Object[] execute(String contractAddress, byte[] preStateRoot, String sen programCall.setMethodName(methodName); programCall.setMethodDesc(methodDesc); programCall.setArgs(args); + if (assetChainId != null && assetId != null) { + programCall.setAssetChainId(assetChainId); + programCall.setAssetId(assetId); + } ProgramExecutor begin = programExecutor.begin(preStateRoot); ProgramExecutor tracking = begin.startTracking(); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java index 058c733798..c2973a752f 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/callable/ContractMergeContractTransferTest.java @@ -163,6 +163,7 @@ private ContractMergedTransfer transformMergedTransfer(NulsHash orginHash, Contr output = new Output(); output.setTo(to.getAddress()); output.setValue(to.getAmount()); + output.setLockTime(to.getLockTime()); outputs.add(output); } result.setHash(transfer.getHash()); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java index 2dc19cd058..a7262bb5e3 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java @@ -23,6 +23,7 @@ */ package io.nuls.contract.mock.contractvm; +import com.fasterxml.jackson.core.JsonProcessingException; import io.nuls.base.basic.AddressTool; import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractContext; @@ -33,7 +34,6 @@ import io.nuls.contract.vm.program.ProgramResult; import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.core.crypto.HexUtil; -import io.nuls.core.model.StringUtils; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Before; @@ -41,57 +41,98 @@ import java.io.FileInputStream; import java.io.InputStream; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; -import static io.nuls.contract.util.ContractUtil.addressKey; -import static io.nuls.contract.util.ContractUtil.mapAddBigInteger; +import static io.nuls.contract.util.ContractUtil.*; /** * 测试场景: - * - * 1. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 - * 期望执行结果中 - * 有退回到调用者的70 - * A有0 - * B有30 - * - * - * 2. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 - * 期望执行结果中 - * 有退回到调用者的70 - * A有20 - * B有10 - * - * 3. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 - * 期望执行结果中 - * 有退回到调用者的60可用,10锁定 - * A有20 - * B有10 - * - * 4. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender - * 期望执行结果中 - * 有退回到调用者的50可用,20锁定 - * A有0 - * B有30 - * - * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A - * 期望执行结果中 - * 执行失败,余额不足 - * - * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender - * 期望执行结果中 - * 执行失败,余额不足 - * - * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender - * 期望执行结果中 - * 执行失败,余额不足 - * - * 9. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A - * 期望执行结果中 - * 执行失败,不允许转移锁定资产给合约地址 + *

+ * 1. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有0 + * B有30 + *

+ *

+ * 2. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有20 + * B有10 + *

+ * 3. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 + * 期望执行结果中 + * 有退回到调用者的60可用,10锁定 + * A有20 + * B有10 + *

+ * 4. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender + * 期望执行结果中 + * 有退回到调用者的50可用,20锁定 + * A有0 + * B有30 + *

+ * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 9. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 期望执行结果中 + * 执行失败,不允许转移锁定资产给合约地址 + *

+ * 11. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有0 + * B有30 + *

+ *

+ * 12. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有20 + * B有10 + *

+ * 13. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 + * 期望执行结果中 + * 有退回到调用者的60可用,10锁定 + * A有20 + * B有10 + *

+ * 14. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender + * 期望执行结果中 + * 有退回到调用者的50可用,20锁定 + * A有0 + * B有30 + *

+ * 16. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 17. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 18. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 19. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 期望执行结果中 + * 执行失败,不允许转移锁定资产给合约地址 * * @author: PierreLuo * @date: 2019-06-11 @@ -148,140 +189,171 @@ public void test() { } @Test - public void test1() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法[test1]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test1() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); + } - List transfers = programResult.getTransfers(); - LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); - BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); - BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); - BigInteger balanceB = balanceList[0][1]; - BigInteger balanceSender = balanceList[0][2]; + @Test + public void test2() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + } - for(ProgramTransfer transfer : transfers) { - Log.info("transfer: {}", transfer.toString()); - } - Assert.assertTrue(String.format("测试方法[test1]期望 A: 0, 实际: %s", balanceA.longValue()), balanceA.longValue() == 0); - Assert.assertTrue(String.format("测试方法[test1]期望 B: 30, 实际: %s", balanceB.longValue()), balanceB.longValue() == 30); - Assert.assertTrue(String.format("测试方法[test1]期望 sender: 70, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 70); + @Test + public void test3() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); } @Test - public void test2() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法[test2]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test4() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + } - List transfers = programResult.getTransfers(); - LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); - BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); - BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); - BigInteger balanceB = balanceList[0][1]; - BigInteger balanceSender = balanceList[0][2]; + @Test + public void test6() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); + } - for(ProgramTransfer transfer : transfers) { - Log.info("transfer: {}", transfer.toString()); - } - Assert.assertTrue(String.format("测试方法[test1]期望 A: 20, 实际: %s", balanceA.longValue()), balanceA.longValue() == 20); - Assert.assertTrue(String.format("测试方法[test1]期望 B: 10, 实际: %s", balanceB.longValue()), balanceB.longValue() == 10); - Assert.assertTrue(String.format("测试方法[test1]期望 sender: 70, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 70); + @Test + public void test7() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); } @Test - public void test3() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法[test3]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test8() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); + } - List transfers = programResult.getTransfers(); - LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); - BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); - BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); - BigInteger balanceB = balanceList[0][1]; - BigInteger balanceSender = balanceList[0][2]; - BigInteger balanceSenderLock = balanceList[1][2]; + @Test + public void test9() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); + } - for(ProgramTransfer transfer : transfers) { - Log.info("transfer: {}", transfer.toString()); - } - Assert.assertTrue(String.format("测试方法[test1]期望 A: 20, 实际: %s", balanceA.longValue()), balanceA.longValue() == 20); - Assert.assertTrue(String.format("测试方法[test1]期望 B: 10, 实际: %s", balanceB.longValue()), balanceB.longValue() == 10); - Assert.assertTrue(String.format("测试方法[test1]期望 sender: 60, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 60); - Assert.assertTrue(String.format("测试方法[test1]期望 sender-锁定: 10, 实际: %s", balanceSenderLock.longValue()), balanceSenderLock.longValue() == 10); + @Test + public void test1v2() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); } @Test - public void test4() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法[test4]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test2v2() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + } - List transfers = programResult.getTransfers(); - LinkedHashMap[] contracts = this.filterContractValue(chainId, transfers); - BigInteger[][] balanceList = this.balanceList(chainId, assetId, contracts, contractA, contractB, SENDER); - BigInteger balanceA = balanceList[0][0].add(BigInteger.valueOf(100L)); - BigInteger balanceB = balanceList[0][1]; - BigInteger balanceSender = balanceList[0][2]; - BigInteger balanceSenderLock = balanceList[1][2]; + @Test + public void test3v2() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); + } - for(ProgramTransfer transfer : transfers) { - Log.info("transfer: {}", transfer.toString()); - } - Assert.assertTrue(String.format("测试方法[test1]期望 A: 0, 实际: %s", balanceA.longValue()), balanceA.longValue() == 0); - Assert.assertTrue(String.format("测试方法[test1]期望 B: 30, 实际: %s", balanceB.longValue()), balanceB.longValue() == 30); - Assert.assertTrue(String.format("测试方法[test1]期望 sender: 50, 实际: %s", balanceSender.longValue()), balanceSender.longValue() == 50); - Assert.assertTrue(String.format("测试方法[test1]期望 sender-锁定: 20, 实际: %s", balanceSenderLock.longValue()), balanceSenderLock.longValue() == 20); + @Test + public void test4v2() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test6v2() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); } + @Test + public void test7v2() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + } @Test - public void test6() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - System.out.println("errorMsg: " + programResult.getErrorMessage()); - Assert.assertFalse("测试方法[test6]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test8v2() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); } @Test - public void test7() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - System.out.println("errorMsg: " + programResult.getErrorMessage()); - Assert.assertFalse("测试方法[test7]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test9v2() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); } @Test - public void test8() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - System.out.println("errorMsg: " + programResult.getErrorMessage()); - Assert.assertFalse("测试方法[test8]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test11() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test11", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); } @Test - public void test9() throws Exception{ - Object[] objects; - ProgramResult programResult; - objects = super.call(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigInteger.valueOf(100L)); - programResult = (ProgramResult) objects[1]; - System.out.println("errorMsg: " + programResult.getErrorMessage()); - Assert.assertFalse("测试方法[test9]expect failed, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); + public void test12() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test12", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + } + + @Test + public void test13() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test13", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); + } + + @Test + public void test14() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test14", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test16() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test16", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test17() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test17", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test18() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test18", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test19() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test19", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test21() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); + this.testAsset(contractA, prevStateRoot, SENDER, "test11", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); + } + + @Test + public void test22() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + this.testAsset(contractA, prevStateRoot, SENDER, "test12", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + } + + @Test + public void test23() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); + this.testAsset(contractA, prevStateRoot, SENDER, "test13", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); + } + + @Test + public void test24() throws Exception { + this.testAsset(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + this.testAsset(contractA, prevStateRoot, SENDER, "test14", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test26() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test16", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test27() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test17", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test28() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test18", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); + } + + @Test + public void test29() throws Exception { + this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test19", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); } protected BigInteger[][] balanceList(int assetChainId, int assetId, LinkedHashMap[] contracts, String... addresses) { @@ -313,7 +385,7 @@ protected BigInteger mapValueOf(LinkedHashMap map, String ke return value; } - protected LinkedHashMap[] filterContractValue(int chainId, List transfers) { + protected LinkedHashMap[] filterContractValue(List transfers) { LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); LinkedHashMap contractToLockValue = MapUtil.createLinkedHashMap(4); @@ -343,33 +415,52 @@ protected LinkedHashMap[] filterContractValue(int chainId, L return contracts; } - protected byte[] callVmTest(byte[] prevStateRoot, String method, String expect, String viewMethod) throws Exception { + protected void testAsset(String contract, byte[] stateRoot, String sender, String method, String[] args, BigDecimal value, int assetChainId, int assetId, boolean setAsset, String[] addresses, long... expectBalances) throws JsonProcessingException { + Assert.assertTrue("地址与期望余额参数不合法", addresses.length * 2 == expectBalances.length); Object[] objects; ProgramResult programResult; - - objects = super.call(contractA, prevStateRoot, SENDER, method, new String[]{}); - prevStateRoot = (byte[]) objects[0]; + BigInteger _value = toNa(value); + if (setAsset) { + objects = super.call(contract, stateRoot, sender, method, args, _value, assetChainId, assetId); + } else { + objects = super.call(contract, stateRoot, sender, method, args, _value); + } programResult = (ProgramResult) objects[1]; - Assert.assertTrue("测试方法["+method+"]expect success, " + programResult.getErrorMessage() + ", " + Arrays.deepToString(programResult.getStackTraces().toArray()), programResult.isSuccess()); - Assert.assertTrue(String.format("测试方法[%s]返回值期望a=%s, 实际a=%s", method, expect, programResult.getResult()), expect.equals(programResult.getResult())); + Assert.assertTrue(String.format("测试方法[%s]expect success, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), Arrays.deepToString(programResult.getStackTraces().toArray())), programResult.isSuccess()); - if(StringUtils.isNotBlank(viewMethod)) { - String a = super.view(contractA, prevStateRoot, viewMethod, new String[]{}); - Assert.assertTrue(String.format("测试方法[%s]View期望a=%s, 实际a=%s", method, expect, a), expect.equals(a)); - } - return prevStateRoot; - } + List transfers = programResult.getTransfers(); + LinkedHashMap[] contracts = this.filterContractValue(transfers); + BigInteger[][] balanceList = this.balanceList(assetChainId, assetId, contracts, addresses); + BigInteger balanceA = balanceList[0][0].add(toNa(BigDecimal.valueOf(100L))); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + BigInteger balanceALock = balanceList[1][0]; + BigInteger balanceBLock = balanceList[1][1]; + BigInteger balanceSenderLock = balanceList[1][2]; - protected byte[] callVmTest(byte[] stateRoot, String method, String expect) throws Exception { - return callVmTest(stateRoot, method, expect, "viewA"); + for (ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); } - protected byte[] callVmTest(byte[] stateRoot, String method, String expect, boolean containViewExpect) throws Exception { - String viewMethod = null; - if(containViewExpect) { - viewMethod = "viewA"; + protected void testFailed(String contract, byte[] stateRoot, String sender, String method, String[] args, BigDecimal value, int assetChainId, int assetId, boolean setAsset) throws JsonProcessingException { + Object[] objects; + ProgramResult programResult; + BigInteger _value = toNa(value); + if (setAsset) { + objects = super.call(contract, stateRoot, sender, method, args, _value, assetChainId, assetId); + } else { + objects = super.call(contract, stateRoot, sender, method, args, _value); } - return callVmTest(stateRoot, method, expect, viewMethod); + programResult = (ProgramResult) objects[1]; + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), Arrays.deepToString(programResult.getStackTraces().toArray())), programResult.isSuccess()); } } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 84e8f22b68..1231b263be 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -183,12 +183,22 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { public void getBalance() throws Exception { this.getBalanceByAccount(toAddress17); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount(contractAddress); + //this.getBalanceByAccount(contractAddress); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount("tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"); + //this.getBalanceByAccount("tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"); } protected void getBalanceByAccount(String account) throws Exception { + /* + { + "available" : 0, + "permanentLocked" : 0, + "freeze" : 0, + "nonce" : "0000000000000000", + "timeHeightLocked" : 0, + "nonceType" : 1 + } + */ Map balance0 = LedgerCall.getBalanceAndNonce(chain, chainId, assetId, account); System.out.println(String.format("NULS balance: %s", JSONUtils.obj2PrettyJson(balance0))); Map balance1 = LedgerCall.getBalanceAndNonce(chain, chainId, 2, account); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java new file mode 100644 index 0000000000..991ccdf3a3 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -0,0 +1,545 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.tx.contractvm; + +import io.nuls.base.basic.AddressTool; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.model.dto.*; +import io.nuls.contract.rpc.call.LedgerCall; +import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.Log; +import io.nuls.contract.util.MapUtil; +import io.nuls.contract.vm.program.ProgramTransfer; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.*; + +import static io.nuls.contract.constant.ContractCmdConstant.CALL; +import static io.nuls.contract.constant.ContractCmdConstant.CREATE; +import static io.nuls.contract.util.ContractUtil.*; + +/** + * 测试场景: + *

+ * 1. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有0 + * B有30 + *

+ *

+ * 2. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有20 + * B有10 + *

+ * 3. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 + * 期望执行结果中 + * 有退回到调用者的60可用,10锁定 + * A有20 + * B有10 + *

+ * 4. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender + * 期望执行结果中 + * 有退回到调用者的50可用,20锁定 + * A有0 + * B有30 + *

+ * 6. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 7. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 8. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 9. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 期望执行结果中 + * 执行失败,不允许转移锁定资产给合约地址 + *

+ * 11. 双合约测试,调用者向A合约转入100,A调用B转入100,B保留30,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有0 + * B有30 + *

+ *

+ * 12. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移70给调用者 + * 期望执行结果中 + * 有退回到调用者的70 + * A有20 + * B有10 + *

+ * 13. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,转移60给调用者,转移10锁定给调用者 + * 期望执行结果中 + * 有退回到调用者的60可用,10锁定 + * A有20 + * B有10 + *

+ * 14. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移20给sender,A转移10锁定给sender + * 期望执行结果中 + * 有退回到调用者的50可用,20锁定 + * A有0 + * B有30 + *

+ * 16. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移110给A + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 17. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A, B转移100给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 18. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移20给A,B转移30给sender,B转移10锁定给sender,B调用A转移25给A,A转移15给B,A转移30给sender,A转移10锁定给sender + * 期望执行结果中 + * 执行失败,余额不足 + *

+ * 19. 双合约测试,调用者向A合约转入100,A调用B转入100,B转移10给A,转移10锁定给A + * 期望执行结果中 + * 执行失败,不允许转移锁定资产给合约地址 + * + * @author: PierreLuo + * @date: 2019-06-11 + */ +public class ContractVmV8SendTxTest extends BaseQuery { + + protected long gasLimit = 200000L; + protected long gasPrice = 1L; + protected long minutes_3 = 60 * 3; + protected long minutes_5 = 60 * 5; + protected String contractA = ""; + protected String contractB = ""; + protected boolean createContract = false; + + @Before + public void createAndInit() throws Exception { + // 加载协议升级的数据 + ContractContext.CHAIN_ID = 2; + + if (createContract) { + // -------------------------------------------------------------------------------------// + //InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-v8-testA-1.0-SNAPSHOT.jar").getFile()); + //InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-v8-testB-1.0-SNAPSHOT.jar").getFile()); + InputStream inA = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-v8-testA/target/contract-vm-v8-testA-1.0-SNAPSHOT.jar"); + InputStream inB = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-v8-testB/target/contract-vm-v8-testB-1.0-SNAPSHOT.jar"); + contractA = this.createContract(inA, "test_a"); + contractB = this.createContract(inB, "test_b"); + + // ------------------------------initial----------------------------------------------------// + ContractResultDto contractResult = this.callByParams(contractA, sender, "setContractB", "0", new String[]{contractB}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + + contractResult = this.callByParams(contractB, sender, "setContractA", "0", new String[]{contractA}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + } + } + + @Test + public void testContractResultDto() throws Exception { + String hash = "453c5a7caaf8b392b472310029d67f525c398cea7de8687ce4c3fd9d65ba2fea"; + Map map = this.waitGetContractTx(hash); + Map map1 = (Map) map.get("contractResult"); + ContractResultDto dto = this.converterDto(map1); + System.out.println(JSONUtils.obj2PrettyJson(dto)); + } + + @Test + public void test() { + System.out.println(ProtocolGroupManager.getCurrentVersion(chainId)); + } + + @Test + public void test1() throws Exception { + this.testAsset(contractA, sender, "test1", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); + } + + @Test + public void test2() throws Exception { + this.testAsset(contractA, sender, "test2", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, sender}, 20, 10, 70, 0, 0, 0); + } + + @Test + public void test3() throws Exception { + this.testAsset(contractA, sender, "test3", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, sender}, 20, 10, 60, 0, 0, 10); + } + + @Test + public void test4() throws Exception { + this.testAsset(contractA, sender, "test4", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, sender}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test6() throws Exception { + this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + } + + @Test + public void test7() throws Exception { + this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + } + + @Test + public void test8() throws Exception { + this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + } + + @Test + public void test9() throws Exception { + this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + } + + @Test + public void test1v2() throws Exception { + this.testAsset(contractA, sender, "test1", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); + } + + @Test + public void test2v2() throws Exception { + this.testAsset(contractA, sender, "test2", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, sender}, 20, 10, 70, 0, 0, 0); + } + + @Test + public void test3v2() throws Exception { + this.testAsset(contractA, sender, "test3", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, sender}, 20, 10, 60, 0, 0, 10); + } + + @Test + public void test4v2() throws Exception { + this.testAsset(contractA, sender, "test4", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, sender}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test6v2() throws Exception { + this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + } + + @Test + public void test7v2() throws Exception { + this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + } + + @Test + public void test8v2() throws Exception { + this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + } + + @Test + public void test9v2() throws Exception { + this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + } + + @Test + public void test11() throws Exception { + this.testAsset(contractA, sender, "test11", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); + } + + @Test + public void test12() throws Exception { + this.testAsset(contractA, sender, "test12", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 20, 10, 70, 0, 0, 0); + } + + @Test + public void test13() throws Exception { + this.testAsset(contractA, sender, "test13", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 20, 10, 60, 0, 0, 10); + } + + @Test + public void test14() throws Exception { + this.testAsset(contractA, sender, "test14", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 0, 30, 50, 0, 0, 20); + } + + @Test + public void test16() throws Exception { + this.testFailed(contractA, sender, "test16", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + } + + @Test + public void test17() throws Exception { + this.testFailed(contractA, sender, "test17", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + } + + @Test + public void test18() throws Exception { + this.testFailed(contractA, sender, "test18", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + } + + @Test + public void test19() throws Exception { + this.testFailed(contractA, sender, "test19", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + } + + protected BigInteger[][] balanceList(int assetChainId, int assetId, LinkedHashMap[] contracts, String... addresses) { + BigInteger[][] result = new BigInteger[2][]; + BigInteger[] resultAvailable = new BigInteger[addresses.length]; + BigInteger[] resultLock = new BigInteger[addresses.length]; + result[0] = resultAvailable; + result[1] = resultLock; + + LinkedHashMap fromValue = contracts[0]; + LinkedHashMap toValue = contracts[1]; + LinkedHashMap toLockValue = contracts[2]; + int i = 0; + for (String address : addresses) { + byte[] addressBytes = AddressTool.getAddress(address); + String key = addressKey(addressBytes, assetChainId, assetId); + BigInteger balance = mapValueOf(fromValue, key).negate().add(mapValueOf(toValue, key)); + resultAvailable[i] = balance; + resultLock[i++] = mapValueOf(toLockValue, key); + } + return result; + } + + protected BigInteger mapValueOf(LinkedHashMap map, String key) { + BigInteger value = map.get(key); + if (value == null) { + return BigInteger.ZERO; + } + return value; + } + + protected LinkedHashMap[] filterContractValue(List transfers) { + LinkedHashMap contractFromValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap contractToValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap contractToLockValue = MapUtil.createLinkedHashMap(4); + LinkedHashMap[] contracts = new LinkedHashMap[3]; + contracts[0] = contractFromValue; + contracts[1] = contractToValue; + contracts[2] = contractToLockValue; + + byte[] from, to; + int assetChainId, assetId; + BigInteger transferValue; + boolean lock; + for (ProgramTransfer transfer : transfers) { + from = transfer.getFrom(); + to = transfer.getTo(); + transferValue = transfer.getValue(); + assetChainId = transfer.getAssetChainId(); + assetId = transfer.getAssetId(); + lock = transfer.getLockedTime() > 0; + mapAddBigInteger(contractFromValue, from, assetChainId, assetId, transferValue); + if (lock) { + mapAddBigInteger(contractToLockValue, to, assetChainId, assetId, transferValue); + } else { + mapAddBigInteger(contractToValue, to, assetChainId, assetId, transferValue); + } + } + return contracts; + } + + protected List converterTransfer(ContractMergedTransferDto dto) { + List resultList = new ArrayList<>(); + byte[] from = AddressTool.getAddress(dto.getFrom()); + List outputs = dto.getOutputs(); + for (ContractOutputDto outputDto : outputs) { + ProgramTransfer transfer = new ProgramTransfer(); + transfer.setFrom(from); + transfer.setTo(AddressTool.getAddress(outputDto.getTo())); + transfer.setValue(new BigInteger(outputDto.getValue())); + transfer.setAssetChainId(chainId); + transfer.setAssetId(assetId); + transfer.setLockedTime(outputDto.getLockTime()); + resultList.add(transfer); + } + return resultList; + } + + protected List converterTransfer(ContractMultyAssetMergedTransferDto dto) { + List resultList = new ArrayList<>(); + byte[] from = AddressTool.getAddress(dto.getFrom()); + List outputs = dto.getOutputs(); + for (MultyAssetOutputDto outputDto : outputs) { + ProgramTransfer transfer = new ProgramTransfer(); + transfer.setFrom(from); + transfer.setTo(AddressTool.getAddress(outputDto.getTo())); + transfer.setValue(new BigInteger(outputDto.getValue())); + transfer.setAssetChainId(outputDto.getAssetChainId()); + transfer.setAssetId(outputDto.getAssetId()); + transfer.setLockedTime(outputDto.getLockTime()); + resultList.add(transfer); + } + return resultList; + } + + protected void testAsset(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset, String[] addresses, long... expectBalances) throws Exception { + Assert.assertTrue("地址与期望余额参数不合法", addresses.length * 2 == expectBalances.length); + ContractResultDto programResult; + if (setAsset) { + programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); + } else { + programResult = this.callByParams(contract, sender, method, value.toString(), args); + } + Assert.assertTrue(String.format("测试方法[%s]expect success, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); + + List transfers = new ArrayList<>(); + List transferDtos = programResult.getTransfers(); + for (ContractMergedTransferDto dto : transferDtos) { + transfers.addAll(converterTransfer(dto)); + } + List multyAssetTransferDtos = programResult.getMultyAssetTransfers(); + for (ContractMultyAssetMergedTransferDto dto : multyAssetTransferDtos) { + transfers.addAll(converterTransfer(dto)); + } + + LinkedHashMap[] contracts = this.filterContractValue(transfers); + BigInteger[][] balanceList = this.balanceList(assetChainId, assetId, contracts, addresses); + BigInteger balanceA = balanceList[0][0].add(toNa(BigDecimal.valueOf(100L))); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + BigInteger balanceALock = balanceList[1][0]; + BigInteger balanceBLock = balanceList[1][1]; + BigInteger balanceSenderLock = balanceList[1][2]; + + for (ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); + } + + protected void testFailed(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset) throws Exception { + ContractResultDto programResult; + if (setAsset) { + programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); + } else { + programResult = this.callByParams(contract, sender, method, value.toString(), args); + } + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); + } + + protected BigInteger[] getBalanceByAccount(String account, int assetChainId, int assetId) throws Exception { + /* + { + "available" : 0, + "permanentLocked" : 0, + "freeze" : 0, + "nonce" : "0000000000000000", + "timeHeightLocked" : 0, + "nonceType" : 1 + } + */ + Map balance = LedgerCall.getBalanceAndNonce(chain, assetChainId, assetId, account); + BigInteger[] result = new BigInteger[2]; + result[0] = new BigInteger(balance.get("available").toString()); + result[1] = new BigInteger(balance.get("freeze").toString()); + return result; + } + + protected String createContract(InputStream in, String alias) throws Exception { + byte[] contractCode = IOUtils.toByteArray(in); + String remark = "test multy asset " + alias; + Map params = this.makeCreateParams(sender, contractCode, alias, remark); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + String contractAddress = (String) result.get("contractAddress"); + Map map = waitGetContractTx(hash); + assertTrue(map); + return contractAddress; + } + + protected ContractResultDto converterDto(Map contractMap) { + ContractResultDto dto = JSONUtils.map2pojo(contractMap, ContractResultDto.class); + List transfers = (List) contractMap.get("transfers"); + List mergedTransferDtoList = new ArrayList<>(); + for (Map transfer : transfers) { + ContractMergedTransferDto transferDto = JSONUtils.map2pojo(transfer, ContractMergedTransferDto.class); + List outputs = (List) transfer.get("outputs"); + List outputDtoList = new ArrayList<>(); + for (Map output : outputs) { + outputDtoList.add(JSONUtils.map2pojo(output, ContractOutputDto.class)); + } + transferDto.setOutputs(outputDtoList); + mergedTransferDtoList.add(transferDto); + } + dto.setTransfers(mergedTransferDtoList); + + List multyAssetTransfers = (List) contractMap.get("multyAssetTransfers"); + List multyAssetTransferDtoList = new ArrayList<>(); + for (Map transfer : multyAssetTransfers) { + ContractMultyAssetMergedTransferDto transferDto = JSONUtils.map2pojo(transfer, ContractMultyAssetMergedTransferDto.class); + List outputs = (List) transfer.get("outputs"); + List outputDtoList = new ArrayList<>(); + for (Map output : outputs) { + outputDtoList.add(JSONUtils.map2pojo(output, MultyAssetOutputDto.class)); + } + transferDto.setOutputs(outputDtoList); + multyAssetTransferDtoList.add(transferDto); + } + dto.setMultyAssetTransfers(multyAssetTransferDtoList); + + return dto; + } + + protected ContractResultDto callByParams(String contract, String sender, String methodName, String valueStr, Object[] args) throws Exception { + BigInteger value = toNa(new BigDecimal(valueStr)); + Map params = this.makeCallParams(sender, value, contract, methodName, null, "", args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Map map = waitGetContractTx(hash); + + Map map1 = (Map) map.get("contractResult"); + ContractResultDto dto = this.converterDto(map1); + return dto; + } + + protected ContractResultDto callOfDesignatedAssetByParams(String contract, String sender, String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { + BigInteger value = toNa(new BigDecimal(valueStr)); + Map params = this.makeCallParams(sender, value, gasLimit, gasPrice, contract, methodName, null, "", assetChainId, assetId, args); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Map map = waitGetContractTx(hash); + + Map map1 = (Map) map.get("contractResult"); + ContractResultDto dto = this.converterDto(map1); + return dto; + } +} From afe6e2c1ac194cbbf0ac98dd9a0b4f477962bc6c Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 5 Nov 2020 18:31:46 +0800 Subject: [PATCH 146/304] update test case --- .../tx/contractvm/ContractVmV8SendTxTest.java | 70 +++++++++++++++++-- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java index 991ccdf3a3..eb91aa5351 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -147,14 +147,16 @@ public class ContractVmV8SendTxTest extends BaseQuery { protected long minutes_5 = 60 * 5; protected String contractA = ""; protected String contractB = ""; - protected boolean createContract = false; + protected boolean createContract = true; @Before public void createAndInit() throws Exception { // 加载协议升级的数据 ContractContext.CHAIN_ID = 2; - if (createContract) { + if (!createContract) { + // 注册链内资产 + assetRegisterTest(); // -------------------------------------------------------------------------------------// //InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-v8-testA-1.0-SNAPSHOT.jar").getFile()); //InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-v8-testB-1.0-SNAPSHOT.jar").getFile()); @@ -164,17 +166,24 @@ public void createAndInit() throws Exception { contractB = this.createContract(inB, "test_b"); // ------------------------------initial----------------------------------------------------// - ContractResultDto contractResult = this.callByParams(contractA, sender, "setContractB", "0", new String[]{contractB}); + ContractResultDto contractResult; + contractResult = this.callByParams(contractA, toAddress, "setContractB", "0", new String[]{contractB}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + contractResult = this.callByParams(contractB, toAddress, "setContractA", "0", new String[]{contractA}); Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); - contractResult = this.callByParams(contractB, sender, "setContractA", "0", new String[]{contractA}); + contractResult = this.callByParams(contractA, toAddress, "setSender", "0", new String[]{sender}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + contractResult = this.callByParams(contractB, toAddress, "setSender", "0", new String[]{sender}); Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); } + contractA = "tNULSeBaNAVgtrWw2M5kXX7LQznsZ3hmusb9d3"; + contractB = "tNULSeBaN3KojyoRyuXB8yLNiZA7vjoCqmSV6W"; } @Test public void testContractResultDto() throws Exception { - String hash = "453c5a7caaf8b392b472310029d67f525c398cea7de8687ce4c3fd9d65ba2fea"; + String hash = "5965fab8fb0074a7f9a8cea907bba0d50dc7d658a025b4396e0a498ad6df8050"; Map map = this.waitGetContractTx(hash); Map map1 = (Map) map.get("contractResult"); ContractResultDto dto = this.converterDto(map1); @@ -401,6 +410,11 @@ protected List converterTransfer(ContractMultyAssetMergedTransf protected void testAsset(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset, String[] addresses, long... expectBalances) throws Exception { Assert.assertTrue("地址与期望余额参数不合法", addresses.length * 2 == expectBalances.length); + BigInteger[][] prevBalances = new BigInteger[addresses.length][]; + int k = 0; + for (String address : addresses) { + prevBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); + } ContractResultDto programResult; if (setAsset) { programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); @@ -437,9 +451,40 @@ protected void testAsset(String contract, String sender, String method, String[] Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); + + + BigInteger[][] currentBalances = new BigInteger[addresses.length][]; + k = 0; + for (String address : addresses) { + currentBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); + } + BigInteger fee = BigInteger.ZERO; + boolean mainAsset = assetChainId == this.chainId && assetId == this.assetId; + if (mainAsset) { + fee = new BigInteger(programResult.getTxSizeFee()).add(new BigInteger(programResult.getActualContractFee())); + } + balanceA = currentBalances[0][0].subtract(prevBalances[0][0]); + balanceB = currentBalances[1][0].subtract(prevBalances[1][0]); + balanceSender = currentBalances[2][0].add(toNa(BigDecimal.valueOf(100L))).subtract(prevBalances[2][0]).add(fee); + balanceALock = currentBalances[0][1].subtract(prevBalances[0][1]); + balanceBLock = currentBalances[1][1].subtract(prevBalances[1][1]); + balanceSenderLock = currentBalances[2][1].subtract(prevBalances[2][1]); + Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); } protected void testFailed(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset) throws Exception { + System.out.println("清空合约余额"); + ContractResultDto contractResult; + contractResult = this.callByParams(contractA, toAddress, "clear", "0", new String[]{}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + contractResult = this.callByParams(contractB, toAddress, "clear", "0", new String[]{}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + ContractResultDto programResult; if (setAsset) { programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); @@ -471,7 +516,7 @@ protected BigInteger[] getBalanceByAccount(String account, int assetChainId, int protected String createContract(InputStream in, String alias) throws Exception { byte[] contractCode = IOUtils.toByteArray(in); String remark = "test multy asset " + alias; - Map params = this.makeCreateParams(sender, contractCode, alias, remark); + Map params = this.makeCreateParams(toAddress, contractCode, alias, remark); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); @@ -542,4 +587,17 @@ protected ContractResultDto callOfDesignatedAssetByParams(String contract, Strin ContractResultDto dto = this.converterDto(map1); return dto; } + + protected void assetRegisterTest() throws Exception { + Map params = new HashMap<>(); + params.put("assetSymbol", "MTA"); + params.put("assetName", "MTA"); + params.put("initNumber", 100000000); + params.put("decimalPlace", 8); + params.put("txCreatorAddress", sender); + params.put("assetOwnerAddress", sender); + params.put("password", "nuls123456"); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "chainAssetTxReg", params); + Assert.assertTrue(JSONUtils.obj2PrettyJson(response), response.isSuccess()); + } } From 827c6a4cd96de453fc5e39103cd1d5b918f6780c Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 6 Nov 2020 11:42:32 +0800 Subject: [PATCH 147/304] add cmd error log --- .../main/java/io/nuls/chain/rpc/cmd/TxCirculateCmd.java | 5 +++-- .../io/nuls/chain/service/impl/ValidateServiceImpl.java | 2 ++ .../io/nuls/crosschain/nuls/rpc/call/CommonCall.java | 9 +++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/TxCirculateCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/TxCirculateCmd.java index f726cb8fa1..6cec51047f 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/TxCirculateCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/TxCirculateCmd.java @@ -148,6 +148,7 @@ public Response assetCirculateValidator(Map params) { resultMap.put("value", true); return success(resultMap); } else { + LoggerUtil.COMMON_LOG.error("--------assetCirculateValidator error:" + chainEventResult.getErrorCode().getCode()); return failed(chainEventResult.getErrorCode()); } } catch (Exception e) { @@ -257,8 +258,8 @@ public Response assetCirculateRollBack(Map params) { @CmdAnnotation(cmd = RpcConstants.CMD_UPDATE_CHAIN_ASSET, version = 1.0, description = "查询更新流通资产信息") @Parameters(value = { - @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterValidRange = "[1-65535]", parameterDes = "资产链ID,取值区间[1-65535]"), - @Parameter(parameterName = "assets", requestType = @TypeDescriptor(value = List.class,collectionElement = Map.class, mapKeys = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterValidRange = "[1-65535]", parameterDes = "资产链ID,取值区间[1-65535]"), + @Parameter(parameterName = "assets", requestType = @TypeDescriptor(value = List.class, collectionElement = Map.class, mapKeys = { @Key(name = "assetId", valueType = Integer.class, description = "资产id"), @Key(name = "availableAmount", valueType = BigInteger.class, description = "可用金额"), @Key(name = "freeze", valueType = BigInteger.class, description = "冻结金额"), diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index b7209ec932..2de46b5622 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -267,6 +267,7 @@ public ChainEventResult assetCirculateValidator(int fromChainId, int toChainId, String assetKey = toAsset.toString(); Asset asset = assetService.getAsset(assetKey); if (null == asset || !asset.isAvailable()) { + Log.info("asset not exist", assetKey); return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NOT_EXIST); } } @@ -276,6 +277,7 @@ public ChainEventResult assetCirculateValidator(int fromChainId, int toChainId, String assetKey = fromAsset.toString(); Asset asset = assetService.getAsset(assetKey); if (null == asset || !asset.isAvailable()) { + Log.info("asset not exist", assetKey); return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NOT_EXIST); } ChainAsset chainAsset = assetService.getChainAsset(fromChainId, CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/CommonCall.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/CommonCall.java index 003688bc8d..3c809396c4 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/CommonCall.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/call/CommonCall.java @@ -42,8 +42,13 @@ public static Object request(String moduleCode, String cmd, Map params, Long tim errorMsg = String.format("Remote call fail. ResponseComment: %s ", cmdResp.getResponseComment()); }else { Map map = (Map) resData.get(cmd); - errorMsg = String.format("Remote call fail. msg: %s - code: %s - module: %s - interface: %s \n- params: %s ", - map.get("msg"), map.get("code"), moduleCode, cmd, JSONUtils.obj2PrettyJson(params)); + if(map != null) { + errorMsg = String.format("Remote call fail. msg: %s - code: %s - module: %s - interface: %s \n- params: %s ", + map.get("msg"), map.get("code"), moduleCode, cmd, JSONUtils.obj2PrettyJson(params)); + }else { + Log.error("response error info is {}", cmdResp); + } + } throw new Exception(errorMsg); } From 8b7206c4cc7c8cef247b5bffed5f10841a2a4e8c Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 9 Nov 2020 15:01:48 +0800 Subject: [PATCH 148/304] update test case --- .../test/java/io/nuls/contract/base/Base.java | 4 +- .../io/nuls/contract/tx/base/BaseQuery.java | 17 +- .../tx/contractvm/ContractVmV8SendTxTest.java | 245 +++++++++++------- .../tx/multyasset/ContractMultyAssetTest.java | 45 ++-- 4 files changed, 184 insertions(+), 127 deletions(-) diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java index a2eea12738..41783358fe 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java @@ -96,7 +96,7 @@ public class Base { protected String toAddress34 = "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD"; protected String createHash = "002029ca32525f635a15c82c046114657c0d8a96a7163780ac6b425b2383b240bd56"; - protected String contractAddress = "tNULSeBaN8cW84rugvTDgSrHNUhZEaWEMERAKZ"; + protected String contractAddress = "tNULSeBaN9Ywf962V1tn89T3qm1K5uvGkcy571"; protected String contractAddress0 = "tNULSeBaN7vAqBANTtVxsiFsam4NcRUbqrCpzK"; protected String contractAddress1 = "tNULSeBaNBhqzwK2yN9FuXmNWago7vLt64xggp"; protected String contractAddress2 = "tNULSeBaN4ahTXVo5RH1DSnUV9tXpYm3JyBqXc"; @@ -285,7 +285,7 @@ protected void assertTrue(Map map) throws Exception { protected void assertTrue(Response cmdResp2, Map result) throws JsonProcessingException { if(null == result) { Log.error("Contract-result:{}", JSONUtils.obj2PrettyJson(cmdResp2)); - Assert.assertTrue(false); + Assert.assertTrue("" + cmdResp2.getResponseComment(), false); } Log.info("Contract-result:{}", JSONUtils.obj2PrettyJson(result)); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 1231b263be..e096198b8f 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -181,11 +181,11 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { @Test public void getBalance() throws Exception { - this.getBalanceByAccount(toAddress17); + this.getBalanceByAccount("tNULSeBaNBJT6JuznGqhKM5q6jXFkuSoMUNkHK"); System.out.println("---------------------------------------------------"); - //this.getBalanceByAccount(contractAddress); + this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); System.out.println("---------------------------------------------------"); - //this.getBalanceByAccount("tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"); + this.getBalanceByAccount("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); } protected void getBalanceByAccount(String account) throws Exception { @@ -339,6 +339,17 @@ public void getTxRecord() throws Exception { Log.info("Page:{}", JSONUtils.obj2PrettyJson(record)); } + /** + * 查询所有资产 + */ + @Test + public void getAllAssetReg() throws Exception { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getAssetRegInfo", params); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + public TransferService getTransferService() { return transferService; } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java index eb91aa5351..b7f530c2e7 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -154,7 +154,7 @@ public void createAndInit() throws Exception { // 加载协议升级的数据 ContractContext.CHAIN_ID = 2; - if (!createContract) { + if (createContract) { // 注册链内资产 assetRegisterTest(); // -------------------------------------------------------------------------------------// @@ -176,20 +176,49 @@ public void createAndInit() throws Exception { Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); contractResult = this.callByParams(contractB, toAddress, "setSender", "0", new String[]{sender}); Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + } else { + contractA = "tNULSeBaN6K66aCdLBu1aVY6PCqQizfFwvFDdA"; + contractB = "tNULSeBaMyotkeYuWn8jn5b4HY6GtQBttsuNNm"; } - contractA = "tNULSeBaNAVgtrWw2M5kXX7LQznsZ3hmusb9d3"; - contractB = "tNULSeBaN3KojyoRyuXB8yLNiZA7vjoCqmSV6W"; } @Test public void testContractResultDto() throws Exception { - String hash = "5965fab8fb0074a7f9a8cea907bba0d50dc7d658a025b4396e0a498ad6df8050"; + String hash = "601ac56670a950217f4f1c9bd7f1b33582a8f1e8e25b2e49b6a90b51a563f441"; Map map = this.waitGetContractTx(hash); Map map1 = (Map) map.get("contractResult"); ContractResultDto dto = this.converterDto(map1); System.out.println(JSONUtils.obj2PrettyJson(dto)); } + @Test + public void testFull() throws Exception { + test1(); + test2(); + test3(); + test4(); + test6(); + test7(); + test8(); + test9(); + test1v2(); + test2v2(); + test3v2(); + test4v2(); + test6v2(); + test7v2(); + test8v2(); + test9v2(); + test11(); + test12(); + test13(); + test14(); + test16(); + test17(); + test18(); + test19(); + } + @Test public void test() { System.out.println(ProtocolGroupManager.getCurrentVersion(chainId)); @@ -217,22 +246,26 @@ public void test4() throws Exception { @Test public void test6() throws Exception { - this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, errorMsgKey); } @Test public void test7() throws Exception { - this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, errorMsgKey); } @Test public void test8() throws Exception { - this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, errorMsgKey); } @Test public void test9() throws Exception { - this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false); + String errorMsgKey = "Cannot transfer the locked amount to the contract address"; + this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, errorMsgKey); } @Test @@ -257,22 +290,26 @@ public void test4v2() throws Exception { @Test public void test6v2() throws Exception { - this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test6", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, errorMsgKey); } @Test public void test7v2() throws Exception { - this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test7", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, errorMsgKey); } @Test public void test8v2() throws Exception { - this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test8", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, errorMsgKey); } @Test public void test9v2() throws Exception { - this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true); + String errorMsgKey = "Cannot transfer the locked amount to the contract address"; + this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, errorMsgKey); } @Test @@ -297,22 +334,26 @@ public void test14() throws Exception { @Test public void test16() throws Exception { - this.testFailed(contractA, sender, "test16", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test16", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); } @Test public void test17() throws Exception { - this.testFailed(contractA, sender, "test17", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test17", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); } @Test public void test18() throws Exception { - this.testFailed(contractA, sender, "test18", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + String errorMsgKey = "not enough balance"; + this.testFailed(contractA, sender, "test18", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); } @Test public void test19() throws Exception { - this.testFailed(contractA, sender, "test19", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true); + String errorMsgKey = "Cannot transfer the locked amount to the contract address"; + this.testFailed(contractA, sender, "test19", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); } protected BigInteger[][] balanceList(int assetChainId, int assetId, LinkedHashMap[] contracts, String... addresses) { @@ -409,90 +450,106 @@ protected List converterTransfer(ContractMultyAssetMergedTransf } protected void testAsset(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset, String[] addresses, long... expectBalances) throws Exception { - Assert.assertTrue("地址与期望余额参数不合法", addresses.length * 2 == expectBalances.length); - BigInteger[][] prevBalances = new BigInteger[addresses.length][]; - int k = 0; - for (String address : addresses) { - prevBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); - } - ContractResultDto programResult; - if (setAsset) { - programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); - } else { - programResult = this.callByParams(contract, sender, method, value.toString(), args); - } - Assert.assertTrue(String.format("测试方法[%s]expect success, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); - - List transfers = new ArrayList<>(); - List transferDtos = programResult.getTransfers(); - for (ContractMergedTransferDto dto : transferDtos) { - transfers.addAll(converterTransfer(dto)); - } - List multyAssetTransferDtos = programResult.getMultyAssetTransfers(); - for (ContractMultyAssetMergedTransferDto dto : multyAssetTransferDtos) { - transfers.addAll(converterTransfer(dto)); - } + try { + Assert.assertTrue("地址与期望余额参数不合法", addresses.length * 2 == expectBalances.length); + BigInteger[][] prevBalances = new BigInteger[addresses.length][]; + int k = 0; + for (String address : addresses) { + prevBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); + } + ContractResultDto programResult; + if (setAsset) { + programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); + } else { + programResult = this.callByParams(contract, sender, method, value.toString(), args); + } + Assert.assertTrue(String.format("测试方法[%s]expect success, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); - LinkedHashMap[] contracts = this.filterContractValue(transfers); - BigInteger[][] balanceList = this.balanceList(assetChainId, assetId, contracts, addresses); - BigInteger balanceA = balanceList[0][0].add(toNa(BigDecimal.valueOf(100L))); - BigInteger balanceB = balanceList[0][1]; - BigInteger balanceSender = balanceList[0][2]; - BigInteger balanceALock = balanceList[1][0]; - BigInteger balanceBLock = balanceList[1][1]; - BigInteger balanceSenderLock = balanceList[1][2]; + List transfers = new ArrayList<>(); + List transferDtos = programResult.getTransfers(); + for (ContractMergedTransferDto dto : transferDtos) { + transfers.addAll(converterTransfer(dto)); + } + List multyAssetTransferDtos = programResult.getMultyAssetTransfers(); + for (ContractMultyAssetMergedTransferDto dto : multyAssetTransferDtos) { + transfers.addAll(converterTransfer(dto)); + } - for (ProgramTransfer transfer : transfers) { - Log.info("transfer: {}", transfer.toString()); + LinkedHashMap[] contracts = this.filterContractValue(transfers); + BigInteger[][] balanceList = this.balanceList(assetChainId, assetId, contracts, addresses); + BigInteger balanceA = balanceList[0][0].add(toNa(BigDecimal.valueOf(100L))); + BigInteger balanceB = balanceList[0][1]; + BigInteger balanceSender = balanceList[0][2]; + BigInteger balanceALock = balanceList[1][0]; + BigInteger balanceBLock = balanceList[1][1]; + BigInteger balanceSenderLock = balanceList[1][2]; + + for (ProgramTransfer transfer : transfers) { + Log.info("transfer: {}", transfer.toString()); + } + Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); + + + BigInteger[][] currentBalances = new BigInteger[addresses.length][]; + k = 0; + for (String address : addresses) { + currentBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); + } + BigInteger fee = BigInteger.ZERO; + boolean mainAsset = assetChainId == this.chainId && assetId == this.assetId; + if (mainAsset) { + fee = new BigInteger(programResult.getTxSizeFee()).add(new BigInteger(programResult.getActualContractFee())); + } + balanceA = currentBalances[0][0].subtract(prevBalances[0][0]); + balanceB = currentBalances[1][0].subtract(prevBalances[1][0]); + balanceSender = currentBalances[2][0].add(toNa(BigDecimal.valueOf(100L))).subtract(prevBalances[2][0]).add(fee); + balanceALock = currentBalances[0][1].subtract(prevBalances[0][1]); + balanceBLock = currentBalances[1][1].subtract(prevBalances[1][1]); + balanceSenderLock = currentBalances[2][1].subtract(prevBalances[2][1]); + Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); + Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); + + System.out.println(String.format("method [%s] 测试通过", method)); + } catch (Throwable e) { + System.err.println(String.format("method [%s] 测试失败", method)); + e.printStackTrace(); } - Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); + } - BigInteger[][] currentBalances = new BigInteger[addresses.length][]; - k = 0; - for (String address : addresses) { - currentBalances[k++] = this.getBalanceByAccount(address, assetChainId, assetId); - } - BigInteger fee = BigInteger.ZERO; - boolean mainAsset = assetChainId == this.chainId && assetId == this.assetId; - if (mainAsset) { - fee = new BigInteger(programResult.getTxSizeFee()).add(new BigInteger(programResult.getActualContractFee())); - } - balanceA = currentBalances[0][0].subtract(prevBalances[0][0]); - balanceB = currentBalances[1][0].subtract(prevBalances[1][0]); - balanceSender = currentBalances[2][0].add(toNa(BigDecimal.valueOf(100L))).subtract(prevBalances[2][0]).add(fee); - balanceALock = currentBalances[0][1].subtract(prevBalances[0][1]); - balanceBLock = currentBalances[1][1].subtract(prevBalances[1][1]); - balanceSenderLock = currentBalances[2][1].subtract(prevBalances[2][1]); - Assert.assertTrue(String.format("测试方法[%s]期望 A: %s, 实际: %s", method, expectBalances[0], toNuls(balanceA)), balanceA.longValue() == toNa(BigDecimal.valueOf(expectBalances[0])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 B: %s, 实际: %s", method, expectBalances[1], toNuls(balanceB)), balanceB.longValue() == toNa(BigDecimal.valueOf(expectBalances[1])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 sender: %s, 实际: %s", method, expectBalances[2], toNuls(balanceSender)), balanceSender.longValue() == toNa(BigDecimal.valueOf(expectBalances[2])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 A-锁定: %s, 实际: %s", method, expectBalances[3], toNuls(balanceALock)), balanceALock.longValue() == toNa(BigDecimal.valueOf(expectBalances[3])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 B-锁定: %s, 实际: %s", method, expectBalances[4], toNuls(balanceBLock)), balanceBLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[4])).longValue()); - Assert.assertTrue(String.format("测试方法[%s]期望 sender-锁定: %s, 实际: %s", method, expectBalances[5], toNuls(balanceSenderLock)), balanceSenderLock.longValue() == toNa(BigDecimal.valueOf(expectBalances[5])).longValue()); - } - - protected void testFailed(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset) throws Exception { - System.out.println("清空合约余额"); - ContractResultDto contractResult; - contractResult = this.callByParams(contractA, toAddress, "clear", "0", new String[]{}); - Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); - contractResult = this.callByParams(contractB, toAddress, "clear", "0", new String[]{}); - Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); - - ContractResultDto programResult; - if (setAsset) { - programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); - } else { - programResult = this.callByParams(contract, sender, method, value.toString(), args); + protected void testFailed(String contract, String sender, String method, String[] args, BigInteger value, int assetChainId, int assetId, boolean setAsset, String errorMsgKey) throws Exception { + try { + System.out.println("清空合约余额"); + ContractResultDto contractResult; + contractResult = this.callByParams(contractA, toAddress, "clearBalance", "0", new String[]{}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + contractResult = this.callByParams(contractB, toAddress, "clearBalance", "0", new String[]{}); + Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); + + ContractResultDto programResult; + if (setAsset) { + programResult = this.callOfDesignatedAssetByParams(contract, sender, method, value.toString(), args, assetChainId, assetId); + } else { + programResult = this.callByParams(contract, sender, method, value.toString(), args); + } + System.out.println("errorMsg: " + programResult.getErrorMessage()); + Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); + } catch (Throwable e) { + if (e.getMessage().contains(errorMsgKey)) { + System.out.println(String.format("method [%s] 测试通过,期望失败", method)); + } else { + System.err.println(String.format("method [%s] 测试失败, error: %s", method, e.getMessage())); + } } - System.out.println("errorMsg: " + programResult.getErrorMessage()); - Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); } protected BigInteger[] getBalanceByAccount(String account, int assetChainId, int assetId) throws Exception { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index 9c757d605b..0ed54ae71e 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -72,6 +72,23 @@ public void createContract() throws Exception { Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(map)); } + /** + * 注册一个资产 + */ + @Test + public void assetRegisterTest() throws Exception { + Map params = new HashMap<>(); + params.put("assetSymbol", "MTA"); + params.put("assetName", "MTA"); + params.put("initNumber", 100000000); + params.put("decimalPlace", 8); + params.put("txCreatorAddress", sender); + params.put("assetOwnerAddress", sender); + params.put("password", "nuls123456"); + Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "chainAssetTxReg", params); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + /** * 转入NULS,转出NULS,转出NULS锁定 */ @@ -166,34 +183,6 @@ public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAssetLock", innerArgsLock, "0", 0, 0); } - /** - * 查询所有资产 - */ - @Test - public void getAllAssetReg() throws Exception { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "getAssetRegInfo", params); - System.out.println(JSONUtils.obj2PrettyJson(response)); - } - - /** - * 注册一个资产 - */ - @Test - public void assetRegisterTest() throws Exception { - Map params = new HashMap<>(); - params.put("assetSymbol", "MTA"); - params.put("assetName", "MTA"); - params.put("initNumber", 100000000); - params.put("decimalPlace", 8); - params.put("txCreatorAddress", sender); - params.put("assetOwnerAddress", sender); - params.put("password", "nuls123456"); - Response response = ResponseMessageProcessor.requestAndResponse(ModuleE.LG.abbr, "chainAssetTxReg", params); - System.out.println(JSONUtils.obj2PrettyJson(response)); - } - /** * 根据注册资产的交易hash查询资产信息 */ From 40a8a6992923c1535678d94e76757b4d51f11449 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 9 Nov 2020 16:40:51 +0800 Subject: [PATCH 149/304] add ImportKeyStoreFilesProcessor cmd --- .../api/provider/account/AccountService.java | 1 + .../account/AccountServiceForRpc.java | 8 + .../facade/ImportKeyStoreFilesReq.java | 23 + genesis-block.json | 31787 +--------------- module.ncf | 80 +- .../constant/RpcParameterNameConstant.java | 5 + .../io/nuls/account/rpc/cmd/AccountCmd.java | 94 +- .../nuls/account/service/AccountService.java | 6 +- .../service/impl/AccountServiceImpl.java | 29 +- .../io/nuls/account/util/AccountTool.java | 11 + .../io/nuls/cmd/client/CommandHandler.java | 5 +- .../account/ImportByKeyStoreProcessor.java | 2 +- .../account/ImportKeyStoreFilesProcessor.java | 85 + 13 files changed, 1528 insertions(+), 30608 deletions(-) create mode 100644 common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/facade/ImportKeyStoreFilesReq.java create mode 100644 module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportKeyStoreFilesProcessor.java diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountService.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountService.java index 61135c9539..83c0a99dbd 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountService.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountService.java @@ -60,6 +60,7 @@ public interface AccountService { */ Result importAccountByKeyStore(ImportAccountByKeyStoreReq req); + Result importKeyStoreFiles(ImportKeyStoreFilesReq req); /** * 修改账户密码 * reset account password diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountServiceForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountServiceForRpc.java index 909eb877da..6d2cb50564 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountServiceForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/AccountServiceForRpc.java @@ -55,6 +55,14 @@ public Result importAccountByKeyStore(ImportAccountByKeyStoreReq req) { return callReturnString("ac_importAccountByKeystore", req, "address"); } + @Override + public Result importKeyStoreFiles(ImportKeyStoreFilesReq req) { + return _call("ac_importsKeyStoreFiles", req, res -> { + Boolean data = (Boolean) res.get("value"); + return success(data); + }); + } + @Override public Result updatePassword(UpdatePasswordReq req) { return _call("ac_updatePassword", req, res -> { diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/facade/ImportKeyStoreFilesReq.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/facade/ImportKeyStoreFilesReq.java new file mode 100644 index 0000000000..ff7b3b77bf --- /dev/null +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/account/facade/ImportKeyStoreFilesReq.java @@ -0,0 +1,23 @@ +package io.nuls.base.api.provider.account.facade; + +import io.nuls.base.api.provider.BaseReq; + +/** + * @Author: zhoulijun + * @Time: 2019-03-07 20:44 + * @Description: + * 通过key store导入账户 + * import account by key store + */ +public class ImportKeyStoreFilesReq extends BaseReq { + + private String dirPath; + + public String getDirPath() { + return dirPath; + } + + public void setDirPath(String dirPath) { + this.dirPath = dirPath; + } +} diff --git a/genesis-block.json b/genesis-block.json index 073564433e..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,32343 +3,3016 @@ "time": "1568131200", "txs": [ { - "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", - "amount": 1314374313456741, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 }, { - "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", - "amount": 1300069015130000, + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, "lockTime": 0 }, { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "amount": 1207689896443277, + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, "lockTime": 0 }, { - "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", - "amount": 771827824681203, + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 550000088100000, + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, "lockTime": 0 }, { - "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", - "amount": 140000008800000, + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, "lockTime": 0 }, { - "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", - "amount": 138024778582864, + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, "lockTime": 0 }, { - "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", - "amount": 116322053971373, + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1568217600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1570809600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1573488000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1576080000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1578758400 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1581436800 - }, - { - "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", - "amount": 100000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "amount": 96744642395658, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", - "amount": 85989563359937, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", - "amount": 81999131521100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", - "amount": 72215389273971, - "lockTime": 0 - }, - { - "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", - "amount": 66285252473579, - "lockTime": 0 - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "amount": 58440536215003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "amount": 54028608913486, - "lockTime": 0 - }, - { - "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", - "amount": 52455188181303, - "lockTime": 0 - }, - { - "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", - "amount": 51077727524499, - "lockTime": 0 - }, - { - "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", - "amount": 50747000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", - "amount": 49210312908703, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", - "amount": 44824915276060, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", - "amount": 41141888592935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", - "amount": 39593370697151, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", - "amount": 39538300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", - "amount": 37859381904399, - "lockTime": 0 - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "amount": 37261992045445, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", - "amount": 36996399546102, - "lockTime": 0 - }, - { - "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", - "amount": 34259997306164, - "lockTime": 0 - }, - { - "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", - "amount": 33474778174290, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "amount": 33428773692408, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", - "amount": 29979973788997, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", - "amount": 28961474708694, - "lockTime": 0 - }, - { - "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", - "amount": 28029608434617, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", - "amount": 27995340514245, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", - "amount": 27983215462302, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", - "amount": 27287845540512, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", - "amount": 27170252453222, - "lockTime": 0 - }, - { - "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", - "amount": 26991197104961, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", - "amount": 26243684526688, - "lockTime": 0 - }, - { - "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", - "amount": 25339809000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", - "amount": 24765621251103, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", - "amount": 24109958760182, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", - "amount": 23179417362222, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", - "amount": 22847412113988, - "lockTime": 0 - }, - { - "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", - "amount": 22795607364895, - "lockTime": 0 - }, - { - "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", - "amount": 22755875149791, - "lockTime": 0 - }, - { - "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", - "amount": 22562877881100, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", - "amount": 22520078679607, + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, "lockTime": 0 }, { - "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", - "amount": 21729897375518, + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, "lockTime": 0 }, { - "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", - "amount": 21668767029600, + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, "lockTime": 0 }, { - "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", - "amount": 21059522254002, + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, "lockTime": 0 }, { - "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", - "amount": 20995499736221, + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, "lockTime": 0 }, { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "amount": 20267828455189, + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, "lockTime": 0 }, { - "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", - "amount": 20266600000000, + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, "lockTime": 0 }, { - "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", - "amount": 20206238172992, + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, "lockTime": 0 }, { - "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", - "amount": 20079673353554, + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, "lockTime": 0 }, { - "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", - "amount": 20033796577391, + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, "lockTime": 0 }, { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "amount": 20001091183810, + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, "lockTime": 0 }, { - "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", - "amount": 19999999667300, + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, "lockTime": 0 }, { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "amount": 18462992623715, + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, "lockTime": 0 }, { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "amount": 17909555922184, + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, "lockTime": 0 }, { - "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", - "amount": 17704654522876, + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, "lockTime": 0 }, { - "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", - "amount": 17680919000000, + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, "lockTime": 0 }, { - "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", - "amount": 17478894381698, + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, "lockTime": 0 }, { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "amount": 17449936530800, + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, "lockTime": 0 }, { - "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", - "amount": 16308221346515, + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, "lockTime": 0 }, { - "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", - "amount": 16020659000000, + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, "lockTime": 0 }, { - "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", - "amount": 15982573625914, + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, "lockTime": 0 }, { - "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", - "amount": 15877695642439, + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, "lockTime": 0 }, { - "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", - "amount": 15385796365621, + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, "lockTime": 0 }, { - "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", - "amount": 15289325657803, + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, "lockTime": 0 }, { - "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", - "amount": 15284879672727, + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, "lockTime": 0 }, { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "amount": 15256800433599, + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, "lockTime": 0 }, { - "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", - "amount": 14657695896915, + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, "lockTime": 0 }, { - "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", - "amount": 14559968174355, + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, "lockTime": 0 }, { - "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", - "amount": 14000372803486, + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, "lockTime": 0 }, { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "amount": 13550671393781, + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, "lockTime": 0 }, { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "amount": 13154825176483, + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, "lockTime": 0 }, { - "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", - "amount": 12668965887487, + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, "lockTime": 0 }, { - "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", - "amount": 12666267394598, + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, "lockTime": 0 }, { - "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", - "amount": 12621967560175, + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, "lockTime": 0 }, { - "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", - "amount": 12255358349302, + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, "lockTime": 0 }, { - "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", - "amount": 12121721619499, + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, "lockTime": 0 }, { - "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", - "amount": 11926338975726, + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, "lockTime": 0 }, { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "amount": 11583511308210, + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, "lockTime": 0 }, { - "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", - "amount": 11409057036310, + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, "lockTime": 0 }, { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "amount": 11351298447654, + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, "lockTime": 0 }, { - "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", - "amount": 11082291795378, + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, "lockTime": 0 }, { - "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", - "amount": 11034033057236, + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, "lockTime": 0 }, { - "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", - "amount": 11014309369256, + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, "lockTime": 0 }, { - "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", - "amount": 10974894000000, + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, "lockTime": 0 }, { - "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", - "amount": 10963578142123, + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, "lockTime": 0 }, { - "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", - "amount": 10705356018980, + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, "lockTime": 0 }, { - "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", - "amount": 10496929192351, + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, "lockTime": 0 }, { - "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", - "amount": 10210478607637, + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, "lockTime": 0 }, { - "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", - "amount": 10049766328408, + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, "lockTime": 0 }, { - "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", - "amount": 10049249616254, + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, "lockTime": 0 }, { - "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", - "amount": 10028057245796, + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, "lockTime": 0 }, { - "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", - "amount": 10004821122300, + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, "lockTime": 0 }, { - "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", - "amount": 10000101011110, + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, "lockTime": 0 }, { - "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", - "amount": 9597836179629, + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, "lockTime": 0 }, { - "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", - "amount": 9411000000000, + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, "lockTime": 0 }, { - "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", - "amount": 9048369857092, + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, "lockTime": 0 }, { - "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", - "amount": 8964347401016, + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, "lockTime": 0 }, { - "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", - "amount": 8618647971105, + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, "lockTime": 0 }, { - "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", - "amount": 8554267594404, + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, "lockTime": 0 }, { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "amount": 8430412671966, + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, "lockTime": 0 }, { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "amount": 8348822887210, + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, "lockTime": 0 }, { - "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", - "amount": 8134835979711, + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, "lockTime": 0 }, { - "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", - "amount": 8106292989089, + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, "lockTime": 0 }, { - "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", - "amount": 8099244977731, + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, "lockTime": 0 }, { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "amount": 7931526325696, + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, "lockTime": 0 }, { - "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", - "amount": 7576838434314, + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, "lockTime": 0 }, { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "amount": 7433908705664, + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, "lockTime": 0 }, { - "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", - "amount": 7429043947267, + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, "lockTime": 0 }, { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "amount": 7386613229167, + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, "lockTime": 0 }, { - "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", - "amount": 7326992273148, + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, "lockTime": 0 }, { - "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", - "amount": 7153182261056, + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, "lockTime": 0 }, { - "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", - "amount": 7119369434252, + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, "lockTime": 0 }, { - "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", - "amount": 7080899230736, + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, "lockTime": 0 }, { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "amount": 7036152444418, + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", - "amount": 7018221162019, + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, "lockTime": 0 }, { - "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", - "amount": 6995517424108, + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, "lockTime": 0 }, { - "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", - "amount": 6995327178146, + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, "lockTime": 0 }, { - "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", - "amount": 6799926963817, + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, "lockTime": 0 }, { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "amount": 6547292181799, + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, "lockTime": 0 }, { - "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", - "amount": 6454254935717, + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, "lockTime": 0 }, { - "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", - "amount": 6435998684431, + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, "lockTime": 0 }, { - "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", - "amount": 6420573019027, + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, "lockTime": 0 }, { - "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", - "amount": 6363661460959, + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, "lockTime": 0 }, { - "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", - "amount": 6362551588408, + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, "lockTime": 0 }, { - "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", - "amount": 6298994991387, + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, "lockTime": 0 }, { - "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", - "amount": 6255850503155, + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, "lockTime": 0 }, { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "amount": 6227658206731, + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, "lockTime": 0 }, { - "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", - "amount": 6170431207813, + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, "lockTime": 0 }, { - "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", - "amount": 6012231756288, + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, "lockTime": 0 }, { - "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", - "amount": 6006135315945, + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, "lockTime": 0 }, { - "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", - "amount": 5972970915411, + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, "lockTime": 0 }, { - "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", - "amount": 5971794874143, + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, "lockTime": 0 }, { - "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", - "amount": 5944437495364, + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, "lockTime": 0 }, { - "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", - "amount": 5766797590061, + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, "lockTime": 0 }, { - "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", - "amount": 5743599852741, + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, "lockTime": 0 }, { - "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", - "amount": 5702200009199, + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, "lockTime": 0 }, { - "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", - "amount": 5647717457022, + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, "lockTime": 0 }, { - "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", - "amount": 5629556387539, + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, "lockTime": 0 }, { - "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", - "amount": 5628135943750, + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, "lockTime": 0 }, { - "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", - "amount": 5563400000000, + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, "lockTime": 0 }, { - "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", - "amount": 5515305768040, + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, "lockTime": 0 }, { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "amount": 5379373223453, + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, "lockTime": 0 }, { - "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", - "amount": 5373006606201, + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, "lockTime": 0 }, { - "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", - "amount": 5345612916464, + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, "lockTime": 0 }, { - "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", - "amount": 5290953176650, + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, "lockTime": 0 }, { - "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", - "amount": 5288541299791, + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, "lockTime": 0 }, { - "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", - "amount": 5222483124619, + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, "lockTime": 0 }, { - "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", - "amount": 5209711163393, + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, "lockTime": 0 }, { - "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", - "amount": 5188900000000, + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, "lockTime": 0 }, { - "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", - "amount": 5180804996689, + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, "lockTime": 0 }, { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "amount": 5130558133262, + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, "lockTime": 0 }, { - "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", - "amount": 5049478565462, + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, "lockTime": 0 }, { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "amount": 4988309871304, + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", - "amount": 4887877000000, + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", - "amount": 4830577078034, + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, "lockTime": 0 }, { - "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", - "amount": 4801129520291, + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, "lockTime": 0 }, { - "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", - "amount": 4732474774320, + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, "lockTime": 0 }, { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "amount": 4705517703977, + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, "lockTime": 0 }, { - "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", - "amount": 4694439297547, + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", - "amount": 4647006300000, + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", - "amount": 4646953342492, + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", - "amount": 4616310943553, + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", - "amount": 4611926555756, + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, "lockTime": 0 }, { - "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", - "amount": 4568137237703, + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, "lockTime": 0 }, { - "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", - "amount": 4566625857924, + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, "lockTime": 0 }, { - "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", - "amount": 4523158387698, + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "amount": 4489756977035, + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", - "amount": 4474931163300, + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", - "amount": 4466165926884, + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", - "amount": 4432396267867, + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", - "amount": 4431622300791, + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", - "amount": 4413942339362, + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", - "amount": 4405882496140, + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", - "amount": 4404161055094, + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", - "amount": 4388649111917, + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", - "amount": 4347573883866, + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", - "amount": 4339160109193, + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", - "amount": 4317197774227, + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "amount": 4286676134209, + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", - "amount": 4259827282396, + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", - "amount": 4242359317804, + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, "lockTime": 0 }, { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "amount": 4235385342453, + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, "lockTime": 0 }, { - "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", - "amount": 4200739986175, + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", - "amount": 4178255482000, + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", - "amount": 4175579049369, + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", - "amount": 4139098221820, + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", - "amount": 4130862439847, + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, "lockTime": 0 }, { - "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", - "amount": 4127181289401, + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, "lockTime": 0 }, { - "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", - "amount": 4097221270572, + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, "lockTime": 0 }, { - "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", - "amount": 4095789805639, + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, "lockTime": 0 }, { - "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", - "amount": 4090792034338, + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, "lockTime": 0 }, { - "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", - "amount": 4089818633664, + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, "lockTime": 0 }, { - "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", - "amount": 4087805490480, + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, "lockTime": 0 }, { - "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", - "amount": 4083900000000, + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, "lockTime": 0 }, { - "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", - "amount": 4034495354216, + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, "lockTime": 0 }, { - "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", - "amount": 4013365700381, + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, "lockTime": 0 }, { - "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", - "amount": 4006149129710, + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, "lockTime": 0 }, { - "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", - "amount": 3993365195258, + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, "lockTime": 0 }, { - "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", - "amount": 3983146833364, + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, "lockTime": 0 }, { - "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", - "amount": 3979923799989, + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, "lockTime": 0 }, { - "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", - "amount": 3960513870982, + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, "lockTime": 0 }, { - "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", - "amount": 3927318651232, + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, "lockTime": 0 }, { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "amount": 3911491754115, + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, "lockTime": 0 }, { - "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", - "amount": 3898767176140, + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, "lockTime": 0 }, { - "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", - "amount": 3892538355819, + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, "lockTime": 0 }, { - "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", - "amount": 3855100262699, + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, "lockTime": 0 }, { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "amount": 3827037476637, + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, "lockTime": 0 }, { - "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", - "amount": 3811169478064, + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, "lockTime": 0 }, { - "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", - "amount": 3810553700980, + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, "lockTime": 0 }, { - "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", - "amount": 3769010423189, + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, "lockTime": 0 }, { - "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", - "amount": 3746670550527, + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, "lockTime": 0 }, { - "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", - "amount": 3732256484155, + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, "lockTime": 0 }, { - "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", - "amount": 3685768408200, + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, "lockTime": 0 }, { - "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", - "amount": 3655910282573, + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, "lockTime": 0 }, { - "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", - "amount": 3649905528145, + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, "lockTime": 0 }, { - "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", - "amount": 3621424455199, + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, "lockTime": 0 }, { - "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", - "amount": 3613911902450, + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, "lockTime": 0 }, { - "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", - "amount": 3604828977508, + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, "lockTime": 0 }, { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "amount": 3566330778157, + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, "lockTime": 0 }, { - "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", - "amount": 3538199000000, + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, "lockTime": 0 }, { - "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", - "amount": 3495425261514, + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, "lockTime": 0 }, { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "amount": 3487546181731, + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, "lockTime": 0 }, { - "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", - "amount": 3391978196979, + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, "lockTime": 0 }, { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "amount": 3360604881888, + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, "lockTime": 0 }, { - "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", - "amount": 3335143686733, + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, "lockTime": 0 }, { - "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", - "amount": 3331061554915, + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, "lockTime": 0 }, { - "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", - "amount": 3323239998543, + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, "lockTime": 0 }, { - "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", - "amount": 3311961387294, + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, "lockTime": 0 }, { - "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", - "amount": 3297094325192, + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, "lockTime": 0 }, { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "amount": 3286747568517, + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, "lockTime": 0 }, { - "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", - "amount": 3280611800340, + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, "lockTime": 0 }, { - "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", - "amount": 3270332890601, + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, "lockTime": 0 }, { - "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", - "amount": 3262562062214, + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, "lockTime": 0 }, { - "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", - "amount": 3253798581575, + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, "lockTime": 0 }, { - "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", - "amount": 3250306375096, + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, "lockTime": 0 }, { - "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", - "amount": 3248652471821, + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", - "amount": 3239187517096, + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "amount": 3227989972889, + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, "lockTime": 0 }, { - "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", - "amount": 3223012704398, + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, "lockTime": 0 }, { - "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", - "amount": 3127303308393, + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, "lockTime": 0 }, { - "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", - "amount": 3114545041663, + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, "lockTime": 0 }, { - "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", - "amount": 3114371637359, + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, "lockTime": 0 }, { - "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", - "amount": 3098280351409, + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", - "amount": 3084432046686, + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", - "amount": 3084314606659, + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", - "amount": 3067842756460, + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "amount": 3049372130977, + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", - "amount": 3034533415571, + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, "lockTime": 0 }, { - "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", - "amount": 3024446627522, + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, "lockTime": 0 }, { - "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", - "amount": 3016641111110, + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, "lockTime": 0 }, { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "amount": 3006370302621, + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, "lockTime": 0 }, { - "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", - "amount": 3003754348603, + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, "lockTime": 0 }, { - "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", - "amount": 3003369565489, + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, "lockTime": 0 }, { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "amount": 2991614988430, + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, "lockTime": 0 }, { - "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", - "amount": 2983827070197, + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, "lockTime": 0 }, { - "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", - "amount": 2982058302152, + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, "lockTime": 0 }, { - "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", - "amount": 2961178030782, + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, "lockTime": 0 }, { - "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", - "amount": 2959980299559, + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, "lockTime": 0 }, { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "amount": 2923789183800, + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, "lockTime": 0 }, { - "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", - "amount": 2922515618168, + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, "lockTime": 0 }, { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "amount": 2921485767410, + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, "lockTime": 0 }, { - "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", - "amount": 2920614737994, + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, "lockTime": 0 }, { - "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", - "amount": 2918736502136, + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, "lockTime": 0 }, { - "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", - "amount": 2908563502926, + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, "lockTime": 0 }, { - "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", - "amount": 2875371127677, + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, "lockTime": 0 }, { - "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", - "amount": 2844883497292, + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, "lockTime": 0 }, { - "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", - "amount": 2844124104402, + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, "lockTime": 0 }, { - "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", - "amount": 2829973172145, + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, "lockTime": 0 }, { - "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", - "amount": 2821622909059, + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, "lockTime": 0 }, { - "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", - "amount": 2786200000000, + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, "lockTime": 0 }, { - "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", - "amount": 2785813908817, + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, "lockTime": 0 }, { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "amount": 2784926825513, + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, "lockTime": 0 }, { - "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", - "amount": 2772147293763, + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, "lockTime": 0 }, { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "amount": 2732620680842, + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, "lockTime": 0 }, { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "amount": 2714528126132, + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, "lockTime": 0 }, { - "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", - "amount": 2699791100000, + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, "lockTime": 0 }, { - "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", - "amount": 2686142685973, + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, "lockTime": 0 }, { - "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", - "amount": 2671269299743, + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, "lockTime": 0 }, { - "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", - "amount": 2671214015444, + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, "lockTime": 0 }, { - "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", - "amount": 2659428100000, + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, "lockTime": 0 }, { - "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", - "amount": 2654669205335, + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, "lockTime": 0 }, { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "amount": 2654532230472, + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, "lockTime": 0 }, { - "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", - "amount": 2643085702359, + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, "lockTime": 0 }, { - "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", - "amount": 2640407616700, + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, "lockTime": 0 }, { - "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", - "amount": 2633698266579, + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, "lockTime": 0 }, { - "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", - "amount": 2612737305486, + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, "lockTime": 0 }, { - "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", - "amount": 2611194150236, + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, "lockTime": 0 }, { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "amount": 2602401497831, + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, "lockTime": 0 }, { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "amount": 2592239217420, + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, "lockTime": 0 }, { - "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", - "amount": 2585880528244, + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", - "amount": 2575849842209, + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", - "amount": 2564427203389, + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", - "amount": 2561080103484, + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, "lockTime": 0 }, { - "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", - "amount": 2560455845735, + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, "lockTime": 0 }, { - "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", - "amount": 2550325652804, + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, "lockTime": 0 }, { - "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", - "amount": 2529733793421, + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, "lockTime": 0 }, { - "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", - "amount": 2527204033602, + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, "lockTime": 0 }, { - "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", - "amount": 2523806252812, + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, "lockTime": 0 }, { - "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", - "amount": 2520767814000, + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, "lockTime": 0 }, { - "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", - "amount": 2512332890167, + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, "lockTime": 0 }, { - "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", - "amount": 2506489602729, + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, "lockTime": 0 }, { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "amount": 2505788549696, + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, "lockTime": 0 }, { - "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", - "amount": 2503882375281, + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, "lockTime": 0 }, { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "amount": 2503791332448, + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, "lockTime": 0 }, { - "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", - "amount": 2498140085719, + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, "lockTime": 0 }, { - "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", - "amount": 2491590986231, + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, "lockTime": 0 }, { - "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", - "amount": 2485683525333, + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, "lockTime": 0 }, { - "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", - "amount": 2462313209710, + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, "lockTime": 0 }, { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "amount": 2461793544874, + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "amount": 2458824842116, + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "amount": 2445854118322, + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", - "amount": 2444637599755, + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", - "amount": 2438371066122, + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "amount": 2423849195494, + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "amount": 2413065350762, + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", - "amount": 2408097275306, + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", - "amount": 2407640165613, + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "amount": 2406904698682, + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", - "amount": 2404674651501, + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "amount": 2403745208237, + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", - "amount": 2400348330773, + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", - "amount": 2399500000000, + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "amount": 2397165126369, + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", - "amount": 2378637371160, + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", - "amount": 2378073843263, + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "amount": 2373873118963, + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "amount": 2368030658046, + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", - "amount": 2347090108700, + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", - "amount": 2332711128929, + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, "lockTime": 0 }, { - "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", - "amount": 2331223358189, + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, "lockTime": 0 }, { - "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", - "amount": 2329515900000, + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, "lockTime": 0 }, { - "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", - "amount": 2324535158900, + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, "lockTime": 0 }, { - "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", - "amount": 2314300000000, + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, "lockTime": 0 }, { - "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", - "amount": 2313384999334, + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, "lockTime": 0 }, { - "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", - "amount": 2312557916000, + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, "lockTime": 0 }, { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "amount": 2310225175167, + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, "lockTime": 0 }, { - "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", - "amount": 2299501675703, + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, "lockTime": 0 }, { - "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", - "amount": 2288084075746, + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, "lockTime": 0 }, { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "amount": 2282427758100, + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, "lockTime": 0 }, { - "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", - "amount": 2274175020234, + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, "lockTime": 0 }, { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "amount": 2257532888084, + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, "lockTime": 0 }, { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "amount": 2254957709482, + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, "lockTime": 0 }, { - "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", - "amount": 2250233316770, + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, "lockTime": 0 }, { - "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", - "amount": 2245221483757, + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, "lockTime": 0 }, { - "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", - "amount": 2232845815309, + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, "lockTime": 0 }, { - "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", - "amount": 2232285520749, + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, "lockTime": 0 }, { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "amount": 2224585008400, + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, "lockTime": 0 }, { - "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", - "amount": 2220759959278, + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, "lockTime": 0 }, { - "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", - "amount": 2216046481500, + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, "lockTime": 0 }, { - "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", - "amount": 2214311555607, + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, "lockTime": 0 }, { - "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", - "amount": 2208928191711, + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, "lockTime": 0 }, { - "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", - "amount": 2201414464632, + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, "lockTime": 0 }, { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "amount": 2197120481814, + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, "lockTime": 0 }, { - "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", - "amount": 2194601041128, + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, "lockTime": 0 }, { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "amount": 2193191237193, + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, "lockTime": 0 }, { - "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", - "amount": 2190008983271, + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, "lockTime": 0 }, { - "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", - "amount": 2189525702549, + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, "lockTime": 0 }, { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "amount": 2177960945461, + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, "lockTime": 0 }, { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "amount": 2177793611859, + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, "lockTime": 0 }, { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "amount": 2165977843823, + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, "lockTime": 0 }, { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "amount": 2165141022582, + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", - "amount": 2160832408906, + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", - "amount": 2157940349129, + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "amount": 2157464205186, + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", - "amount": 2157032154243, + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", - "amount": 2154039597526, + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", - "amount": 2153501474921, + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "amount": 2138851541920, + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, "lockTime": 0 }, { - "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", - "amount": 2129456403303, + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, "lockTime": 0 }, { - "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", - "amount": 2129201111110, + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, "lockTime": 0 }, { - "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", - "amount": 2126535005180, + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, "lockTime": 0 }, { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "amount": 2120987060003, + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, "lockTime": 0 }, { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "amount": 2119167814451, + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, "lockTime": 0 }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "amount": 2115537957318, + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, "lockTime": 0 }, { - "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", - "amount": 2109262770164, + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, "lockTime": 0 }, { - "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", - "amount": 2104032286014, + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, "lockTime": 0 }, { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "amount": 2100003306550, + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, "lockTime": 0 }, { - "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", - "amount": 2097583277305, + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, "lockTime": 0 }, { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "amount": 2094576202794, + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, "lockTime": 0 }, { - "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", - "amount": 2091321339852, + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, "lockTime": 0 }, { - "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", - "amount": 2088277643638, + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, "lockTime": 0 }, { - "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", - "amount": 2084658200000, + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, "lockTime": 0 }, { - "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", - "amount": 2084094111110, + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, "lockTime": 0 }, { - "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", - "amount": 2083859676189, + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, "lockTime": 0 }, { - "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", - "amount": 2082556275251, + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, "lockTime": 0 }, { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "amount": 2081281639763, + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, "lockTime": 0 }, { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "amount": 2075807942069, + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, "lockTime": 0 }, { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "amount": 2075735709754, + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, "lockTime": 0 }, { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "amount": 2075519608709, + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, "lockTime": 0 }, { - "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", - "amount": 2074282875104, + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, "lockTime": 0 }, { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "amount": 2073614393244, + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, "lockTime": 0 }, { - "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", - "amount": 2068101700641, + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, "lockTime": 0 }, { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "amount": 2068091781354, + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, "lockTime": 0 }, { - "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", - "amount": 2067759441999, + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, "lockTime": 0 }, { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "amount": 2058573526549, + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, "lockTime": 0 }, { - "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", - "amount": 2056867768988, + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, "lockTime": 0 }, { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "amount": 2056066823856, + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, "lockTime": 0 }, { - "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", - "amount": 2055945028731, + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, "lockTime": 0 }, { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "amount": 2055670116258, + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, "lockTime": 0 }, { - "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", - "amount": 2050764983771, + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, "lockTime": 0 }, { - "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", - "amount": 2046492776171, + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, "lockTime": 0 }, { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "amount": 2040915033861, + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, "lockTime": 0 }, { - "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", - "amount": 2040294786521, + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, "lockTime": 0 }, { - "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", - "amount": 2036932010954, + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, "lockTime": 0 }, { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "amount": 2036613104066, + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, "lockTime": 0 }, { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "amount": 2036018484169, + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, "lockTime": 0 }, { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "amount": 2036012751778, + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, "lockTime": 0 }, { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "amount": 2035494356743, + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, "lockTime": 0 }, { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "amount": 2034810197662, + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, "lockTime": 0 }, { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "amount": 2034038321331, + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, "lockTime": 0 }, { - "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", - "amount": 2033824784827, + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, "lockTime": 0 }, { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "amount": 2033107453284, + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, "lockTime": 0 }, { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "amount": 2032437685983, + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, "lockTime": 0 }, { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "amount": 2027117752848, + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, "lockTime": 0 }, { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "amount": 2024487062845, + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, "lockTime": 0 }, { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "amount": 2024206918844, + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, "lockTime": 0 }, { - "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", - "amount": 2022265112202, + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, "lockTime": 0 }, { - "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", - "amount": 2020044918767, + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, "lockTime": 0 }, { - "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", - "amount": 2017757942127, + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, "lockTime": 0 }, { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "amount": 2016927189193, + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, "lockTime": 0 }, { - "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", - "amount": 2015779311110, + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, "lockTime": 0 }, { - "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", - "amount": 2013865643211, + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, "lockTime": 0 }, { - "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", - "amount": 2012535119804, + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, "lockTime": 0 }, { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "amount": 2011682301048, + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, "lockTime": 0 }, { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "amount": 2010847934394, + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, "lockTime": 0 }, { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "amount": 2009664081890, + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, "lockTime": 0 }, { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "amount": 2009538449322, + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "amount": 2008025809214, + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "amount": 2007843844116, + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, "lockTime": 0 }, { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "amount": 2007566055582, + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, "lockTime": 0 }, { - "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", - "amount": 2006480000000, + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, "lockTime": 0 }, { - "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", - "amount": 2006476130004, + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, "lockTime": 0 }, { - "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", - "amount": 2005863893780, + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, "lockTime": 0 }, { - "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", - "amount": 2004334460269, + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, "lockTime": 0 }, { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "amount": 2003623863051, + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, "lockTime": 0 }, { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "amount": 2003380877828, + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, "lockTime": 0 }, { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "amount": 2003287117401, + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, "lockTime": 0 }, { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "amount": 2003245024802, + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, "lockTime": 0 }, { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "amount": 2003014108162, + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, "lockTime": 0 }, { - "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", - "amount": 2002623190557, + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, "lockTime": 0 }, { - "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", - "amount": 2002464726104, + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, "lockTime": 0 }, { - "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", - "amount": 2002253947425, + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, "lockTime": 0 }, { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "amount": 2001181497009, + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, "lockTime": 0 }, { - "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", - "amount": 2001139704491, + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, "lockTime": 0 }, { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "amount": 2000882364111, + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, "lockTime": 0 }, { - "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", - "amount": 2000641249410, + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, "lockTime": 0 }, { - "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", - "amount": 2000610292487, + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, "lockTime": 0 }, { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "amount": 2000399953793, + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, "lockTime": 0 }, { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "amount": 2000365342699, + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, "lockTime": 0 }, { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "amount": 2000232083093, + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, "lockTime": 0 }, { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "amount": 2000198111110, + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, "lockTime": 0 }, { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "amount": 2000173789364, + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, "lockTime": 0 }, { - "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", - "amount": 2000100111110, + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, "lockTime": 0 }, { - "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", - "amount": 2000099898108, + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, "lockTime": 0 }, { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "amount": 2000099111110, + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, "lockTime": 0 }, { - "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", - "amount": 2000098011110, + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, "lockTime": 0 }, { - "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", - "amount": 2000091011110, + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, "lockTime": 0 }, { - "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", - "amount": 2000086369280, + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, "lockTime": 0 }, { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "amount": 2000058405684, + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, "lockTime": 0 }, { - "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", - "amount": 2000017911110, + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, "lockTime": 0 }, { - "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", - "amount": 2000010111110, + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, "lockTime": 0 }, { - "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", - "amount": 2000010111110, + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, "lockTime": 0 }, { - "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", - "amount": 2000010111110, + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, "lockTime": 0 }, { - "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", - "amount": 2000010111110, + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, "lockTime": 0 }, { - "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", - "amount": 2000010111110, + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, "lockTime": 0 }, { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "amount": 2000009111110, + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, "lockTime": 0 }, { - "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", - "amount": 2000009000000, + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, "lockTime": 0 }, { - "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", - "amount": 2000009000000, + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, "lockTime": 0 }, { - "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", - "amount": 2000009000000, + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, "lockTime": 0 }, { - "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", - "amount": 2000009000000, + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, "lockTime": 0 }, { - "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", - "amount": 2000009000000, + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", - "amount": 2000008911110, + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", - "amount": 2000005011110, + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", - "amount": 2000005011110, + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", - "amount": 2000001111110, + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "amount": 2000000679064, + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "amount": 1987602846753, + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", - "amount": 1985670089499, + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, "lockTime": 0 }, { - "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", - "amount": 1982211469443, + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, "lockTime": 0 }, { - "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", - "amount": 1981832472943, + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, "lockTime": 0 }, { - "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", - "amount": 1979697708837, + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, "lockTime": 0 }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "amount": 1966041995997, + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, "lockTime": 0 }, { - "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", - "amount": 1963738533982, + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, "lockTime": 0 }, { - "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", - "amount": 1958238264916, + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, "lockTime": 0 }, { - "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", - "amount": 1952478544587, + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, "lockTime": 0 }, { - "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", - "amount": 1943494060487, + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, "lockTime": 0 }, { - "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", - "amount": 1927503792350, + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, "lockTime": 0 }, { - "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", - "amount": 1919931284005, + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, "lockTime": 0 }, { - "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", - "amount": 1919458620000, + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, "lockTime": 0 }, { - "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", - "amount": 1917044047699, + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, "lockTime": 0 }, { - "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", - "amount": 1909180173388, + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, "lockTime": 0 }, { - "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", - "amount": 1901147501442, + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, "lockTime": 0 }, { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "amount": 1898634487477, + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, "lockTime": 0 }, { - "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", - "amount": 1892418605876, + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, "lockTime": 0 }, { - "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", - "amount": 1877990112895, + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, "lockTime": 0 }, { - "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", - "amount": 1867607885258, + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, "lockTime": 0 }, { - "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", - "amount": 1862720614605, + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, "lockTime": 0 }, { - "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", - "amount": 1845483896505, + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", - "amount": 1845459117552, + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", - "amount": 1827502997735, + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", - "amount": 1811226447321, + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, "lockTime": 0 }, { - "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", - "amount": 1806223870958, + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, "lockTime": 0 }, { - "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", - "amount": 1797559579952, + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, "lockTime": 0 }, { - "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", - "amount": 1797270576526, + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, "lockTime": 0 }, { - "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", - "amount": 1791680184979, + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, "lockTime": 0 }, { - "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", - "amount": 1785822811110, + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, "lockTime": 0 }, { - "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", - "amount": 1784376882586, + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, "lockTime": 0 }, { - "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", - "amount": 1771360194271, + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, "lockTime": 0 }, { - "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", - "amount": 1769642117033, + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, "lockTime": 0 }, { - "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", - "amount": 1767652984461, + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, "lockTime": 0 }, { - "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", - "amount": 1761683011110, + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, "lockTime": 0 }, { - "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", - "amount": 1754373322210, + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, "lockTime": 0 }, { - "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", - "amount": 1732009518727, + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", - "amount": 1727913275323, + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", - "amount": 1720147985773, + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", - "amount": 1717345934781, + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "amount": 1710378692033, + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, "lockTime": 0 }, { - "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", - "amount": 1662804498747, + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, "lockTime": 0 }, { - "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", - "amount": 1649888019401, + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, "lockTime": 0 }, { - "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", - "amount": 1646621806474, + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, "lockTime": 0 }, { - "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", - "amount": 1642447581350, + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, "lockTime": 0 }, { - "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", - "amount": 1640698498183, + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, "lockTime": 0 }, { - "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", - "amount": 1636590784803, + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, "lockTime": 0 }, { - "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", - "amount": 1636555919569, + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "amount": 1624093192505, + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", - "amount": 1622344350254, + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", - "amount": 1621883807409, + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, "lockTime": 0 }, { - "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", - "amount": 1620351258779, + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", - "amount": 1615784977131, + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", - "amount": 1611089702586, + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, "lockTime": 0 }, { - "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", - "amount": 1608079726426, + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, "lockTime": 0 }, { - "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", - "amount": 1596157645055, + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, "lockTime": 0 }, { - "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", - "amount": 1580138725178, + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, "lockTime": 0 }, { - "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", - "amount": 1553796707569, + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", - "amount": 1552885553329, + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", - "amount": 1547805533569, + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", - "amount": 1533811095448, + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", - "amount": 1531431774417, + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", - "amount": 1527460702364, + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", - "amount": 1520006101451, + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", - "amount": 1517994561157, + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, "lockTime": 0 }, { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "amount": 1514347763189, + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, "lockTime": 0 }, { - "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", - "amount": 1508660771720, + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, "lockTime": 0 }, { - "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", - "amount": 1506362472146, + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, "lockTime": 0 }, { - "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", - "amount": 1506130233709, + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, "lockTime": 0 }, { - "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", - "amount": 1502655086918, + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, "lockTime": 0 }, { - "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", - "amount": 1500687804548, + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, "lockTime": 0 }, { - "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", - "amount": 1500666032784, + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, "lockTime": 0 }, { - "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", - "amount": 1500101605474, + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, "lockTime": 0 }, { - "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", - "amount": 1500000000000, + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", - "amount": 1499807257083, + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", - "amount": 1494015999998, + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", - "amount": 1482286686924, + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, "lockTime": 0 }, { - "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", - "amount": 1471831927535, + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, "lockTime": 0 }, { - "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", - "amount": 1470277969654, + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, "lockTime": 0 }, { - "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", - "amount": 1466072347285, + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, "lockTime": 0 }, { - "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", - "amount": 1458153329469, + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, "lockTime": 0 }, { - "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", - "amount": 1455871158284, + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, "lockTime": 0 }, { - "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", - "amount": 1444250047272, + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, "lockTime": 0 }, { - "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", - "amount": 1443549025153, + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, "lockTime": 0 }, { - "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", - "amount": 1438794879615, + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, "lockTime": 0 }, { - "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", - "amount": 1431131990629, + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, "lockTime": 0 }, { - "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", - "amount": 1425676300814, + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, "lockTime": 0 }, { - "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", - "amount": 1417582606542, + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, "lockTime": 0 }, { - "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", - "amount": 1410238937132, + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, "lockTime": 0 }, { - "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", - "amount": 1404023143035, + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, "lockTime": 0 }, { - "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", - "amount": 1396528826334, + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, "lockTime": 0 }, { - "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", - "amount": 1391149776316, + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", - "amount": 1384016377065, + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", - "amount": 1374898768200, + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", - "amount": 1373044564766, + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, "lockTime": 0 }, { - "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", - "amount": 1352281612470, + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, "lockTime": 0 }, { - "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", - "amount": 1350451450538, + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, "lockTime": 0 }, { - "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", - "amount": 1348918831744, + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, "lockTime": 0 }, { - "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", - "amount": 1348001423889, + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, "lockTime": 0 }, { - "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", - "amount": 1346473165622, + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, "lockTime": 0 }, { - "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", - "amount": 1325150682227, + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, "lockTime": 0 }, { - "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", - "amount": 1318390185884, + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", - "amount": 1311673839170, + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", - "amount": 1305660893498, + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, "lockTime": 0 }, { - "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", - "amount": 1273609908094, + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, "lockTime": 0 }, { - "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", - "amount": 1269733922897, + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, "lockTime": 0 }, { - "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", - "amount": 1258671288218, + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, "lockTime": 0 }, { - "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", - "amount": 1244592164315, + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, "lockTime": 0 }, { - "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", - "amount": 1236570016360, + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, "lockTime": 0 }, { - "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", - "amount": 1231775430133, + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, "lockTime": 0 }, { - "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", - "amount": 1227217241865, + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, "lockTime": 0 - }, + } + ], + "alias": [ { - "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", - "amount": 1225168006874, - "lockTime": 0 + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" }, { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "amount": 1223568760775, - "lockTime": 0 + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" }, { - "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", - "amount": 1220193182776, - "lockTime": 0 + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" }, { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "amount": 1220111371819, - "lockTime": 0 + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" }, { - "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", - "amount": 1219907526522, - "lockTime": 0 + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" }, { - "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", - "amount": 1219385000000, - "lockTime": 0 + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" }, { - "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", - "amount": 1215940898534, - "lockTime": 0 + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" }, { - "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", - "amount": 1195526181049, - "lockTime": 0 + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" }, { - "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", - "amount": 1193314827279, - "lockTime": 0 + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" }, { - "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", - "amount": 1191874181329, - "lockTime": 0 + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" }, { - "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", - "amount": 1187036239092, - "lockTime": 0 + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" }, { - "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", - "amount": 1182119999798, - "lockTime": 0 + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" }, { - "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", - "amount": 1181730500977, - "lockTime": 0 + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" }, { - "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", - "amount": 1180911172991, - "lockTime": 0 + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" }, { - "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", - "amount": 1180639943197, - "lockTime": 0 + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" }, { - "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", - "amount": 1180221775131, - "lockTime": 0 + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" }, { - "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", - "amount": 1178454035091, - "lockTime": 0 + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" }, { - "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", - "amount": 1177773988776, - "lockTime": 0 + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" }, { - "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", - "amount": 1177478202000, - "lockTime": 0 + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" }, { - "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", - "amount": 1177426191667, - "lockTime": 0 + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" }, { - "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", - "amount": 1172934345912, - "lockTime": 0 + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" }, { - "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", - "amount": 1172523076937, - "lockTime": 0 + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" }, { - "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", - "amount": 1166606767133, - "lockTime": 0 + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" }, { - "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", - "amount": 1165694315799, - "lockTime": 0 + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" }, { - "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", - "amount": 1165665233325, - "lockTime": 0 + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" }, { - "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", - "amount": 1156022945798, - "lockTime": 0 + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" }, { - "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", - "amount": 1154908155717, - "lockTime": 0 + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" }, { - "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", - "amount": 1153309494721, - "lockTime": 0 + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" }, { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "amount": 1151753910270, - "lockTime": 0 + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" }, { - "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", - "amount": 1148526819804, - "lockTime": 0 + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" }, { - "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", - "amount": 1147481045771, - "lockTime": 0 + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" }, { - "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", - "amount": 1147168901655, - "lockTime": 0 + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" }, { - "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", - "amount": 1144140806116, - "lockTime": 0 + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" }, { - "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", - "amount": 1139328418699, - "lockTime": 0 + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" }, { - "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", - "amount": 1129951066689, - "lockTime": 0 + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" }, { - "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", - "amount": 1125484353559, - "lockTime": 0 + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" }, { - "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", - "amount": 1123681178223, - "lockTime": 0 + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" }, { - "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", - "amount": 1120995894108, - "lockTime": 0 + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" }, { - "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", - "amount": 1110591670839, - "lockTime": 0 + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" }, { - "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", - "amount": 1110095452915, - "lockTime": 0 + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" }, { - "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", - "amount": 1107452274199, - "lockTime": 0 + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" }, { - "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", - "amount": 1104412611110, - "lockTime": 0 + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" }, { - "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", - "amount": 1096638123245, - "lockTime": 0 + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" }, { - "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", - "amount": 1091677683343, - "lockTime": 0 + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" }, { - "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", - "amount": 1091443728838, - "lockTime": 0 + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" }, { - "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", - "amount": 1089234131551, - "lockTime": 0 + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" }, { - "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", - "amount": 1086705444472, - "lockTime": 0 + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" }, { - "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", - "amount": 1084320903948, - "lockTime": 0 + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" }, { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "amount": 1084172157914, - "lockTime": 0 + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" }, { - "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", - "amount": 1082231867027, - "lockTime": 0 + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" }, { - "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", - "amount": 1079272087137, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", - "amount": 1074404237418, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", - "amount": 1072794659776, - "lockTime": 0 - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "amount": 1071198777167, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", - "amount": 1062720026227, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", - "amount": 1058698633645, - "lockTime": 0 - }, - { - "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", - "amount": 1055829412151, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", - "amount": 1055000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", - "amount": 1053999366856, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", - "amount": 1047230969277, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", - "amount": 1043608175056, - "lockTime": 0 - }, - { - "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", - "amount": 1042372249596, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "amount": 1040224946221, - "lockTime": 0 - }, - { - "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", - "amount": 1038416336793, - "lockTime": 0 - }, - { - "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", - "amount": 1035780672679, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", - "amount": 1034849291290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", - "amount": 1029607508130, - "lockTime": 0 - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "amount": 1029354122846, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", - "amount": 1028188135067, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", - "amount": 1024835520677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", - "amount": 1015578194963, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", - "amount": 1013306751497, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", - "amount": 1012730982526, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", - "amount": 1012588485785, - "lockTime": 0 - }, - { - "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", - "amount": 1012198896427, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", - "amount": 1012011148542, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", - "amount": 1008346726631, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", - "amount": 1006956929151, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", - "amount": 1006539021466, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", - "amount": 1006148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", - "amount": 1003692029229, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", - "amount": 1001096397885, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", - "amount": 1000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", - "amount": 991095716221, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", - "amount": 990001111110, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", - "amount": 987788400255, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", - "amount": 987356288126, - "lockTime": 0 - }, - { - "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", - "amount": 985080141250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", - "amount": 983932110963, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", - "amount": 976594924298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", - "amount": 975225897104, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "amount": 974810436114, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", - "amount": 974597487651, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", - "amount": 973352161546, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", - "amount": 972522251795, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "amount": 971035036260, - "lockTime": 0 - }, - { - "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", - "amount": 968970761706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", - "amount": 965763074157, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", - "amount": 959479726731, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", - "amount": 959154694146, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", - "amount": 958869326580, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", - "amount": 958134697239, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", - "amount": 957639258961, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", - "amount": 951680110822, - "lockTime": 0 - }, - { - "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", - "amount": 949018017124, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", - "amount": 947722535330, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", - "amount": 944915546924, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", - "amount": 941831007188, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "amount": 938534599149, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", - "amount": 934183506679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", - "amount": 927367561109, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", - "amount": 924162741660, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", - "amount": 920900954170, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", - "amount": 919794036530, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", - "amount": 917970269675, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", - "amount": 915899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", - "amount": 910841811110, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", - "amount": 910062149681, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", - "amount": 907386128958, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", - "amount": 904132980217, - "lockTime": 0 - }, - { - "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", - "amount": 899701111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "amount": 899298000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", - "amount": 897589521866, - "lockTime": 0 - }, - { - "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", - "amount": 896974107111, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", - "amount": 896020618575, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", - "amount": 887343608898, - "lockTime": 0 - }, - { - "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", - "amount": 886547626290, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", - "amount": 884784999700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", - "amount": 881773485284, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", - "amount": 879996284959, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", - "amount": 877922858919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", - "amount": 870003633881, - "lockTime": 0 - }, - { - "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", - "amount": 869505911395, - "lockTime": 0 - }, - { - "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", - "amount": 869161533640, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", - "amount": 861846278471, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", - "amount": 860309429777, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", - "amount": 851033632200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", - "amount": 849182517814, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "amount": 845251874740, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", - "amount": 838330496026, - "lockTime": 0 - }, - { - "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", - "amount": 835415502146, - "lockTime": 0 - }, - { - "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", - "amount": 834732962466, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", - "amount": 833202279345, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", - "amount": 833137364069, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", - "amount": 830732461821, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", - "amount": 830430210879, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", - "amount": 830183327774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", - "amount": 828771701195, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", - "amount": 820650152627, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", - "amount": 817845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", - "amount": 811949320488, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "amount": 808628413295, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", - "amount": 803029504677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", - "amount": 800238336572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", - "amount": 798709479447, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "amount": 798218653505, - "lockTime": 0 - }, - { - "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", - "amount": 792686002383, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", - "amount": 789059928923, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", - "amount": 787813443027, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", - "amount": 786164407824, - "lockTime": 0 - }, - { - "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", - "amount": 784306203242, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", - "amount": 781311939095, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", - "amount": 778325647308, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", - "amount": 775694260050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", - "amount": 773749573171, - "lockTime": 0 - }, - { - "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", - "amount": 772689415122, - "lockTime": 0 - }, - { - "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", - "amount": 770274611201, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", - "amount": 769361580083, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", - "amount": 763145063210, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", - "amount": 762290565813, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", - "amount": 762157543635, - "lockTime": 0 - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "amount": 761551532758, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", - "amount": 760401111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", - "amount": 757415674634, - "lockTime": 0 - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "amount": 756905876678, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", - "amount": 755648204498, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", - "amount": 755461474324, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", - "amount": 751631538941, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", - "amount": 749769546618, - "lockTime": 0 - }, - { - "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", - "amount": 748967497030, - "lockTime": 0 - }, - { - "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", - "amount": 748111322930, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", - "amount": 747851114728, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", - "amount": 746470940518, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", - "amount": 746122073952, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", - "amount": 744516194522, - "lockTime": 0 - }, - { - "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", - "amount": 743849169051, - "lockTime": 0 - }, - { - "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", - "amount": 739638085218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "amount": 737947480291, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", - "amount": 737136696047, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "amount": 725274860466, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", - "amount": 724173124892, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", - "amount": 723670481621, - "lockTime": 0 - }, - { - "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", - "amount": 723194608282, - "lockTime": 0 - }, - { - "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", - "amount": 723168098780, - "lockTime": 0 - }, - { - "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", - "amount": 717889138351, - "lockTime": 0 - }, - { - "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", - "amount": 716901647085, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", - "amount": 716370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "amount": 715405091344, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", - "amount": 714099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", - "amount": 713335697927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", - "amount": 708807307987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", - "amount": 707593958267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", - "amount": 707065785077, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", - "amount": 706540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", - "amount": 705502900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", - "amount": 702744514797, - "lockTime": 0 - }, - { - "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", - "amount": 701804169652, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", - "amount": 701585334635, - "lockTime": 0 - }, - { - "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", - "amount": 701096309761, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", - "amount": 699928014706, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", - "amount": 699524889618, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", - "amount": 698872244628, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", - "amount": 695696346000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", - "amount": 690663699517, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", - "amount": 686055129452, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", - "amount": 683022637798, - "lockTime": 0 - }, - { - "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", - "amount": 679336310996, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "amount": 678591959669, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", - "amount": 677357601214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", - "amount": 675666996711, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", - "amount": 675200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", - "amount": 673451983271, - "lockTime": 0 - }, - { - "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", - "amount": 673382297009, - "lockTime": 0 - }, - { - "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", - "amount": 671924566621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", - "amount": 671667222783, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", - "amount": 667992367911, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", - "amount": 666907474237, - "lockTime": 0 - }, - { - "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", - "amount": 666500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", - "amount": 660973933588, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", - "amount": 658714559415, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", - "amount": 658513620604, - "lockTime": 0 - }, - { - "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", - "amount": 657440163873, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", - "amount": 657239700798, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", - "amount": 656919452718, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", - "amount": 653248487428, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", - "amount": 648157947682, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", - "amount": 647572905512, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", - "amount": 642940741252, - "lockTime": 0 - }, - { - "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", - "amount": 641055825467, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", - "amount": 640948206033, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", - "amount": 637896844713, - "lockTime": 0 - }, - { - "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", - "amount": 637626579463, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "amount": 637579061019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", - "amount": 637038357481, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", - "amount": 635886645100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", - "amount": 632414595111, - "lockTime": 0 - }, - { - "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", - "amount": 632346327509, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", - "amount": 631312503303, - "lockTime": 0 - }, - { - "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", - "amount": 630692902584, - "lockTime": 0 - }, - { - "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", - "amount": 628146752685, - "lockTime": 0 - }, - { - "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", - "amount": 623261133230, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", - "amount": 622101156482, - "lockTime": 0 - }, - { - "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", - "amount": 619718646321, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", - "amount": 618000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", - "amount": 616181029252, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", - "amount": 612835767567, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", - "amount": 612678347930, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", - "amount": 611849611901, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", - "amount": 610024780420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", - "amount": 608158543434, - "lockTime": 0 - }, - { - "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", - "amount": 607225574087, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", - "amount": 606018846202, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", - "amount": 604403457227, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", - "amount": 603629750073, - "lockTime": 0 - }, - { - "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", - "amount": 600068436472, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", - "amount": 600000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", - "amount": 594536999592, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", - "amount": 593971278473, - "lockTime": 0 - }, - { - "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", - "amount": 593453737557, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", - "amount": 592149000573, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", - "amount": 591343948315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", - "amount": 590147794384, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", - "amount": 589427904690, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", - "amount": 589101639752, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", - "amount": 587328009919, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", - "amount": 578398732113, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", - "amount": 577801478480, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", - "amount": 576018679993, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", - "amount": 569900403023, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", - "amount": 569650113992, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", - "amount": 569393267497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", - "amount": 568958051492, - "lockTime": 0 - }, - { - "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", - "amount": 565050721081, - "lockTime": 0 - }, - { - "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", - "amount": 564400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", - "amount": 563615729120, - "lockTime": 0 - }, - { - "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", - "amount": 563495866605, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", - "amount": 562853833696, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", - "amount": 561532227425, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", - "amount": 560643306238, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", - "amount": 560315306784, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", - "amount": 560109433484, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", - "amount": 559780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", - "amount": 558335103634, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", - "amount": 558264517323, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", - "amount": 556373804267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", - "amount": 555932491612, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "amount": 555256855786, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "amount": 554019878468, - "lockTime": 0 - }, - { - "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", - "amount": 553956815036, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", - "amount": 553357820256, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", - "amount": 553345846111, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", - "amount": 550463294337, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "amount": 549005803166, - "lockTime": 0 - }, - { - "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", - "amount": 548399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", - "amount": 548346950615, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", - "amount": 547306513126, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", - "amount": 547199231396, - "lockTime": 0 - }, - { - "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", - "amount": 546900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", - "amount": 545521200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", - "amount": 545447829788, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", - "amount": 542539414312, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", - "amount": 542498333713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", - "amount": 541776225012, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", - "amount": 541497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", - "amount": 538337569934, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", - "amount": 537317010767, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", - "amount": 535969093749, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", - "amount": 535648032586, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", - "amount": 534483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", - "amount": 533990655409, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "amount": 531581201080, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", - "amount": 531353802908, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", - "amount": 531234235475, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", - "amount": 526494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", - "amount": 526177896959, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", - "amount": 525656852695, - "lockTime": 0 - }, - { - "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", - "amount": 524899200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", - "amount": 524566137736, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", - "amount": 524195647436, - "lockTime": 0 - }, - { - "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", - "amount": 524052614831, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", - "amount": 523776871480, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", - "amount": 522880094674, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", - "amount": 522862146792, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", - "amount": 521812528958, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", - "amount": 521047898327, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", - "amount": 518446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", - "amount": 518328138145, - "lockTime": 0 - }, - { - "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", - "amount": 518193480000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", - "amount": 515148173657, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", - "amount": 514925249622, - "lockTime": 0 - }, - { - "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", - "amount": 513329405274, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", - "amount": 509993994435, - "lockTime": 0 - }, - { - "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", - "amount": 509957522308, - "lockTime": 0 - }, - { - "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", - "amount": 508541394000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", - "amount": 506667747103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", - "amount": 505549324249, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", - "amount": 505200074000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", - "amount": 504494000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", - "amount": 502930153612, - "lockTime": 0 - }, - { - "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", - "amount": 502646758879, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", - "amount": 502425261300, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", - "amount": 501898728304, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", - "amount": 500675297706, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", - "amount": 499448808034, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", - "amount": 498766624446, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", - "amount": 497860980149, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", - "amount": 497751300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", - "amount": 494921805000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", - "amount": 492449597049, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", - "amount": 491345439978, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", - "amount": 489208090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", - "amount": 483233520598, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", - "amount": 479710360399, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", - "amount": 479290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", - "amount": 478684589716, - "lockTime": 0 - }, - { - "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", - "amount": 477353124741, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", - "amount": 477075727467, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", - "amount": 473250342306, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", - "amount": 472372204860, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", - "amount": 471564327298, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", - "amount": 470996346069, - "lockTime": 0 - }, - { - "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", - "amount": 470135235865, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", - "amount": 469012617355, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", - "amount": 467516812000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", - "amount": 466445267258, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", - "amount": 464519265861, - "lockTime": 0 - }, - { - "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", - "amount": 462689900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "amount": 462305649621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", - "amount": 461868850874, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", - "amount": 460869939879, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", - "amount": 460585726599, - "lockTime": 0 - }, - { - "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", - "amount": 457195535843, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", - "amount": 456662894715, - "lockTime": 0 - }, - { - "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", - "amount": 454579427202, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", - "amount": 454068631040, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", - "amount": 453948855458, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", - "amount": 453669586663, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", - "amount": 452026578968, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", - "amount": 452018744239, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", - "amount": 451392168993, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", - "amount": 449595427480, - "lockTime": 0 - }, - { - "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", - "amount": 449593160254, - "lockTime": 0 - }, - { - "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", - "amount": 447344591171, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", - "amount": 446500258482, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", - "amount": 446240721255, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", - "amount": 444865048666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", - "amount": 444676790001, - "lockTime": 0 - }, - { - "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", - "amount": 443204831269, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", - "amount": 442328512225, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", - "amount": 442059271489, - "lockTime": 0 - }, - { - "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", - "amount": 440032057840, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", - "amount": 439271047149, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", - "amount": 437282541633, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", - "amount": 432765145447, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", - "amount": 431349975902, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", - "amount": 429267450244, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", - "amount": 429201334044, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", - "amount": 427674532103, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", - "amount": 427031616046, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", - "amount": 426298979353, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", - "amount": 425945935665, - "lockTime": 0 - }, - { - "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", - "amount": 424703213740, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", - "amount": 423021472475, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", - "amount": 422736872079, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", - "amount": 422511669854, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", - "amount": 420403236212, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", - "amount": 419844543209, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", - "amount": 419799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", - "amount": 419155971976, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "amount": 419078286625, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", - "amount": 418951929690, - "lockTime": 0 - }, - { - "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", - "amount": 418382689794, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", - "amount": 417921721020, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", - "amount": 417899749087, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", - "amount": 417880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", - "amount": 417679896875, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", - "amount": 415260300138, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", - "amount": 414705871837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", - "amount": 413485395750, - "lockTime": 0 - }, - { - "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", - "amount": 413208528187, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", - "amount": 413152125810, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", - "amount": 410838490020, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", - "amount": 410700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", - "amount": 410511629000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", - "amount": 410140392576, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", - "amount": 410000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", - "amount": 409825610683, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", - "amount": 409430238364, - "lockTime": 0 - }, - { - "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", - "amount": 408918063497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", - "amount": 407963673190, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "amount": 407719486341, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", - "amount": 407679331398, - "lockTime": 0 - }, - { - "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", - "amount": 407657901885, - "lockTime": 0 - }, - { - "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", - "amount": 407158997751, - "lockTime": 0 - }, - { - "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", - "amount": 407025707839, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", - "amount": 406811695036, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", - "amount": 406639658081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", - "amount": 406624706100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", - "amount": 405774110031, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", - "amount": 405129535061, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", - "amount": 404700591110, - "lockTime": 0 - }, - { - "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", - "amount": 404442900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", - "amount": 404020958522, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", - "amount": 403983941418, - "lockTime": 0 - }, - { - "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", - "amount": 403704048107, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "amount": 403565919731, - "lockTime": 0 - }, - { - "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", - "amount": 402208028191, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", - "amount": 401600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", - "amount": 400965989696, - "lockTime": 0 - }, - { - "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", - "amount": 400794578886, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", - "amount": 400771228716, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", - "amount": 400209502276, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", - "amount": 400165712520, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", - "amount": 400000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", - "amount": 399517172592, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "amount": 398239779263, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", - "amount": 396390860679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", - "amount": 396237000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", - "amount": 393348812910, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", - "amount": 393300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", - "amount": 392591247131, - "lockTime": 0 - }, - { - "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", - "amount": 390175947071, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", - "amount": 389632481201, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "amount": 388800988825, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", - "amount": 385593291168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", - "amount": 384676167415, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", - "amount": 383391492891, - "lockTime": 0 - }, - { - "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", - "amount": 382797942954, - "lockTime": 0 - }, - { - "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", - "amount": 382211187125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", - "amount": 381539113646, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", - "amount": 380247099724, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", - "amount": 380012940327, - "lockTime": 0 - }, - { - "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", - "amount": 379999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", - "amount": 379468365507, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", - "amount": 378455714491, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", - "amount": 375380072129, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", - "amount": 374997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", - "amount": 373612615415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", - "amount": 372882185379, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", - "amount": 372539432937, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", - "amount": 371199571236, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", - "amount": 370239188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", - "amount": 370079681706, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "amount": 367926716248, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", - "amount": 367665430762, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", - "amount": 367249772764, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", - "amount": 366726743585, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", - "amount": 366479061058, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", - "amount": 366422800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", - "amount": 366372749879, - "lockTime": 0 - }, - { - "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", - "amount": 365871378235, - "lockTime": 0 - }, - { - "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", - "amount": 364728390131, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", - "amount": 363103563674, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "amount": 361161634685, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", - "amount": 359478605247, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", - "amount": 359400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", - "amount": 359338917439, - "lockTime": 0 - }, - { - "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", - "amount": 358323700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", - "amount": 357329999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", - "amount": 355854965992, - "lockTime": 0 - }, - { - "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", - "amount": 354811786695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", - "amount": 354593224259, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", - "amount": 354349080107, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", - "amount": 354334037603, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", - "amount": 354084894170, - "lockTime": 0 - }, - { - "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", - "amount": 353728980000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", - "amount": 353268402658, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", - "amount": 350391644000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", - "amount": 349527692154, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", - "amount": 349069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", - "amount": 349062551934, - "lockTime": 0 - }, - { - "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", - "amount": 347358200128, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", - "amount": 346807254158, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", - "amount": 346199405075, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", - "amount": 346165116592, - "lockTime": 0 - }, - { - "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", - "amount": 344661550248, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", - "amount": 342974731957, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", - "amount": 342270909592, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", - "amount": 341639304154, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", - "amount": 341625294253, - "lockTime": 0 - }, - { - "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", - "amount": 341468951319, - "lockTime": 0 - }, - { - "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", - "amount": 340254213835, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", - "amount": 339496870584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", - "amount": 339163389311, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", - "amount": 339017024670, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", - "amount": 338249267550, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", - "amount": 336788660939, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", - "amount": 336051770441, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", - "amount": 336000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", - "amount": 335555231244, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", - "amount": 333957576542, - "lockTime": 0 - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "amount": 333565226024, - "lockTime": 0 - }, - { - "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", - "amount": 333201375971, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", - "amount": 327409836867, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", - "amount": 326742414445, - "lockTime": 0 - }, - { - "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", - "amount": 326127266600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", - "amount": 325150273667, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", - "amount": 325086535441, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", - "amount": 323576309188, - "lockTime": 0 - }, - { - "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", - "amount": 323498383211, - "lockTime": 0 - }, - { - "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", - "amount": 323280000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", - "amount": 323251968455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", - "amount": 322765586127, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", - "amount": 321688802000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", - "amount": 321288673558, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", - "amount": 319795499498, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", - "amount": 319576609148, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", - "amount": 319230743823, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", - "amount": 317545340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", - "amount": 316993829039, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", - "amount": 316241438388, - "lockTime": 0 - }, - { - "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", - "amount": 315967087268, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", - "amount": 315930604626, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", - "amount": 315731769642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", - "amount": 315504098614, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", - "amount": 315179801975, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", - "amount": 314924391191, - "lockTime": 0 - }, - { - "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", - "amount": 314479899982, - "lockTime": 0 - }, - { - "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", - "amount": 314286417638, - "lockTime": 0 - }, - { - "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", - "amount": 312318963292, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", - "amount": 310241999690, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", - "amount": 310169121476, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", - "amount": 310169007773, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", - "amount": 310036594600, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", - "amount": 309999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", - "amount": 309941777989, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", - "amount": 309368053478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", - "amount": 308872376748, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", - "amount": 307840538721, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", - "amount": 307407241618, - "lockTime": 0 - }, - { - "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", - "amount": 307242628281, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", - "amount": 306671692789, - "lockTime": 0 - }, - { - "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", - "amount": 306323752780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", - "amount": 306291953544, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", - "amount": 305903301397, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", - "amount": 305714507548, - "lockTime": 0 - }, - { - "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", - "amount": 304997317063, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", - "amount": 304919255846, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", - "amount": 304399267454, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "amount": 303801502864, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", - "amount": 303650000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", - "amount": 302649692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", - "amount": 302310884849, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", - "amount": 302201332163, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", - "amount": 301493782307, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", - "amount": 301347629576, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", - "amount": 301255822797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", - "amount": 300968881183, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", - "amount": 300908117517, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", - "amount": 300600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", - "amount": 300589200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "amount": 300440218184, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "amount": 300193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", - "amount": 300042348560, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", - "amount": 300010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", - "amount": 299800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", - "amount": 299735400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", - "amount": 299659164881, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", - "amount": 299455230049, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", - "amount": 298182413417, - "lockTime": 0 - }, - { - "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", - "amount": 298023266343, - "lockTime": 0 - }, - { - "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", - "amount": 297087133021, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", - "amount": 295690470221, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", - "amount": 295601231796, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", - "amount": 294998304547, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", - "amount": 293870506875, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", - "amount": 292999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", - "amount": 291735609000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", - "amount": 290100215048, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", - "amount": 289766402146, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", - "amount": 289372255571, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", - "amount": 288789683225, - "lockTime": 0 - }, - { - "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", - "amount": 288147628477, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", - "amount": 287976000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", - "amount": 287662787702, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", - "amount": 286611000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", - "amount": 285836281219, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "amount": 285130476546, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", - "amount": 284618307972, - "lockTime": 0 - }, - { - "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", - "amount": 283712671050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", - "amount": 283202683529, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", - "amount": 282063594884, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", - "amount": 281360140760, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", - "amount": 280743491075, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", - "amount": 280009150173, - "lockTime": 0 - }, - { - "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", - "amount": 279699500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", - "amount": 277556230625, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", - "amount": 277531813243, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", - "amount": 277168772897, - "lockTime": 0 - }, - { - "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", - "amount": 277163501063, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", - "amount": 276923863728, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", - "amount": 276751069724, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", - "amount": 275949632370, - "lockTime": 0 - }, - { - "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", - "amount": 275927593000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", - "amount": 275020000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", - "amount": 273799862715, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", - "amount": 273736045458, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", - "amount": 272989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", - "amount": 272755800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", - "amount": 272514555018, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", - "amount": 271906446703, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", - "amount": 271900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", - "amount": 271572785690, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", - "amount": 271548054095, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", - "amount": 270793342773, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", - "amount": 270658798910, - "lockTime": 0 - }, - { - "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", - "amount": 270091857578, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", - "amount": 269995149999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", - "amount": 269800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", - "amount": 268247018662, - "lockTime": 0 - }, - { - "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", - "amount": 267792700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", - "amount": 267245273073, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", - "amount": 267119581977, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", - "amount": 266391352254, - "lockTime": 0 - }, - { - "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", - "amount": 266196400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", - "amount": 266131162718, - "lockTime": 0 - }, - { - "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", - "amount": 264318648145, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", - "amount": 263527801714, - "lockTime": 0 - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "amount": 262975389505, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", - "amount": 262780932076, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", - "amount": 262471000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", - "amount": 261749022592, - "lockTime": 0 - }, - { - "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", - "amount": 261070344518, - "lockTime": 0 - }, - { - "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", - "amount": 260397418850, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", - "amount": 260120956196, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", - "amount": 260015100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", - "amount": 259757680000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", - "amount": 259239767599, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", - "amount": 258341100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", - "amount": 258339633939, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", - "amount": 258157345206, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", - "amount": 258123356221, - "lockTime": 0 - }, - { - "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", - "amount": 258064908003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "amount": 257992568066, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", - "amount": 257461156205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", - "amount": 257403985352, - "lockTime": 0 - }, - { - "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", - "amount": 257277568625, - "lockTime": 0 - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "amount": 257162512490, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", - "amount": 256544958461, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", - "amount": 256474842191, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", - "amount": 256143794076, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", - "amount": 255962443134, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", - "amount": 255424134364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", - "amount": 255019352085, - "lockTime": 0 - }, - { - "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", - "amount": 254820960826, - "lockTime": 0 - }, - { - "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", - "amount": 253869000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", - "amount": 253432540624, - "lockTime": 0 - }, - { - "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", - "amount": 252390365490, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", - "amount": 252203000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", - "amount": 251541968465, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", - "amount": 251524659521, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", - "amount": 251508940179, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", - "amount": 250990200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", - "amount": 250778414361, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", - "amount": 250747999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", - "amount": 250705826237, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", - "amount": 250495052902, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", - "amount": 249963485647, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", - "amount": 249935505992, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", - "amount": 249545300278, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "amount": 249227181030, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", - "amount": 248998351726, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", - "amount": 248524072858, - "lockTime": 0 - }, - { - "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", - "amount": 248465424307, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", - "amount": 248244749409, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", - "amount": 248060732879, - "lockTime": 0 - }, - { - "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", - "amount": 247696311635, - "lockTime": 0 - }, - { - "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", - "amount": 247606604191, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", - "amount": 246994469038, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", - "amount": 246290236302, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", - "amount": 245162999098, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", - "amount": 244890365598, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", - "amount": 244875480949, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", - "amount": 244290711899, - "lockTime": 0 - }, - { - "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", - "amount": 244075459558, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", - "amount": 244014799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", - "amount": 243917093003, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", - "amount": 243843301412, - "lockTime": 0 - }, - { - "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", - "amount": 243605054883, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", - "amount": 243360850625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", - "amount": 243300831867, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", - "amount": 243147267898, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", - "amount": 242760771420, - "lockTime": 0 - }, - { - "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", - "amount": 242594067000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", - "amount": 242573351436, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", - "amount": 242512485079, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", - "amount": 242492941103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", - "amount": 242203837357, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", - "amount": 242182540219, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", - "amount": 241861022033, - "lockTime": 0 - }, - { - "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", - "amount": 241849426391, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", - "amount": 241661661659, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", - "amount": 241623968574, - "lockTime": 0 - }, - { - "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", - "amount": 241227555046, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", - "amount": 241138570345, - "lockTime": 0 - }, - { - "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", - "amount": 240851027302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", - "amount": 240504931326, - "lockTime": 0 - }, - { - "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", - "amount": 240308171838, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", - "amount": 240237165262, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", - "amount": 240119011031, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", - "amount": 239900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", - "amount": 239806945993, - "lockTime": 0 - }, - { - "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", - "amount": 239801491795, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", - "amount": 239330301790, - "lockTime": 0 - }, - { - "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", - "amount": 239292654674, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", - "amount": 239279937261, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", - "amount": 239245805417, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", - "amount": 239205415111, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", - "amount": 239070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", - "amount": 239050558287, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", - "amount": 238982485492, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", - "amount": 238602457268, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", - "amount": 238589376707, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", - "amount": 238562283175, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", - "amount": 238318372576, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", - "amount": 238288506725, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", - "amount": 238228639309, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", - "amount": 238127703363, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", - "amount": 237987190598, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", - "amount": 237729204000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", - "amount": 237639274600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", - "amount": 237612083921, - "lockTime": 0 - }, - { - "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", - "amount": 237556931856, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", - "amount": 237453999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", - "amount": 237392111684, - "lockTime": 0 - }, - { - "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", - "amount": 237023271332, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", - "amount": 236821473583, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", - "amount": 236446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", - "amount": 236415322356, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", - "amount": 236326412172, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", - "amount": 236296322528, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", - "amount": 236231001378, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", - "amount": 236095569501, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", - "amount": 236002904511, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", - "amount": 235971564171, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", - "amount": 235923449617, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", - "amount": 235894723186, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", - "amount": 235618737704, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", - "amount": 235516325902, - "lockTime": 0 - }, - { - "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", - "amount": 235247618088, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", - "amount": 235165188182, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", - "amount": 235078006137, - "lockTime": 0 - }, - { - "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", - "amount": 234960610742, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", - "amount": 234592501512, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", - "amount": 234500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", - "amount": 234485977920, - "lockTime": 0 - }, - { - "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", - "amount": 234239046914, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", - "amount": 234216801941, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", - "amount": 234205450496, - "lockTime": 0 - }, - { - "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", - "amount": 233978982028, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", - "amount": 233923455601, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", - "amount": 233752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", - "amount": 233439815779, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", - "amount": 233395083626, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", - "amount": 233285586717, - "lockTime": 0 - }, - { - "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", - "amount": 232902383845, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", - "amount": 232848077502, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", - "amount": 232640483694, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", - "amount": 232557281320, - "lockTime": 0 - }, - { - "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", - "amount": 232521628575, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", - "amount": 232207181484, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", - "amount": 232201210478, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", - "amount": 232050104188, - "lockTime": 0 - }, - { - "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", - "amount": 231166048808, - "lockTime": 0 - }, - { - "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", - "amount": 230998600000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", - "amount": 230913312021, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", - "amount": 230866500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", - "amount": 230594393622, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", - "amount": 230272488302, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", - "amount": 230194937726, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", - "amount": 230142440634, - "lockTime": 0 - }, - { - "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", - "amount": 230090000629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", - "amount": 230000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", - "amount": 229528257221, - "lockTime": 0 - }, - { - "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", - "amount": 229504037719, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", - "amount": 229467102124, - "lockTime": 0 - }, - { - "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", - "amount": 229191678643, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", - "amount": 229042504057, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", - "amount": 228917996272, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", - "amount": 228899461213, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", - "amount": 228769649152, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", - "amount": 228754894051, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", - "amount": 228684937972, - "lockTime": 0 - }, - { - "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", - "amount": 228615395516, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", - "amount": 228462457260, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", - "amount": 228409141349, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", - "amount": 228299485720, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", - "amount": 228297794168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", - "amount": 228284534902, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", - "amount": 228047657402, - "lockTime": 0 - }, - { - "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", - "amount": 227815338192, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", - "amount": 227690423975, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", - "amount": 227542196733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", - "amount": 227422755927, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", - "amount": 227412331394, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", - "amount": 227390408963, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", - "amount": 227381121125, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", - "amount": 227286642424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "amount": 227179264162, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", - "amount": 227132911896, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", - "amount": 226934961616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", - "amount": 226736765102, - "lockTime": 0 - }, - { - "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", - "amount": 226572224194, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", - "amount": 226206619451, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", - "amount": 226152003996, - "lockTime": 0 - }, - { - "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", - "amount": 225894482083, - "lockTime": 0 - }, - { - "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", - "amount": 225859667154, - "lockTime": 0 - }, - { - "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", - "amount": 225839800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", - "amount": 225673160801, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", - "amount": 225410004000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", - "amount": 225365560392, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", - "amount": 225171798320, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", - "amount": 224993217772, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", - "amount": 224938072830, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", - "amount": 224900929477, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", - "amount": 224782794770, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", - "amount": 224777814150, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", - "amount": 224492888923, - "lockTime": 0 - }, - { - "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", - "amount": 224485699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", - "amount": 224346343200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", - "amount": 224292241252, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", - "amount": 223953992977, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", - "amount": 223900458142, - "lockTime": 0 - }, - { - "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", - "amount": 223786869276, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", - "amount": 223770132772, - "lockTime": 0 - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "amount": 223760990261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", - "amount": 223675539585, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", - "amount": 223383768271, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", - "amount": 223222169281, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", - "amount": 223219332090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", - "amount": 223209741000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", - "amount": 223071608704, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", - "amount": 223024624139, - "lockTime": 0 - }, - { - "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", - "amount": 222825046743, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", - "amount": 222589413218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", - "amount": 222513176054, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", - "amount": 222438879409, - "lockTime": 0 - }, - { - "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", - "amount": 222309229938, - "lockTime": 0 - }, - { - "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", - "amount": 222129207119, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", - "amount": 222124186814, - "lockTime": 0 - }, - { - "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", - "amount": 222084605276, - "lockTime": 0 - }, - { - "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", - "amount": 221993500333, - "lockTime": 0 - }, - { - "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", - "amount": 221991488296, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "amount": 221912705860, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "amount": 221892141803, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", - "amount": 221689787830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", - "amount": 221593294373, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", - "amount": 221501731956, - "lockTime": 0 - }, - { - "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", - "amount": 221436081752, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", - "amount": 221079714669, - "lockTime": 0 - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "amount": 221070976183, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", - "amount": 220699000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", - "amount": 220659692231, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", - "amount": 220557514300, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", - "amount": 220472335830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", - "amount": 220058770856, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", - "amount": 219999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", - "amount": 219112096408, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", - "amount": 218893337385, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", - "amount": 218739578269, - "lockTime": 0 - }, - { - "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", - "amount": 218606965875, - "lockTime": 0 - }, - { - "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", - "amount": 218312597733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", - "amount": 218138101472, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", - "amount": 218037694298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", - "amount": 217903275346, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", - "amount": 217798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", - "amount": 217515313055, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", - "amount": 217294141545, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", - "amount": 217267910811, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "amount": 217194444619, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", - "amount": 217108757438, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", - "amount": 217103542488, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", - "amount": 216912369612, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", - "amount": 216637134722, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", - "amount": 216535366335, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", - "amount": 216487988637, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", - "amount": 216447395998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", - "amount": 216294472267, - "lockTime": 0 - }, - { - "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", - "amount": 216286938750, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", - "amount": 215993162920, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", - "amount": 215808453584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", - "amount": 215778141346, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", - "amount": 215597178831, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", - "amount": 215395963077, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", - "amount": 215242029960, - "lockTime": 0 - }, - { - "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", - "amount": 215176736484, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", - "amount": 215091961569, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", - "amount": 214909200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", - "amount": 214891405341, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", - "amount": 214625498508, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", - "amount": 214620330985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", - "amount": 214600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", - "amount": 214598868478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", - "amount": 214116222972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", - "amount": 213879857622, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", - "amount": 213854937198, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", - "amount": 213623832274, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", - "amount": 213476358102, - "lockTime": 0 - }, - { - "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", - "amount": 213387838372, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", - "amount": 213372184141, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", - "amount": 213345000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", - "amount": 212838068329, - "lockTime": 0 - }, - { - "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", - "amount": 212810600890, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", - "amount": 212592057062, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", - "amount": 212342599261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", - "amount": 212246063543, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", - "amount": 212107475854, - "lockTime": 0 - }, - { - "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", - "amount": 212032600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", - "amount": 211980544581, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", - "amount": 211817494665, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", - "amount": 211612715577, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", - "amount": 211442822680, - "lockTime": 0 - }, - { - "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", - "amount": 211375702875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", - "amount": 211265866488, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", - "amount": 211257510810, - "lockTime": 0 - }, - { - "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", - "amount": 211247628424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", - "amount": 210973881797, - "lockTime": 0 - }, - { - "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", - "amount": 210942208378, - "lockTime": 0 - }, - { - "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", - "amount": 210871616089, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", - "amount": 210786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", - "amount": 210775625518, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", - "amount": 210729635400, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", - "amount": 210486729792, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "amount": 210444718664, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", - "amount": 210433370310, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", - "amount": 210411355132, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", - "amount": 210311765371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", - "amount": 210289217928, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", - "amount": 210228622943, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", - "amount": 210214659581, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", - "amount": 210201644288, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", - "amount": 210151075241, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", - "amount": 210099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", - "amount": 210083577331, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", - "amount": 210008084187, - "lockTime": 0 - }, - { - "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", - "amount": 210000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", - "amount": 209998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", - "amount": 209994825749, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", - "amount": 209986900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", - "amount": 209847916304, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", - "amount": 209618957536, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", - "amount": 209455857286, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", - "amount": 209233564043, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", - "amount": 209216890514, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", - "amount": 209089700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", - "amount": 209049161106, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", - "amount": 208906753025, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", - "amount": 208789130678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", - "amount": 208736836744, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", - "amount": 208341189511, - "lockTime": 0 - }, - { - "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", - "amount": 208324850910, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", - "amount": 208319507766, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", - "amount": 208294726061, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", - "amount": 208231715358, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", - "amount": 208219709890, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", - "amount": 208206908415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", - "amount": 208141036642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", - "amount": 207969483711, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", - "amount": 207912688636, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", - "amount": 207884700785, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", - "amount": 207746600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", - "amount": 207519996227, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", - "amount": 207436330031, - "lockTime": 0 - }, - { - "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", - "amount": 207395981374, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", - "amount": 207293597413, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", - "amount": 207260863357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", - "amount": 207183243259, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", - "amount": 207147237205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", - "amount": 207011757840, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", - "amount": 206883486133, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", - "amount": 206798225982, - "lockTime": 0 - }, - { - "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", - "amount": 206689352889, - "lockTime": 0 - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "amount": 206527611836, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", - "amount": 206227789036, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", - "amount": 206057398171, - "lockTime": 0 - }, - { - "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", - "amount": 205828590863, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "amount": 205816080972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", - "amount": 205719999997, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", - "amount": 205643023950, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", - "amount": 205521556523, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", - "amount": 205505133217, - "lockTime": 0 - }, - { - "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", - "amount": 205445476594, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", - "amount": 205424199743, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", - "amount": 205319991780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", - "amount": 205217833773, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", - "amount": 205024334977, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", - "amount": 204913500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", - "amount": 204890946477, - "lockTime": 0 - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "amount": 204816480948, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", - "amount": 204793572594, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", - "amount": 204753605945, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "amount": 204682617296, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", - "amount": 204662389728, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", - "amount": 204643234694, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", - "amount": 204630619047, - "lockTime": 0 - }, - { - "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", - "amount": 204610500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", - "amount": 204569999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", - "amount": 204559467596, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", - "amount": 204537127938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", - "amount": 204526271632, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", - "amount": 204518837670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", - "amount": 204366173469, - "lockTime": 0 - }, - { - "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", - "amount": 204207005754, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", - "amount": 204126857376, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", - "amount": 204080664515, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", - "amount": 204007776591, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", - "amount": 203995927637, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", - "amount": 203982317720, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", - "amount": 203866255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", - "amount": 203540651146, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", - "amount": 203403521806, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", - "amount": 203400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", - "amount": 203213029171, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", - "amount": 203208728839, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", - "amount": 203159077864, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "amount": 203155414462, - "lockTime": 0 - }, - { - "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", - "amount": 203117030969, - "lockTime": 0 - }, - { - "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", - "amount": 203058017876, - "lockTime": 0 - }, - { - "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", - "amount": 202864593708, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", - "amount": 202818215514, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", - "amount": 202617941616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", - "amount": 202546927054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", - "amount": 202400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", - "amount": 202388155273, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", - "amount": 202328801439, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", - "amount": 202279629229, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", - "amount": 202246385889, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", - "amount": 202203478406, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", - "amount": 201960660191, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", - "amount": 201907182221, - "lockTime": 0 - }, - { - "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", - "amount": 201897012982, - "lockTime": 0 - }, - { - "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", - "amount": 201881490359, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", - "amount": 201777201107, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", - "amount": 201719000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", - "amount": 201702679318, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", - "amount": 201588100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", - "amount": 201560932757, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", - "amount": 201485297013, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", - "amount": 201446465798, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", - "amount": 201240888253, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", - "amount": 201187671035, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", - "amount": 201140169745, - "lockTime": 0 - }, - { - "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", - "amount": 201061734183, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", - "amount": 201016751267, - "lockTime": 0 - }, - { - "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", - "amount": 200907812053, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", - "amount": 200896457460, - "lockTime": 0 - }, - { - "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", - "amount": 200882113012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", - "amount": 200745787959, - "lockTime": 0 - }, - { - "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", - "amount": 200744216315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", - "amount": 200678287955, - "lockTime": 0 - }, - { - "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", - "amount": 200601255596, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", - "amount": 200598491727, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", - "amount": 200499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", - "amount": 200493555205, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", - "amount": 200427000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", - "amount": 200300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", - "amount": 200286890266, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", - "amount": 200148648000, - "lockTime": 0 - }, - { - "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", - "amount": 200100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", - "amount": 200099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", - "amount": 200096400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", - "amount": 200096375737, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", - "amount": 200064418213, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", - "amount": 200009500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", - "amount": 199800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", - "amount": 199798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", - "amount": 199600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", - "amount": 198099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", - "amount": 197721057012, - "lockTime": 0 - }, - { - "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", - "amount": 196799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", - "amount": 196402595000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", - "amount": 194638321900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", - "amount": 193340000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", - "amount": 191510276936, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", - "amount": 190099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", - "amount": 189466940759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", - "amount": 189000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", - "amount": 187000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", - "amount": 185759900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", - "amount": 185000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", - "amount": 184534970264, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", - "amount": 183173800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", - "amount": 182200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", - "amount": 181007100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", - "amount": 179799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", - "amount": 179660100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", - "amount": 179530508841, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", - "amount": 178589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", - "amount": 176819999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", - "amount": 175970000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", - "amount": 175745491403, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", - "amount": 173819708000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", - "amount": 173717427150, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", - "amount": 172875307000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", - "amount": 172236267478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", - "amount": 171996789000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", - "amount": 170890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", - "amount": 170475832299, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", - "amount": 169932188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", - "amount": 169851533273, - "lockTime": 0 - }, - { - "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", - "amount": 168569000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "amount": 164696400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", - "amount": 163942237003, - "lockTime": 0 - }, - { - "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", - "amount": 163845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", - "amount": 162846871000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", - "amount": 161976000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", - "amount": 161042578796, - "lockTime": 0 - }, - { - "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", - "amount": 160860100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", - "amount": 160600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", - "amount": 160372720000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", - "amount": 159799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", - "amount": 159749400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", - "amount": 159080400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", - "amount": 157328900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", - "amount": 155664887800, - "lockTime": 0 - }, - { - "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", - "amount": 153394567227, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", - "amount": 153172452595, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", - "amount": 150436195353, - "lockTime": 0 - }, - { - "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", - "amount": 150180361000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", - "amount": 150179000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", - "amount": 149888097000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", - "amount": 147459247774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", - "amount": 147451400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", - "amount": 146967701181, - "lockTime": 0 - }, - { - "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", - "amount": 146360000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", - "amount": 144569406862, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", - "amount": 143991570100, - "lockTime": 0 - }, - { - "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", - "amount": 143754420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", - "amount": 143528000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", - "amount": 143330427801, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", - "amount": 143200606114, - "lockTime": 0 - }, - { - "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", - "amount": 142899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", - "amount": 142599999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", - "amount": 142576705000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", - "amount": 141897179025, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", - "amount": 140159000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", - "amount": 140061300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", - "amount": 140000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "amount": 138547500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", - "amount": 138218000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", - "amount": 137939100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", - "amount": 135497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", - "amount": 134899500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", - "amount": 134649900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", - "amount": 134630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", - "amount": 134408076000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", - "amount": 133869896000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", - "amount": 133699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", - "amount": 132660000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", - "amount": 128070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", - "amount": 127774675000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", - "amount": 127723293670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", - "amount": 126872000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", - "amount": 126772066912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", - "amount": 126148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", - "amount": 124884000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", - "amount": 124600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", - "amount": 124473399999, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", - "amount": 123939200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", - "amount": 123835943875, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", - "amount": 122922953000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", - "amount": 121391458773, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", - "amount": 120105578600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", - "amount": 120070377686, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", - "amount": 117401692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", - "amount": 116300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", - "amount": 115982900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", - "amount": 115148000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", - "amount": 114358959000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", - "amount": 113500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", - "amount": 111998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", - "amount": 111188400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", - "amount": 111127700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", - "amount": 110700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", - "amount": 110644000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", - "amount": 110597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", - "amount": 110388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", - "amount": 110249000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", - "amount": 110000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", - "amount": 109733407000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", - "amount": 109500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", - "amount": 108490400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", - "amount": 108113000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", - "amount": 107631800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", - "amount": 107114900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", - "amount": 107022500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", - "amount": 107008110706, - "lockTime": 0 - }, - { - "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", - "amount": 106692200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", - "amount": 106577618100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", - "amount": 105894391420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", - "amount": 105654440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", - "amount": 105092249306, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", - "amount": 105070966000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", - "amount": 104999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", - "amount": 104990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", - "amount": 104979643614, - "lockTime": 0 - }, - { - "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", - "amount": 104397300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", - "amount": 103669137000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", - "amount": 103368248405, - "lockTime": 0 - }, - { - "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", - "amount": 103129999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", - "amount": 102757144000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", - "amount": 102595400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", - "amount": 102400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", - "amount": 102332000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", - "amount": 102089316308, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", - "amount": 101552500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", - "amount": 101486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", - "amount": 101366800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", - "amount": 101240372600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", - "amount": 100998624904, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", - "amount": 100498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", - "amount": 100497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", - "amount": 100471709000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", - "amount": 100023000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", - "amount": 99999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", - "amount": 99999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", - "amount": 99929000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", - "amount": 99883361000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", - "amount": 99813607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", - "amount": 99770900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", - "amount": 99766607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", - "amount": 99739000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", - "amount": 99641607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", - "amount": 99600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", - "amount": 99550000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", - "amount": 99348122000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", - "amount": 99072000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", - "amount": 98999380525, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", - "amount": 98994800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", - "amount": 98500800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", - "amount": 97386670651, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", - "amount": 96797000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", - "amount": 96512400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", - "amount": 95216900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", - "amount": 95143129293, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", - "amount": 94980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", - "amount": 94900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", - "amount": 94815468500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", - "amount": 94544805785, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", - "amount": 93070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", - "amount": 92284199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", - "amount": 92146334000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", - "amount": 92079600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", - "amount": 91652255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", - "amount": 91600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", - "amount": 91428700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", - "amount": 91207700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", - "amount": 91177550000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", - "amount": 90842400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", - "amount": 90253380318, - "lockTime": 0 - }, - { - "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", - "amount": 89508000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", - "amount": 88450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", - "amount": 88210700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", - "amount": 87950511000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", - "amount": 87702232200, - "lockTime": 0 - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "amount": 86584236688, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", - "amount": 85236315422, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", - "amount": 85209400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", - "amount": 84851900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", - "amount": 84628962000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", - "amount": 84354700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", - "amount": 84000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", - "amount": 82849999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", - "amount": 82599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", - "amount": 81833537094, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", - "amount": 81438100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", - "amount": 81346500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", - "amount": 81319000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", - "amount": 81238400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", - "amount": 80979999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", - "amount": 80759600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", - "amount": 80662800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", - "amount": 80209698918, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", - "amount": 79586449402, - "lockTime": 0 - }, - { - "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", - "amount": 79199999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", - "amount": 79149213000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", - "amount": 79119750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", - "amount": 78719200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", - "amount": 78594348000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", - "amount": 77716188000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", - "amount": 77300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", - "amount": 77187901000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", - "amount": 77021300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", - "amount": 76976661037, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", - "amount": 76922000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", - "amount": 76767534308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", - "amount": 76593200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", - "amount": 76100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", - "amount": 75586994784, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", - "amount": 75248000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", - "amount": 75189717655, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", - "amount": 72752100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", - "amount": 72602999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", - "amount": 72350600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", - "amount": 72146400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", - "amount": 71951465416, - "lockTime": 0 - }, - { - "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", - "amount": 71670295800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", - "amount": 71227700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", - "amount": 71079999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", - "amount": 70313160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", - "amount": 70299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", - "amount": 70000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", - "amount": 69722281499, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", - "amount": 69678300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", - "amount": 69429500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", - "amount": 69361900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", - "amount": 69270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", - "amount": 69128800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", - "amount": 69018500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", - "amount": 68590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", - "amount": 68318000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", - "amount": 68101600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", - "amount": 68073000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", - "amount": 67901082549, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", - "amount": 67731200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", - "amount": 67695500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", - "amount": 67272200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", - "amount": 67143800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", - "amount": 66973500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", - "amount": 66813600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", - "amount": 66757600034, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", - "amount": 66219713000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", - "amount": 66086100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", - "amount": 65856300000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", - "amount": 65799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", - "amount": 65614200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", - "amount": 65013599999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", - "amount": 64930400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", - "amount": 64899054000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", - "amount": 64899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", - "amount": 64870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", - "amount": 64034900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", - "amount": 63934000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", - "amount": 63887312000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", - "amount": 63747670200, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", - "amount": 63626900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", - "amount": 63467900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", - "amount": 63430000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", - "amount": 63234400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", - "amount": 63156828976, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", - "amount": 62874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", - "amount": 62853700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", - "amount": 62337800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", - "amount": 62199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", - "amount": 61950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", - "amount": 61323000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", - "amount": 61203700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", - "amount": 61140539520, - "lockTime": 0 - }, - { - "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", - "amount": 60957390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", - "amount": 60937000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", - "amount": 60870116423, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", - "amount": 60867393483, - "lockTime": 0 - }, - { - "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", - "amount": 60399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", - "amount": 60100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", - "amount": 59999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", - "amount": 59694603871, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", - "amount": 59600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", - "amount": 59473000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", - "amount": 59139000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", - "amount": 58413181078, - "lockTime": 0 - }, - { - "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", - "amount": 58100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", - "amount": 57837499999, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", - "amount": 56999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", - "amount": 56786103000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", - "amount": 56762900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "amount": 56068000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", - "amount": 55842100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", - "amount": 55813324200, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", - "amount": 55768800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", - "amount": 55342600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", - "amount": 55152790000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", - "amount": 55079993858, - "lockTime": 0 - }, - { - "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", - "amount": 54998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", - "amount": 54900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", - "amount": 54657710000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", - "amount": 54451965288, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", - "amount": 54391900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", - "amount": 54268070388, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", - "amount": 53745200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", - "amount": 53344758172, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", - "amount": 53298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", - "amount": 53136809000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", - "amount": 53053000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", - "amount": 52980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", - "amount": 52825410000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", - "amount": 52750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", - "amount": 52500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", - "amount": 52499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", - "amount": 52490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", - "amount": 52318332000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", - "amount": 52220000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", - "amount": 52000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", - "amount": 51859000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", - "amount": 51634100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", - "amount": 50943200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", - "amount": 50886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", - "amount": 50700951878, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", - "amount": 50498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", - "amount": 50356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", - "amount": 50300910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", - "amount": 50269697720, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", - "amount": 50189255408, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", - "amount": 50186193571, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", - "amount": 50154100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", - "amount": 50099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", - "amount": 50078090000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", - "amount": 50065600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", - "amount": 50061800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", - "amount": 49998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", - "amount": 49914890700, - "lockTime": 0 - }, - { - "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", - "amount": 49890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", - "amount": 49812000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", - "amount": 49749200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", - "amount": 49707405000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", - "amount": 49646500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", - "amount": 49366875200, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", - "amount": 49166829700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", - "amount": 48998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", - "amount": 48877000000, - "lockTime": 0 - }, - { - "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", - "amount": 48629000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", - "amount": 48560000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", - "amount": 47956500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", - "amount": 47186250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "amount": 47150700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", - "amount": 46778000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", - "amount": 46552400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", - "amount": 46008300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", - "amount": 45950700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", - "amount": 45563300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", - "amount": 45094000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", - "amount": 44876000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", - "amount": 44660000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", - "amount": 44554400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", - "amount": 44400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", - "amount": 44399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", - "amount": 44047211000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", - "amount": 43939123000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", - "amount": 43691265090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", - "amount": 42990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", - "amount": 42497700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", - "amount": 42323179512, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", - "amount": 42076767999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "amount": 42059505500, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", - "amount": 41460000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", - "amount": 41398385361, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", - "amount": 41356600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", - "amount": 41356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", - "amount": 41317657361, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", - "amount": 41257700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", - "amount": 40875000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", - "amount": 40712518500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", - "amount": 40657700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", - "amount": 40554940000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", - "amount": 40414000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", - "amount": 40219500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", - "amount": 40198767300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", - "amount": 40100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", - "amount": 40069900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", - "amount": 40000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", - "amount": 39959500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", - "amount": 39570000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", - "amount": 39391169400, - "lockTime": 0 - }, - { - "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", - "amount": 39347482300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", - "amount": 39158367200, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", - "amount": 39042600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", - "amount": 38841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", - "amount": 38500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", - "amount": 38461400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", - "amount": 37770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", - "amount": 37700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", - "amount": 37661300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", - "amount": 37236000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", - "amount": 37233000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", - "amount": 36990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", - "amount": 36921669615, - "lockTime": 0 - }, - { - "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", - "amount": 36800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", - "amount": 36600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", - "amount": 36263040000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", - "amount": 36193000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", - "amount": 36108760000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", - "amount": 36043896300, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", - "amount": 35986300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", - "amount": 35876899931, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", - "amount": 35542231000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", - "amount": 35208496801, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", - "amount": 35165970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", - "amount": 34825460800, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", - "amount": 34647125016, - "lockTime": 0 - }, - { - "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", - "amount": 34300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", - "amount": 34164800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", - "amount": 34160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "amount": 33787000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", - "amount": 33548484600, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", - "amount": 33312302021, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", - "amount": 32989999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", - "amount": 32853000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", - "amount": 32732976600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", - "amount": 32665203261, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", - "amount": 32652199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", - "amount": 32232300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", - "amount": 32158700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", - "amount": 32087462800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", - "amount": 31878000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", - "amount": 31868002700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", - "amount": 31575100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", - "amount": 31543436900, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", - "amount": 31480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", - "amount": 31465657970, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", - "amount": 31438419609, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", - "amount": 31400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", - "amount": 31366599999, - "lockTime": 0 - }, - { - "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", - "amount": 31182208137, - "lockTime": 0 - }, - { - "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", - "amount": 30965715000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", - "amount": 30900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", - "amount": 30657800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", - "amount": 30498000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", - "amount": 30467500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", - "amount": 30290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", - "amount": 30180000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", - "amount": 30174263931, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", - "amount": 30099900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", - "amount": 29999900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", - "amount": 29999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", - "amount": 29999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", - "amount": 29998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", - "amount": 29942130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", - "amount": 29870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", - "amount": 29770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", - "amount": 29741224000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", - "amount": 29660400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", - "amount": 29551500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", - "amount": 29495400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", - "amount": 29454642135, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", - "amount": 29400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", - "amount": 29399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", - "amount": 29389999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", - "amount": 29311638287, - "lockTime": 0 - }, - { - "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", - "amount": 29062800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", - "amount": 28878900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", - "amount": 28668300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", - "amount": 28478000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", - "amount": 28470499999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", - "amount": 28391130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", - "amount": 28170841650, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", - "amount": 28100900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", - "amount": 27858044502, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", - "amount": 27689480000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", - "amount": 27590369900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", - "amount": 27380622000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", - "amount": 27236302635, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", - "amount": 27191800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", - "amount": 26999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", - "amount": 26712815029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", - "amount": 26671300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", - "amount": 26663000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", - "amount": 26475900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", - "amount": 26470261125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", - "amount": 26381164785, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", - "amount": 26093400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", - "amount": 25999014184, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", - "amount": 25999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", - "amount": 25899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "amount": 25843006000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", - "amount": 25827736000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "amount": 25798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", - "amount": 25773900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", - "amount": 25690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", - "amount": 25666500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", - "amount": 25343701700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", - "amount": 25330666000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", - "amount": 25288857000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", - "amount": 25278000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", - "amount": 25200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", - "amount": 25104700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", - "amount": 25079894000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", - "amount": 25030013835, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", - "amount": 25019500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", - "amount": 25000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", - "amount": 24774400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", - "amount": 24451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", - "amount": 24428250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", - "amount": 24400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", - "amount": 24374600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", - "amount": 24327611100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", - "amount": 24247347000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", - "amount": 24237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", - "amount": 24000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "amount": 23796635680, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", - "amount": 23677500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", - "amount": 23676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", - "amount": 23597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", - "amount": 23480846691, - "lockTime": 0 - }, - { - "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", - "amount": 23313510000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", - "amount": 23301306295, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", - "amount": 23290700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", - "amount": 23200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", - "amount": 23199766150, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", - "amount": 23175800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", - "amount": 23172336000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", - "amount": 23055202000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", - "amount": 22874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", - "amount": 22863800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", - "amount": 22851185400, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", - "amount": 22827000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", - "amount": 22776200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", - "amount": 22462600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", - "amount": 22332600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", - "amount": 22306670000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", - "amount": 22219300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", - "amount": 22218521314, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", - "amount": 22194483000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", - "amount": 22122900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", - "amount": 22099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", - "amount": 22088100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", - "amount": 21927600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", - "amount": 21922330518, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", - "amount": 21874100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", - "amount": 21760500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", - "amount": 21658000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", - "amount": 21276886097, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", - "amount": 21190500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", - "amount": 21098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "amount": 21023770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", - "amount": 20997294776, - "lockTime": 0 - }, - { - "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", - "amount": 20978000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", - "amount": 20898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", - "amount": 20845100816, - "lockTime": 0 - }, - { - "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", - "amount": 20696349700, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", - "amount": 20690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", - "amount": 20559500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", - "amount": 20541631000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", - "amount": 20509670000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", - "amount": 20509200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", - "amount": 20470000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", - "amount": 20449000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", - "amount": 20399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", - "amount": 20387000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", - "amount": 20347033837, - "lockTime": 0 - }, - { - "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", - "amount": 20297000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", - "amount": 20295000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", - "amount": 20256200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", - "amount": 20223000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", - "amount": 20192737678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", - "amount": 20102587502, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", - "amount": 20098500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", - "amount": 20096800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", - "amount": 20080000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", - "amount": 20069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", - "amount": 20058864588, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", - "amount": 20039700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", - "amount": 20013767126, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", - "amount": 20011444000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", - "amount": 19999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", - "amount": 19946031400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", - "amount": 19909800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", - "amount": 19903940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", - "amount": 19879100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", - "amount": 19870000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", - "amount": 19855400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", - "amount": 19849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", - "amount": 19840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", - "amount": 19811218050, - "lockTime": 0 - }, - { - "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", - "amount": 19800100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", - "amount": 19780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", - "amount": 19779200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", - "amount": 19778040999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", - "amount": 19753222500, - "lockTime": 0 - }, - { - "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", - "amount": 19735198768, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "amount": 19710051725, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", - "amount": 19655460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", - "amount": 19600400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", - "amount": 19598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", - "amount": 19483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", - "amount": 19470200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", - "amount": 19418000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", - "amount": 19070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", - "amount": 19063899540, - "lockTime": 0 - }, - { - "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", - "amount": 18900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", - "amount": 18844200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", - "amount": 18800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", - "amount": 18737886700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", - "amount": 18570420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", - "amount": 18380100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", - "amount": 17999040000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", - "amount": 17998300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", - "amount": 17945700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", - "amount": 17781200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", - "amount": 17659300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", - "amount": 17602940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", - "amount": 17579400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", - "amount": 17498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", - "amount": 17457984000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", - "amount": 17374939230, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", - "amount": 17306763012, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", - "amount": 17112344000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", - "amount": 17090000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", - "amount": 17081500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", - "amount": 17069999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", - "amount": 16998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", - "amount": 16941000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", - "amount": 16781200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", - "amount": 16718832900, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", - "amount": 16436987700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", - "amount": 16383538200, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", - "amount": 16253600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", - "amount": 15999900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", - "amount": 15983699999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", - "amount": 15784520000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", - "amount": 15783200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", - "amount": 15687100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", - "amount": 15646596372, - "lockTime": 0 - }, - { - "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", - "amount": 15614274000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", - "amount": 15589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", - "amount": 15530000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", - "amount": 15500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", - "amount": 15440000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", - "amount": 15299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", - "amount": 15280000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", - "amount": 15099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", - "amount": 15095690000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", - "amount": 15075000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", - "amount": 15070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", - "amount": 15043040600, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", - "amount": 15036965552, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", - "amount": 15000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", - "amount": 14999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", - "amount": 14998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", - "amount": 14881000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", - "amount": 14815000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", - "amount": 14698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", - "amount": 14574000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", - "amount": 14545300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", - "amount": 14445300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", - "amount": 14416766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", - "amount": 14373548062, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", - "amount": 14268090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", - "amount": 14160899566, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", - "amount": 14100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", - "amount": 14000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", - "amount": 13999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", - "amount": 13898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", - "amount": 13884699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", - "amount": 13858820278, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", - "amount": 13758000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", - "amount": 13692000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", - "amount": 13667204136, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", - "amount": 13600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", - "amount": 13597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", - "amount": 13517041027, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", - "amount": 13464000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", - "amount": 13433938024, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", - "amount": 13426650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", - "amount": 13380701400, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", - "amount": 13378150321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", - "amount": 13304681000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", - "amount": 13231106000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", - "amount": 13199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", - "amount": 13195950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", - "amount": 13147200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", - "amount": 13098000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", - "amount": 13073920200, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", - "amount": 13000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", - "amount": 12966859999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", - "amount": 12950258399, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "amount": 12825869423, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", - "amount": 12818200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", - "amount": 12815729681, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", - "amount": 12804488800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", - "amount": 12746568000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", - "amount": 12700000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "amount": 12588000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", - "amount": 12540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", - "amount": 12500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", - "amount": 12399100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", - "amount": 12390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", - "amount": 12277600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", - "amount": 12267600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", - "amount": 12258770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", - "amount": 12187500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", - "amount": 12186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", - "amount": 12182253278, - "lockTime": 0 - }, - { - "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", - "amount": 12156100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", - "amount": 12118929786, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", - "amount": 12055793000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", - "amount": 12047600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", - "amount": 12019521136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", - "amount": 12006700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", - "amount": 11970000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", - "amount": 11887800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", - "amount": 11839000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", - "amount": 11804492730, - "lockTime": 0 - }, - { - "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", - "amount": 11720000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", - "amount": 11675600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", - "amount": 11490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", - "amount": 11422404709, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", - "amount": 11414300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", - "amount": 11299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", - "amount": 11231521140, - "lockTime": 0 - }, - { - "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", - "amount": 11223125100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", - "amount": 11207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", - "amount": 11199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", - "amount": 11195500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", - "amount": 10999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "amount": 10997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", - "amount": 10988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", - "amount": 10987000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", - "amount": 10975527776, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", - "amount": 10958800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", - "amount": 10950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", - "amount": 10929400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", - "amount": 10911299487, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", - "amount": 10898800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", - "amount": 10887100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", - "amount": 10788200000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", - "amount": 10740140300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", - "amount": 10724095712, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", - "amount": 10659000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", - "amount": 10588400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", - "amount": 10567591900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", - "amount": 10499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", - "amount": 10498653350, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", - "amount": 10469338925, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", - "amount": 10459400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", - "amount": 10457675800, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", - "amount": 10454530000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", - "amount": 10399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", - "amount": 10393000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", - "amount": 10382594000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", - "amount": 10369000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", - "amount": 10340000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", - "amount": 10318602800, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", - "amount": 10272100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", - "amount": 10213000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", - "amount": 10199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", - "amount": 10189000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", - "amount": 10188800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "amount": 10166320000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", - "amount": 10157754500, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", - "amount": 10131836000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", - "amount": 10100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", - "amount": 10099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", - "amount": 10098699625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", - "amount": 10091000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", - "amount": 10090100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", - "amount": 10088900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", - "amount": 10086900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", - "amount": 10076174566, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", - "amount": 10068058100, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", - "amount": 10058000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", - "amount": 10049600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", - "amount": 10047920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", - "amount": 9998790375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", - "amount": 9990834200, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", - "amount": 9989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", - "amount": 9988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "amount": 9976600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", - "amount": 9954300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", - "amount": 9919900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", - "amount": 9882089798, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", - "amount": 9825315093, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", - "amount": 9799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", - "amount": 9796583105, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", - "amount": 9769964669, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", - "amount": 9769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", - "amount": 9700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", - "amount": 9628000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", - "amount": 9600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", - "amount": 9589185669, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", - "amount": 9549440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", - "amount": 9069093000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", - "amount": 8996073325, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", - "amount": 8992200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", - "amount": 8989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", - "amount": 8980569965, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", - "amount": 8880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", - "amount": 8681200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", - "amount": 8588300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", - "amount": 8523917503, - "lockTime": 0 - }, - { - "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", - "amount": 8459300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", - "amount": 8450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", - "amount": 8419755589, - "lockTime": 0 - }, - { - "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", - "amount": 8407923000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", - "amount": 8388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", - "amount": 8353569832, - "lockTime": 0 - }, - { - "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", - "amount": 8346200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", - "amount": 8292062999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", - "amount": 8280070700, - "lockTime": 0 - }, - { - "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", - "amount": 8157225337, - "lockTime": 0 - }, - { - "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", - "amount": 8146893864, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", - "amount": 8126787800, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", - "amount": 8054930643, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", - "amount": 8000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", - "amount": 7987800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", - "amount": 7812882000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", - "amount": 7800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", - "amount": 7755644700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", - "amount": 7725500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", - "amount": 7700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", - "amount": 7670080275, - "lockTime": 0 - }, - { - "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", - "amount": 7578800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", - "amount": 7542315000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", - "amount": 7534799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", - "amount": 7459896000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", - "amount": 7440887640, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", - "amount": 7391600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", - "amount": 7382500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", - "amount": 7350000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", - "amount": 7332570100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", - "amount": 7232500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", - "amount": 7224441246, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", - "amount": 7184700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", - "amount": 7067073816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", - "amount": 7000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", - "amount": 6979000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", - "amount": 6880500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", - "amount": 6842707290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", - "amount": 6799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", - "amount": 6732000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", - "amount": 6679070393, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", - "amount": 6650286683, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", - "amount": 6557294931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", - "amount": 6536849903, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", - "amount": 6535640000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", - "amount": 6506096000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", - "amount": 6492500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", - "amount": 6489950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", - "amount": 6298900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", - "amount": 6274400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", - "amount": 6229600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", - "amount": 6183279100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", - "amount": 6174500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", - "amount": 6044740883, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", - "amount": 6000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", - "amount": 5999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", - "amount": 5998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", - "amount": 5993000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", - "amount": 5923000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", - "amount": 5904944000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", - "amount": 5893100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", - "amount": 5863130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", - "amount": 5857830000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", - "amount": 5844910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", - "amount": 5841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", - "amount": 5823987520, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", - "amount": 5793200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", - "amount": 5792661600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", - "amount": 5769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", - "amount": 5752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", - "amount": 5695000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", - "amount": 5693666875, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", - "amount": 5693300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", - "amount": 5670000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", - "amount": 5617900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", - "amount": 5504000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", - "amount": 5500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", - "amount": 5498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", - "amount": 5493500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", - "amount": 5445100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", - "amount": 5402055200, - "lockTime": 0 - }, - { - "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", - "amount": 5389000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", - "amount": 5354500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", - "amount": 5314881000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", - "amount": 5305118140, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", - "amount": 5261361095, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", - "amount": 5200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", - "amount": 5193800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", - "amount": 5184800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", - "amount": 5129000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", - "amount": 5127954000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", - "amount": 5114700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", - "amount": 5098634900, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", - "amount": 5051398560, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", - "amount": 5030000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", - "amount": 5024759000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", - "amount": 5023705100, - "lockTime": 0 - }, - { - "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", - "amount": 5022200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", - "amount": 5004340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", - "amount": 4994600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", - "amount": 4975001000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", - "amount": 4950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", - "amount": 4944951000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", - "amount": 4944722100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", - "amount": 4898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", - "amount": 4858098201, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", - "amount": 4835000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", - "amount": 4813550181, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", - "amount": 4799400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "amount": 4750102081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", - "amount": 4655000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", - "amount": 4508590000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", - "amount": 4500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", - "amount": 4494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", - "amount": 4475300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", - "amount": 4457277000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", - "amount": 4455814869, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", - "amount": 4398000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", - "amount": 4294700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", - "amount": 4238000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", - "amount": 4194800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", - "amount": 4177036013, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", - "amount": 4100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", - "amount": 4063118687, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", - "amount": 4014247000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", - "amount": 4010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", - "amount": 4000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", - "amount": 3999100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", - "amount": 3998780750, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", - "amount": 3994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", - "amount": 3993200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", - "amount": 3899718575, - "lockTime": 0 - }, - { - "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", - "amount": 3886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", - "amount": 3880000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", - "amount": 3799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", - "amount": 3776900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", - "amount": 3750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", - "amount": 3601350000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", - "amount": 3596300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", - "amount": 3578798656, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", - "amount": 3564038000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", - "amount": 3528200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", - "amount": 3497804834, - "lockTime": 0 - }, - { - "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", - "amount": 3488228657, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", - "amount": 3394800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", - "amount": 3387304999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", - "amount": 3345900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", - "amount": 3331000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", - "amount": 3299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", - "amount": 3296200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", - "amount": 3295700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", - "amount": 3274970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", - "amount": 3269170000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", - "amount": 3262079400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", - "amount": 3254660000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", - "amount": 3249140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", - "amount": 3218320000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "amount": 3192291145, - "lockTime": 0 - }, - { - "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", - "amount": 3191670000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", - "amount": 3173000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", - "amount": 3111740000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", - "amount": 3087440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", - "amount": 3062583425, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", - "amount": 3051500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", - "amount": 3012657406, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", - "amount": 3005080000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", - "amount": 2999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", - "amount": 2988840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", - "amount": 2936800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", - "amount": 2910820000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", - "amount": 2901460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", - "amount": 2900750000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", - "amount": 2899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", - "amount": 2896970000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", - "amount": 2887000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", - "amount": 2868000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", - "amount": 2867000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", - "amount": 2836000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", - "amount": 2799100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", - "amount": 2799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", - "amount": 2796200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", - "amount": 2795672800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", - "amount": 2783891200, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", - "amount": 2772000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", - "amount": 2733439115, - "lockTime": 0 - }, - { - "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", - "amount": 2728600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", - "amount": 2720000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", - "amount": 2600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", - "amount": 2599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", - "amount": 2598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", - "amount": 2589900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", - "amount": 2541627000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", - "amount": 2501000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", - "amount": 2500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", - "amount": 2489281556, - "lockTime": 0 - }, - { - "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", - "amount": 2451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", - "amount": 2433606700, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", - "amount": 2400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", - "amount": 2380142333, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", - "amount": 2374750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", - "amount": 2354900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", - "amount": 2354092984, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", - "amount": 2317200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", - "amount": 2300880000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", - "amount": 2299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", - "amount": 2264724000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", - "amount": 2257200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", - "amount": 2255457300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", - "amount": 2254824000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", - "amount": 2250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", - "amount": 2237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", - "amount": 2236440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", - "amount": 2206700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", - "amount": 2200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", - "amount": 2199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", - "amount": 2175723000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", - "amount": 2160622295, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", - "amount": 2156631687, - "lockTime": 0 - }, - { - "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", - "amount": 2021747535, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "amount": 2018971225, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", - "amount": 2011370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", - "amount": 2008604700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", - "amount": 1999500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", - "amount": 1998900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", - "amount": 1997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", - "amount": 1981380000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", - "amount": 1901162000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", - "amount": 1900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", - "amount": 1897700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", - "amount": 1890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", - "amount": 1880999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", - "amount": 1850000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", - "amount": 1849370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", - "amount": 1832290591, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", - "amount": 1810650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", - "amount": 1802732700, - "lockTime": 0 - }, - { - "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", - "amount": 1797800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", - "amount": 1791408000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", - "amount": 1786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", - "amount": 1770120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", - "amount": 1701600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", - "amount": 1699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", - "amount": 1698200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", - "amount": 1678100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", - "amount": 1662000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", - "amount": 1630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", - "amount": 1599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", - "amount": 1597108047, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", - "amount": 1567500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "amount": 1565400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", - "amount": 1550000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", - "amount": 1486859411, - "lockTime": 0 - }, - { - "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", - "amount": 1476989000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", - "amount": 1475160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", - "amount": 1472790000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", - "amount": 1465255698, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", - "amount": 1457099103, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", - "amount": 1449454625, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", - "amount": 1448442313, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", - "amount": 1434000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", - "amount": 1425300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", - "amount": 1419840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", - "amount": 1405309144, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", - "amount": 1400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", - "amount": 1397138909, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "amount": 1375366150, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", - "amount": 1368900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", - "amount": 1323940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", - "amount": 1302470000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", - "amount": 1297700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", - "amount": 1270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "amount": 1237234575, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", - "amount": 1230000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", - "amount": 1214000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", - "amount": 1209000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", - "amount": 1199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", - "amount": 1197009000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", - "amount": 1196800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", - "amount": 1193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", - "amount": 1165732400, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", - "amount": 1158800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", - "amount": 1127625246, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", - "amount": 1116439043, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", - "amount": 1115760893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", - "amount": 1109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", - "amount": 1105416011, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", - "amount": 1099800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", - "amount": 1099702467, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", - "amount": 1099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", - "amount": 1098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", - "amount": 1097900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", - "amount": 1097736525, - "lockTime": 0 - }, - { - "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", - "amount": 1093877315, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", - "amount": 1088626560, - "lockTime": 0 - }, - { - "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", - "amount": 1086745966, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", - "amount": 1079900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", - "amount": 1076500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", - "amount": 1071543823, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", - "amount": 1057000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", - "amount": 1049000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", - "amount": 1048250300, - "lockTime": 0 - }, - { - "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", - "amount": 1047400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", - "amount": 1042335949, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", - "amount": 1038462866, - "lockTime": 0 - }, - { - "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", - "amount": 1026196953, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", - "amount": 1019307289, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", - "amount": 1010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", - "amount": 999990000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", - "amount": 999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", - "amount": 998911825, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", - "amount": 998500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", - "amount": 989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", - "amount": 987856800, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", - "amount": 983811025, - "lockTime": 0 - }, - { - "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", - "amount": 966477381, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", - "amount": 964816000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", - "amount": 951999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", - "amount": 950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", - "amount": 949000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", - "amount": 924012466, - "lockTime": 0 - }, - { - "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", - "amount": 922876000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "amount": 921549763, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", - "amount": 919375062, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", - "amount": 911126500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", - "amount": 910000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", - "amount": 906118999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", - "amount": 888000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", - "amount": 884000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", - "amount": 867523406, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", - "amount": 866000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", - "amount": 849500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", - "amount": 849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", - "amount": 848500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", - "amount": 840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", - "amount": 825000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", - "amount": 820716695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", - "amount": 818412190, - "lockTime": 0 - }, - { - "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", - "amount": 810000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", - "amount": 808000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", - "amount": 799731825, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", - "amount": 795500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", - "amount": 793000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", - "amount": 782000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", - "amount": 778716384, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", - "amount": 778100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", - "amount": 775000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", - "amount": 764698197, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", - "amount": 750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", - "amount": 732384154, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", - "amount": 728492845, - "lockTime": 0 - }, - { - "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", - "amount": 723650393, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", - "amount": 722926273, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", - "amount": 714581000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", - "amount": 713000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", - "amount": 711000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", - "amount": 709820317, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "amount": 705454541, - "lockTime": 0 - }, - { - "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", - "amount": 704000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", - "amount": 702883600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", - "amount": 699267300, - "lockTime": 0 - }, - { - "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", - "amount": 699211700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", - "amount": 698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", - "amount": 687299600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", - "amount": 684000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", - "amount": 681750844, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", - "amount": 676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", - "amount": 674598000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", - "amount": 670135839, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", - "amount": 669340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "amount": 669317799, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", - "amount": 657685055, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", - "amount": 655904931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", - "amount": 648825325, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", - "amount": 644200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", - "amount": 641665200, - "lockTime": 0 - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "amount": 641442294, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", - "amount": 638316000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", - "amount": 638290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", - "amount": 637310635, - "lockTime": 0 - }, - { - "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", - "amount": 637000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", - "amount": 636638405, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", - "amount": 613354540, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", - "amount": 610000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", - "amount": 606500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "amount": 600658627, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", - "amount": 599892000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", - "amount": 598400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", - "amount": 597900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", - "amount": 597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", - "amount": 590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", - "amount": 586928090, - "lockTime": 0 - }, - { - "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", - "amount": 569133800, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", - "amount": 568400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", - "amount": 563347505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", - "amount": 558000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", - "amount": 554388330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", - "amount": 551000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", - "amount": 548700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", - "amount": 540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", - "amount": 539300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", - "amount": 525710000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", - "amount": 519900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", - "amount": 518165513, - "lockTime": 0 - }, - { - "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", - "amount": 516997141, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", - "amount": 510000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", - "amount": 509521992, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", - "amount": 509000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", - "amount": 508500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "amount": 506103993, - "lockTime": 0 - }, - { - "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", - "amount": 504607913, - "lockTime": 0 - }, - { - "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", - "amount": 501257116, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", - "amount": 499767300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", - "amount": 499700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", - "amount": 499500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", - "amount": 499400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", - "amount": 498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", - "amount": 498300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", - "amount": 498000732, - "lockTime": 0 - }, - { - "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", - "amount": 497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", - "amount": 494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", - "amount": 491597000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", - "amount": 491336919, - "lockTime": 0 - }, - { - "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", - "amount": 490199678, - "lockTime": 0 - }, - { - "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", - "amount": 490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", - "amount": 489560572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", - "amount": 489000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", - "amount": 486701915, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", - "amount": 486552834, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", - "amount": 486400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", - "amount": 486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", - "amount": 482424197, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", - "amount": 480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", - "amount": 475353211, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", - "amount": 473898911, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", - "amount": 471699724, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", - "amount": 465061855, - "lockTime": 0 - }, - { - "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", - "amount": 457300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", - "amount": 455700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", - "amount": 455200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", - "amount": 453969673, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", - "amount": 450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", - "amount": 446000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", - "amount": 445000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", - "amount": 433845700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", - "amount": 433600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", - "amount": 432400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", - "amount": 418400390, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", - "amount": 410257579, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", - "amount": 401127279, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", - "amount": 401105580, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", - "amount": 399700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", - "amount": 399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", - "amount": 398500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", - "amount": 397131759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", - "amount": 395478100, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", - "amount": 388600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", - "amount": 388250800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", - "amount": 384575891, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", - "amount": 383985656, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", - "amount": 382097330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", - "amount": 380000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", - "amount": 379900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", - "amount": 371511484, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", - "amount": 370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "amount": 358783553, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", - "amount": 355180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", - "amount": 351428540, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", - "amount": 330000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", - "amount": 329000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", - "amount": 328947897, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", - "amount": 326445864, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", - "amount": 326336225, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", - "amount": 324504111, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", - "amount": 320000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", - "amount": 317042167, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", - "amount": 316503686, - "lockTime": 0 - }, - { - "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", - "amount": 315700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", - "amount": 313569000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", - "amount": 305000119, - "lockTime": 0 - }, - { - "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", - "amount": 302729175, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", - "amount": 301435300, - "lockTime": 0 - }, - { - "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", - "amount": 300156854, - "lockTime": 0 - }, - { - "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", - "amount": 299873000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", - "amount": 299267300, - "lockTime": 0 - }, - { - "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", - "amount": 298500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", - "amount": 298335350, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", - "amount": 298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", - "amount": 297167999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", - "amount": 289704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", - "amount": 288704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "amount": 282420000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "amount": 280649126, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", - "amount": 280015680, - "lockTime": 0 - }, - { - "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", - "amount": 276737871, - "lockTime": 0 - }, - { - "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", - "amount": 274151201, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", - "amount": 270408000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", - "amount": 267000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", - "amount": 266960005, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", - "amount": 265775585, - "lockTime": 0 - }, - { - "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", - "amount": 264526302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", - "amount": 263600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", - "amount": 263206294, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", - "amount": 260000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", - "amount": 258290875, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", - "amount": 258126470, - "lockTime": 0 - }, - { - "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", - "amount": 257900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", - "amount": 255000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", - "amount": 249715755, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", - "amount": 249700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", - "amount": 247517821, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", - "amount": 247000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", - "amount": 246924214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", - "amount": 246000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", - "amount": 245111848, - "lockTime": 0 - }, - { - "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", - "amount": 242657013, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", - "amount": 238433807, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", - "amount": 238332494, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", - "amount": 231872522, - "lockTime": 0 - }, - { - "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", - "amount": 231120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", - "amount": 229900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", - "amount": 226960636, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", - "amount": 224900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", - "amount": 223270196, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", - "amount": 221803515, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", - "amount": 219000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", - "amount": 214444251, - "lockTime": 0 - }, - { - "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", - "amount": 210500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", - "amount": 209900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", - "amount": 207241763, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", - "amount": 207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", - "amount": 205908984, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "amount": 204253193, - "lockTime": 0 - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "amount": 203506579, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", - "amount": 201900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", - "amount": 198800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", - "amount": 198265250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", - "amount": 197324848, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "amount": 197000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", - "amount": 196935684, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", - "amount": 196700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", - "amount": 196600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", - "amount": 195103558, - "lockTime": 0 - }, - { - "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", - "amount": 194761997, - "lockTime": 0 - }, - { - "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", - "amount": 193041064, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", - "amount": 192373935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", - "amount": 192300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "amount": 191577917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", - "amount": 191200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", - "amount": 190064307, - "lockTime": 0 - }, - { - "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", - "amount": 189200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "amount": 188671398, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", - "amount": 188256951, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", - "amount": 187144406, - "lockTime": 0 - }, - { - "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", - "amount": 186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", - "amount": 186761758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", - "amount": 184026525, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", - "amount": 182783601, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", - "amount": 182100033, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", - "amount": 177790668, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", - "amount": 177787969, - "lockTime": 0 - }, - { - "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", - "amount": 174300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "amount": 173612453, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", - "amount": 171974145, - "lockTime": 0 - }, - { - "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", - "amount": 170264862, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", - "amount": 169530334, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", - "amount": 168231750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", - "amount": 167285108, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", - "amount": 166023705, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", - "amount": 165600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", - "amount": 163830262, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", - "amount": 161646652, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", - "amount": 160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "amount": 159661817, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", - "amount": 159000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", - "amount": 157355794, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", - "amount": 153674338, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", - "amount": 149775708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", - "amount": 149666150, - "lockTime": 0 - }, - { - "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", - "amount": 148700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", - "amount": 146000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", - "amount": 144964485, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", - "amount": 143851143, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", - "amount": 143712915, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", - "amount": 143545871, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", - "amount": 141900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", - "amount": 140402077, - "lockTime": 0 - }, - { - "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", - "amount": 140000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", - "amount": 139500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", - "amount": 139140181, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", - "amount": 138200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", - "amount": 137361793, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", - "amount": 136283067, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", - "amount": 135749198, - "lockTime": 0 - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "amount": 135523673, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", - "amount": 135297015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", - "amount": 134388698, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", - "amount": 131474912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", - "amount": 131081458, - "lockTime": 0 - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "amount": 131026440, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", - "amount": 130070709, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", - "amount": 129900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", - "amount": 129135639, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", - "amount": 128607478, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", - "amount": 126086500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", - "amount": 125508440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", - "amount": 125205440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", - "amount": 123535996, - "lockTime": 0 - }, - { - "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", - "amount": 123456789, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", - "amount": 123241738, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", - "amount": 122235309, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", - "amount": 121200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", - "amount": 120581538, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", - "amount": 119207762, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", - "amount": 116842374, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", - "amount": 116660266, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", - "amount": 113954247, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", - "amount": 113951486, - "lockTime": 0 - }, - { - "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", - "amount": 113886595, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "amount": 113670193, - "lockTime": 0 - }, - { - "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", - "amount": 113427063, - "lockTime": 0 - }, - { - "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", - "amount": 112000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", - "amount": 111633229, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", - "amount": 111378474, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", - "amount": 111100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", - "amount": 111088708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", - "amount": 111000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", - "amount": 109700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", - "amount": 109377023, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", - "amount": 108828082, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", - "amount": 108551938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", - "amount": 108410125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", - "amount": 107454537, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "amount": 106351895, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", - "amount": 105707909, - "lockTime": 0 - }, - { - "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", - "amount": 105465300, - "lockTime": 0 - }, - { - "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", - "amount": 104900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", - "amount": 104627641, - "lockTime": 0 - }, - { - "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", - "amount": 104621550, - "lockTime": 0 - }, - { - "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", - "amount": 104468595, - "lockTime": 0 - }, - { - "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", - "amount": 103669177, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", - "amount": 103546504, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", - "amount": 103542651, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", - "amount": 103395488, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", - "amount": 103229948, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", - "amount": 102925401, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", - "amount": 102712086, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", - "amount": 102500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", - "amount": 102400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", - "amount": 101888000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", - "amount": 101733344, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", - "amount": 101680846, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", - "amount": 100997392, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", - "amount": 100770054, - "lockTime": 0 - }, - { - "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", - "amount": 100642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", - "amount": 100508552, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", - "amount": 100300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", - "amount": 100131797, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", - "amount": 100100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", - "amount": 99766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", - "amount": 99757675, - "lockTime": 0 - }, - { - "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", - "amount": 99654300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", - "amount": 99600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "amount": 99293597, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", - "amount": 99205961, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "amount": 98945310, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", - "amount": 98800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", - "amount": 98755600, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", - "amount": 98518990, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", - "amount": 98300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", - "amount": 98277516, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "amount": 97900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "amount": 97500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", - "amount": 97140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", - "amount": 96828300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", - "amount": 96611000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", - "amount": 96543495, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", - "amount": 96400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "amount": 96163850, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", - "amount": 95954991, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", - "amount": 95867902, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "amount": 95863871, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", - "amount": 95724927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", - "amount": 95400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", - "amount": 95385777, - "lockTime": 0 - }, - { - "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", - "amount": 95260000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", - "amount": 95200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", - "amount": 95130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", - "amount": 94938692, - "lockTime": 0 - }, - { - "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", - "amount": 94800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "amount": 94200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", - "amount": 94015984, - "lockTime": 0 - }, - { - "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", - "amount": 93901350, - "lockTime": 0 - }, - { - "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", - "amount": 93813255, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", - "amount": 93800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", - "amount": 93300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", - "amount": 93048510, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", - "amount": 92500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", - "amount": 91812514, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", - "amount": 91811651, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", - "amount": 91502145, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", - "amount": 91500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", - "amount": 91460053, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", - "amount": 90900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", - "amount": 90567300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", - "amount": 89500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", - "amount": 88858578, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", - "amount": 88708870, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", - "amount": 88189882, - "lockTime": 0 - }, - { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "amount": 88158538, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", - "amount": 88000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", - "amount": 87800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", - "amount": 87008984, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", - "amount": 86955575, - "lockTime": 0 - }, - { - "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", - "amount": 86910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", - "amount": 86700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", - "amount": 86611859, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", - "amount": 86423688, - "lockTime": 0 - }, - { - "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", - "amount": 86267696, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", - "amount": 86000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", - "amount": 85799789, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", - "amount": 85144041, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", - "amount": 84916060, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", - "amount": 84752403, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "amount": 84714159, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", - "amount": 84682900, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", - "amount": 84399999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", - "amount": 83154269, - "lockTime": 0 - }, - { - "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", - "amount": 82800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", - "amount": 82646161, - "lockTime": 0 - }, - { - "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", - "amount": 82109033, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", - "amount": 81331335, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", - "amount": 81316286, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", - "amount": 81102482, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", - "amount": 80506363, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", - "amount": 80390543, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", - "amount": 79800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", - "amount": 79700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", - "amount": 79400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", - "amount": 79162270, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", - "amount": 78782485, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", - "amount": 78575020, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", - "amount": 78300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", - "amount": 78200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", - "amount": 78168214, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", - "amount": 78037986, - "lockTime": 0 - }, - { - "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", - "amount": 77490236, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", - "amount": 77232268, - "lockTime": 0 - }, - { - "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", - "amount": 77212434, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", - "amount": 77063237, - "lockTime": 0 - }, - { - "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", - "amount": 75800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", - "amount": 75789126, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", - "amount": 75507321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "amount": 75503913, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", - "amount": 75327407, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", - "amount": 75290690, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", - "amount": 74930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", - "amount": 74720000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", - "amount": 74437098, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", - "amount": 74400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", - "amount": 74348762, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", - "amount": 74203000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", - "amount": 73729934, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", - "amount": 73000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", - "amount": 72927719, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", - "amount": 72829725, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", - "amount": 72724127, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", - "amount": 72434019, - "lockTime": 0 - }, - { - "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", - "amount": 72265633, - "lockTime": 0 - }, - { - "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", - "amount": 71929294, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", - "amount": 71635972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", - "amount": 71427784, - "lockTime": 0 - }, - { - "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", - "amount": 71135469, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", - "amount": 71000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", - "amount": 70603817, - "lockTime": 0 - }, - { - "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", - "amount": 69946609, - "lockTime": 0 - }, - { - "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", - "amount": 69881521, - "lockTime": 0 - }, - { - "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", - "amount": 69500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", - "amount": 69259733, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", - "amount": 68899983, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", - "amount": 68714000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", - "amount": 68519123, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", - "amount": 68390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", - "amount": 68174169, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", - "amount": 67478854, - "lockTime": 0 - }, - { - "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", - "amount": 67128000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", - "amount": 66917577, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", - "amount": 66664452, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", - "amount": 66622754, - "lockTime": 0 - }, - { - "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", - "amount": 66513098, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", - "amount": 66200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", - "amount": 65531149, - "lockTime": 0 - }, - { - "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", - "amount": 65513922, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", - "amount": 65324590, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", - "amount": 65286597, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", - "amount": 64975464, - "lockTime": 0 - }, - { - "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", - "amount": 64583611, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", - "amount": 64526697, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", - "amount": 63537395, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", - "amount": 63423172, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", - "amount": 62611136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", - "amount": 62397230, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "amount": 62291375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", - "amount": 61480427, - "lockTime": 0 - }, - { - "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", - "amount": 61300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", - "amount": 61226173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "amount": 61211118, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", - "amount": 61085700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", - "amount": 60882643, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", - "amount": 60676916, - "lockTime": 0 - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "amount": 60415849, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", - "amount": 59900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", - "amount": 59254195, - "lockTime": 0 - }, - { - "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", - "amount": 59041200, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "amount": 58866756, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", - "amount": 58445263, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", - "amount": 57690859, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "amount": 57578422, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", - "amount": 57350574, - "lockTime": 0 - }, - { - "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", - "amount": 57000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", - "amount": 56984632, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", - "amount": 56644046, - "lockTime": 0 - }, - { - "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", - "amount": 56509850, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", - "amount": 56021099, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "amount": 56006923, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", - "amount": 55870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", - "amount": 55783816, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", - "amount": 55600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", - "amount": 54840126, - "lockTime": 0 - }, - { - "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", - "amount": 54227453, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", - "amount": 53888056, - "lockTime": 0 - }, - { - "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", - "amount": 53821529, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", - "amount": 53700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", - "amount": 53616000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", - "amount": 53593100, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", - "amount": 53391817, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", - "amount": 53356598, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", - "amount": 53316729, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", - "amount": 52887364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", - "amount": 52881765, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", - "amount": 51925200, - "lockTime": 0 - }, - { - "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", - "amount": 51579050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", - "amount": 51184091, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", - "amount": 51161816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", - "amount": 51000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", - "amount": 50833041, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", - "amount": 50806357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", - "amount": 50644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", - "amount": 50642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", - "amount": 50642636, - "lockTime": 0 - }, - { - "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", - "amount": 50475173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", - "amount": 50429213, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", - "amount": 50040994, - "lockTime": 0 - }, - { - "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", - "amount": 49910000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", - "amount": 49765250, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", - "amount": 49713528, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", - "amount": 49561400, - "lockTime": 0 - }, - { - "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", - "amount": 49487758, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", - "amount": 49367300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", - "amount": 49325518, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", - "amount": 49243496, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", - "amount": 49028104, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", - "amount": 49016181, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", - "amount": 48998605, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", - "amount": 48979450, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", - "amount": 48600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", - "amount": 47760500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", - "amount": 47374909, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", - "amount": 47347173, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", - "amount": 46939998, - "lockTime": 0 - }, - { - "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", - "amount": 46916130, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", - "amount": 46824251, - "lockTime": 0 - }, - { - "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", - "amount": 46716818, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", - "amount": 46468850, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", - "amount": 46446373, - "lockTime": 0 - }, - { - "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", - "amount": 46284987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", - "amount": 46000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", - "amount": 45635414, - "lockTime": 0 - }, - { - "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", - "amount": 45506826, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", - "amount": 45370505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", - "amount": 45350479, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", - "amount": 45220590, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", - "amount": 45146395, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", - "amount": 44778517, - "lockTime": 0 - }, - { - "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", - "amount": 44624277, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", - "amount": 44596761, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", - "amount": 44316668, - "lockTime": 0 - }, - { - "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", - "amount": 44273095, - "lockTime": 0 - }, - { - "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", - "amount": 43944130, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", - "amount": 43400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", - "amount": 43349444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", - "amount": 43300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", - "amount": 42788664, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "amount": 42659480, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", - "amount": 42616465, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", - "amount": 42446161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", - "amount": 42000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", - "amount": 41873121, - "lockTime": 0 - }, - { - "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", - "amount": 41239864, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", - "amount": 41217182, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", - "amount": 41197860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", - "amount": 41027853, - "lockTime": 0 - }, - { - "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", - "amount": 40000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", - "amount": 39936405, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", - "amount": 39900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", - "amount": 39885316, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", - "amount": 39400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", - "amount": 39205700, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", - "amount": 39204421, - "lockTime": 0 - }, - { - "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", - "amount": 38430246, - "lockTime": 0 - }, - { - "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", - "amount": 38156549, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "amount": 38097837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", - "amount": 37977870, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", - "amount": 37848230, - "lockTime": 0 - }, - { - "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", - "amount": 37596341, - "lockTime": 0 - }, - { - "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", - "amount": 37138237, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", - "amount": 37000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", - "amount": 36645807, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", - "amount": 36632136, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", - "amount": 36340851, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", - "amount": 36305635, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", - "amount": 36260066, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", - "amount": 36254473, - "lockTime": 0 - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "amount": 35657031, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "amount": 35289230, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", - "amount": 35113411, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", - "amount": 35035381, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", - "amount": 34987000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", - "amount": 34985508, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", - "amount": 34237984, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", - "amount": 33972168, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", - "amount": 33666777, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", - "amount": 33300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", - "amount": 33200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", - "amount": 32817751, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", - "amount": 32574993, - "lockTime": 0 - }, - { - "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", - "amount": 32398803, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", - "amount": 32390717, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", - "amount": 32300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", - "amount": 31705425, - "lockTime": 0 - }, - { - "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", - "amount": 31573559, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", - "amount": 31241721, - "lockTime": 0 - }, - { - "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", - "amount": 31200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", - "amount": 30919183, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", - "amount": 30853387, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", - "amount": 30241548, - "lockTime": 0 - }, - { - "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", - "amount": 30188591, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", - "amount": 29911616, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", - "amount": 29612391, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", - "amount": 29505893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", - "amount": 29502131, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", - "amount": 29447012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", - "amount": 29395647, - "lockTime": 0 - }, - { - "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", - "amount": 29297176, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", - "amount": 29193654, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", - "amount": 29170818, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", - "amount": 29000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", - "amount": 28930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", - "amount": 28031084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", - "amount": 28027962, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", - "amount": 27975651, - "lockTime": 0 - }, - { - "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", - "amount": 27900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", - "amount": 27881872, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", - "amount": 27816878, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", - "amount": 27538587, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", - "amount": 27359023, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", - "amount": 27354161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", - "amount": 27313907, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", - "amount": 27037657, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", - "amount": 26204778, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", - "amount": 25921742, - "lockTime": 0 - }, - { - "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", - "amount": 25800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", - "amount": 25214290, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", - "amount": 25000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", - "amount": 24900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", - "amount": 24862265, - "lockTime": 0 - }, - { - "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", - "amount": 24857672, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", - "amount": 24818000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", - "amount": 24792001, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", - "amount": 24764962, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", - "amount": 24752042, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", - "amount": 24399962, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", - "amount": 23615149, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", - "amount": 23543424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "amount": 23374017, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", - "amount": 23095857, - "lockTime": 0 - }, - { - "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", - "amount": 23076854, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", - "amount": 22968358, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", - "amount": 22748293, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "amount": 22694797, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", - "amount": 22691356, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", - "amount": 22290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", - "amount": 22207556, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", - "amount": 22131393, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", - "amount": 22100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", - "amount": 22037029, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", - "amount": 21900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", - "amount": 21856757, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", - "amount": 21500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", - "amount": 21439758, - "lockTime": 0 - }, - { - "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", - "amount": 21405029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", - "amount": 21276018, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", - "amount": 21150519, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", - "amount": 21061125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", - "amount": 20996563, - "lockTime": 0 - }, - { - "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", - "amount": 20956841, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", - "amount": 20728155, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", - "amount": 20676404, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", - "amount": 20520009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "amount": 20361917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "amount": 20239197, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", - "amount": 20090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", - "amount": 19900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", - "amount": 19767300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", - "amount": 19753684, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", - "amount": 19736931, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", - "amount": 19700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", - "amount": 19671511, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", - "amount": 19584000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", - "amount": 19525841, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", - "amount": 19505045, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", - "amount": 19501275, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", - "amount": 19500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", - "amount": 19498877, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", - "amount": 19497550, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", - "amount": 19488228, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", - "amount": 19400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "amount": 19278110, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", - "amount": 19200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", - "amount": 19183455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "amount": 19129772, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", - "amount": 19077005, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", - "amount": 19065333, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", - "amount": 18900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", - "amount": 18751374, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", - "amount": 18644905, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", - "amount": 18618887, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", - "amount": 18528978, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", - "amount": 18516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", - "amount": 18500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", - "amount": 18400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "amount": 18399539, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", - "amount": 18399110, - "lockTime": 0 - }, - { - "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", - "amount": 18394084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", - "amount": 18342720, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", - "amount": 18201288, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", - "amount": 18189414, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", - "amount": 18001058, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", - "amount": 17979537, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", - "amount": 17816282, - "lockTime": 0 - }, - { - "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", - "amount": 17758707, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", - "amount": 17701434, - "lockTime": 0 - }, - { - "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", - "amount": 17700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", - "amount": 17652644, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", - "amount": 17609575, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", - "amount": 17565000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", - "amount": 17506375, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", - "amount": 17500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", - "amount": 17105570, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", - "amount": 17000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", - "amount": 16900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", - "amount": 16889818, - "lockTime": 0 - }, - { - "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", - "amount": 16762383, - "lockTime": 0 - }, - { - "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", - "amount": 16728299, - "lockTime": 0 - }, - { - "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", - "amount": 16643371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", - "amount": 16500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", - "amount": 16482078, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", - "amount": 16238871, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", - "amount": 16182206, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", - "amount": 16179514, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", - "amount": 16163645, - "lockTime": 0 - }, - { - "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", - "amount": 16100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", - "amount": 15967560, - "lockTime": 0 - }, - { - "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", - "amount": 15931878, - "lockTime": 0 - }, - { - "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", - "amount": 15800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", - "amount": 15769682, - "lockTime": 0 - }, - { - "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", - "amount": 15767367, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", - "amount": 15730804, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", - "amount": 15692835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", - "amount": 15619300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", - "amount": 15332019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", - "amount": 15299394, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", - "amount": 15251450, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "amount": 15192835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", - "amount": 15030170, - "lockTime": 0 - }, - { - "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", - "amount": 14989103, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", - "amount": 14920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", - "amount": 14884069, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", - "amount": 14813575, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", - "amount": 14795150, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", - "amount": 14769037, - "lockTime": 0 - }, - { - "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", - "amount": 14682805, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", - "amount": 14583996, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", - "amount": 14548624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", - "amount": 14532102, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", - "amount": 14528369, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", - "amount": 14500253, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", - "amount": 14489245, - "lockTime": 0 - }, - { - "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", - "amount": 14489159, - "lockTime": 0 - }, - { - "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", - "amount": 14400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", - "amount": 14279464, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", - "amount": 14123003, - "lockTime": 0 - }, - { - "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", - "amount": 14000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", - "amount": 13988506, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", - "amount": 13743449, - "lockTime": 0 - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "amount": 13488668, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", - "amount": 13438357, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", - "amount": 13390000, - "lockTime": 0 - }, - { - "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", - "amount": 13132342, - "lockTime": 0 - }, - { - "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", - "amount": 13000059, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", - "amount": 12926318, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", - "amount": 12889665, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", - "amount": 12868693, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", - "amount": 12858804, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", - "amount": 12810473, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", - "amount": 12657982, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", - "amount": 12654117, - "lockTime": 0 - }, - { - "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", - "amount": 12635092, - "lockTime": 0 - }, - { - "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", - "amount": 12620302, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", - "amount": 12518998, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", - "amount": 12500375, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", - "amount": 12373617, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", - "amount": 12323075, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", - "amount": 12299629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", - "amount": 12247283, - "lockTime": 0 - }, - { - "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", - "amount": 12233600, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", - "amount": 12189871, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "amount": 12119019, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", - "amount": 12000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", - "amount": 11869491, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", - "amount": 11854774, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", - "amount": 11852041, - "lockTime": 0 - }, - { - "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", - "amount": 11809086, - "lockTime": 0 - }, - { - "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", - "amount": 11798769, - "lockTime": 0 - }, - { - "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", - "amount": 11727601, - "lockTime": 0 - }, - { - "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", - "amount": 11687196, - "lockTime": 0 - }, - { - "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", - "amount": 11681919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", - "amount": 11630405, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", - "amount": 11596949, - "lockTime": 0 - }, - { - "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", - "amount": 11531640, - "lockTime": 0 - }, - { - "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", - "amount": 11463575, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", - "amount": 11407595, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "amount": 11268464, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "amount": 11225011, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", - "amount": 11154018, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", - "amount": 11035279, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", - "amount": 11031450, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", - "amount": 10928869, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", - "amount": 10844444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", - "amount": 10841500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "amount": 10821533, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", - "amount": 10802050, - "lockTime": 0 - }, - { - "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", - "amount": 10731068, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", - "amount": 10700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", - "amount": 10557397, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", - "amount": 10540000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", - "amount": 10404096, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", - "amount": 10400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", - "amount": 10398200, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", - "amount": 10369791, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "amount": 10313359, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", - "amount": 10300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", - "amount": 10139875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", - "amount": 10105100, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", - "amount": 10057265, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "amount": 9985727, - "lockTime": 0 - }, - { - "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", - "amount": 9982121, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", - "amount": 9964062, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", - "amount": 9943524, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", - "amount": 9884363, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", - "amount": 9870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", - "amount": 9789458, - "lockTime": 0 - }, - { - "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", - "amount": 9700952, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", - "amount": 9694471, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", - "amount": 9693469, - "lockTime": 0 - }, - { - "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", - "amount": 9622974, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", - "amount": 9600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", - "amount": 9450607, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", - "amount": 9393600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", - "amount": 9329474, - "lockTime": 0 - }, - { - "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", - "amount": 9300494, - "lockTime": 0 - }, - { - "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", - "amount": 9287099, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", - "amount": 9261554, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", - "amount": 9261412, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", - "amount": 9200900, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", - "amount": 9077760, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", - "amount": 9002937, - "lockTime": 0 - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", - "amount": 8974542, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", - "amount": 8960266, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", - "amount": 8911684, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "amount": 8890000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", - "amount": 8878624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", - "amount": 8861226, - "lockTime": 0 - }, - { - "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", - "amount": 8800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", - "amount": 8755575, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", - "amount": 8743626, - "lockTime": 0 - }, - { - "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", - "amount": 8730000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", - "amount": 8700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", - "amount": 8618586, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", - "amount": 8616100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", - "amount": 8600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", - "amount": 8568129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", - "amount": 8538393, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", - "amount": 8394182, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", - "amount": 8300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", - "amount": 8263000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", - "amount": 8046950, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", - "amount": 8000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "amount": 7952107, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", - "amount": 7933851, - "lockTime": 0 - }, - { - "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", - "amount": 7781500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", - "amount": 7770748, - "lockTime": 0 - }, - { - "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", - "amount": 7764531, - "lockTime": 0 - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "amount": 7737091, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", - "amount": 7736399, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", - "amount": 7719601, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "amount": 7574095, - "lockTime": 0 - }, - { - "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", - "amount": 7346976, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "amount": 7301873, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", - "amount": 7112300, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "amount": 6993706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", - "amount": 6918758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", - "amount": 6740188, - "lockTime": 0 - }, - { - "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", - "amount": 6708448, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", - "amount": 6670583, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", - "amount": 6500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", - "amount": 6400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", - "amount": 6163200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", - "amount": 6058266, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", - "amount": 5950000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", - "amount": 5800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", - "amount": 5738000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "amount": 5700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", - "amount": 5557105, - "lockTime": 0 - }, - { - "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", - "amount": 5540250, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", - "amount": 5450000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", - "amount": 5296672, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", - "amount": 5270000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "amount": 4957487, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", - "amount": 4778681, - "lockTime": 0 - }, - { - "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", - "amount": 4699808, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", - "amount": 4482229, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "amount": 4386750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", - "amount": 4325350, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", - "amount": 3708425, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", - "amount": 3500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", - "amount": 3365007, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", - "amount": 3360000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", - "amount": 2917000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", - "amount": 2900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "amount": 2726099, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", - "amount": 2690325, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", - "amount": 2624000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", - "amount": 2555026, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", - "amount": 2377118, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", - "amount": 2308964, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", - "amount": 2298000, - "lockTime": 0 - }, - { - "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", - "amount": 2111000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", - "amount": 2087000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", - "amount": 1999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", - "amount": 1951160, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", - "amount": 1888968, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", - "amount": 1856919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", - "amount": 1800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", - "amount": 1725555, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", - "amount": 1689000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", - "amount": 1667308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", - "amount": 1640000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", - "amount": 1624765, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", - "amount": 1621554, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", - "amount": 1606774, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", - "amount": 1560000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", - "amount": 1517547, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", - "amount": 1500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", - "amount": 1455000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", - "amount": 1440359, - "lockTime": 0 - }, - { - "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", - "amount": 1437300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", - "amount": 1400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "amount": 1392312, - "lockTime": 0 - }, - { - "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", - "amount": 1380420, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", - "amount": 1287899, - "lockTime": 0 - }, - { - "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", - "amount": 1267300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", - "amount": 1263550, - "lockTime": 0 - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "amount": 1217403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", - "amount": 1140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "amount": 1090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", - "amount": 1066000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", - "amount": 1030000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", - "amount": 987671, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", - "amount": 965641, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", - "amount": 960000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", - "amount": 952000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", - "amount": 947100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", - "amount": 943700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", - "amount": 939241, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", - "amount": 933125, - "lockTime": 0 - }, - { - "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", - "amount": 930518, - "lockTime": 0 - }, - { - "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", - "amount": 926774, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", - "amount": 920662, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", - "amount": 901400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", - "amount": 859800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", - "amount": 858028, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", - "amount": 855860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", - "amount": 851171, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", - "amount": 842092, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", - "amount": 840772, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", - "amount": 838000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "amount": 834879, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", - "amount": 831343, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", - "amount": 810000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", - "amount": 780000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", - "amount": 779400, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", - "amount": 755007, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", - "amount": 750472, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", - "amount": 739876, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", - "amount": 732640, - "lockTime": 0 - }, - { - "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", - "amount": 730613, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "amount": 725135, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", - "amount": 713527, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", - "amount": 704127, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", - "amount": 693000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", - "amount": 692801, - "lockTime": 0 - }, - { - "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", - "amount": 678826, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", - "amount": 661094, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", - "amount": 655797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", - "amount": 646006, - "lockTime": 0 - }, - { - "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", - "amount": 645525, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", - "amount": 645000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", - "amount": 642636, - "lockTime": 0 - }, - { - "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", - "amount": 640584, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", - "amount": 633486, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", - "amount": 562333, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", - "amount": 560140, - "lockTime": 0 - }, - { - "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", - "amount": 544852, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", - "amount": 533869, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", - "amount": 530000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", - "amount": 504403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", - "amount": 490000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", - "amount": 477569, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", - "amount": 457913, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", - "amount": 416481, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "amount": 413430, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", - "amount": 409000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", - "amount": 374054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", - "amount": 365644, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", - "amount": 330000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", - "amount": 329000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", - "amount": 307700, - "lockTime": 0 - }, - { - "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", - "amount": 307200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", - "amount": 300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", - "amount": 297655, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "amount": 285450, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", - "amount": 232999, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", - "amount": 203900, - "lockTime": 0 - }, - { - "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", - "amount": 200001, - "lockTime": 0 - }, - { - "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", - "amount": 180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", - "amount": 179000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", - "amount": 177286, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", - "amount": 174982, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", - "amount": 173499, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", - "amount": 173450, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", - "amount": 162550, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", - "amount": 148400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", - "amount": 140000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", - "amount": 128500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", - "amount": 125704, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", - "amount": 124800, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", - "amount": 109391, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", - "amount": 98600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", - "amount": 92426, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", - "amount": 92015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", - "amount": 88713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", - "amount": 84403, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", - "amount": 74300, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", - "amount": 74067, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", - "amount": 62963, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", - "amount": 62300, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", - "amount": 61662, - "lockTime": 0 - }, - { - "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", - "amount": 61425, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", - "amount": 58129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", - "amount": 56594, - "lockTime": 0 - }, - { - "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", - "amount": 50009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", - "amount": 46000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", - "amount": 41301, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", - "amount": 38400, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", - "amount": 34500, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", - "amount": 33112, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", - "amount": 33000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", - "amount": 32029, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "amount": 21906, - "lockTime": 0 - }, - { - "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", - "amount": 18725, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", - "amount": 16722, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", - "amount": 16078, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "amount": 12526, - "lockTime": 0 - }, - { - "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", - "amount": 11590, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", - "amount": 10212, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "amount": 9011, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", - "amount": 597, - "lockTime": 0 - }, - { - "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", - "amount": 567, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", - "amount": 506, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "amount": 273, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", - "amount": 31, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", - "amount": 4, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", - "amount": 0, - "lockTime": 0 - } - ], - "alias": [ - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "alias": "0001" - }, - { - "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", - "alias": "1" - }, - { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "alias": "24x7x365_staker_king" - }, - { - "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", - "alias": "24x7x365days_staker" - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "alias": "2_wuyan" - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "alias": "512_gb_ram_node" - }, - { - "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", - "alias": "88" - }, - { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "alias": "a" - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "alias": "a_decentralizedworld" - }, - { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "alias": "abc123" - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "alias": "achilles" - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "alias": "africa_ambassador" - }, - { - "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", - "alias": "agent" - }, - { - "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", - "alias": "agent0" - }, - { - "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", - "alias": "agent1" - }, - { - "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", - "alias": "agent10" - }, - { - "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", - "alias": "agent11" - }, - { - "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", - "alias": "agent12" - }, - { - "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", - "alias": "agent2" - }, - { - "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", - "alias": "agent3" - }, - { - "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", - "alias": "agent4" - }, - { - "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", - "alias": "agent5" - }, - { - "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", - "alias": "agent6" - }, - { - "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", - "alias": "agent7" - }, - { - "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", - "alias": "agent8" - }, - { - "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", - "alias": "agent9" - }, - { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "alias": "agree" - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "alias": "ajs_wallet" - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "alias": "alanachase" - }, - { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "alias": "aleph_alpha" - }, - { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "alias": "aleph_lambda" - }, - { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "alias": "aleph_naught" - }, - { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "alias": "aleph_omega" - }, - { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "alias": "aleph_one" - }, - { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "alias": "aleph_pi" - }, - { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "alias": "alexia" - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "alias": "allenheung" - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "alias": "amazing" - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "alias": "ambassador_africa" - }, - { - "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", - "alias": "andreas" - }, - { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "alias": "andrewle" - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "alias": "anybit" - }, - { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "alias": "anybitwallet" - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "alias": "arb" - }, - { - "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", - "alias": "artempl88" - }, - { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "alias": "astrid" - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "alias": "atlantis" - }, - { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "alias": "aurora" - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "alias": "auspicious" - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "alias": "aussie_ambassador" - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "alias": "australia_ambassador" - }, - { - "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", - "alias": "bbbbb" - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "alias": "beigaofengok" - }, - { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "alias": "bepal" - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "alias": "best_staking_node" - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "alias": "bigfour" - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "alias": "bikanuls1" - }, - { - "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", - "alias": "bikanuls2" - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "alias": "binance" - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "alias": "bischmaster" - }, - { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "alias": "blankpage" - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "alias": "bleegod" - }, - { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "alias": "blockchain_flashnews" - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "alias": "bodhi" - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "alias": "bonesers" - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "alias": "boydreynolds00021124" - }, - { - "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", - "alias": "btsabc" - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "alias": "burgs_yacht_party" - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "alias": "bystake" - }, - { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "alias": "canghai" - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "alias": "cc" - }, - { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "alias": "charlie" - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "alias": "cheifbrody" - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "alias": "chenweiguo" - }, - { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "alias": "children" - }, - { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "alias": "china_ambassador" - }, - { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "alias": "chinanuls_01" - }, - { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "alias": "chinanuls_02" - }, - { - "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", - "alias": "chinanuls_four" - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "alias": "chinanuls_one" - }, - { - "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", - "alias": "chinanuls_three" - }, - { - "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", - "alias": "chinanuls_tow" - }, - { - "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", - "alias": "com" - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "alias": "comapatient" - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "alias": "complete" - }, - { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "alias": "crypto_basics_1" - }, - { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "alias": "crypto_basics_2" - }, - { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "alias": "crypto_nuls" - }, - { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "alias": "crypto_nuls_2" - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "alias": "cryptobuzz" - }, - { - "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", - "alias": "cryptomennekes" - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "alias": "cryptoscrozer" - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "alias": "csc" - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "alias": "cybernetwork" - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "alias": "dalton" - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "alias": "darkzun" - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "alias": "dbnulswallet" - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "alias": "dche" - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "alias": "decadence" - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "alias": "dee" - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "alias": "deutsche_bahn" - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "alias": "dextop" - }, - { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "alias": "dingxiangweituo" - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "alias": "disbish" - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "alias": "djvasilek" - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "alias": "donchen" - }, - { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "alias": "dreaming_of_nuls_1" - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "alias": "dylan" - }, - { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "alias": "elunhui" - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "alias": "empowered" - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "alias": "exc_one" - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "alias": "exo" - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "alias": "faisca" - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "alias": "fanxinghua_nuls" - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "alias": "fcnuls" - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "alias": "fierious" - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "alias": "filip" - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "alias": "fips" - }, - { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "alias": "fj_ly_lc_2018" - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "alias": "forever" - }, - { - "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", - "alias": "france_ambassador" - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "alias": "frenchienuls" - }, - { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "alias": "game_of_stakes" - }, - { - "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", - "alias": "german_ambassador" - }, - { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "alias": "germanarea_ambass" - }, - { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "alias": "ghsjz" - }, - { - "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", - "alias": "gille" - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "alias": "gogineni" - }, - { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "alias": "gone_camping" - }, - { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "alias": "guobao" - }, - { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "alias": "h" - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "alias": "haciabi" - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "alias": "hai888" - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "alias": "harthur_gf" - }, - { - "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", - "alias": "hejie" - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "alias": "hena_alias_test" - }, - { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "alias": "hh" - }, - { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "alias": "hhao" - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "alias": "hibiki" - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "alias": "hodyhe" - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "alias": "hpipsdonate" - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "alias": "hpy_nuls_node01" - }, - { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "alias": "hpy_nuls_node_01" - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "alias": "huang" - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "alias": "huanghua" - }, - { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "alias": "huobipool" - }, - { - "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", - "alias": "id" - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "alias": "io" - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "alias": "jackeycyt" - }, - { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "alias": "jason_zhang" - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "alias": "jasonthatdude" - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "alias": "jb23" - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "alias": "jimmy" - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "alias": "joele" - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "alias": "johan" - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "alias": "joinphonejmh" - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "alias": "jota" - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "alias": "justinevelyn" - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "alias": "jvdburg" - }, - { - "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", - "alias": "jyh" - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "alias": "kadel" - }, - { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "alias": "kaippilly" - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "alias": "kb24" - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "alias": "kevin" - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "alias": "kiss" - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "alias": "krzwalnuls" - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "alias": "kucoin" - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "alias": "l_nuls" - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "alias": "li" - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "alias": "liangye" - }, - { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "alias": "liesa_huang" - }, - { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "alias": "lining" - }, - { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "alias": "linkworld" - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "alias": "liujunbo1234" - }, - { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "alias": "lizhilong" - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "alias": "ln" - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "alias": "longkayo" - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "alias": "love_nuls" - }, - { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "alias": "lsfnuls" - }, - { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "alias": "lsfnuls1" - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "alias": "lxx302" - }, - { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "alias": "main" - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "alias": "mainaccount" - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "alias": "medes" - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "alias": "men" - }, - { - "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", - "alias": "meowmeow" - }, - { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "alias": "mick_one" - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "alias": "ming" - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "alias": "miya" - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "alias": "moon" - }, - { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "alias": "moon_lambo" - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "alias": "moshe" - }, - { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "alias": "moshe_malawach" - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "alias": "mouxiao" - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "alias": "multiobhan" - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "alias": "mycoin" - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "alias": "myklicious" - }, - { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "alias": "n1_nulsnode_org" - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "alias": "nalen" - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "alias": "nalexnuls" - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "alias": "natural" - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "alias": "naveen_reward_acct" - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "alias": "nebulla" - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "alias": "neva" - }, - { - "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", - "alias": "nfrewards" - }, - { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "alias": "niels" - }, - { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "alias": "nodeforge_ii" - }, - { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "alias": "nodeforge_io" - }, - { - "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", - "alias": "ns" - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "alias": "nul_b02" - }, - { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "alias": "nul_b_01" - }, - { - "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", - "alias": "nul_b_02" - }, - { - "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", - "alias": "nul_b_03" - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "alias": "nul_b_04" - }, - { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "alias": "nul_b_2" - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "alias": "nulp_fiction" - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "alias": "nuls" - }, - { - "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", - "alias": "nuls01akrs" - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "alias": "nuls4ever" - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "alias": "nuls_00" - }, - { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "alias": "nuls_01" - }, - { - "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", - "alias": "nuls_8" - }, - { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "alias": "nuls__portugal" - }, - { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "alias": "nuls__to_the__moon" - }, - { - "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", - "alias": "nuls_agent_node" - }, - { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "alias": "nuls_armstrong" - }, - { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "alias": "nuls_australia" - }, - { - "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", - "alias": "nuls_bonesersnode" - }, - { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "alias": "nuls_by_nulswest" - }, - { - "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", - "alias": "nuls_canada" - }, - { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "alias": "nuls_com_sg" - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "alias": "nuls_connect" - }, - { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "alias": "nuls_cru" - }, - { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "alias": "nuls_cru_sf_ca" - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "alias": "nuls_datou" - }, - { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "alias": "nuls_deep" - }, - { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "alias": "nuls_deeper" - }, - { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "alias": "nuls_dextop" - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "alias": "nuls_enterprise" - }, - { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "alias": "nuls_europe" - }, - { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "alias": "nuls_europe_de" - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "alias": "nuls_fans" - }, - { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "alias": "nuls_global" - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "alias": "nuls_global_2" - }, - { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "alias": "nuls_gold" - }, - { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "alias": "nuls_l2" - }, - { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "alias": "nuls_lianquan" - }, - { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "alias": "nuls_machine" - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "alias": "nuls_media" - }, - { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "alias": "nuls_node_london" - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "alias": "nuls_one" - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "alias": "nuls_org" - }, - { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "alias": "nuls_org1" - }, - { - "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", - "alias": "nuls_org2" - }, - { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "alias": "nuls_org3" - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "alias": "nuls_org4" - }, - { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "alias": "nuls_pacific" - }, - { - "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", - "alias": "nuls_pi" - }, - { - "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", - "alias": "nuls_portugal" - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "alias": "nuls_power" - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "alias": "nuls_singapore" - }, - { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "alias": "nuls_the_king" - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "alias": "nuls_to_the_moon" - }, - { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "alias": "nuls_uk" - }, - { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "alias": "nuls_usa" - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "alias": "nuls_vip" - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "alias": "nuls_world" - }, - { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "alias": "nulsb4" - }, - { - "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", - "alias": "nulsdeep" - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "alias": "nulsdeepaustralia" - }, - { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "alias": "nulsfans" - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "alias": "nulsforlyfe" - }, - { - "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", - "alias": "nulsgalaxy" - }, - { - "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", - "alias": "nulsgalaxy_01" - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "alias": "nulsgood" - }, - { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "alias": "nulsio" - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "alias": "nulsmasternode_com" - }, - { - "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", - "alias": "nulsnice" - }, - { - "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", - "alias": "nulsnode_com" - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "alias": "nulson_mandela" - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "alias": "nulson_mandelaa" - }, - { - "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", - "alias": "nulstar" - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "alias": "nulstomoon" - }, - { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "alias": "nulswest_1" - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "alias": "nworld" - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "alias": "odzerchenma_12_12" - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "alias": "omar_voting" - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "alias": "one" - }, - { - "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", - "alias": "oo" - }, - { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "alias": "opulence" - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "alias": "pay" - }, - { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "alias": "pepe_the_nuls" - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "alias": "personal" - }, - { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "alias": "pierreluo" - }, - { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "alias": "pl_godfather" - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "alias": "planqk" - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "alias": "praesum" - }, - { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "alias": "prosper" - }, - { - "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", - "alias": "prosperity" - }, - { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "alias": "prosperous" - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "alias": "quickcrypto" - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "alias": "radigan" - }, - { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "alias": "railnetwork_europe" - }, - { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "alias": "raining_nuls_usa" - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "alias": "reaper" - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "alias": "regularguy" - }, - { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "alias": "rf_1" - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "alias": "riaris_stake_24_7" - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "alias": "rico" - }, - { - "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", - "alias": "rillezk" - }, - { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "alias": "russian__ambassador" - }, - { - "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", - "alias": "russian_ambassador" - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "alias": "ryanprivate" - }, - { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "alias": "serg" - }, - { - "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", - "alias": "sg_ambassador" - }, - { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "alias": "sgfe" - }, - { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "alias": "shijiuzhou" - }, - { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "alias": "siwei" - }, - { - "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", - "alias": "slo_0_nuls" - }, - { - "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", - "alias": "slo_1_nuls" - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "alias": "slo_nuls" - }, - { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "alias": "snzholding" - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "alias": "spanish_ambassador" - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "alias": "spartansz" - }, - { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "alias": "spendyouth" - }, - { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "alias": "stake_n_take" - }, - { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "alias": "stakehouse" - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "alias": "staking" - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "alias": "staking_best_node" - }, - { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "alias": "staking_capital" - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "alias": "sue" - }, - { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "alias": "sun" - }, - { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "alias": "supasativa" - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "alias": "super_nova" - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "alias": "superlinks" - }, - { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "alias": "supernuls_q383524260" - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "alias": "taro" - }, - { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "alias": "teameffort" - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "alias": "three_body" - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "alias": "top1" - }, - { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "alias": "tyrolee" - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "alias": "uk" - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "alias": "us1_newyork" - }, - { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "alias": "us_west_1" - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "alias": "usa_nuls" - }, - { - "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", - "alias": "veki75" - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "alias": "vhtoto20" - }, - { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "alias": "vivi" - }, - { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "alias": "vr" - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "alias": "wallet" - }, - { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "alias": "water" - }, - { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "alias": "wechat_6219172" - }, - { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "alias": "weituo" - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "alias": "wendysa_nuls" - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "alias": "wenzhengqu" - }, - { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "alias": "wichain_nuls" - }, - { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "alias": "wildmsb" - }, - { - "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", - "alias": "winner" - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "alias": "wolfstreet" - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "alias": "wu" - }, - { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "alias": "wuyan" - }, - { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "alias": "xfans" - }, - { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "alias": "xiaomayi" - }, - { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "alias": "xiaoyao" - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "alias": "xue_xiao" - }, - { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "alias": "xuzhigang" - }, - { - "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", - "alias": "xx" - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "alias": "yao" - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "alias": "you363317" - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "alias": "yp" + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" }, { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "alias": "zane" + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "alias": "zdgroup" + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" }, { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "alias": "zero_to_hero" + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" }, { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "alias": "zero_to_hero_2" + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" }, { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "alias": "zheng" + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" }, { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "alias": "zouaiqiu" + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "alias": "zyzz" + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} - +} \ No newline at end of file diff --git a/module.ncf b/module.ncf index 9262dad320..6b47581744 100644 --- a/module.ncf +++ b/module.ncf @@ -2,22 +2,22 @@ encoding=UTF-8 language=en logPath=E:/work/src/nuls-v2/Logs -logLevel=DEBUG +logLevel=INFO dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=1 +chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id -mainChainId=1 +mainChainId=2 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,22 +25,22 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=20191222 +packetMagic=20200120 #种子节点 -selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update +dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -50,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=2 +minNodeAmount=1 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -63,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,31 +78,26 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract - [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv dependent=protocol-update -[chain-manager] -dependent=smart-contract,protocol-update - [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -115,42 +110,45 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +developerNodeAddress= +ambassadorNodeAddress= +mappingAddress= +businessAddress= +teamAddress= +communityAddress= dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract +[chain-manager] +dependent=protocol-update,smart-contract + [nuls-api] #httpServer的启动ip -serverIp=127.0.0.1 +serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 +serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=1000 +interval=10 dependent=smart-contract,cross-chain -[cmd-client] -clientVersion=2.7.0 +[transaction] +dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-account/src/main/java/io/nuls/account/constant/RpcParameterNameConstant.java b/module/nuls-account/src/main/java/io/nuls/account/constant/RpcParameterNameConstant.java index 181eb224f0..9f2faa04b7 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/constant/RpcParameterNameConstant.java +++ b/module/nuls-account/src/main/java/io/nuls/account/constant/RpcParameterNameConstant.java @@ -83,6 +83,11 @@ public interface RpcParameterNameConstant { */ String FILE_PATH = "filePath"; + /** + * dirPath + */ + String DIR_PATH = "dirPath"; + /** * keyStore */ diff --git a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java index 3f1b291fa2..1c054968eb 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java +++ b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java @@ -34,7 +34,11 @@ import io.nuls.core.rpc.cmd.BaseCmd; import io.nuls.core.rpc.model.*; import io.nuls.core.rpc.model.message.Response; +import org.checkerframework.checker.units.qual.A; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -530,7 +534,7 @@ public Response getPriKeyByAddress(Map params) { } int chainId = chain.getChainId(); Account account = accountService.getAccount(chainId, address); - unencryptedPrivateKey = accountService.getPrivateKey(chain.getChainId(),account, password); + unencryptedPrivateKey = accountService.getPrivateKey(chain.getChainId(), account, password); Map map = new HashMap<>(AccountConstant.INIT_CAPACITY_2); map.put("priKey", unencryptedPrivateKey); map.put("pubKey", HexUtil.encode(account.getPubKey())); @@ -761,6 +765,94 @@ public Response importAccountByKeystore(Map params) { return success(map); } + + /** + * 导入一个文件夹下的所有keystore文件 + * import accounts by AccountKeyStore + * + * @param params [chainId,dirPath,password] + * @return + */ + @CmdAnnotation(cmd = "ac_importsKeyStoreFiles", version = 1.0, description = "根据AccountKeyStore导入账户/Import accounts by AccountKeyStore") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "dirPath", parameterType = "String", parameterDes = "文件夹路径"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = RpcConstant.ADDRESS, description = "导入的账户地址") + })) + public Response importsKeyStoreFiles(Map params) { + Chain chain = null; + Map map = new HashMap<>(); + BufferedReader reader = null; + StringBuffer stringBuffer = null; + try { + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + Object pathObj = params == null ? null : params.get(RpcParameterNameConstant.DIR_PATH); + if (params == null || chainIdObj == null || pathObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsException(AccountErrorCode.CHAIN_NOT_EXIST); + } + //dirPath + String dirPath = (String) pathObj; + File baseDir = new File(dirPath); + if (!baseDir.exists() || !baseDir.isDirectory()) { + throw new NulsException(AccountErrorCode.ACCOUNTKEYSTORE_FILE_NOT_EXIST); + } + + File[] array = baseDir.listFiles(); + String keystore; + List accountKeyStoreList = new ArrayList<>(); + for (int i = 0; i < array.length; i++) { + //如果是keystore文件 + if (array[i].isFile() && array[i].getName().endsWith(".keystore")) { + //获取文件内容 + reader = new BufferedReader(new FileReader(array[i])); + stringBuffer = new StringBuffer(); + String tempStr; + while ((tempStr = reader.readLine()) != null) { + stringBuffer.append(tempStr); + } + reader.close(); + keystore = stringBuffer.toString(); + + AccountKeyStoreDTO accountKeyStoreDto; + try { + accountKeyStoreDto = JSONUtils.json2pojo(keystore, AccountKeyStoreDTO.class); + if (StringUtils.isBlank(accountKeyStoreDto.getAddress()) || + StringUtils.isBlank(accountKeyStoreDto.getEncryptedPrivateKey()) || + StringUtils.isBlank(accountKeyStoreDto.getPubKey()) + ) { + throw new NulsException(AccountErrorCode.ACCOUNTKEYSTORE_FILE_DAMAGED, array[i].getName()); + } + accountKeyStoreList.add(accountKeyStoreDto.toAccountKeyStore()); + } catch (IOException e) { + throw new NulsException(AccountErrorCode.ACCOUNTKEYSTORE_FILE_DAMAGED, array[i].getName()); + } + } + } + accountService.importAccountListByKeystore(accountKeyStoreList, chain); + } catch (NulsException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + return success(map); + } + @CmdAnnotation(cmd = "ac_exportKeyStoreJson", version = 1.0, description = "导出AccountKeyStore字符串/export account KeyStore json") @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java b/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java index 839c390fd0..a0dacd797e 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java @@ -47,7 +47,7 @@ public interface AccountService { * all the accounts are encrypted by the same password * if the password is NULL or "", the accounts will be unencrypted. * - * @param chain 链ID + * @param chain 链ID * @param count 想要创建的账户个数 * @param count the number of account you want to create. * @param password the password of the accounts. @@ -76,6 +76,7 @@ public interface AccountService { /** * 获取指定链所有账户集合 * Gets all account sets in the specified chain + * * @param chainId * @return */ @@ -247,6 +248,9 @@ public interface AccountService { */ Account importAccountByKeyStore(AccountKeyStore keyStore, Chain chain, String password, boolean overwrite) throws NulsException; + + void importAccountListByKeystore(List keyStoreList, Chain chain) throws NulsException; + /** * 数据摘要签名 * sign digest data diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java index 4ca0ad441b..30a32d5c2d 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java @@ -588,8 +588,8 @@ public Account importAccountByPrikey(Chain chain, String prikey, String password accountCacheService.getLocalAccountMaps().put(account.getAddress().getBase58(), account); //backup account to keystore keyStoreService.backupAccountToKeyStore(null, chainId, account.getAddress().getBase58(), password); - if(!ContractCall.invokeAccountContract(chain, account.getAddress().getBase58())){ - chain.getLogger().warn("importAccountByPrikey invokeAccountContract failed. -address:{}", account.getAddress().getBase58()); + if (!ContractCall.invokeAccountContract(chain, account.getAddress().getBase58())) { + chain.getLogger().warn("importAccountByPrikey invokeAccountContract failed. -address:{}", account.getAddress().getBase58()); } return account; } @@ -634,7 +634,7 @@ public Account importAccountByKeyStore(AccountKeyStore keyStore, Chain chain, St byte[] bytes = Base58.decode(keyStore.getAddress()); byte[] originalAddressHash160 = new byte[Address.RIPEMD160_LENGTH]; System.arraycopy(bytes, 3, originalAddressHash160, 0, Address.RIPEMD160_LENGTH); - if(!Arrays.equals(newAccountHash160, originalAddressHash160)) { + if (!Arrays.equals(newAccountHash160, originalAddressHash160)) { throw new NulsRuntimeException(AccountErrorCode.ACCOUNTKEYSTORE_FILE_DAMAGED); } } catch (Exception e) { @@ -658,7 +658,7 @@ public Account importAccountByKeyStore(AccountKeyStore keyStore, Chain chain, St byte[] bytes = Base58.decode(keyStore.getAddress()); byte[] originalAddressHash160 = new byte[Address.RIPEMD160_LENGTH]; System.arraycopy(bytes, 3, originalAddressHash160, 0, Address.RIPEMD160_LENGTH); - if(!Arrays.equals(newAccountHash160, originalAddressHash160)) { + if (!Arrays.equals(newAccountHash160, originalAddressHash160)) { throw new NulsRuntimeException(AccountErrorCode.ACCOUNTKEYSTORE_FILE_DAMAGED); } } catch (Exception e) { @@ -688,12 +688,31 @@ public Account importAccountByKeyStore(AccountKeyStore keyStore, Chain chain, St //backup account to keystore keyStoreService.backupAccountToKeyStore(null, chainId, account.getAddress().getBase58(), password); - if(!ContractCall.invokeAccountContract(chain, account.getAddress().getBase58())){ + if (!ContractCall.invokeAccountContract(chain, account.getAddress().getBase58())) { chain.getLogger().warn("importAccountByPrikey invokeAccountContract failed. -address:{}", account.getAddress().getBase58()); } return account; } + @Override + public void importAccountListByKeystore(List keyStoreList, Chain chain) throws NulsException { + int chainId = chain.getChainId(); + Account account; + try { + for (AccountKeyStore keyStore : keyStoreList) { + account = AccountTool.createAccountByPubKey(chainId, keyStore.getEncryptedPrivateKey(), keyStore.getPubKey()); + account.setAlias(aliasService.getAliasByAddress(chainId, account.getAddress().getBase58())); + //save account to storage + accountStorageService.saveAccount(new AccountPO(account)); + //put the account in local cache + accountCacheService.getLocalAccountMaps().put(account.getAddress().getBase58(), account); + } + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsException(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + } + @Override public P2PHKSignature signDigest(byte[] digest, int chainId, String address, String password) throws NulsException { if (null == digest || digest.length == 0) { diff --git a/module/nuls-account/src/main/java/io/nuls/account/util/AccountTool.java b/module/nuls-account/src/main/java/io/nuls/account/util/AccountTool.java index 9b3b351f6d..8a835e4484 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/util/AccountTool.java +++ b/module/nuls-account/src/main/java/io/nuls/account/util/AccountTool.java @@ -112,6 +112,17 @@ public static Account createAccount(int chainId, String prikey) throws NulsExcep return account; } + public static Account createAccountByPubKey(int chainId, String encryptedPriKey, byte[] pubKey) { + Address address = new Address(chainId, BaseConstant.DEFAULT_ADDRESS_TYPE, SerializeUtils.sha256hash160(pubKey)); + Account account = new Account(); + account.setChainId(chainId); + account.setAddress(address); + account.setPubKey(pubKey); + account.setEncryptedPriKey(HexUtil.decode(encryptedPriKey)); + account.setCreateTime(NulsDateUtils.getCurrentTimeMillis()); + return account; + } + public static Account createAccount(int chainId) throws NulsException { return createAccount(chainId, null); } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java index 065a83f3a0..c02538b0aa 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java @@ -97,6 +97,7 @@ public void afterPropertiesSet() throws NulsException { register(getBean(ImportByKeyStoreProcessor.class)); //import account for private key register(getBean(ImportByPrivateKeyProcessor.class)); + register(getBean(ImportKeyStoreFilesProcessor.class)); //update account password register(getBean(UpdatePasswordProcessor.class)); //get account info @@ -259,7 +260,7 @@ public void processCommand(String args) throws UnsupportedEncodingException { String[] cmdArgs = parseArgs(args); try { CommandResult commandResult = this.processCommand(cmdArgs); - System.out.print( commandResult.toString() + "\n"); + System.out.print(commandResult.toString() + "\n"); } catch (Exception e) { if (System.Logger.Level.DEBUG.getName().equals(System.getProperty("log.level"))) { e.printStackTrace(); @@ -296,7 +297,7 @@ private void register(CommandProcessor processor) { PROCESSOR_MAP.put(processor.getCommand(), processor); } - public boolean hasCommand(String command){ + public boolean hasCommand(String command) { return PROCESSOR_MAP.containsKey(command); } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByKeyStoreProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByKeyStoreProcessor.java index e339adfba5..d4c07930cc 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByKeyStoreProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportByKeyStoreProcessor.java @@ -74,7 +74,7 @@ public CommandResult execute(String[] args) { String path = args[1]; String password = CommandHelper.getPwdOptional(); String keystore = accountService.getAccountKeystoreDto(path); - ImportAccountByKeyStoreReq req = new ImportAccountByKeyStoreReq(password, HexUtil.encode(keystore.getBytes()),false); + ImportAccountByKeyStoreReq req = new ImportAccountByKeyStoreReq(password, HexUtil.encode(keystore.getBytes()),true); Result result = accountService.importAccountByKeyStore(req); if(result.isFailed()){ return CommandResult.getFailed(result); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportKeyStoreFilesProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportKeyStoreFilesProcessor.java new file mode 100644 index 0000000000..ca7ce4dbbc --- /dev/null +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/ImportKeyStoreFilesProcessor.java @@ -0,0 +1,85 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.cmd.client.processor.account; + +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.account.facade.ImportAccountByKeyStoreReq; +import io.nuls.base.api.provider.account.facade.ImportKeyStoreFilesReq; +import io.nuls.cmd.client.CommandBuilder; +import io.nuls.cmd.client.CommandHelper; +import io.nuls.cmd.client.CommandResult; +import io.nuls.cmd.client.processor.CommandProcessor; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; + +import java.io.File; + +/** + * 根据keystore批量导入账户, + * + * @author: Charlie + */ +@Component +public class ImportKeyStoreFilesProcessor extends AccountBaseProcessor implements CommandProcessor { + + @Override + public String getCommand() { + return "importkeystorefiles"; + } + + @Override + public String getHelp() { + CommandBuilder builder = new CommandBuilder(); + builder.newLine(getCommandDescription()) + .newLine("\t The path to the AccountKeystore file "); + return builder.toString(); + } + + @Override + public String getCommandDescription() { + return "importkeystorefiles -- import accounts according to AccountKeystore files"; + } + + @Override + public boolean argsValidate(String[] args) { + checkArgsNumber(args, 1); + checkArgs(new File(args[1]).exists(), "keystore dir not exists"); + return true; + } + + @Override + public CommandResult execute(String[] args) { + String path = args[1]; + ImportKeyStoreFilesReq req = new ImportKeyStoreFilesReq(); + req.setDirPath(path); + Result result = accountService.importKeyStoreFiles(req); + if (result.isFailed()) { + return CommandResult.getFailed(result); + } + return CommandResult.getSuccess(result.getData()); + } + +} From 8f13f470bad8fc19bd1fb5298ff7a4df0ff4f0ae Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 9 Nov 2020 16:54:24 +0800 Subject: [PATCH 150/304] dev --- genesis-block_dev.json | 2 +- module.ncf | 68 +++++++++--------- .../src/test/resources/nrc20-locked-token | Bin 0 -> 9808 bytes .../src/test/resources/nrc20-locked-token.jar | Bin 9359 -> 0 bytes 4 files changed, 37 insertions(+), 33 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/resources/nrc20-locked-token delete mode 100644 module/nuls-smart-contract/src/test/resources/nrc20-locked-token.jar diff --git a/genesis-block_dev.json b/genesis-block_dev.json index 74e38b2c66..e6dc069c74 100644 --- a/genesis-block_dev.json +++ b/genesis-block_dev.json @@ -3,7 +3,7 @@ "time": "1531152", "txs": [ { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "amount": 1000000000000000, "lockTime": 0 }, diff --git a/module.ncf b/module.ncf index 1b3dabcb87..176254c9eb 100644 --- a/module.ncf +++ b/module.ncf @@ -1,21 +1,21 @@ [global] encoding=UTF-8 language=en -logPath=E:/work/src/nuls-v2/Logs +logPath=../../../../Logs logLevel=DEBUG -dataPath=E:/work/src/nuls-v2/data +dataPath=../../../../data #默认本链ID chainId=2 #地址前缀 addressPrefix=tNULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -28,19 +28,19 @@ blackHolePublicKey=0000000000000000000000000000000000000000000000000000000000000 port=18001 crossPort=18002 #魔法参数 -packetMagic=20200120 +packetMagic=202001173 #种子节点 -selfSeedIps=192.168.1.60:18001 +selfSeedIps=192.168.1.39:18001,192.168.1.40:18001,192.168.1.70:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.60:18002 +moonSeedIps=192.168.1.39:18002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -50,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=0 +minNodeAmount=1 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -58,12 +58,12 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block.json -dependent=cross-chain,smart-contract,protocol-update +genesisBlockPath=genesis-block_dev.json +dependent=cross-chain,protocol-update,smart-contract [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -78,28 +78,38 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + +[ledger] +dependent=protocol-update + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN53PMBv2aFv4mBYegx1chV22NCrCpA +crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 rpcPort=18003 #数据库url地址 -databaseUrl=127.0.0.1 +databaseUrl=192.168.1.40 #数据库端口号 databasePort=27017 #连接池最大数 @@ -110,32 +120,25 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= -dependent=smart-contract,cross-chain +dependent=smart-contract,cross-chain,chain-manager [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.60:18002 +crossSeedIps=192.168.1.39:18002 #主网验证人列表 verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dependent=protocol-update,smart-contract - -[chain-manager] +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract [nuls-api] @@ -146,9 +149,10 @@ serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] +continuousIntervalCountMinimum=2 #每隔多少个区块统计一次协议占比 interval=10 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.7.0 diff --git a/module/nuls-smart-contract/src/test/resources/nrc20-locked-token b/module/nuls-smart-contract/src/test/resources/nrc20-locked-token new file mode 100644 index 0000000000000000000000000000000000000000..a52af08a507d230ccda18ac8dcc44f541c8246c2 GIT binary patch literal 9808 zcmbVS1y~$gvWDOUclSWB!CeP;cS(Xf0}Sr2K@;5F-GU`(aEIXTB)BKYBYQWSyEnP} z_S>52o-^On{~wv^s_r_aBnt(N2=QIyTq6|!(fH>H;qg;mTn)%5tsudq^iMT-2-!!q zAYAX44v#;FJRVqoR+9%RNK1&TssZFB&g6#%w#o%K5omZ9hPvAlkBX{1mEb?7w-wAVK_oG5~hpr z%(>yq1;m<78P>OX`U#x+vZ*$6aX}T@6YK}u^-Gk}kfO8Zwe?jO^%Zjof(?QV4SVzD z`Y&};F(!_V7E9^-r7q1jYlR#Sd3G|+zIpi^txOkI@OwbE>(tjErk?Du-UcBl_8&XK zH?Ahrv9IPrrXiA(MGSK@cH!d}Y%a~Ag@9T42|L|xO*r;XG$HlivvEd)j%Th3=WfIx zGLcpdLmL78$BnGF=}4J~tCQsH8*C!$wGM0Gn!789&u6T+q8#sicS=v9uW9h_wMW{} zI&n{)@m!hUzsG3*5I6?7<=iM`^^^~;92^HhpMYwvU9>$_O;-@t7fwA{LXQH+0v^x+ zEAeX{)7Ogpr0qWamsddxsL*3Ra3@_5-dOF?P}kBBLh8(MpOVUz8b1R*7fr`k#Zl_t z%{lV()Bv+t!Jc32=(5p>YT!1EG$?YjzG9Ws7MI2EX5x`55^0*-RYYmejaQVP#J)HF zL{dH3O2Tg)yPP$w3r=UloO8{wYUCJ6RKGik&5KW$dgBH|FRs`WqnPAKk};k9 z^s0fL%`wkva7<}_#F+D~X=4~WlmM9F2U z78UkBxis9m`ox;7YDNy@h_4&c9;4l}27GNRylG>X3dlNPko3ff^(_|0k{i%%x0Y|` zrqKE3rb$T&cMOu>IJ>Thu@aKj!mTHBSAwLe_ps+&>7+5}WuIEQnKi?%U$S7FG}cdM z6M%OsopS~vPmK9nqzzOTrk^A%Br6nDdI@Js!1t7QCsbqk(K9f9^l6DVr7}Knj3pb_ zhM6<_U{8_J5Yk;({}8r^ec3o{_!)mCL0wXOUu!~vo+0B#(1@JPmL_DgsJPO)KS-iS znV!W!b{5C2{p2JKck0}%yo1tFxXrnSxHv|dmCd@au~5|r(WRB{L`HVTI|jgA*8i=B zHfX*}!`aT!2YrRmY|UfWGLgGZ6~2_)DXxBk(mBC2{pC85mwah(rB{gaM2hX#c|Lx= zg_=vmcVc(};!VI%f|IgYGazvG%D#7?VAE87+$~5e%!qJsr_*UBN$$xtsp(-_wX_+h zXd;J+eC!QX-yngRLevU?v9|N8)q06V5K-Gfw5+x&Uq0RI=t5P=rW9O7lmZ)iBhWY> z4!v$40YOa&Y+6iGFDuu<-QrNU!SFI4mfSN3)ut~!(+{#@%r-ELJ5ny*%?%KVy+UuR z&mx+dWN&5`PdxVsB6-OM9HX$vj*CV%TJ(DqJj$J^3N58)NV0D*H$*i)Wk|etYN(NPRYcC9Lm<^)oequ4ZP z`@ONLp)0o_-cD?2Dq{#mN=e$cm|~sdnlK~RHzGUt%6vI(9ITwN{Sqh(vFO`!9~G$h zET2&pI|d@h#;;!VrA#|`#VyI8!!=S#sC1!3Pv<0w7wD8FB+=#QKv~if*Kotj*T2?L z8r+jmTSW{K?1-IWEJt&gj7tyG>dy|%*KL(EPBM4I4&OwSqhd=*kwQZF!hm3W-a9%m z_f4PIon&me%VjP=?Jy^fdSx3R(g+uJ zfYsj!Gt64gC$b!nm^H9u!$8|@E6os(-x&0|N+>gbz3-L`0)Xec@}-|P9x$vd=BF=bUeBXg z)|#xlEWl*4%{MHlgh4l*=o*LuvgH;EAvZFh*s=5h=I~It8m7^A1!b4$7V&S~m2bCp zq_@q)-m30vSj5h*4$LT0TSZ1%#Z8=|6ny+x&aUqrEYnLwGBoXtW2z{0<4>!ea9ife z3QqO%Oi2K5XFTPI!4oBk9J804PAYlp5Fc8?Uq(i-LBGN5!f-#`{?L#JIV+iF?vI2fQ|J9(CGwk|Iy;306=S82Ac z4STrBZ+$#VSVvJoqV4YnR6ApdL&MP*Bi`o@ff4j1y71s-A{Q1An8pV;61cyvvPS^g z4#<@mnD^sMb^(PlMU9=rri77X!wj*J@pH{~@^?@3c00*}>#+2zc+O6o>4W#SyqC*6 z;I~+q_vdHa8dHzf7n7k@OxU6AW=y8w?DG1yDO@5!DP;(+n{1CwJDIQbNDi`+c?+wU z=R2xd2sZF=&Yb$>7|b^B8h`;S5p=<8dciLRC{1bi!d@wdWYEkyQ0aFhOa_Y1^AFZ@ zdn4Pv|B%P?@k9c59koyHoF|Kg;|9dOA2}ODbCPmqE{Imj^+_Q+zc8nEd6zdrTp(U2 z#x6fWj3jd0E{LDlAgw7B{2`nAB~NM4sa19kyuGIYhYQU%dJjc&w+wF&fsQG$AE-e8 z@_5PH9~bC?HcjDP0)3Ko)wyT<-Ttg!;Ngwx6}t`C^=q@xDi}zXNz5SXr;ubVnUnYFGk^=#a@0KI>#Z7 z&*eq)JRE+xBfqoMRw0htp5Wa_u`=zTto*8 zBoVS^;>0)+Tpdw_t{8E;hI-%F`Ozl2o-&Ltmz-OR4XUyVwMK?J#Iy=ituwZ;`%^y@ zh!Z2V4P&?yM>uZcSBvu=(?MIk6M;)3A0^T=%NHFPjq#`;+a#iFizdn-`*JnOmT63K z1HpR?#HkfB-1qc9VJ;S*>sFOVQbBKDEzZ~RMGS9M4@re@9>jD^L}AT0!!UmD83TiF ztSd8k=gb>Sc_rP*@4Ulc_ZW^zy|D_6!lV;=qO?9^X~fq^8zc#c`jVOm^7J5biF>3O zdHXbwDLZ?_v8|mCF~*1uNYq~1bu`8+iT*0KUJu2xGb9b6D4n*BO;H&6i8{ciAhuT*xLDVUs)L#2 zhoh{>o>3eJXJ0nox5qtr`nh=sd}$-Od~uubQ82`0tI>)0+!M?L7O#4%BzTkQ3r62B zuK-Ex`ispNF|Ud>E8z1cVbd-lhQ9^Xr@7xf(LagU{Q7LDH?er55{sPz9n~z*qPqj% zfYpBAsk?jz=pLF+h@N@7vA*tB8)0S-nK9B_L0i_Jy$2B4pen75o1aNa`7mO95&48F zLg42cnItYmfGTs9FnfGsH>b)A>|S5BFnEdg)nwL2wJUfEFIgaRo%%2}?~1YD6vXEF z(s<+srR%E2TJD3U@4H^n#SQYq6SS*$p}5QocY;qP--m&noxze{NTDMvaG%0}1Uhdw zq#T7-!W-t(CKNz=Ei?qBEw+d=JH}=EyLt1PnY(l7mi7AJyHobrt606BbR7=%H2M3IuIL?D4UfX!dAPW$X_|KN5S2vZ7@k)u?ifU zBn;A<@P52=(>JYTAUm##Uhxi^Z3jZHKBFgcr%EAE zH(j?W(#u3`zFWbJOD}omh-#ZBmBp-FJCMGBPZ6~Xi4HLe+RF0hq${1)6=YjxEc0pbz#uofMya+V=d!MlPH)Q_sJ@50R$@1%+Mu*p z#C$Vg@)FYt(2qEKaJo0FU zfUDJZtm(#k*>QR4bFjxu;=lIR^{HJW}@4IycZ_Z|rs{-7S8S->zWSk7k z-Pw;;6+P6SQ}s?=m@9FaR}-XJkt_zy1K*mygnYTgD06m`HE6bY=Wm`6vo{5!a_VC7 zg4e9{qDYC0JkNbBj}uF6*EHIUt))TmAY=I2=t$RZkx=jO4Zvk#YgtQVU{-sPUw=qm ztB4b~%KBW3v)ORqi{km!1G}HlW=(4deLp*+3G^X@;b*DVcnnZ(cVmwB1&(nkPPA79 zjeP`t^$>LE2dzug4N5=^pZ?ruUO+d1f6bwCK}}?zc!TuR--{3pKte#gfQEpe`1=gOpK=5FD&q>6 zKr8{M`aztM=S5l1W#BE`>@Z2s{R%CqEJXaX(@pWUXQdOy0uR#n;j zhWs$w8a}?A43CjEwyWMz&kO>wsut5NZ;5t>Iie8-5oc_8g5%!{(=RHVU-q7wCU_x*5# zjppFAZ%qAsb2gSt&7E;#i)(6HbWx*t%Ton}Ts1?8J1C~%UtV*a#p+rvJ>~l}eZN?t z&^;rf6C1l8M@mB7wZNk;&s1`se7LK#IhK;PHp!puQx|sqihZ}jsN!uCQg8p*JyT<{ zq`pORXTiD>-Dy$XaL`!glXwFwk+BeS)>Y=Rd;HFgktQh%kt@*P?48vrh$ed2JK4_w zaxF~OF)`HQWww6uCllYQcv>xN7n&*$t@QT84ank^_9_VwmfQ?nV2G>O17sQC7FII5 zcNQ=B6Ama?B5-)FN%7b*{D?aeUN_)~Z84hzi@;N6%2p~I?cvG4Tf)9at6TJ=6>LAI z=a~N=OP~VU**Som4XnkTO>7RJNUQe?s8 ze!>%PxjE{D4U8(|Y|@q-U5I0{Fye*xq4<5#$fy8J&zRgG!rsACb*si)Gu=W#rzPvR zgl$mqUk}Z(nQeQnc$!JvpJl%EhC0Tpun64{!NhtEX6qQHik2@<`otWt!_nG4jAYux zRk|*YOk+nLoOsRMJM4*sYoxV$_{{c&Ms*QIFPhVGgM8xJRN9vDfkXcw4$*>3q<`i` zxYb;k;W&o?C<%DMDc91cnwu(7Y|ZL8tk1<6`K5WS(v+q=UVDK{Q!Y^@9(}OkmL+&F zEZ0TAv|;VCpFeuO~eGZq??xHI$_7T(v}ZZnSN&?O?xXmNQ> zrdQeYa(NC`Ta2n1`Aaa;w3shH*R9abBQ~Nh_<$D55+g-IBRN!RlF76E_9o1t&aHwj zYy044)#S`COF-=sP1>!A`Lpr5odH&k(c91)F9VhSD$SawgEPbaLTRl7?L>eHKU(rQ zU=I6^XKocI$Qu5jsH6D2WUU<5Up8!$0h?T73*#Bv*U%e<5f?^}Ao3SMOwK4db+rlL z0o#tWYF8$6k>N9bc}da)N5^bkNmMSH@zM>}Q@R)Ad-pzEMXu_-l&)$$*u;u!7Qu(^ zcyCNfsTBC$gSJ}MPb2r=h0nZmONTIp?Tp}**<^)UuLyh1<%nbym|cEB~YX+%&lSa~^$esdRA z+*N2FoH4{*L{CoMiCq}N(J78gxu=jTaptvKc=T7^GAXLG5bp7p?HtJ|(C4l>qE91R4K}M1*L~DER1^1iPqPg)nMTDzgt> z@ThOLVrtk=x5lRwLvNM3vO-t+atcVO0y*$8q=F-QpQmc7K__}3v7>uMe_F)ibA-|6 zn34%i0f>o`sR+be5k8UTf~A;-y7B$w=?Wi{fhGkTfb83MA#BS9?eKzu7ecH8?i9WJ z<{FJmkL^WLh3C7Omv1S@UFqZRNtE6A+9DFvV8+?+4$0_j3VlLYN1Yb(qjJbaKOjz3 zjx~#Oz38Tm$TW)~QCR z6r@bb#N1*!rhboA2m7R*L#J^!^W%oU0=g(x#45sgR`Y!4y~Kxb8thNyRqr@QiYMuD zRUUZwKkoVJgJqbl)?Z1?D_oVsrnzb%c7fD49MEV8bkL4k;68{hW>oHRdWjC7F%}#z zk#H1<&Za|u#pjn*;+_RQKiK&4vUv;LUzWLFa#s>>@aQ2={5&m~p<=wDRXNzZCyd@D z+l5_I3JA=v&t*J*cGw6fXkcs8q79UUNxz76F;mnfD!0G~5(+`;|3 zbMrSe*zkUIZUg^~b5nCLumzi%IQ*M)TTvxc$GW$5t|e@Ex|S#msjE{OOjTt$uF(Yw z#6ix7A$U4H|7@-^p(>(<@C6a+SI~7u>v0xa953(2bs*b4(>+|2`{7cM2u6EIn#biL z`0!@rW~A+n(8J9Z7sSz8Sg?W|JFtTaS5;3Ayzn|)8yWmAcMX6GPTHAo4Oe8>>lAyE zdCD=`Bl6@5Lu+&23qVq&rBXdaCUmxF6HM>6z>y|1#}!_I>1xWtd^?fAqE6?QaI}MG z=r@SA!ZC;)kxl=wxX2M{!#2xaa1iN6Q^m;;-TGE}p*p}mIHdRtwe?lw+DQP6Ki@_I zyf7<>?^D~rW%E{f(r1&Jx}BvQZ9r1S@CV9VBI|iU(X((f-g~ye)TR0~Utp#S(O@cV z>U+?*a|4Oos;zcZb>~*3YKPj!MSeKu?1DzerOklD%K4BDeN`)MuRRo7m43*G92a1W z|B@x4tdg$5EPhwasS9x%8X2m%BO+Akj&jEe_dMx}UO}?bZu{0we$0iOsyf6W9ca`k zblIH7n~D@9!#t>VU=^!6=g9fG=VC{Lr4PA+g*g#ZweeXfOIYakRy%_&V-lY~6M>mb zo5j~u@_rRdyNoy`#&}j9wy#pqhYqWABe0@7=$`ft=J{{xO&Zs+%Xw1IDiL5qno^?# z%XW7~8ly-6fLzU9Q7ko23CFt!1f>(HUOrdNo{}itcf(`)PmP)l6J-;6$L#4&t-Pl{ zI+m@m;AUdd&-t|z=hoCft(%4oGdXTD4~*$7a0M?1drGRxAJ7FtNAwqbDdeSkJ(YET zCSz0QWtdm=IWpK!iq*xLp|G3zZ3#_&Mqv@KiQpl(pQrbO5C`~@vtoR579mAaD%8GW z4>Hoexku*pWXZTU>DRq)PG9LJ=_cosy%7>dh{zH~NQ7ljiG}Z##q`PNg1Gw`+)%O+ zy3GCjPzd}>jpaj5@Y)G|$6Q}fvuE%;9=e^#6K^mOg1Hp?8jm@pQF^oDLq1LlkzaP% zdyC_N!ad!0(YB1F444r~Xh0eA=uWL7l?b01!~;$!4%yMzKgS@1LkdywIh($}$N`Z*>(Cg$uKukcQjq z0}6@}zU-scjGYyYv+@y+zao?U1}%bNa*m-yhKl`ks!81c##iP=XQCF4338xs^q@QN zf!a3QK?aXp7wITsZE70llIyFwXI7PMkdx(`R!8@RoC%+(d2T|DnKYbu4twU@a?Nj? zT`BLh!-o{3zc`o|veu0)Um<$8yyJ=9r7oX1E<;a^R;*$n>^LMFBVDKT@9aPUTBI63 zOdv<2>-kIbQV4w1T05tK8CNAxKM9Q53Sd2@2b8}LTwd0D1}je6fB8u%@!c}cejv}> zS9$CMb;l``1GzqXz32>l7}Ci%Q|F{VeA%zti;sJIKetkC3?A>s{nxj@>4+Ylf3JRmJ7Gnnk^|@YiTSR5zZ#V>KjFQWC-BXh5jVU;xkj2c z>e$3ka9I7#+nCq3@4DFw8P>G+k~|+SMFdyTUGZHnR8!Z#XdPNEEUtTgqny& zCIWma>H8p&t)zuh+#x4jN?QwA%z+|Vk1ZP$AZ*D=lC4(F5gns$1%R4R;q#mh9CI+b z^R;ePrpy521FfLB3{=wtt`Erg2PecnQ~D#<^*}2XjlkK|s3t@z%Y*Lgu5X*o$8FFy zi5eFWKp(k|)d!!k;=>b6u;V@?I>}DF6};9Dt=r=3o1_Sy6A0hV(>I{eOzLyzUdq$( zc4rkDSw?16)dr|k#IhZZzE|~wyR{HnrGYW`RT|F^eX8&6Q1}(YNG%&5)$5jpZ2E?O zOobTy+4r$gwJc!J?*K*DmR=lq0 z$DDkQ&`yzNn4w-&)Lo!8hXe}Y%ip$a*kIaX!kfn@PKeZW2UrcS3qFzE1$>Bahjg)^ z0C>&8jRp0CXroQ<8TJr`X_LFlw={FU_t$T$;RWP9t92J;QRD`dYzxJ->N;dx6Ct^1b81$L2rEE&hI_-wQ7OkneymkIhHGKg%!v9`(Hd;}7|c z!gx%G{6PK5GyXmNdqKueIPiDyAKvf>$?pp^e$eFkIsZM$FXb9P7x4EZAT_P^en|77>U`+wMfbEp23{a0i99xeY6G>C@> zS>ivL{{!Bb B_iq3I literal 0 HcmV?d00001 diff --git a/module/nuls-smart-contract/src/test/resources/nrc20-locked-token.jar b/module/nuls-smart-contract/src/test/resources/nrc20-locked-token.jar deleted file mode 100644 index bf1e3dbc3418214623592f68f99e4b5f7c79e80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9359 zcmbVS1z42Z)<)^jp^-)$x>I22?i#ujkdlT0W=N$GkS;0d?v|34?rx-&ZczB~dOV(c z^xXeGcg=k9JhRrjWA^v1z4!Ym%fTa{!F@9+9crb2-TZMvy}c?(sEIJiC`z&@|KWxL zCwc4UN8tIy;r8c%+XMHnZVDobGLjNtHD(3LBZaG?UzdE3Ncd&7?a{LcoSby;{wzYvc7#c(VgFC_R+#$A>CN_TteecdlaiV_2`*3g( z58>cw|2YV3VQpt+qV^4d+1Sd^(XmP!=B}sdbiLa*YUNtaG#$xR%@~T^6(RXZDXCvX zagMfnrbEn?Fg~`)sy4nCkY~9xkqc$`E5&gisLJ7GQEN zjX=DQYzSEb_?(*~h-hOh8?(FX`DZwsN@3miVr-+KJjdZ53vqU54-^W0i`PX7MM#ZI zmh#~tYY#$sk{rDpjghl<&X$lI0rFyQd&2qAo_{!m=D>nb@R9EgyLZmMcHLPe#vsCh zCYBy>EMOl-*hJAru(lm1dS1@hL>b&1JFO{p{>HtTtaVY`j;iUQUK3qg&6@*jeysMz zp3_Ctnq~sw8_aegqyr_9FOHZu=}(^(g%k}{pEz4K$H?nWZ>?&vrS>S=Dx=`uH|=z^ z@Egh$i0IMU^7bZDH)mddrQur0$q^-(JG9K-uhr4m{YiB+V>(^HdgFqh(bX+M!kZqdiY&-O-iTiOqX}^~?fAJkl9Z&rS-)2Q z%g@}ArbDthj>w;7{8nJf?g^g}-={-tj8X+)$uwtUy{#&2-4i7D*vU6cJieYVnp^cK z%%oqdO)MDngv?&(Pe65ML5~fyTy!s@3+ELwY9C7s6>Ow4uAfd%uWHeAwDq#n>}(FG zR>${D)r0+TQvqfb$FGd& zHQ!5uD!M~X_cYA0MClj=lDe^KTM?_yZOacseAAOluz*c(DL^|Q*}Mh;I>Dl^O7bP8 z1-5r|2i<0rNfqkgwLv9A0yl1*qK2IViaqLJAwuQ=$x%-R{cPTv^%Bw30&vo3{?(8=I3X^oiTr}Kfv`mEHk3huqndxz+ z^AS~Qw;QCbv2?Jc2izy!?C5% zKE5Y((_c~U4Oknv0;%n zpDw>4i+49{8#~3i=%oFq>JcxO9QH8^6H~vuj)WWj#e$zvC`8^tI;)YUA1BLwVE~`> zMr)KumHwKAZG^LIGG(eub!1ZOaW|4#=o18pzpiG=P%-?`NNzFt;X*2%JOjp!s{1GK ztB^I>3)HL2=+$v5^)<&Ly~kx(&890lg#Px)K?+k=EBIdug1p*H{U%=F+m@oaC5X$1 zEV<%ju+P!9HTMSJymwLH58m)TPYJqdKU4SuC-iLVxpD{Bi}CuoIo9&USfeR+OY7IB z+ML{3MWQXtD7p1M(1rG}ePf&(ztnvZ1!rUIq8xmjW}kY62KWH^1_ghD{YC19(6jh+ z@;R#&uLCcUFJtXDA0@H{aD>{lafG^faadGH(v@W|zJw~O*A#l2qX2ve;?gYqdK~PE*&tU+K}2qJZ^Py zF65Z*c70;{?B{9tW0dwG1Y<_d%;;xkkQ%fI(vLN>IBFmA-x)S`>(fH|bM#L`95Zwt z+d&}4gC7P+^*$3#57<+?2phRp8minkk=-(qy>Zo=r9CEY+$m&e=SH0tZn1_LeWoGU z4Ew^7l|GPJFnr2ddwxK5be#kp{A6U*T zFrZ05=fH0)*_n3~FQ3oCI$NO*@&+)SZ9^-yS?DoCxi(#%v2L%S;BcZ zr{kTxxa;BG)HULzw((jdkxH3r^RF zi1RK6S|{0VC`K}L*n+>PC#@G_h0#M4P64nGM2+ zSZ#{MKHLm3iu#~q&-l(ep%7MJ=~q*v>FyIVr)|J8f)*3bWw6~4UVda;!)$bCuxG#+ml?MFFj(N4aG6%eJLTjq~fb&SoRbYO657{fK*gN@3H}$ zQ8e6Q0~}?Eqv@f-_YTXWJ3mDX9rZ()FeWWt>1Nnu606)rYIsvYA|SO|Ki9I;L&I@E zm1VY~ASh5DMW* z9PdAEo!@@Ip5DoUVh=Vox+f+#p#VUxV@_Y53C!?ma=qhmV&v-Jy`URGxg`_PZo9&z z^9pFtn-EswW_Xa5YOBkt$cIF&cg1J+c;6}#6ublqeogVY!W>|f-?>id5^Nh=I6C#| zU5mc2;eI`zpfJb1l=j1OxUK=Hx3OB^V+xM4B$b2N`}aJNTX9X;B+PR#3Brp|@Le`x z-bIo0e3%?X2&vPS}!vR09)7Q8XX=0>E#wbY}gUviL+p&pHpfKmHamW4gR^$*FqT%>;TrAldfc;f59AS)f8>#gCRGxUG1)d8{Ft-z zKoZcE(f&|}EC@%;E8*<4eF?RlT)bf6DWo zQmM00JMgBP{^&JyN{avUBgjNQUsg#@uZ?p*acpJd8#bJLnrJ1@bbDse`JGGC5N2tJ zm?Z!6K!^`J1}jLJ@7?;gti2QaG26S9N2`}~j9Esmb`AN*?fgk>U#f#S{N3g-NF6yK zfneBB7fb(RLHUOEL zfXp_rLwrCtm>-Ks>@{;fdNnvX!{&_r*=AerY`plr?kaYW|4jK;o-Kiv=u=?Z*=XVO zRKs(@4vp0c^}qoBb}_P*hk%3dU??H@NH;;4!DM#2?j^|R22)EdQa;}Ogqy^H>Rmui zdXZpG`!MmOO&HBgB#pg{cIWAmc0U5q0~pMETyI%5jr>6x&D2k%Q9zaVXSMv; zVTF`nUJ&ALU~tu2nHpyJJ^l^yyG5wwDBTmxRfijADlypRET}KC--QerX@2S{e=Du&S5sd7n)GqK!V# zP5r^1X1`87h|mh(%f2D*5`F7hI*Fn0NsMkKHGC#dRz0Qt%$30W;@7@OI;20xDl4mvG~S}m^1>8`h4p3K!GEl6PGOOH7o@8TrT=*laFOl6Fl`PsJtdO zvK*_Qi$&?Y3e@q(%WupVEjfl3XGU^cp6LZG9=V!2?Ag@`EjiTa?D%5GeCfY zqx|Qk`F6-Cl7dxOAlT$(a{H@Nu1Q_FzC1wh#1ptpU zfi_vNrQssOZjv3A0d|IUowHf%eL|{!$Cgrq0`lY|K_%SD`OLMVv3Yp^{wPtmgkbR2 zGpQi|iB3nBP-hG`sS)5iWoDVs)7TtA`)P?*sial4S8~{N^#u*axNWM`stJw~-N99^ zQHIkv>Q%1{l=RuG^d`d{Z>V52^$I%@np%;8pd>W8jswEB#2Ls($yn{>xfc0|)HTsk7rj=Q`31?5cW)ZEeq>pq%_IiE*J(QvF~OohT0XH#Em#+*srxNb^p8 zG3;^6JcKhhYurb<3{2oDH4<3~vY6^R%uDsR>{bdWmzWAjB>v+4wYiq)K zuX|s1R?DVYI9M4e`0aysvDtPQDj7!KVPICXBNnXeA~*vIaHc%?DNcwVOl*dFZ(Y9F z#|+yPdNJ;|xI}yWfVgdFW~F~9u#^{chMJ;yK$?SPXu0p<532MR^-&6%xhI3Q^5owK zf(v!hSorNASijxIVf}vw0#L-x&cW8%&`QGD#0K(xZy{7e*OpiU_qwxw!Kpg2US+k*amfgS<1l4cO1Nr4qXeh3!8F^THmAomk7ryZ9Pt`PV}@JqZ+WoC zN_+JwwrhyLu4;|X*TZzS(gVq3fO>rtvF%9yjUqY1M-Xv#vi9<+d%w{N)H%=mY9c$K zia$7Ck6X`p^jN`Vq?&YbpQ$TbASx7{beXPV+1Qj~CQMA0d1w9mt9WI%P* z$ClHlB%jeA*L(N5!8kHY;yr|&wDJJyo?bs~8k_+13{27t;l4feC^Y}ZSZ%#V!}Tu_ zEtVL4%ao+?*p!4o*`spXRc`zcrZiG6o*0A24JX2ObZk6Q5`pSv!rdW)Mokr;>th=` zFHTK zsCb7usnQCa|E}u;utWicBFLcPkktO76Qb8vFxManHwwQjLHx*J>yG`Tc;_cRN!Fer z4KG)W#(O7#tEBr(#2*-4lhZ2Jlf=Vc=iSh@hGrM&gh08Tqek{jtvq|+kBywgo2vnp zf8=zrcFjxKEX3w<&N(m?MTqP~1r)DcIWCo~-82HuTa1}E0lpr42zlU{M_Yu@?0Hjx z-2#E5ZsCz)ZsA_I1&R?nqS2ofdLY9H0H*!nAWB6rCt+b1+`ygIk4_2u(6zvQs5RLNwHxm%)~2$bXSu#$)2YQ_|*0^w&C{m21uTc|HH*~Z`k^#H4F{=&?G z638z;oCpi1bCHwZ^|kCoAB_Q=T?RV)x z8dKrS+|u;E#M5!v>?s9lv@Ty$jwOx`Ev7~_0OLHO)TVWHSQM%zBz)I_q@Y#NjentG1K1Erp zrgdcoAxE)9Px|Y|{sXhS&iyhig+V@q)}Z+sGP@N+I*exR*S#W1=H?;|dt_hk+q*So z&mQ078mx)$bWwla=UWOwJsySnzqKnBQ=XxjYKHVaLWp}B88#Hg8e8-=Q{p(upRstf zx(8+KE3Ftl+rHF5ZNb_0{BV_pvoeC}f>)UvsINB)C^ zzB555`WspoOl$}$YB(2WD4{bAt6@S*g0=x8`Qc-CO#|o<{j`>j$%U`_HNnlxtW#bN z%qjHqQV-WlNb2>wX2G1(K`+mXd+$+F%s1Pg;o!>Kv-Nji)b!`akFth=h;|*=!Vrs@ za?i!vsN|{l>7F?1F;d&Hyre2#*jRb_$^?%AlelN}^kKnK6=XXGmk+62e6GT0|VXDae_%WuMjQ`X#~V z2?0-5B|Ecu$~)5QR$cEj7p6-a)EzU#V^5QGS><4(6&EhgqJ5ZV&CCr>|9RHJ81GXoResB_l6Y#Mb9FzWc{4NZE^cip;rW}6hWcN0_Uj1glW@9@|> zMXLTZl(2P)_=ZNXv;0JT`m~TTIoC#~rQxk11s4OFM{s0>i7yo+r0iI+L&(|)XaY3&v~}%!4O-sR z@ZP+6Y8PL>wb_>cni=wGb9sf`)rnu+puY`S-RqHp4F+a{~+H*_U zFbq;N%I0-VYrQT$GRFhnvPe>tIeU5r5QR~*+i_QZrdniZc=>6qw%Mp;@$62#g^rp2VU(!@Rpy~}y`|5qF%p`=w!-vfaNB>-uMUJena0IEo`+(C3uE|X5yrHlvUu9~<9 z;i*grqnu|J5AwO5Vf@}#`H;#e&%MGE2n3R z?$nxO^)=i36pb$*d2cJPg*fO%CoA(RLb23fhJ2zbOYQ@)&3OStPOAH zV}EKzzdBR=>TF@l{7uAS{*65KcYTlJzlgSRFlJ|Eva&U{GL`vgcUkVR(4g-GA%5O zBjY!bhYPU`3Q>qEMuc~&c0t|frm{K;3HM|^+VkWWY59<1s8;xev3GFuOKMoxV#svu z><3Va#}X6!W^S8>!dgr)vasgFi}<9Du7-I&jI<}>cr#VDAt>k80rC$WV|UX07w%qd z#^|~(8qRrtz-;`)s~OBdTW~^@K!U+!s}sl&c*UcIVOPxNpXV(#bQBW^Bf+jot<~%r znV@lJl9=cw!`Ds__DNlJm}n}?L8`PKZ7EI$*h^OOj(0hMz_5qx#StL>VkM;v&=-rF z+u2Y4%eNOgz^vlMwYtTiJlTFI?h+Ns)IeSM zq^~}q-9?4T%K12+WEU4AEZY0)@!I5zzE~Dg_w!hC@Dk#n)`EXcQ^yFg{B#@wtfR-^3WQT9PFP zMKxUw9k8;e*PKp!yQSLDp7rG#fel7 z$taT~ZKJoZMh`h?GEaKj+E$Y{E${8NXAaZ0T_F!bG3$4;5lv^_r^4B{9|hhiK0^2I z3I<7AVx@%Sr(NZLo_(YwfwVBm2Q(aw?~|xHv=|QILR>6~#P4bB9>Mogmb-Ho7yh3W z|JzpG8YbM%xAy&{qMu>Ee*@r~^EbG$95TNL)~Hp!2uztH7Bhkw)ae};?v zF8l{Y{s8&CzW)Oz^QH4YgZ!fQ|LnluZ}t2{ZMn@NzqIUo)&8>a^LM$&Z? z|AhCu{e!=w|9!^(6FnFI|3UxF{QW2TuUYY13jJ=Fa5pzj#D5u%KN9MXzvtIriXXAJ zkHF1M`me#iNwEKn_ASMJw{K`m{{`A_6Yh@!P~d)-a(@(&`I3#~m$v>=-QN`OM*{xY lr@tq=pXHE~|Ig+8q&{UiM5J$!fZI>d?NV<478DNd{{R5x>D~YU From 6c9826f16a396b650dd67d6133594c1d966daa24 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 9 Nov 2020 17:19:41 +0800 Subject: [PATCH 151/304] dev --- .../src/main/resources/versions.json | 4 ++-- .../nuls/contract/tx/pocm/ContractPOCMSendTxTest.java | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index d3c765202a..6bee425bcc 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -31,12 +31,12 @@ }, { "version": "7", - "effectiveRatio": "80", + "effectiveRatio": "60", "continuousIntervalCount": "10" }, { "version": "8", - "effectiveRatio": "80", + "effectiveRatio": "60", "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index 880948ca18..d7f83837d2 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -25,6 +25,7 @@ package io.nuls.contract.tx.pocm; +import io.nuls.contract.mock.basetest.ContractTest; import io.nuls.contract.sdk.annotation.View; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; @@ -107,7 +108,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); Log.info("begin addOtherAgent"); - this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("2de47d6fa7d7f26b48a1b75e668bb299c903e8f76b8ae0335ecd5a0cd7d0741b").toArray()); + this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("445ed18a9b03a252360ebc9264a6d9b59b2f0c8b4f17053aac53d61183c99dba").toArray()); Log.info("begin depositForOwn {}", sender); //String nrc20Locked = "tNULSeBaN8w5ioWD9m2GE16QpuawaKtMDjdDRk"; @@ -236,8 +237,8 @@ private String pocm(String nrc20Locked, String authCode) throws Exception { private String nrc20Locked(String alias, String name, String symbol, String totalSupply, String decimals) throws Exception { Log.info("begin create locked nrc20"); - String filePath = "/Users/pierreluo/IdeaProjects/NRC20-Locked-Token/target/nrc20-locked-token-test1.jar"; - //String filePath = ContractTest.class.getResource("/nrc20-locked-token.jar").getFile(); + //String filePath = "/Users/pierreluo/IdeaProjects/NRC20-Locked-Token/target/nrc20-locked-token-test1.jar"; + String filePath = ContractTest.class.getResource("/nrc20-locked-token").getFile(); InputStream in = new FileInputStream(filePath); byte[] contractCode = IOUtils.toByteArray(in); String remark = "create contract test - " + alias; @@ -254,8 +255,8 @@ private String nrc20Locked(String alias, String name, String symbol, String tota private String nrc20Locked() throws Exception { Log.info("begin create locked nrc20"); - String filePath = "/Users/pierreluo/IdeaProjects/NRC20-Locked-Token/target/nrc20-locked-token-test1.jar"; - //String filePath = ContractTest.class.getResource("/nrc20-locked-token.jar").getFile(); + //String filePath = "/Users/pierreluo/IdeaProjects/NRC20-Locked-Token/target/nrc20-locked-token-test1.jar"; + String filePath = ContractTest.class.getResource("/nrc20-locked-token").getFile(); InputStream in = new FileInputStream(filePath); byte[] contractCode = IOUtils.toByteArray(in); String remark = "create contract test - 锁定空气币"; From cdf7e3347a918f568790b0a893955388ee06302e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 10 Nov 2020 15:29:41 +0800 Subject: [PATCH 152/304] fix bug about contract transfer locked --- .../io/nuls/contract/helper/ContractTransferHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java index bdfde5d0c5..70e86e1345 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java @@ -323,7 +323,7 @@ private void mergeContractTransfer(ContractResult contractResult, int chainId, l // 增加coinFrom的转账金额 coinFrom.setAmount(coinFrom.getAmount().add(value)); // 合并coinTo - this.mergeCoinTo(mergeCoinToMap, coinData, to, value, assetChainId, assetId, lockedTime); + this.mergeCoinTo(mergeCoinToMap, coinData, to, value, assetChainId, assetId, lockedTime, blockTime); } } // 最后产生的合并交易,遍历结束后更新它的hash和账户的nonce @@ -335,13 +335,13 @@ private void mergeContractTransfer(ContractResult contractResult, int chainId, l contractResult.setMergerdMultyAssetTransferList(mergerdMultyAssetTransferList); } - private void mergeCoinTo(Map mergeCoinToMap, CoinData coinData, byte[] to, BigInteger value, int assetChainId, int assetId, long lockedTime) { + private void mergeCoinTo(Map mergeCoinToMap, CoinData coinData, byte[] to, BigInteger value, int assetChainId, int assetId, long lockedTime, long blockTime) { CoinTo coinTo; String key = addressLockedKey(to, assetChainId, assetId, lockedTime); if ((coinTo = mergeCoinToMap.get(key)) != null) { coinTo.setAmount(coinTo.getAmount().add(value)); } else { - coinTo = new CoinTo(to, assetChainId, assetId, value, lockedTime); + coinTo = new CoinTo(to, assetChainId, assetId, value, lockedTime == 0 ? lockedTime : (blockTime + lockedTime)); coinData.getTo().add(coinTo); mergeCoinToMap.put(key, coinTo); } From 143d69c0d92ca0024d29b0445b57cfe3286cdf08 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 10 Nov 2020 18:04:12 +0800 Subject: [PATCH 153/304] update contract call validation --- .../main/resources/languages/en.properties | 6 ++++- module/nuls-smart-contract/pom.xml | 6 +++++ .../contract/constant/ContractErrorCode.java | 2 ++ .../validator/CallContractTxValidator.java | 23 ++++++++++++++++--- .../main/resources/languages/en.properties | 2 ++ 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/module/nuls-api/src/main/resources/languages/en.properties b/module/nuls-api/src/main/resources/languages/en.properties index eb1a8862a0..c0c5ec2d27 100644 --- a/module/nuls-api/src/main/resources/languages/en.properties +++ b/module/nuls-api/src/main/resources/languages/en.properties @@ -245,7 +245,7 @@ sc_0023=Contract method does not exist sc_0024=Transfer amount cannot be locked. sc_0025=Insufficient balance to transfer to the contract address. sc_0026=The contract creator is not the transaction creator. -sc_0027=The contract caller is not the transaction creator. +sc_0027=The contract caller is not the transaction signer. sc_0028=The contract deleter is not the transaction creator. sc_0029=The contract deleter is not the contract creator. sc_0030=That balance of the contract is abnormal. @@ -258,6 +258,10 @@ sc_0036=The value of gas limit ranges from 1 to 10,000,000 sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. +sc_0040=Duplicate transaction of contract return gas. +sc_0041=There are too many coinTo in the contract. +sc_0042=There are too many coinFrom in the contract. +sc_0043=The contract caller is not the transaction signer. sc_0100=Insufficient balance sc_0101=Transaction fee is not right sc_0102=The amount of the transfer is too small diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 0f6d272248..3c654241bb 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -133,6 +133,12 @@ 1.18.8 test + + io.nuls.v2 + sdk4j + 1.1.2.RELEASE + test + diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java index da5566e993..f44f99c7e7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractErrorCode.java @@ -75,6 +75,8 @@ public interface ContractErrorCode extends CommonCodeConstanst { ErrorCode CONTRACT_ALIAS_FORMAT_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0039"); ErrorCode DUPLICATE_CONTRACT_RETURN_GAS_TX = ErrorCode.init(ModuleE.SC.getPrefix() + "_0040"); ErrorCode CONTRACT_COIN_TO_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0041"); + ErrorCode CONTRACT_COIN_FROM_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0042"); + ErrorCode CONTRACT_CALLER_SIGN_ERROR = ErrorCode.init(ModuleE.SC.getPrefix() + "_0043"); ErrorCode INSUFFICIENT_BALANCE = ErrorCode.init(ModuleE.SC.getPrefix() + "_0100"); ErrorCode FEE_NOT_RIGHT = ErrorCode.init(ModuleE.SC.getPrefix() + "_0101"); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index a057896c82..06b4fc4461 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -154,21 +154,38 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc CallContractData txData = tx.getTxDataObj(); byte[] sender = txData.getSender(); boolean existSender = false; + BigInteger senderValue = BigInteger.ZERO; for(CoinFrom from : fromList) { if(!existSender && Arrays.equals(from.getAddress(), sender)) { existSender = true; + senderValue = from.getAmount(); + break; } } + if (fromList.size() > 2) { + Log.error("contract call error: There are too many coinFrom in the contract."); + return Result.getFailed(CONTRACT_COIN_FROM_ERROR); + } Set signatureAddressSet = SignatureUtil.getAddressFromTX(tx, chainId); - if (!existSender || !signatureAddressSet.contains(AddressTool.getStringAddressByBytes(sender))) { - Log.error("contract call error: The contract caller is not the transaction creator."); - return Result.getFailed(CONTRACT_CALLER_ERROR); + if (!signatureAddressSet.contains(AddressTool.getStringAddressByBytes(sender))) { + Log.error("contract call error: The contract caller is not the transaction signer."); + return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); } if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { Log.error("contract call error: The value of gas limit ranges from 1 to 10,000,000."); return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); } BigInteger transferValue = txData.getValue(); + if (transferValue.compareTo(BigInteger.ZERO) > 0) { + if (!existSender) { + Log.error("contract call error: The contract caller is not the transaction creator."); + return Result.getFailed(CONTRACT_CALLER_ERROR); + } + if (senderValue.compareTo(transferValue) < 0) { + Log.error("contract call error: Insufficient balance to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + } byte[] contractAddress = txData.getContractAddress(); if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddress)) { diff --git a/module/nuls-smart-contract/src/main/resources/languages/en.properties b/module/nuls-smart-contract/src/main/resources/languages/en.properties index 83ed0c00cd..a693b8678a 100644 --- a/module/nuls-smart-contract/src/main/resources/languages/en.properties +++ b/module/nuls-smart-contract/src/main/resources/languages/en.properties @@ -39,6 +39,8 @@ sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. sc_0040=Duplicate transaction of contract return gas. sc_0041=There are too many coinTo in the contract. +sc_0042=There are too many coinFrom in the contract. +sc_0043=The contract caller is not the transaction signer. sc_0100=Insufficient balance sc_0101=Transaction fee is not right From 048e0866c3a2c713fbfa4544b5fb2ff1bb80bd27 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 11 Nov 2020 10:40:09 +0800 Subject: [PATCH 154/304] update contract call validation --- .../validator/CallContractTxValidator.java | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 06b4fc4461..087d30380c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -153,15 +153,7 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc List toList = coinData.getTo(); CallContractData txData = tx.getTxDataObj(); byte[] sender = txData.getSender(); - boolean existSender = false; - BigInteger senderValue = BigInteger.ZERO; - for(CoinFrom from : fromList) { - if(!existSender && Arrays.equals(from.getAddress(), sender)) { - existSender = true; - senderValue = from.getAmount(); - break; - } - } + if (fromList.size() > 2) { Log.error("contract call error: There are too many coinFrom in the contract."); return Result.getFailed(CONTRACT_COIN_FROM_ERROR); @@ -175,17 +167,7 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc Log.error("contract call error: The value of gas limit ranges from 1 to 10,000,000."); return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); } - BigInteger transferValue = txData.getValue(); - if (transferValue.compareTo(BigInteger.ZERO) > 0) { - if (!existSender) { - Log.error("contract call error: The contract caller is not the transaction creator."); - return Result.getFailed(CONTRACT_CALLER_ERROR); - } - if (senderValue.compareTo(transferValue) < 0) { - Log.error("contract call error: Insufficient balance to transfer to the contract address."); - return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); - } - } + byte[] contractAddress = txData.getContractAddress(); if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddress)) { @@ -198,6 +180,9 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc Log.error("contract call error: There are too many coinTo in the contract."); return Result.getFailed(CONTRACT_COIN_TO_ERROR); } + int assetChainId = 0; + int assetId = 0; + BigInteger transferValue = txData.getValue(); BigInteger contractReceivedValue = BigInteger.ZERO; if (toSize == 1) { CoinTo coin = toList.get(0); @@ -217,12 +202,37 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc Log.error("contract call error: The amount of the transfer is too small."); return Result.getFailed(TOO_SMALL_AMOUNT); } + assetChainId = coin.getAssetsChainId(); + assetId = coin.getAssetsId(); + } if (contractReceivedValue.compareTo(transferValue) < 0) { Log.error("contract call error: Insufficient balance to transfer to the contract address."); return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); } + boolean existSender = false; + BigInteger senderValue = BigInteger.ZERO; + for(CoinFrom from : fromList) { + if(Arrays.equals(from.getAddress(), sender)) { + existSender = true; + if (assetChainId == from.getAssetsChainId() && assetId == from.getAssetsId()) { + senderValue = senderValue.add(from.getAmount()); + } + } + } + + if (transferValue.compareTo(BigInteger.ZERO) > 0) { + if (!existSender) { + Log.error("contract call error: The contract caller is not the transaction creator."); + return Result.getFailed(CONTRACT_CALLER_ERROR); + } + if (senderValue.compareTo(transferValue) < 0) { + Log.error("contract call error: Insufficient balance to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + } + BigInteger realFee = coinData.getFeeByAsset(CHAIN_ID, ASSET_ID); BigInteger fee = TransactionFeeCalculator.getNormalTxFee(tx.size()).add(BigInteger.valueOf(txData.getGasLimit()).multiply(BigInteger.valueOf(txData.getPrice()))); if (realFee.compareTo(fee) >= 0) { From 7e107c51d97d3f55140a45210a4ac701fb5e3659 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 11 Nov 2020 13:32:53 +0800 Subject: [PATCH 155/304] update module connection --- .../io/nuls/base/protocol/ProtocolGroupManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java index 27b6892a9e..5f6281fd1a 100644 --- a/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java +++ b/common/nuls-base-protocol-update/src/main/java/io/nuls/base/protocol/ProtocolGroupManager.java @@ -7,7 +7,10 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.netty.channel.manager.ConnectManager; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -129,7 +132,13 @@ public static void updateProtocol(int chainId, short protocolVersion) { } }); messageDispatcher.setProcessors(messageProcessors); - RegisterHelper.registerTx(chainId, protocol); + try { + if (ConnectManager.getConnectByRole(ModuleE.TX.abbr) != null) { + RegisterHelper.registerTx(chainId, protocol); + } + } catch (Exception e) { + Log.warn(e.getMessage()); + } } } } From 22abd3a1bba6f73dc4e0cde3ba9beb250583f10f Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 11 Nov 2020 15:58:33 +0800 Subject: [PATCH 156/304] optimize ledger --- .../ledger/validator/CoinDataValidator.java | 276 +++++++++++++----- .../io/nuls/contract/tx/base/BaseQuery.java | 7 +- .../tx/contractvm/ContractVmV8SendTxTest.java | 14 +- .../tx/multyasset/ContractMultyAssetTest.java | 180 +++++++++++- 4 files changed, 390 insertions(+), 87 deletions(-) diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java index 2753497c01..7b22654c52 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java @@ -33,6 +33,7 @@ import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.model.BigIntegerUtils; import io.nuls.ledger.constant.LedgerConstant; import io.nuls.ledger.constant.LedgerErrorCode; @@ -71,29 +72,27 @@ public class CoinDataValidator { * key String:chainId * value:Map */ - private Map> chainsBatchValidateTxMap = new ConcurrentHashMap>(); - - + private Map> chainsBatchValidateTxMap = new ConcurrentHashMap<>(); /** * key String:chainId * value map :key是账号资产 value是待确认支出列表 */ - private Map>> chainsAccountNonceMap = new ConcurrentHashMap>>(); + private Map>> chainsAccountNonceMap = new ConcurrentHashMap<>(); /** * key String:chainId * value map :key是账号资产 value是待确认账户 */ - private Map> chainsAccountStateMap = new ConcurrentHashMap>(); + private Map> chainsAccountStateMap = new ConcurrentHashMap<>(); /** * key String:chainId * value map :key是账号资产 value是时间锁定信息 */ - private Map>> chainsLockedTimeMap = new ConcurrentHashMap>>(); + private Map>> chainsLockedTimeMap = new ConcurrentHashMap<>(); /** * key String:chainId * value map :key是账号资产 value是时间锁定信息 */ - private Map>> chainsLockedHeightMap = new ConcurrentHashMap>>(); + private Map>> chainsLockedHeightMap = new ConcurrentHashMap<>(); @Autowired @@ -122,7 +121,7 @@ public Map getAccountValidateMap(int addressChainId) { public Map> getFreezeLockTimeValidateMap(int addressChainId) { if (null == chainsLockedTimeMap.get(String.valueOf(addressChainId))) { - chainsLockedTimeMap.put(String.valueOf(addressChainId), new ConcurrentHashMap>()); + chainsLockedTimeMap.put(String.valueOf(addressChainId), new ConcurrentHashMap<>()); } return chainsLockedTimeMap.get(String.valueOf(addressChainId)); } @@ -138,7 +137,7 @@ public List getFreezeLockTimeValidateList(Map> getFreezeLockHeightValidateMap(int addressChainId) { if (null == chainsLockedHeightMap.get(String.valueOf(addressChainId))) { - chainsLockedHeightMap.put(String.valueOf(addressChainId), new ConcurrentHashMap>()); + chainsLockedHeightMap.put(String.valueOf(addressChainId), new ConcurrentHashMap<>()); } return chainsLockedHeightMap.get(String.valueOf(addressChainId)); } @@ -193,7 +192,6 @@ public boolean beginBatchPerTxValidate(int chainId) { } - /** * 开始批量校验,整个区块校验,场景:接收到的外部的区块包 */ @@ -212,7 +210,9 @@ public boolean blockValidate(int chainId, long height, List txs) { Map> lockedHeightMap = new ConcurrentHashMap>(); for (Transaction tx : txs) { - tx.setBlockHeight(height); + if (LoggerUtil.logger(chainId).isDebugEnabled()) { + LoggerUtil.logger(chainId).debug("[TEST] blocksValidate tx type: {}, hash: {}", tx.getType(), tx.getHash().toHex()); + } ValidateResult validateResult = blockTxsValidate(chainId, tx, batchValidateTxSet, accountValidateTxMap, accountStateMap, lockedCancelNonceMap, lockedTimeMap, lockedHeightMap); if (!validateResult.isSuccess()) { @@ -230,7 +230,6 @@ public boolean blockValidate(int chainId, long height, List txs) { } } return true; - } @@ -283,7 +282,7 @@ public ValidateResult verifyCoinData(int addressChainId, Transaction transaction */ private ValidateResult analysisFromCoinPerTx(int chainId, int txType, long blockHeight, byte[] nonce8Bytes, List coinFroms, Map> accountValidateTxMap, - Map accountStateMap, Map balanceValidateMap, String txHash) { + Map accountStateMap, Map balanceValidateMap) { // 判断硬分叉,需要一个高度 long hardForkingHeight = 878000; boolean forked = blockHeight <= 0 || blockHeight > hardForkingHeight; @@ -314,23 +313,22 @@ private ValidateResult analysisFromCoinPerTx(int chainId, int txType, long block timeStates.addAll(accountState.getFreezeLockTimeStates()); heightStates.addAll(accountState.getFreezeHeightStates()); } - balanceValidateMap.put(assetKey, accountState); + BigInteger availableAmount = accountState.getAvailableAmount(); + balanceValidateMap.computeIfAbsent(assetKey, a -> availableAmount); //判断是否是解锁操作 if (coinFrom.getLocked() == 0) { - accountState.addTotalFromAmount(coinFrom.getAmount()); ValidateResult validateResult = isValidateCommonTxBatch(chainId, accountState, coinFrom, nonce8Bytes, accountValidateTxMap); if (!validateResult.isSuccess()) { + logger(chainId).error("fail tx type:" + txType); return validateResult; } + balanceValidateMap.computeIfPresent(assetKey, (k , v) -> v.subtract(coinFrom.getAmount())); } else { //解锁交易,需要从from 里去获取需要的高度数据或时间数据,进行校验 //解锁交易只需要从已确认的数据中去获取数据进行校验 - if (!isValidateFreezeTxWithTemp(timeStates, heightStates, coinFrom.getLocked(), accountState, coinFrom.getAmount(), coinFrom.getNonce())) { + if (!isValidateFreezeTxWithTemp(timeStates, heightStates, coinFrom.getLocked(), coinFrom.getAmount(), coinFrom.getNonce())) { return ValidateResult.getResult(LedgerErrorCode.DOUBLE_EXPENSES, new String[]{address, LedgerUtil.getNonceEncode(coinFrom.getNonce())}); } - //校验通过,将缓存处理 - txLockedProcessor.processCoinData(coinFrom, coinFrom.getNonce(), txHash, timeStates, - heightStates, address, true); } } return ValidateResult.getSuccess(); @@ -348,7 +346,8 @@ private ValidateResult analysisFromCoinPerTx(int chainId, int txType, long block private ValidateResult analysisToCoinPerTx(int chainId, int txType, List coinTos, Map accountStateMap, Map> timeStatesMap, - Map> heightStatesMap, String txHash) { + Map> heightStatesMap, + Map balanceValidateMap) { for (CoinTo coinTo : coinTos) { if (LedgerUtil.isNotLocalChainAccount(chainId, coinTo.getAddress())) { if (LedgerUtil.isCrossTx(txType)) { @@ -358,8 +357,6 @@ private ValidateResult analysisToCoinPerTx(int chainId, int txType, List return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{LedgerUtil.getRealAddressStr(coinTo.getAddress()), "--", "address Not local chain Exception"}); } } - - //判断是否是解锁操作 String address = LedgerUtil.getRealAddressStr(coinTo.getAddress()); String assetKey = LedgerUtil.getKeyStr(address, coinTo.getAssetsChainId(), coinTo.getAssetsId()); AccountState accountState = accountStateMap.get(assetKey); @@ -371,12 +368,12 @@ private ValidateResult analysisToCoinPerTx(int chainId, int txType, List timeList.addAll(accountState.getFreezeLockTimeStates()); heightList.addAll(accountState.getFreezeHeightStates()); } + BigInteger availableAmount = accountState.getAvailableAmount(); + balanceValidateMap.computeIfAbsent(assetKey, a -> availableAmount); + //判断是否是解锁操作 if (coinTo.getLockTime() == 0) { - accountState.addTotalToAmount(coinTo.getAmount()); - } else { -// //校验通过,将缓存处理 - txLockedProcessor.processCoinData(coinTo, LedgerUtil.getNonceDecodeByTxHash(txHash), txHash, getFreezeLockTimeValidateList(timeStatesMap, assetKey), - getFreezeLockHeightValidateList(heightStatesMap, assetKey), address, false); + // 可用余额增加计算 + balanceValidateMap.computeIfPresent(assetKey, (k , v) -> v.add(coinTo.getAmount())); } } return ValidateResult.getSuccess(); @@ -391,10 +388,11 @@ private ValidateResult analysisToCoinPerTx(int chainId, int txType, List public ValidateResult confirmedTxValidate(int chainId, Transaction tx, Map batchValidateTxMap, Map> accountValidateTxMap) { Map accountStateMap = getAccountValidateMap(chainId); - Map balanceValidateMap = new HashMap<>(64); + Map balanceValidateMap = new HashMap<>(64); //先校验,再逐笔放入缓存 //交易的 hash值如果已存在,返回false,交易的from coin nonce 如果不连续,则存在双花。 String txHash = tx.getHash().toHex(); + int txType = tx.getType(); if (null != batchValidateTxMap.get(txHash)) { logger(chainId).error("{} tx exist!", txHash); return ValidateResult.getResult(LedgerErrorCode.TX_EXIST, new String[]{"--", txHash}); @@ -414,39 +412,95 @@ public ValidateResult confirmedTxValidate(int chainId, Transaction tx, Map coinFroms = coinData.getFrom(); List coinTos = coinData.getTo(); byte[] nonce8Bytes = LedgerUtil.getNonceByTx(tx); - ValidateResult validateResult = analysisFromCoinPerTx(chainId, tx.getType(), tx.getBlockHeight(), nonce8Bytes, coinFroms, accountValidateTxMap, - accountStateMap, balanceValidateMap, txHash); - if (!validateResult.isSuccess()) { - return validateResult; + if (logger(chainId).isDebugEnabled()) { + logger(chainId).debug("[TEST] confirmedTxValidate txType: {}, txHash: {}, nonce: {}", txType, txHash, HexUtil.encode(nonce8Bytes)); } Map> timeStatesMap = getFreezeLockTimeValidateMap(chainId); Map> heightStatesMap = getFreezeLockHeightValidateMap(chainId); - ValidateResult toCoinValidateResult = analysisToCoinPerTx(chainId, tx.getType(), coinTos, accountStateMap, timeStatesMap, heightStatesMap, txHash); + + ValidateResult validateResult = analysisFromCoinPerTx(chainId, txType, tx.getBlockHeight(), nonce8Bytes, coinFroms, accountValidateTxMap,accountStateMap, balanceValidateMap); + if (!validateResult.isSuccess()) { + return validateResult; + } + ValidateResult toCoinValidateResult = analysisToCoinPerTx(chainId, txType, coinTos, accountStateMap, timeStatesMap, heightStatesMap, balanceValidateMap); if (!toCoinValidateResult.isSuccess()) { return validateResult; } //遍历余额判断 - for (Map.Entry entry : balanceValidateMap.entrySet()) { + for (Map.Entry entry : balanceValidateMap.entrySet()) { //缓存数据 - if (BigIntegerUtils.isLessThan(entry.getValue().getAvailableAmount(), BigInteger.ZERO)) { + if (BigIntegerUtils.isLessThan(entry.getValue(), BigInteger.ZERO)) { //余额不足 - logger(chainId).info("balance is not enough:{}===availableAmount={}====toAmount={}====fromAmount={}", + logger(chainId).info("balance is not enough:{}===availableAmount={}", entry.getKey(), - entry.getValue().getAvailableAmount(), - entry.getValue().getTotalToAmount(), - entry.getValue().getTotalFromAmount() + entry.getValue() ); return ValidateResult.getResult(LedgerErrorCode.BALANCE_NOT_ENOUGH, new String[]{entry.getKey(), - BigIntegerUtils.bigIntegerToString(entry.getValue().getAvailableAmount())}); + BigIntegerUtils.bigIntegerToString(entry.getValue())}); } } + + // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 全验证通过后,存储数据 -=-=-=-=-===-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + for (int i = 0, length = coinFroms.size(); i < length; i++) { + CoinFrom coinFrom = coinFroms.get(i); + String address = LedgerUtil.getRealAddressStr(coinFrom.getAddress()); + if (LedgerUtil.isNotLocalChainAccount(chainId, coinFrom.getAddress())) { + if (LedgerUtil.isCrossTx(txType)) { + //非本地网络账户地址,不进行处理 + continue; + } + } + String assetKey = LedgerUtil.getKeyStr(address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId()); + AccountState accountState = accountStateMap.get(assetKey); + List timeStates = getFreezeLockTimeValidateList(timeStatesMap, assetKey); + List heightStates = getFreezeLockHeightValidateList(heightStatesMap, assetKey); + + if (null == accountState) { + accountState = accountStateService.getAccountStateReCal(address, chainId, coinFrom.getAssetsChainId(), coinFrom.getAssetsId()); + accountStateMap.put(assetKey, accountState); + timeStates.addAll(accountState.getFreezeLockTimeStates()); + heightStates.addAll(accountState.getFreezeHeightStates()); + } + + //判断是否是解锁操作 + if (coinFrom.getLocked() == 0) { + List list = accountValidateTxMap.computeIfAbsent(assetKey, a -> new ArrayList<>()); + list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), nonce8Bytes)); + accountState.addTotalFromAmount(coinFrom.getAmount()); + } else { + //校验通过,将缓存处理 + txLockedProcessor.processCoinData(coinFrom, coinFrom.getNonce(), txHash, timeStates, heightStates, address, true); + } + } + for (CoinTo coinTo : coinTos) { + String address = LedgerUtil.getRealAddressStr(coinTo.getAddress()); + String assetKey = LedgerUtil.getKeyStr(address, coinTo.getAssetsChainId(), coinTo.getAssetsId()); + AccountState accountState = accountStateMap.get(assetKey); + List timeList = getFreezeLockTimeValidateList(timeStatesMap, assetKey); + List heightList = getFreezeLockHeightValidateList(heightStatesMap, assetKey); + if (null == accountState) { + accountState = accountStateService.getAccountStateReCal(address, chainId, coinTo.getAssetsChainId(), coinTo.getAssetsId()); + accountStateMap.put(assetKey, accountState); + timeList.addAll(accountState.getFreezeLockTimeStates()); + heightList.addAll(accountState.getFreezeHeightStates()); + } + //判断是否是解锁操作 + if (coinTo.getLockTime() == 0) { + accountState.addTotalToAmount(coinTo.getAmount()); + } else { + //校验通过,将缓存处理 + txLockedProcessor.processCoinData(coinTo, LedgerUtil.getNonceDecodeByTxHash(txHash), txHash, timeList, heightList, address, false); + } + } + batchValidateTxMap.put(txHash, txHash); return ValidateResult.getSuccess(); } @@ -491,17 +545,17 @@ private ValidateResult validateCommonCoinData(int addressChainId, int assetChain try { //数据库已经不为初始值了,则这笔交易可以认为双花 if (LedgerUtil.equalsNonces(fromNonce, LedgerConstant.getInitNonceByte())) { - logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},dbNonce={},txLast8Word={}", address, fromNonceStr, LedgerUtil.getNonceEncode(preNonce), LedgerUtil.getNonceEncode(txNonce)); + logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},dbNonce={},tx={}", address, fromNonceStr, LedgerUtil.getNonceEncode(preNonce), LedgerUtil.getNonceEncode(txNonce)); return ValidateResult.getResult(LedgerErrorCode.DOUBLE_EXPENSES, new String[]{address, fromNonceStr}); } //数据nonce值== 当前提交的hash值 if (LedgerUtil.equalsNonces(preNonce, txNonce)) { - logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},dbNonce={},txLast8Word={}", address, fromNonceStr, LedgerUtil.getNonceEncode(preNonce), LedgerUtil.getNonceEncode(txNonce)); + logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},dbNonce={},tx={}", address, fromNonceStr, LedgerUtil.getNonceEncode(preNonce), LedgerUtil.getNonceEncode(txNonce)); return ValidateResult.getResult(LedgerErrorCode.DOUBLE_EXPENSES, new String[]{address, fromNonceStr}); } //上面没连接上,但是fromNonce又存储过,则双花了 if (transactionService.fromNonceExist(addressChainId, LedgerUtil.getAccountNoncesStrKey(address, assetChainId, assetId, fromNonceStr))) { - logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},txLast8Word={} fromNonce exist", address, fromNonceStr, LedgerUtil.getNonceEncode(txNonce)); + logger(addressChainId).info("DOUBLE_EXPENSES_CODE address={},fromNonceStr={},tx={} fromNonce exist", address, fromNonceStr, LedgerUtil.getNonceEncode(txNonce)); return ValidateResult.getResult(LedgerErrorCode.DOUBLE_EXPENSES, new String[]{address, fromNonceStr}); } } catch (Exception e) { @@ -535,24 +589,20 @@ private ValidateResult isValidateCommonTxBatch(int chainId, AccountState account //不是解锁操作 //从批量校验池中获取缓存交易 List list = accountValidateTxMap.get(assetKey); - if (null == list) { + if (null == list || list.isEmpty()) { //从头开始处理 if (!LedgerUtil.equalsNonces(accountState.getNonce(), coinFrom.getNonce())) { - logger(chainId).error("package validate fail(validateCommonTxBatch):{}=={}=={}==nonce is error!dbNonce:{}!=fromNonce:{},txLast8Word={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(accountState.getNonce()), fromCoinNonceStr, LedgerUtil.getNonceEncode(txNonce)); + logger(chainId).error("package validate fail(validateCommonTxBatch):{}=={}=={}==nonce is error!dbNonce:{}!=fromNonce:{},tx={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(accountState.getNonce()), fromCoinNonceStr, LedgerUtil.getNonceEncode(txNonce)); //nonce不连续按孤儿处理,双花场景由交易模块来进行删除 return ValidateResult.getResult(LedgerErrorCode.ORPHAN, new String[]{address, fromCoinNonceStr, LedgerUtil.getNonceEncode(accountState.getNonce())}); } - list = new ArrayList<>(); - list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), txNonce)); - accountValidateTxMap.put(assetKey, list); } else { //从已有的缓存数据中获取对象进行操作,nonce必须连贯 TempAccountNonce tempAccountState = list.get(list.size() - 1); if (!LedgerUtil.equalsNonces(tempAccountState.getNextNonce(), coinFrom.getNonce())) { - logger(chainId).error("package validate fail(validateCommonTxBatch):{}=={}=={}==nonce is error!tempNonce:{}!=fromNonce:{},txLast8Word={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(tempAccountState.getNextNonce()), fromCoinNonceStr, LedgerUtil.getNonceEncode(txNonce)); + logger(chainId).error("package validate fail(validateCommonTxBatch):{}=={}=={}==nonce is error!tempNonce:{}!=fromNonce:{},tx={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(tempAccountState.getNextNonce()), fromCoinNonceStr, LedgerUtil.getNonceEncode(txNonce)); return ValidateResult.getResult(LedgerErrorCode.ORPHAN, new String[]{address, fromCoinNonceStr, "last pool nonce=" + LedgerUtil.getNonceEncode(tempAccountState.getNextNonce())}); } - list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), txNonce)); } return ValidateResult.getSuccess(); } @@ -560,7 +610,8 @@ private ValidateResult isValidateCommonTxBatch(int chainId, AccountState account private ValidateResult analysisFromCoinBlokTx(int chainId, int txType, long blockHeight, byte[] txNonce, List coinFroms, Map> accountValidateTxMap, Map accountStateMap, Map lockedCancelNonceMap, - Map> timeLockMap, Map> heightLockMap, String txHash) { + Map> timeLockMap, Map> heightLockMap, + String txHash, Map balanceValidateMap) { // 判断硬分叉,需要一个高度 long hardForkingHeight = 878000; boolean forked = blockHeight <= 0 || blockHeight > hardForkingHeight; @@ -592,30 +643,28 @@ private ValidateResult analysisFromCoinBlokTx(int chainId, int txType, long bloc timeList.addAll(accountState.getFreezeLockTimeStates()); heightList.addAll(accountState.getFreezeHeightStates()); } - + BigInteger availableAmount = accountState.getAvailableAmount(); + // 可用余额初始化 + balanceValidateMap.computeIfAbsent(assetKey, a -> availableAmount); //判断是否是解锁操作 if (coinFrom.getLocked() == 0) { //不是解锁操作 - //从批量校验池中获取缓存交易 - List list = accountValidateTxMap.get(assetKey); String fromCoinNonce = LedgerUtil.getNonceEncode(coinFrom.getNonce()); - //余额累计 - accountState.addTotalFromAmount(coinFrom.getAmount()); if (LedgerUtil.equalsNonces(coinFrom.getNonce(), txNonce)) { //nonce 重复了 logger(chainId).info("{}=={}=={}== nonce is repeat", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId()); return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{address, fromCoinNonce, "nonce repeat"}); } - if (null == list) { + //从批量校验池中获取缓存交易 + List list = accountValidateTxMap.get(assetKey); + if (null == list || list.isEmpty()) { //从头开始处理 if (!LedgerUtil.equalsNonces(accountState.getNonce(), coinFrom.getNonce())) { logger(chainId).error("validate fail:(isBlockValidateCommonTx failed):{}=={}=={}==nonce is error!dbNonce:{}!=fromNonce:{},tx={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(accountState.getNonce()), fromCoinNonce, LedgerUtil.getNonceEncode(txNonce)); //判断是否fromNonce是否已经存储了,如果存储了,则这笔是异常交易双花 + logger(chainId).error("txType:{}, hash:{}", txType, txHash); return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{address, fromCoinNonce, "dbNonce=" + LedgerUtil.getNonceEncode(accountState.getNonce())}); } - list = new ArrayList<>(); - list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), txNonce)); - accountValidateTxMap.put(assetKey, list); } else { //从已有的缓存数据中获取对象进行操作,nonce必须连贯 TempAccountNonce tempAccountState = list.get(list.size() - 1); @@ -623,23 +672,21 @@ private ValidateResult analysisFromCoinBlokTx(int chainId, int txType, long bloc logger(chainId).info("isValidateCommonTxBatch {}=={}=={}==nonce is error!tempNonce:{}!=fromNonce:{},tx={}", address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId(), LedgerUtil.getNonceEncode(tempAccountState.getNextNonce()), fromCoinNonce, LedgerUtil.getNonceEncode(txNonce)); return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{address, fromCoinNonce, "last pool nonce=" + LedgerUtil.getNonceEncode(tempAccountState.getNextNonce())}); } - list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), txNonce)); } + // 可用余额扣减计算 + balanceValidateMap.computeIfPresent(assetKey, (k , v) -> v.subtract(coinFrom.getAmount())); } else { //解锁交易,需要从from 里去获取需要的高度数据或时间数据,进行校验 //解锁交易只需要从已确认的数据中去获取数据进行校验 - String lockedNonce = LedgerUtil.getNonceEncode(coinFrom.getNonce()); - if (!isValidateFreezeTxWithTemp(timeList, heightList, coinFrom.getLocked(), accountState, coinFrom.getAmount(), coinFrom.getNonce())) { - logger(chainId).error("validate fail:locked txLast8Word={} address={} nonce={} amount={} validate failed", LedgerUtil.getNonceEncode(txNonce), address, lockedNonce,coinFrom.getAmount()); + String lockedNonce = coinFrom.getAssetsChainId() + "-" + coinFrom.getAssetsId() + "-" + LedgerUtil.getNonceEncode(coinFrom.getNonce()); + if (!isValidateFreezeTxWithTemp(timeList, heightList, coinFrom.getLocked(), coinFrom.getAmount(), coinFrom.getNonce())) { + logger(chainId).error("validate fail,locked tx={} address={} lockNonce={} failed", LedgerUtil.getNonceEncode(txNonce), address, lockedNonce); return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{address, lockedNonce, "validate fail"}); } if (null != lockedCancelNonceMap.get(lockedNonce)) { - logger(chainId).error("validate fail:locked txLast8Word={} address={} nonce={} amount={} repeat", LedgerUtil.getNonceEncode(txNonce), address, lockedNonce,coinFrom.getAmount()); + logger(chainId).error("validate fail,locked tx={} address={} nonce={} repeat", LedgerUtil.getNonceEncode(txNonce), address, lockedNonce); return ValidateResult.getResult(LedgerErrorCode.VALIDATE_FAIL, new String[]{address, lockedNonce, "validate fail,locked nonce repeat"}); } - lockedCancelNonceMap.put(lockedNonce, 1); - //处理缓存 - txLockedProcessor.processCoinData(coinFrom, coinFrom.getNonce(), txHash, timeList, heightList, address, true); } } return ValidateResult.getSuccess(); @@ -651,6 +698,7 @@ public ValidateResult blockTxsValidate(int chainId, Transaction tx, Set //先校验,再逐笔放入缓存 //交易的 hash值如果已存在,返回false,交易的from coin nonce 如果不连续,则存在双花。 String txHash = tx.getHash().toHex(); + int txType = tx.getType(); if (batchValidateTxSet.contains(txHash)) { logger(chainId).error("{} tx exist!", txHash); return ValidateResult.getResult(LedgerErrorCode.TX_EXIST, new String[]{"--", txHash}); @@ -663,27 +711,107 @@ public ValidateResult blockTxsValidate(int chainId, Transaction tx, Set } catch (Exception e) { LoggerUtil.logger(chainId).error(e); } + CoinData coinData = CoinDataUtil.parseCoinData(tx.getCoinData()); if (null == coinData) { //例如黄牌交易,直接返回 batchValidateTxSet.add(txHash); return ValidateResult.getSuccess(); } - if (!validateTxAmount(coinData, tx.getType())) { + if (!validateTxAmount(coinData, txType)) { return ValidateResult.getResult(LedgerErrorCode.TX_AMOUNT_INVALIDATE, new String[]{txHash}); } + + Map balanceValidateMap = new HashMap<>(64); List coinFroms = coinData.getFrom(); List coinTos = coinData.getTo(); byte[] txNonce = LedgerUtil.getNonceByTx(tx); - ValidateResult fromCoinsValidateResult = analysisFromCoinBlokTx(chainId, tx.getType(), tx.getBlockHeight(), txNonce, coinFroms, accountValidateTxMap, - accountStateMap, lockedCancelNonceMap, lockedTimeMap, lockedHeightMap, txHash); + ValidateResult fromCoinsValidateResult = analysisFromCoinBlokTx(chainId, txType, tx.getBlockHeight(), txNonce, coinFroms, accountValidateTxMap, + accountStateMap, lockedCancelNonceMap, lockedTimeMap, lockedHeightMap, txHash, balanceValidateMap); if (!fromCoinsValidateResult.isSuccess()) { + logger(chainId).error("from coins error! txtype:{}", txType); return fromCoinsValidateResult; } - ValidateResult toCoinValidateResult = analysisToCoinPerTx(chainId, tx.getType(), coinTos, accountStateMap, lockedTimeMap, lockedHeightMap, txHash); + ValidateResult toCoinValidateResult = analysisToCoinPerTx(chainId, txType, coinTos, accountStateMap, lockedTimeMap, lockedHeightMap, balanceValidateMap); if (!toCoinValidateResult.isSuccess()) { + logger(chainId).error("to coins error!"); return toCoinValidateResult; } + + //遍历余额判断 + for (Map.Entry entry : balanceValidateMap.entrySet()) { + //缓存数据 + if (BigIntegerUtils.isLessThan(entry.getValue(), BigInteger.ZERO)) { + //余额不足 + logger(chainId).info("balance is not enough:{}===availableAmount={}", + entry.getKey(), + entry.getValue() + ); + return ValidateResult.getResult(LedgerErrorCode.BALANCE_NOT_ENOUGH, new String[]{entry.getKey(), + BigIntegerUtils.bigIntegerToString(entry.getValue())}); + } + } + + // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 校验通过后,存储数据 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + for (CoinFrom coinFrom : coinFroms) { + String address = LedgerUtil.getRealAddressStr(coinFrom.getAddress()); + if (LedgerUtil.isNotLocalChainAccount(chainId, coinFrom.getAddress())) { + if (LedgerUtil.isCrossTx(txType)) { + //非本地网络账户地址,不进行处理 + continue; + } + } + String assetKey = LedgerUtil.getKeyStr(address, coinFrom.getAssetsChainId(), coinFrom.getAssetsId()); + AccountState accountState = accountStateMap.get(assetKey); + List timeList = getFreezeLockTimeValidateList(lockedTimeMap, assetKey); + List heightList = getFreezeLockHeightValidateList(lockedHeightMap, assetKey); + + if (null == accountState) { + accountState = accountStateService.getAccountStateReCal(address, chainId, coinFrom.getAssetsChainId(), coinFrom.getAssetsId()); + accountStateMap.put(assetKey, accountState); + timeList.addAll(accountState.getFreezeLockTimeStates()); + heightList.addAll(accountState.getFreezeHeightStates()); + } + + //判断是否是解锁操作 + if (coinFrom.getLocked() == 0) { + //不是解锁操作 + //余额累计 + accountState.addTotalFromAmount(coinFrom.getAmount()); + List list = accountValidateTxMap.computeIfAbsent(assetKey, a -> new ArrayList<>()); + list.add(new TempAccountNonce(assetKey, coinFrom.getNonce(), txNonce)); + } else { + //解锁交易,需要从from 里去获取需要的高度数据或时间数据,进行校验 + //解锁交易只需要从已确认的数据中去获取数据进行校验 + String lockedNonce = coinFrom.getAssetsChainId() + "-" + coinFrom.getAssetsId() + "-" + LedgerUtil.getNonceEncode(coinFrom.getNonce()); + lockedCancelNonceMap.put(lockedNonce, 1); + //处理缓存 + txLockedProcessor.processCoinData(coinFrom, coinFrom.getNonce(), txHash, timeList, heightList, address, true); + } + } + + for (CoinTo coinTo : coinTos) { + String address = LedgerUtil.getRealAddressStr(coinTo.getAddress()); + String assetKey = LedgerUtil.getKeyStr(address, coinTo.getAssetsChainId(), coinTo.getAssetsId()); + AccountState accountState = accountStateMap.get(assetKey); + List timeList = getFreezeLockTimeValidateList(lockedTimeMap, assetKey); + List heightList = getFreezeLockHeightValidateList(lockedHeightMap, assetKey); + if (null == accountState) { + accountState = accountStateService.getAccountStateReCal(address, chainId, coinTo.getAssetsChainId(), coinTo.getAssetsId()); + accountStateMap.put(assetKey, accountState); + timeList.addAll(accountState.getFreezeLockTimeStates()); + heightList.addAll(accountState.getFreezeHeightStates()); + } + + //判断是否是解锁操作 + if (coinTo.getLockTime() == 0) { + accountState.addTotalToAmount(coinTo.getAmount()); + } else { +// //校验通过,将缓存处理 + txLockedProcessor.processCoinData(coinTo, LedgerUtil.getNonceDecodeByTxHash(txHash), txHash, timeList, heightList, address, false); + } + } batchValidateTxSet.add(txHash); return ValidateResult.getSuccess(); } @@ -724,7 +852,7 @@ private boolean isValidateFreezeTx(byte locked, AccountState accountState, BigIn return isValidate; } - private boolean isValidateFreezeTxWithTemp(List timeList, List heightList, byte locked, AccountState accountState, BigInteger fromAmount, + private boolean isValidateFreezeTxWithTemp(List timeList, List heightList, byte locked, BigInteger fromAmount, byte[] fromNonce) { boolean isValidate = false; //解锁交易,校验是否存在该笔交易 diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index e096198b8f..fe73c348ea 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -83,6 +83,9 @@ public static void initClass() { @Test public void importPriKeyTest() { importPriKey("b54db432bba7e13a6c4a28f65b925b18e63bcb79143f7b894fa735d5d3d09db5", password);//打包地址 tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp + //importPriKey("188b255c5a6d58d1eed6f57272a22420447c3d922d5765ebb547bc6624787d9f", password);//打包地址 tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe + //importPriKey("fbcae491407b54aa3904ff295f2d644080901fda0d417b2b427f5c1487b2b499", password);//打包地址 tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF + importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD importPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78", password);//27 tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24 @@ -181,9 +184,9 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { @Test public void getBalance() throws Exception { - this.getBalanceByAccount("tNULSeBaNBJT6JuznGqhKM5q6jXFkuSoMUNkHK"); + //this.getBalanceByAccount("tNULSeBaNBJT6JuznGqhKM5q6jXFkuSoMUNkHK"); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); + //this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); System.out.println("---------------------------------------------------"); this.getBalanceByAccount("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java index b7f530c2e7..f075a7137f 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -23,6 +23,7 @@ */ package io.nuls.contract.tx.contractvm; +import com.fasterxml.jackson.databind.DeserializationFeature; import io.nuls.base.basic.AddressTool; import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractContext; @@ -154,9 +155,9 @@ public void createAndInit() throws Exception { // 加载协议升级的数据 ContractContext.CHAIN_ID = 2; - if (createContract) { + if (!createContract) { // 注册链内资产 - assetRegisterTest(); + //assetRegisterTest(); // -------------------------------------------------------------------------------------// //InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-v8-testA-1.0-SNAPSHOT.jar").getFile()); //InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-v8-testB-1.0-SNAPSHOT.jar").getFile()); @@ -177,14 +178,15 @@ public void createAndInit() throws Exception { contractResult = this.callByParams(contractB, toAddress, "setSender", "0", new String[]{sender}); Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); } else { - contractA = "tNULSeBaN6K66aCdLBu1aVY6PCqQizfFwvFDdA"; - contractB = "tNULSeBaMyotkeYuWn8jn5b4HY6GtQBttsuNNm"; + contractA = "tNULSeBaMwVijojTRBneW8zpqGwEgNf8mKVNbD"; + contractB = "tNULSeBaN9uBG7DWTWJN1WUcDReoGJopNjsbHb"; } + JSONUtils.getInstance().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } @Test public void testContractResultDto() throws Exception { - String hash = "601ac56670a950217f4f1c9bd7f1b33582a8f1e8e25b2e49b6a90b51a563f441"; + String hash = "db7a99bcd2c6356126a32e8e0f06a6ef7d16bdfea127fda2d852241b0acd35a1"; Map map = this.waitGetContractTx(hash); Map map1 = (Map) map.get("contractResult"); ContractResultDto dto = this.converterDto(map1); @@ -545,7 +547,7 @@ protected void testFailed(String contract, String sender, String method, String[ Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); } catch (Throwable e) { if (e.getMessage().contains(errorMsgKey)) { - System.out.println(String.format("method [%s] 测试通过,期望失败", method)); + System.out.println(String.format("method [%s] 测试通过,期望: %s", method, errorMsgKey)); } else { System.err.println(String.format("method [%s] 测试失败, error: %s", method, e.getMessage())); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index 0ed54ae71e..4d3474ac3a 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -23,22 +23,47 @@ */ package io.nuls.contract.tx.multyasset; +import io.nuls.base.RPCUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.TransactionFeeCalculator; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; import io.nuls.contract.mock.basetest.ContractTest; +import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.rpc.call.LedgerCall; import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.CommonCodeConstanst; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.model.LongUtils; +import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.v2.NulsSDKBootStrap; +import io.nuls.v2.model.dto.SignDto; +import io.nuls.v2.util.NulsSDKTool; import org.apache.commons.io.IOUtils; +import org.junit.Assert; import org.junit.Test; import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import static io.nuls.contract.constant.ContractCmdConstant.CALL; @@ -128,7 +153,7 @@ public void otherAssetTest() throws Exception { @Test public void innerCall() throws Exception { String methodName = "callOtherContract"; - String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; // 转入 6.6 NULS (外部合约) this.callByParams("_payable", "6.6", null); // 转入 6.6 NULS (内部合约) @@ -149,7 +174,7 @@ public void innerCall() throws Exception { @Test public void innerCallWithReturnValue() throws Exception { String methodName = "callWithReturnValueOfOtherContract"; - String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; // 转入 6.6 NULS (外部合约) this.callByParams("_payable", "6.6", null); // 转入 6.6 NULS (内部合约) @@ -170,7 +195,7 @@ public void innerCallWithReturnValue() throws Exception { @Test public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { String methodName = "callWithReturnValueOfOtherContractOfDesignatedAsset"; - String otherContract = "tNULSeBaN2zgVKHYKQknBbMgegR5X7DzNet8xh"; + String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; // 转入 6.6 2-2 (外部合约) this.callOfDesignatedAssetByParams("_payableMultyAsset", "6.6", null, 2, 2); // 转入 6.6 2-2 (内部合约) @@ -178,8 +203,8 @@ public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { // 转出 3.3 2-2 Object[] innerArgs = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAsset", innerArgs, "0", 0, 0); - // 转出 1.1 2-2(锁定) - Object[] innerArgsLock = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2, minutes_3}; + // 转出 3.3 2-2(锁定) + Object[] innerArgsLock = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2, minutes_3}; this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAssetLock", innerArgsLock, "0", 0, 0); } @@ -196,6 +221,151 @@ public void getAssetRegInfoByHashTest() throws Exception { System.out.println(JSONUtils.obj2PrettyJson(response)); } + /** + * 多账户调用合约 + */ + @Test + public void manyAccountCall() throws Exception { + NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); + //importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG + //importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = BigInteger.ZERO; + String contractAddress = "tNULSeBaN7Fd9yMXAcL5EUhjyq4AUWJ3pw1Gu9"; + //String contractAddress = "tNULSeBaNA1AvcgZh1geK8upzgiabUTSyBy5R2"; + String methodName = "transferNuls"; + String methodDesc = ""; + String remark = ""; + // 转出 0.1 NULS + Object[] args = new Object[]{toAddress17, new BigDecimal("0.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; + String[] argsType = new String[]{"Address", "BigInteger"}; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, + new BigDecimal("3.2").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), + contractAddress, + "_payable", "", remark, null, null, true); + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, true); + + } + + protected void callTxOffline(String feeAccount, String feeAccountPri, + String sender, String senderPri, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, + Object[] args, String[] argsType, boolean isBroadcastTx) throws Exception{ + // 生成参数的二维数组 + String[][] finalArgs = null; + if (args != null && args.length > 0) { + if(argsType == null || argsType.length != args.length) { + Assert.assertTrue("size of 'argsType' array not match 'args' array", false); + } + finalArgs = ContractUtil.twoDimensionalArray(args, argsType); + } + + // 组装交易的txData + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + byte[] senderBytes = AddressTool.getAddress(sender); + CallContractData callContractData = new CallContractData(); + callContractData.setContractAddress(contractAddressBytes); + callContractData.setSender(senderBytes); + callContractData.setValue(value); + callContractData.setPrice(1); + callContractData.setGasLimit(gasLimit); + callContractData.setMethodName(methodName); + callContractData.setMethodDesc(methodDesc); + if (finalArgs != null) { + callContractData.setArgsCount((short) finalArgs.length); + callContractData.setArgs(finalArgs); + } + + CallContractTransaction tx = new CallContractTransaction(); + if (StringUtils.isNotBlank(remark)) { + tx.setRemark(remark.getBytes(StandardCharsets.UTF_8)); + } + tx.setTime(System.currentTimeMillis() / 1000); + // 计算CoinData + CoinData coinData = new CoinData(); + ContractBalance feeAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, feeAccount); + ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + + long gasUsed = callContractData.getGasLimit(); + BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, callContractData.getPrice())); + // 总花费 + BigInteger sendValue = callContractData.getValue(); + if (senderBalance.getBalance().compareTo(sendValue) < 0) { + // Insufficient balance + throw new RuntimeException("Insufficient balance to transfer to contract"); + } + BigInteger feeValue = imputedValue; + if (value.compareTo(BigInteger.ZERO) > 0) { + CoinFrom coinFrom = new CoinFrom(callContractData.getSender(), chainId, assetId, sendValue, RPCUtil.decode(senderBalance.getNonce()), (byte) 0); + coinData.addFrom(coinFrom); + + CoinTo coinTo = new CoinTo(callContractData.getContractAddress(), chainId, assetId, value); + coinData.addTo(coinTo); + } + CoinFrom feeCoinFrom = new CoinFrom(AddressTool.getAddress(feeAccount), chainId, assetId, feeValue, RPCUtil.decode(feeAccountBalance.getNonce()), (byte) 0); + coinData.addFrom(feeCoinFrom); + + tx.setCoinData(coinData.serialize()); + tx.setTxData(callContractData.serialize()); + + BigInteger txSizeFee = TransactionFeeCalculator.getNormalUnsignedTxFee(tx.getSize() + 260); + feeValue = feeValue.add(txSizeFee); + feeCoinFrom.setAmount(feeValue); + if (feeAccountBalance.getBalance().compareTo(feeValue) < 0) { + // Insufficient balance + throw new RuntimeException("Insufficient balance to pay fee"); + } + tx.setCoinData(coinData.serialize()); + // 签名 + List signDtoList = new ArrayList<>(); + SignDto signDto = new SignDto(); + signDto.setAddress(sender); + signDto.setPriKey(senderPri); + signDtoList.add(signDto); + signDto = new SignDto(); + signDto.setAddress(feeAccount); + signDto.setPriKey(feeAccountPri); + signDtoList.add(signDto); + + byte[] txBytes = tx.serialize(); + String txHex = HexUtil.encode(txBytes); + Result signTxR = NulsSDKTool.sign(signDtoList, txHex); + + Assert.assertTrue(JSONUtils.obj2PrettyJson(signTxR), signTxR.isSuccess()); + Map resultData = signTxR.getData(); + String signedTxHex = (String) resultData.get("txHex"); + System.out.println(String.format("signedTxHex: %s", signedTxHex)); + + // 在线接口 - 广播交易 + if (!isBroadcastTx) { + return; + } + Result broadcaseTxR = NulsSDKTool.broadcast(signedTxHex); + Assert.assertTrue(JSONUtils.obj2PrettyJson(broadcaseTxR), broadcaseTxR.isSuccess()); + Map data = broadcaseTxR.getData(); + String hash = (String) data.get("hash"); + System.out.println(String.format("hash: %s", hash)); + } + + public ContractBalance getUnConfirmedBalanceAndNonce(int assetChainId, int assetId, String address) { + try { + Map balance = LedgerCall.getBalanceAndNonce(chain, assetChainId, assetId, address); + ContractBalance contractBalance = ContractBalance.newInstance(); + contractBalance.setBalance(new BigInteger(balance.get("available").toString())); + contractBalance.setFreeze(new BigInteger(balance.get("freeze").toString())); + contractBalance.setNonce((String) balance.get("nonce")); + return contractBalance; + } catch (NulsException e) { + Log.error(e); + return ContractBalance.newInstance(); + } + } + protected void callByParams(String methodName, String valueStr, Object[] args) throws Exception { BigInteger value = new BigDecimal(valueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Map params = this.makeCallParams(sender, value, contractAddress, methodName, null, "", args); From 9aa2064bd314114f11114828d6665568eef54154 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 12 Nov 2020 10:50:22 +0800 Subject: [PATCH 157/304] transaction block height update --- .../main/java/io/nuls/ledger/validator/CoinDataValidator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java index 7b22654c52..91929cc430 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/validator/CoinDataValidator.java @@ -210,6 +210,7 @@ public boolean blockValidate(int chainId, long height, List txs) { Map> lockedHeightMap = new ConcurrentHashMap>(); for (Transaction tx : txs) { + tx.setBlockHeight(height); if (LoggerUtil.logger(chainId).isDebugEnabled()) { LoggerUtil.logger(chainId).debug("[TEST] blocksValidate tx type: {}, hash: {}", tx.getType(), tx.getHash().toHex()); } From b0c1f8081d150cf314890ca5da9933492ce8ff51 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 12 Nov 2020 15:32:13 +0800 Subject: [PATCH 158/304] recovery versions --- module/nuls-protocol-update/src/main/resources/versions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 6bee425bcc..d3c765202a 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -31,12 +31,12 @@ }, { "version": "7", - "effectiveRatio": "60", + "effectiveRatio": "80", "continuousIntervalCount": "10" }, { "version": "8", - "effectiveRatio": "60", + "effectiveRatio": "80", "continuousIntervalCount": "10" } ] \ No newline at end of file From 4c59bc5364dfcf41f87db1f4bba546f7f2c2ad62 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 16 Nov 2020 15:10:52 +0800 Subject: [PATCH 159/304] update vm sdk classes --- .../src/main/resources/used_classes_sdk_v8 | Bin 8978 -> 9484 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 index 1abfb941081e0b1f33711e8aa663c911f9c04f21..608d81774d4c1996cf5c4e982e02bc076c3e82b7 100644 GIT binary patch delta 1671 zcmYL}dpHwn9LMKYYnWU{*d>!06(JcpM>!$JY%;RYa4b^^bug8=M9P{on}m`vB9hCr z4y979(#170<5(9RlzSypj&0|8&ilvj^L@VW_xZi=U*9};hLXvSN$W&dYSup*4IJxqyRqDz9ecm)0g4 z8mo)-06-uRAWLyILX_kwB``%HqP0#agk=43g$UFMQ;1gGzZ4=7qHyFpU6AVZ{EMB5 zxMMJ@o#s>NL+NA8kG5T8*RF+^T+H+EBorovcv;$Xcm(d8k{TH zHYXNmOHeV7XW%2b5|u4aV(G?+_<4c`;vLxGYW;cbhaix6%h_|fKR*Z#)`%sYN)yXw zF5Kt2N!h2nf-Br5RD-Y6^2~ zCHu!1GM{z+BtP9;T$kQ03^w{7WOZ>#P@K756`gtefE}#g*Q$wi z>9#-u9I!u%O>3+jC6CyFCUb;You6@5ANv_TrbL@sKg(&yN@CGyeoHKLD2UhW?&OiT#&)TJofH=hT6!f2X@jq9o)pC_}3{F+av6UfXnoAnI8~ay9yW3A>xt1l=9y7-Bb~)&&u5~Umu#GW zdyoY9c8{Sk1LvF>$lh-K&KO5A_`1*-o%ErPA4IBmCg^}2`>+!yaqgMK%LbHcZ)$G* zl5N7vIo^d&D^0B7<8!H#hRkp6UQ%rLd+!3_+aas|f1)ar=$tEuQ4QJ)G5OEPIpga* zU#wYwRwe5jmtWjpdDn_EO>1vpcvX@#MxG5x5k(dG_5|{L(cQ)b)a2ZUd-(7}YzD&Al+(nu3lRf;|Xb>V>q{CJ{!gAUVOpsKL+^2Q!|YmcHyQp(R9EFXGjv z@IzBJZC=fgf$2mu1LXp0aEg)J6|eQLt4nry=+i^OtAy%_NUP!f%pDVj#N7@xEhYo| zUhd={-E^oa@{iuCzDGTlkc!_Eu4y^{k`}RWYdn9NhvUys)6-2Cw!8XC2Kq<8;oHh_ z>N=wiMD=DP*X+0GFAG^ZOY2mPPQs2YrZTj;lJB|mnEDjHm(V0{*G?O!Qe<03xdbz^ ziAHywu)MBXvXBP)}tI#mzD zrE9qT-FVpAi7r9xpYHAt&$V6iWjdekfzZniE{?P3SyOwVXJ24M42%=p$4rzAPx)SJ z8uQCB%EsM=swj&Z1N72%;kHc2;4&8r!`g6n%BBlIX|^DaG`0eM)wM&=CAMEGuyf_v zER~dpX7_``Imuy2sE|g|W)a90>0}7=pEqv2dy!aaXXb{C3^uGMCmFHj`xb^ABBlCq3&%+49cr~o;TuuC#=x;oB zEs)oZ+&`)c0JyI9v!bTg{@2rN1EXK%ZMxq`Mc%m~P>ig43!n}%bU~eE0K?p5Aj0;_ zvg}e=keth~eRBH2iE>_t`>)3G5DGT{5h8bQA;RP|+88b8*^N{==Qon&3@{{$Z4r)l+#JG|LL{FCE z(wlsXwTlJF4xGF|PI_{ljL_r`1>Vhz*eaPpDmKe;Su+7Of>j16@$dj`5n0FJI1^_x`u-lyWjhqY}3w5F)@^Pis9sp zcanURciB2Edif;I>DP+Bdj05>i>s@Qo7xuqg`ZvLgeyHyQttn4f1`7>?BeE}B{ znGY{6c-Jph&8VKfkLhRATn?3uz6)6A2pqj)_eM3^^8!C}#$$ty8Da|J3};UI3s^UI zBz?(nvyW00Z%q`Dw>@rXXw*~|@?6N7`8d-9xhPdR_XQhk*lgz>dF?UB?bsT%Wl<*? z1HT3phzc^^K60RcFzK{kwsrHVQ;#Au z_FC?ce6ZOgKy=pS;KLV<9tJ_*EliJ+X5Z-cah(%- zBtre;W7bDOvsc{c+QFkequl*`)YW}=zr9~n&wuSp)TJN!i_0E2%2od04)A8@h Date: Tue, 17 Nov 2020 09:53:00 +0800 Subject: [PATCH 160/304] update package --- .../transaction/service/impl/TxServiceImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index a88f82c8fb..a3f67e3d7c 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -648,6 +648,18 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi int batchContractTxCount = 0; //是否停止执行职能合约,如果位true,则取出的智能合约本次打包不再处理,需要还回待打包队列 boolean stopInvokeContract = false; + + Random random = new Random(); + int packageContractTxMaxCount; + int availableProcessors = Runtime.getRuntime().availableProcessors(); + if (availableProcessors <= 4) { + packageContractTxMaxCount = 20 + random.nextInt(10); + } else if (availableProcessors <= 8) { + packageContractTxMaxCount = 50 + random.nextInt(10); + } else { + packageContractTxMaxCount = 100 + random.nextInt(20); + } + for (int index = 0; ; index++) { long currentTimeMillis = NulsDateUtils.getCurrentTimeMillis(); long currentReserve = endtimestamp - currentTimeMillis; @@ -737,7 +749,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi //限制智能合约交易数量 boolean isContract = txRegister.getModuleCode().equals(ModuleE.SC.abbr); if (isContract) { - if (contractTxCount + (++batchContractTxCount) >= TxConstant.PACKAGE_CONTRACT_TX_MAX_COUNT) { + if (contractTxCount + (++batchContractTxCount) >= packageContractTxMaxCount) { //限制单个区块包含的跨链交易总数,超过跨链交易最大个数,放回去, 然后停止获取交易 packablePool.add(chain, tx); if (batchProcessListSize > 0) { From abd89659d6fdc31fd2719e36a224af5f4ccbdc1c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 17 Nov 2020 10:55:17 +0800 Subject: [PATCH 161/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/message/CrossTxRehandleMsgHandler.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index 9b28004a25..923d41983a 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -13,17 +13,21 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; import io.nuls.core.log.Log; +import io.nuls.core.model.StringUtils; import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.message.CrossTxRehandleMessage; import io.nuls.crosschain.base.utils.HashSetDuplicateProcessor; +import io.nuls.crosschain.nuls.constant.ParamConstant; import io.nuls.crosschain.nuls.model.bo.Chain; import io.nuls.crosschain.nuls.model.po.CtxStatusPO; import io.nuls.crosschain.nuls.rpc.call.BlockCall; +import io.nuls.crosschain.nuls.rpc.call.ConsensusCall; import io.nuls.crosschain.nuls.srorage.CtxStatusService; import io.nuls.crosschain.nuls.utils.manager.ChainManager; import io.nuls.crosschain.nuls.utils.thread.CrossTxHandler; import java.io.IOException; +import java.util.Map; /** * @Author: zhoulijun @@ -62,13 +66,19 @@ public void process(int chainId, String nodeId, String messageStr) { //如果没有处理过这个消息才处理 if(processorOfTx.insertAndCheck(messageHash)){ Chain chain = chainManager.getChainMap().get(chainId); + Map packerInfo = ConsensusCall.getPackerInfo(chain); + String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); + if (!StringUtils.isBlank(address) && chain.getVerifierList().contains(address)) { + chain.getLogger().debug("不是共识节点,不处理跨链交易"); + return ; + } //检查本地是否已经处理完此消息,并且已经确认 CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); if(ctxStatusPO != null){ if(ctxStatusPO.getStatus() == TxStatusEnum.CONFIRMED.getStatus()){ - chain.getLogger().info("该跨链转账交易之前已处理完成,不需重复处理:{}",message.getCtxHash().toHex() ); - return ; + chain.getLogger().info("该跨链转账交易之前已处理完成,将重新进行处理:{}",message.getCtxHash().toHex() ); } + ctxStatusService.delete(message.getCtxHash(), chainId); } String ctxHash = message.getCtxHash().toHex(); Result tx = transferService.getConfirmedTxByHash(new GetConfirmedTxByHashReq(ctxHash)); @@ -82,6 +92,8 @@ public void process(int chainId, String nodeId, String messageStr) { return ; } chain.getLogger().debug("对ctx:[{}]重新进行拜占庭签名验证", ctxHash); + ctxStatusPO = new CtxStatusPO(transaction,TxStatusEnum.UNCONFIRM.getStatus()); + ctxStatusService.save(message.getCtxHash(),ctxStatusPO,chainId); int syncStatus = BlockCall.getBlockStatus(chain); //发起拜占庭验证 chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, tx.getData(), syncStatus)); From 9745722b93bdf8f1876a9a390a5439f2ec62d54b Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 17 Nov 2020 11:29:42 +0800 Subject: [PATCH 162/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/message/CrossTxRehandleMsgHandler.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index 923d41983a..892d2f81db 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -66,12 +66,12 @@ public void process(int chainId, String nodeId, String messageStr) { //如果没有处理过这个消息才处理 if(processorOfTx.insertAndCheck(messageHash)){ Chain chain = chainManager.getChainMap().get(chainId); - Map packerInfo = ConsensusCall.getPackerInfo(chain); - String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); - if (!StringUtils.isBlank(address) && chain.getVerifierList().contains(address)) { - chain.getLogger().debug("不是共识节点,不处理跨链交易"); - return ; - } +// Map packerInfo = ConsensusCall.getPackerInfo(chain); +// String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); +// if (!StringUtils.isBlank(address) && chain.getVerifierList().contains(address)) { +// chain.getLogger().debug("不是共识节点,不处理跨链交易"); +// return ; +// } //检查本地是否已经处理完此消息,并且已经确认 CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); if(ctxStatusPO != null){ From f9f41f9e1d2436e6f687af653ba139aa7061a61e Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 17 Nov 2020 11:49:32 +0800 Subject: [PATCH 163/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/CrossTxRehandleMsgHandler.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index 892d2f81db..e6a3dc6c18 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -72,14 +72,6 @@ public void process(int chainId, String nodeId, String messageStr) { // chain.getLogger().debug("不是共识节点,不处理跨链交易"); // return ; // } - //检查本地是否已经处理完此消息,并且已经确认 - CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); - if(ctxStatusPO != null){ - if(ctxStatusPO.getStatus() == TxStatusEnum.CONFIRMED.getStatus()){ - chain.getLogger().info("该跨链转账交易之前已处理完成,将重新进行处理:{}",message.getCtxHash().toHex() ); - } - ctxStatusService.delete(message.getCtxHash(), chainId); - } String ctxHash = message.getCtxHash().toHex(); Result tx = transferService.getConfirmedTxByHash(new GetConfirmedTxByHashReq(ctxHash)); if(tx.isFailed()){ @@ -91,9 +83,20 @@ public void process(int chainId, String nodeId, String messageStr) { chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个跨链交易",ctxHash); return ; } + //检查本地是否已经处理完此消息,并且已经确认 + CtxStatusPO ctxStatusPO = ctxStatusService.get(message.getCtxHash(), chainId); + if(ctxStatusPO != null){ + if(ctxStatusPO.getStatus() == TxStatusEnum.CONFIRMED.getStatus()){ + chain.getLogger().info("该跨链转账交易之前已处理完成,将重新进行处理:{}",message.getCtxHash().toHex() ); + ctxStatusPO.setStatus(TxStatusEnum.UNCONFIRM.getStatus()); + ctxStatusService.save(message.getCtxHash(),ctxStatusPO, chainId); + } + }else{ + chain.getLogger().info("该跨链转账交易之前没有存储到待处理列表中,在ctx_status_po中存储此交易:{}",message.getCtxHash().toHex() ); + ctxStatusPO = new CtxStatusPO(transaction,TxStatusEnum.UNCONFIRM.getStatus()); + ctxStatusService.save(message.getCtxHash(),ctxStatusPO,chainId); + } chain.getLogger().debug("对ctx:[{}]重新进行拜占庭签名验证", ctxHash); - ctxStatusPO = new CtxStatusPO(transaction,TxStatusEnum.UNCONFIRM.getStatus()); - ctxStatusService.save(message.getCtxHash(),ctxStatusPO,chainId); int syncStatus = BlockCall.getBlockStatus(chain); //发起拜占庭验证 chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, tx.getData(), syncStatus)); From 288ab00c2fd7b10776e89851f1f9fbad4d302120 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 17 Nov 2020 12:47:42 +0800 Subject: [PATCH 164/304] version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 24ba9a38de..37c2961c24 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.7.0 +2.7.2 From 90dfc3da0ea9722afc7917b24aad43a6a9b232d6 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 17 Nov 2020 13:45:21 +0800 Subject: [PATCH 165/304] update validation of contract args --- .../controller/TransactionController.java | 39 +++++++++++++++++ .../api/resources/AccountLedgerResource.java | 39 +++++++++++++++++ .../rpc/controller/TransactionController.java | 43 ++++++++++++++++++- 3 files changed, 120 insertions(+), 1 deletion(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 8ffc0d5bb1..a268ef3f66 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -211,6 +211,10 @@ public RpcResult broadcastTx(List params) { tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); CreateContractData create = new CreateContractData(); create.parse(new NulsByteBuffer(tx.getTxData())); + RpcResult createArgsResult = this.validateContractArgs(create.getArgs()); + if (createArgsResult.getError() != null) { + return createArgsResult; + } result = contractTools.validateContractCreate(chainId, AddressTool.getStringAddressByBytes(create.getSender()), create.getGasLimit(), @@ -223,6 +227,10 @@ public RpcResult broadcastTx(List params) { callTx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); CallContractData call = new CallContractData(); call.parse(new NulsByteBuffer(callTx.getTxData())); + RpcResult argsResult = this.validateContractArgs(call.getArgs()); + if (argsResult.getError() != null) { + return argsResult; + } result = contractTools.validateContractCall(chainId, AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), @@ -263,6 +271,37 @@ public RpcResult broadcastTx(List params) { } } + private RpcResult validateContractArgs(String[][] args) { + if (args == null || args.length == 0) { + return RpcResult.success(null); + } + try { + String[] arg; + for (int i = 0, length = args.length; i < length; i++) { + arg = args[i]; + if (arg == null || arg.length == 0) { + continue; + } + for (String str : arg) { + if (!this.checkSpaceArg(str)) { + return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); + } + } + } + return RpcResult.success(null); + } catch (Exception e) { + io.nuls.core.log.Log.error("parse args error.", e); + return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); + } + } + + private boolean checkSpaceArg(String s) { + if (s == null) { + return true; + } + return s.length() == s.trim().length(); + } + @RpcMethod("broadcastTxWithNoContractValidation") @ApiOperation(description = "广播交易(不验证合约)", order = 304, detailDesc = "广播离线组装的交易(不验证合约),成功返回true,失败返回错误提示信息") @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 156198a614..411a4224bc 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -168,6 +168,10 @@ public RpcClientResult broadcast(TxForm form) { tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); CreateContractData create = new CreateContractData(); create.parse(new NulsByteBuffer(tx.getTxData())); + RpcClientResult createArgsResult = this.validateContractArgs(create.getArgs()); + if (createArgsResult.isFailed()) { + return createArgsResult; + } result = contractTools.validateContractCreate(config.getChainId(), AddressTool.getStringAddressByBytes(create.getSender()), create.getGasLimit(), @@ -180,6 +184,10 @@ public RpcClientResult broadcast(TxForm form) { callTx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); CallContractData call = new CallContractData(); call.parse(new NulsByteBuffer(callTx.getTxData())); + RpcClientResult argsResult = this.validateContractArgs(call.getArgs()); + if (argsResult.isFailed()) { + return argsResult; + } result = contractTools.validateContractCall(config.getChainId(), AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), @@ -216,6 +224,37 @@ public RpcClientResult broadcast(TxForm form) { } } + private RpcClientResult validateContractArgs(String[][] args) { + if (args == null || args.length == 0) { + return RpcClientResult.getFailed("Illegal space character"); + } + try { + String[] arg; + for (int i = 0, length = args.length; i < length; i++) { + arg = args[i]; + if (arg == null || arg.length == 0) { + continue; + } + for (String str : arg) { + if (!this.checkSpaceArg(str)) { + return RpcClientResult.getFailed("Illegal space character"); + } + } + } + return RpcClientResult.getSuccess(null); + } catch (Exception e) { + Log.error("parse args error.", e); + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.DATA_PARSE_ERROR)); + } + } + + private boolean checkSpaceArg(String s) { + if (s == null) { + return true; + } + return s.length() == s.trim().length(); + } + @POST @Path("/transaction/broadcastWithNoContractValidation") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 0774c00ce5..5c04f99181 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -27,6 +27,7 @@ import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; import java.util.ArrayList; @@ -315,6 +316,10 @@ public RpcResult broadcastTx(List params) { tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); CreateContractData create = new CreateContractData(); create.parse(new NulsByteBuffer(tx.getTxData())); + RpcResult createArgsResult = this.validateContractArgs(create.getArgs()); + if (createArgsResult.getError() != null) { + return createArgsResult; + } result = WalletRpcHandler.validateContractCreate(chainId, AddressTool.getStringAddressByBytes(create.getSender()), create.getGasLimit(), @@ -328,12 +333,17 @@ public RpcResult broadcastTx(List params) { txHash = callTx.getHash().toHex(); call = new CallContractData(); call.parse(new NulsByteBuffer(callTx.getTxData())); + contract = AddressTool.getStringAddressByBytes(call.getContractAddress()); + RpcResult argsResult = this.validateContractArgs(call.getArgs()); + if (argsResult.getError() != null) { + return argsResult; + } result = WalletRpcHandler.validateContractCall(chainId, AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), call.getGasLimit(), call.getPrice(), - (contract = AddressTool.getStringAddressByBytes(call.getContractAddress())), + contract, call.getMethodName(), call.getMethodDesc(), call.getArgs()); @@ -384,6 +394,37 @@ public RpcResult broadcastTx(List params) { } } + private RpcResult validateContractArgs(String[][] args) { + if (args == null || args.length == 0) { + return RpcResult.success(null); + } + try { + String[] arg; + for (int i = 0, length = args.length; i < length; i++) { + arg = args[i]; + if (arg == null || arg.length == 0) { + continue; + } + for (String str : arg) { + if (!this.checkSpaceArg(str)) { + return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); + } + } + } + return RpcResult.success(null); + } catch (Exception e) { + Log.error("parse args error.", e); + return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); + } + } + + private boolean checkSpaceArg(String s) { + if (s == null) { + return true; + } + return s.length() == s.trim().length(); + } + @RpcMethod("broadcastTxWithoutAnyValidation") public RpcResult broadcastTxWithoutAnyValidation(List params) { if (!ApiContext.isReady) { From 8b0ee17621966cfb64e365083a21929f26c88535 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 17 Nov 2020 15:18:41 +0800 Subject: [PATCH 166/304] fix bug --- .../io/nuls/provider/api/resources/AccountLedgerResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 411a4224bc..edfef17a7c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -226,7 +226,7 @@ public RpcClientResult broadcast(TxForm form) { private RpcClientResult validateContractArgs(String[][] args) { if (args == null || args.length == 0) { - return RpcClientResult.getFailed("Illegal space character"); + return RpcClientResult.getSuccess(null); } try { String[] arg; From 5469cfdb857ae71536ab2be19b6dd7ff960e241a Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 19 Nov 2020 09:54:46 +0800 Subject: [PATCH 167/304] add CrossChainAssetRegMngRepository cmd --- .../jsonrpc/controller/LegerController.java | 39 +++++ .../nuls/provider/rpctools/LegderTools.java | 16 ++ .../io/nuls/ledger/constant/CmdConstant.java | 1 + .../ledger/manager/LedgerChainManager.java | 18 +++ .../io/nuls/ledger/model/po/LedgerAsset.java | 24 +++ .../io/nuls/ledger/rpc/cmd/ChainAssetCmd.java | 56 +++++++ .../CrossChainAssetRegMngRepository.java | 54 +++++++ .../io/nuls/ledger/storage/DataBaseArea.java | 5 + .../CrossChainAssetRegMngRepositoryImpl.java | 141 ++++++++++++++++++ 9 files changed, 354 insertions(+) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java create mode 100644 module/nuls-ledger/src/main/java/io/nuls/ledger/storage/CrossChainAssetRegMngRepository.java create mode 100644 module/nuls-ledger/src/main/java/io/nuls/ledger/storage/impl/CrossChainAssetRegMngRepositoryImpl.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java new file mode 100644 index 0000000000..eae61e9a78 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java @@ -0,0 +1,39 @@ +package io.nuls.provider.api.jsonrpc.controller; + +import io.nuls.base.api.provider.Result; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Controller; +import io.nuls.core.core.annotation.RpcMethod; +import io.nuls.provider.model.jsonrpc.RpcResult; +import io.nuls.provider.model.jsonrpc.RpcResultError; +import io.nuls.provider.rpctools.LegderTools; +import io.nuls.v2.model.annotation.Api; +import io.nuls.v2.model.annotation.ApiType; + +import java.util.List; + +@Controller +@Api(type = ApiType.JSONRPC) +public class LegerController { + + + @Autowired + private LegderTools legderTools; + + @RpcMethod("getAllAsset") + public RpcResult getAllAsset(List params) { + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + + Result result = legderTools.getAllAsset(chainId); + RpcResult rpcResult = new RpcResult(); + if (result.isFailed()) { + return rpcResult.setError(new RpcResultError(result.getStatus(), result.getMessage(), null)); + } + return rpcResult.setResult(result.getList()); + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 4b75ec3d45..887dd4a82e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -9,6 +9,7 @@ import java.math.BigInteger; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.function.Function; @@ -53,4 +54,19 @@ public Result getBalanceAndNonce(int chainId, int assetChainId, } + public Result getAllAsset(int chainId) { + Map params = new HashMap(2); + params.put(Constants.CHAIN_ID, chainId); + try { + return callRpc(ModuleE.LG.abbr, "lg_get_all_asset", params, (Function, Result>) map -> { + if (map == null) { + return null; + } + List assets = (List) map.get("assets"); + return new Result<>(assets); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java index cd0acf4d1b..032b929355 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/constant/CmdConstant.java @@ -53,6 +53,7 @@ public interface CmdConstant { String CMD_CHAIN_ASSET_REG_INFO = "getAssetRegInfo"; + String CMD_GET_ALL_ASSET = "lg_get_all_asset"; String CMD_CHAIN_ASSET_REG_INFO_BY_HASH = "getAssetRegInfoByHash"; String CMD_CHAIN_ASSET_REG_INFO_BY_ASSETID = "getAssetRegInfoByAssetId"; String CMD_CHAIN_ASSET_TX_REG = "chainAssetTxReg"; diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/manager/LedgerChainManager.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/manager/LedgerChainManager.java index e2517c36d1..5af50d8c88 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/manager/LedgerChainManager.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/manager/LedgerChainManager.java @@ -31,6 +31,7 @@ import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.model.ModuleE; import io.nuls.ledger.config.LedgerConfig; +import io.nuls.ledger.constant.LedgerConstant; import io.nuls.ledger.model.LedgerChain; import io.nuls.ledger.service.AssetRegMngService; import io.nuls.ledger.service.BlockDataService; @@ -40,6 +41,7 @@ import io.nuls.ledger.utils.LoggerUtil; import java.io.File; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -59,6 +61,7 @@ public class LedgerChainManager { @Autowired LedgerConfig ledgerConfig; private Map chainMap = new ConcurrentHashMap<>(); + Map localChainDefaultAsset = new HashMap<>(16); /** * 增加链 @@ -137,4 +140,19 @@ public void syncBlockHeight() { public LedgerChain getChain(int key) { return this.chainMap.get(key); } + + public Map getLocalChainDefaultAsset() { + if (localChainDefaultAsset.size() > 0) { + return localChainDefaultAsset; + } + localChainDefaultAsset.put("assetChainId", ledgerConfig.getChainId()); + localChainDefaultAsset.put("assetId", ledgerConfig.getAssetId()); + localChainDefaultAsset.put("initNumber", 0); + localChainDefaultAsset.put("decimalPlace", ledgerConfig.getDecimals()); + localChainDefaultAsset.put("assetName", ledgerConfig.getSymbol()); + localChainDefaultAsset.put("assetSymbol", ledgerConfig.getSymbol()); + localChainDefaultAsset.put("assetType", LedgerConstant.COMMON_ASSET_TYPE); + localChainDefaultAsset.put("assetAddress", ""); + return localChainDefaultAsset; + } } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/model/po/LedgerAsset.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/model/po/LedgerAsset.java index de1ed50340..1707d9b5c5 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/model/po/LedgerAsset.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/model/po/LedgerAsset.java @@ -28,13 +28,16 @@ import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.basic.NulsOutputStreamBuffer; import io.nuls.base.data.BaseNulsData; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.parse.SerializeUtils; import io.nuls.core.rpc.util.NulsDateUtils; +import io.nuls.ledger.constant.LedgerConstant; import io.nuls.ledger.model.tx.txdata.TxLedgerAsset; import java.io.IOException; import java.math.BigInteger; +import java.util.HashMap; import java.util.Map; /** @@ -160,6 +163,27 @@ public void map2pojo(Map map, short assetType) { } + public Map toMap() { + LedgerAsset asset = this; + Map result = new HashMap<>(); + if (asset == null) { + return result; + } + result.put("assetChainId", asset.getChainId()); + result.put("assetId", asset.getAssetId()); + result.put("initNumber", asset.getInitNumber()); + result.put("decimalPlace", asset.getDecimalPlace()); + result.put("assetName", asset.getAssetName()); + result.put("assetSymbol", asset.getSymbol()); + short assetType = asset.getAssetType(); + result.put("assetType", assetType); + if(asset.getAssetOwnerAddress() != null) { + String address = AddressTool.getStringAddressByBytes(asset.getAssetOwnerAddress()); + result.put("assetAddress", address); + } + return result; + } + public int getChainId() { return chainId; diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java index f4dafc3a6b..a047efb959 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java @@ -32,13 +32,19 @@ import io.nuls.ledger.constant.CmdConstant; import io.nuls.ledger.constant.LedgerConstant; import io.nuls.ledger.constant.LedgerErrorCode; +import io.nuls.ledger.manager.LedgerChainManager; +import io.nuls.ledger.model.po.LedgerAsset; import io.nuls.ledger.service.ChainAssetsService; +import io.nuls.ledger.storage.AssetRegMngRepository; +import io.nuls.ledger.storage.CrossChainAssetRegMngRepository; +import io.nuls.ledger.utils.LoggerUtil; import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -50,6 +56,12 @@ public class ChainAssetCmd extends BaseLedgerCmd { @Autowired ChainAssetsService chainAssetsService; + @Autowired + AssetRegMngRepository assetRegMngRepository; + @Autowired + LedgerChainManager ledgerChainManager; + @Autowired + CrossChainAssetRegMngRepository crossChainAssetRegMngRepository; @CmdAnnotation(cmd = CmdConstant.CMD_GET_ASSETS_BY_ID, version = 1.0, description = "查询链下指定资产集合的金额信息") @@ -107,4 +119,48 @@ public Response getAssetById(Map params) { Map map = chainAssetsService.getAssetByChainAssetId(chainId, assetChainId, assetId); return success(map); } + + /** + * 查看所有登记资产信息 + * + * @param params + * @return + */ + @CmdAnnotation(cmd = CmdConstant.CMD_GET_ALL_ASSET, version = 1.0, + description = "查看所有登记资产信息") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterValidRange = "[1-65535]", parameterDes = "运行链Id,取值区间[1-65535]") + }) + @ResponseData(name = "返回值", description = "返回一个list对象", + responseType = @TypeDescriptor(value = List.class, collectionElement = Map.class, mapKeys = { + @Key(name = "assetChainId", valueType = int.class, description = "资产链id"), + @Key(name = "assetId", valueType = int.class, description = "资产id"), + @Key(name = "assetType", valueType = int.class, description = "资产类型 [1-链内普通资产 2-链内合约资产 3-平行链资产 4-异构链资产 5-链内普通资产绑定异构链资产 6-平行链资产绑定异构链资产 7-链内普通资产绑定多异构链资产 8-平行链资产绑定多异构链资产 9-异构链资产绑定多异构链资产]"), + @Key(name = "assetAddress", valueType = String.class, description = "资产地址"), + @Key(name = "initNumber", valueType = BigInteger.class, description = "资产初始化值"), + @Key(name = "decimalPlace", valueType = int.class, description = "小数点分割位数"), + @Key(name = "assetName", valueType = String.class, description = "资产名"), + @Key(name = "assetSymbol", valueType = String.class, description = "资产符号") + }) + ) + public Response getAllCrossChainAssets(Map params) { + Map rtMap = new HashMap<>(2); + try { + int chainId = Integer.parseInt(params.get("chainId").toString()); + // 获取所有注册的链内资产 + List localAssetList = assetRegMngRepository.getAllRegLedgerAssets(chainId); + List> localAssets = localAssetList.stream().map(asset -> asset.toMap()).collect(Collectors.toList()); + localAssets.add(ledgerChainManager.getLocalChainDefaultAsset()); + // 获取所有登记的跨链资产 + List ledgerAssetList = crossChainAssetRegMngRepository.getAllCrossChainAssets(chainId); + List> assets = ledgerAssetList.stream().map(asset -> asset.toMap()).collect(Collectors.toList()); + // 合并集合 + assets.addAll(localAssets); + rtMap.put("assets", assets); + } catch (Exception e) { + LoggerUtil.COMMON_LOG.error(e); + return failed(e.getMessage()); + } + return success(rtMap); + } } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/CrossChainAssetRegMngRepository.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/CrossChainAssetRegMngRepository.java new file mode 100644 index 0000000000..71d8d887d0 --- /dev/null +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/CrossChainAssetRegMngRepository.java @@ -0,0 +1,54 @@ +/*- + * ⁣⁣ + * MIT License + * ⁣⁣ + * Copyright (C) 2017 - 2018 nuls.io + * ⁣⁣ + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * ⁣⁣ + */ +package io.nuls.ledger.storage; + +import io.nuls.ledger.model.po.LedgerAsset; + +import java.util.List; + +/** + * 跨链资产登记 + * + * @author: PierreLuo + * @date: 2020-05-11 + */ +public interface CrossChainAssetRegMngRepository { + + void saveCrossChainAsset(int chainId, LedgerAsset ledgerAsset) throws Exception; + + void saveCrossChainAssetList(int chainId, List ledgerAssetList) throws Exception; + + void deleteCrossChainAsset(int chainId, int assetChainId, int assetId) throws Exception; + + void deleteCrossChainAssetList(int chainId, List assetKeyList) throws Exception; + + void batchOperationCrossChainAssetList(int chainId, List saveAssetList, List deleteAssetKeyList) throws Exception; + + LedgerAsset getCrossChainAsset(int chainId, int assetChainId, int assetId) throws Exception; + + List getAllCrossChainAssets(int chainId) throws Exception; + +} diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/DataBaseArea.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/DataBaseArea.java index 4a591669fe..becf43219a 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/DataBaseArea.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/DataBaseArea.java @@ -82,4 +82,9 @@ public interface DataBaseArea { String TB_LEDGER_ASSET_REG_MNG = "ledger_asset_reg_mng"; String TB_LEDGER_ASSET_REG_HASH_INDEX = "ledger_asset_reg_hash_index"; String TB_LEDGER_ASSET_REG_CONTRACT_INDEX = "ledger_asset_reg_contract_index"; + + /** + * 跨链资产登记表 + */ + String TB_LEDGER_CROSS_CHAIN_ASSET = "ledger_cross_chain_asset"; } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/impl/CrossChainAssetRegMngRepositoryImpl.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/impl/CrossChainAssetRegMngRepositoryImpl.java new file mode 100644 index 0000000000..6a2624fdac --- /dev/null +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/storage/impl/CrossChainAssetRegMngRepositoryImpl.java @@ -0,0 +1,141 @@ +/*- + * ⁣⁣ + * MIT License + * ⁣⁣ + * Copyright (C) 2017 - 2018 nuls.io + * ⁣⁣ + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * ⁣⁣ + */ +package io.nuls.ledger.storage.impl; + +import io.nuls.core.core.annotation.Component; +import io.nuls.core.model.ByteUtils; +import io.nuls.core.rockdb.service.BatchOperation; +import io.nuls.core.rockdb.service.RocksDBService; +import io.nuls.ledger.constant.LedgerConstant; +import io.nuls.ledger.model.po.LedgerAsset; +import io.nuls.ledger.storage.CrossChainAssetRegMngRepository; +import io.nuls.ledger.storage.DataBaseArea; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author: PierreLuo + * @date: 2020-05-11 + */ +@Component +public class CrossChainAssetRegMngRepositoryImpl implements CrossChainAssetRegMngRepository { + + String tableNamePrefix = DataBaseArea.TB_LEDGER_CROSS_CHAIN_ASSET + LedgerConstant.DOWN_LINE; + + String getTableName(int chainId) throws Exception { + String tableName = tableNamePrefix + chainId; + if (!RocksDBService.existTable(tableName)) { + RocksDBService.createTable(tableName); + } + return tableName; + } + + byte[] genAssetKey(int assetChainId, int assetId) { + return ByteUtils.toBytes(assetChainId + LedgerConstant.DOWN_LINE + assetId, StandardCharsets.UTF_8.toString()); + } + + @Override + public void saveCrossChainAsset(int chainId, LedgerAsset ledgerAsset) throws Exception { + String assetRegTable = getTableName(chainId); + RocksDBService.put(assetRegTable, genAssetKey(ledgerAsset.getChainId(), ledgerAsset.getAssetId()), ledgerAsset.serialize()); + } + + @Override + public void saveCrossChainAssetList(int chainId, List ledgerAssetList) throws Exception { + String assetRegTable = getTableName(chainId); + Map valuesMap = new HashMap<>(); + for(LedgerAsset asset : ledgerAssetList) { + valuesMap.put(genAssetKey(asset.getChainId(), asset.getAssetId()), asset.serialize()); + } + RocksDBService.batchPut(assetRegTable, valuesMap); + } + + @Override + public void deleteCrossChainAsset(int chainId, int assetChainId, int assetId) throws Exception { + String assetRegTable = getTableName(chainId); + RocksDBService.delete(assetRegTable, genAssetKey(assetChainId, assetId)); + } + + @Override + public void deleteCrossChainAssetList(int chainId, List assetKeyList) throws Exception { + String assetRegTable = getTableName(chainId); + List keyList = new ArrayList<>(); + for(String assetKey : assetKeyList) { + keyList.add(ByteUtils.toBytes(assetKey, StandardCharsets.UTF_8.toString())); + } + RocksDBService.deleteKeys(assetRegTable, keyList); + } + + @Override + public void batchOperationCrossChainAssetList(int chainId, List saveAssetList, List deleteAssetKeyList) throws Exception { + String assetRegTable = getTableName(chainId); + BatchOperation batch = RocksDBService.createWriteBatch(assetRegTable); + if(saveAssetList != null && !saveAssetList.isEmpty()) { + for(LedgerAsset asset : saveAssetList) { + batch.put(genAssetKey(asset.getChainId(), asset.getAssetId()), asset.serialize()); + } + } + if(deleteAssetKeyList != null && !deleteAssetKeyList.isEmpty()) { + for(String assetKey : deleteAssetKeyList) { + batch.delete(ByteUtils.toBytes(assetKey, StandardCharsets.UTF_8.toString())); + } + } + batch.executeBatch(); + } + + @Override + public LedgerAsset getCrossChainAsset(int chainId, int assetChainId, int assetId) throws Exception { + String assetRegTable = getTableName(chainId); + byte[] assetByte = RocksDBService.get(assetRegTable, genAssetKey(assetChainId, assetId)); + if (null != assetRegTable) { + LedgerAsset ledgerAsset = new LedgerAsset(); + ledgerAsset.parse(assetByte, 0); + return ledgerAsset; + } + return null; + } + + @Override + public List getAllCrossChainAssets(int chainId) throws Exception { + String assetRegTable = getTableName(chainId); + List list = RocksDBService.valueList(assetRegTable); + List rtList = new ArrayList<>(); + if (null != list) { + for (byte[] assetByte : list) { + LedgerAsset ledgerAsset = new LedgerAsset(); + ledgerAsset.parse(assetByte, 0); + rtList.add(ledgerAsset); + } + } + return rtList; + } + + +} From 031a228b916991d9a2549d2099dfedef858dba51 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Fri, 20 Nov 2020 16:06:12 +0800 Subject: [PATCH 168/304] v2.7.3 --- module.ncf | 87 ++++++++++--------- .../io/nuls/account/util/AddressToolTest.java | 32 +++++-- .../thread/process/ConsensusProcess.java | 1 + .../service/impl/TxServiceImpl.java | 2 +- 4 files changed, 73 insertions(+), 49 deletions(-) diff --git a/module.ncf b/module.ncf index 6b47581744..e6e89fdc5e 100644 --- a/module.ncf +++ b/module.ncf @@ -1,23 +1,23 @@ [global] encoding=UTF-8 language=en -logPath=E:/work/src/nuls-v2/Logs +logPath=../../../../Logs logLevel=INFO -dataPath=E:/work/src/nuls-v2/data +dataPath=../../../../data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 @@ -25,22 +25,22 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -50,7 +50,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -63,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,26 +78,33 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -110,45 +117,45 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] +dataPath=../../../../../data +logPath=../../../../../Logs #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip -serverIp=0.0.0.0 +serverIp=127.0.0.1 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.5.0 + diff --git a/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java b/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java index 4cd1c3e07c..da36d03202 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java +++ b/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java @@ -2,12 +2,15 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.Address; +import io.nuls.base.data.Block; +import io.nuls.base.data.Transaction; import io.nuls.core.constant.BaseConstant; import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.model.DoubleUtils; import io.nuls.core.parse.SerializeUtils; +import io.nuls.sdk.core.model.CallContractData; import org.junit.Test; import static junit.framework.TestCase.assertEquals; @@ -19,10 +22,23 @@ public class AddressToolTest { @Test - public void test7y(){ - String address = "NULSd6Hgam8YajetEDnCoJBdEFkMNP41PfH7y"; - System.out.println(AddressTool.validAddress(1,address)); + public void test7y() throws NulsException, io.nuls.sdk.core.exception.NulsException { +// String address = "NULSd6Hgam8YajetEDnCoJBdEFkMNP41PfH7y"; +// System.out.println(AddressTool.validAddress(1,address)); + Block block = new Block(); + block.parse(HexUtil.decode("a829c86c37a448cc1af7aeb1fec3b8a8c22bec7b6cc337cf2bcde4392f879465eabb575d75a7bbca1b4349a08b1edd8ab95842ca3a2b9428965ebc16485fd8d50492b45fd2da3800070000005c178f00005f00768eb45f5b0007000700500a0020adcce866f2cc3ebfab4e9d777c2902b4338cdc32c4de575e9f0307c781e9d7583e223721c6373a13df8e5289934b70c7f008f4ec09ae6223b58fae21c17e56449f6168a5210b41bd21031771427c2a5e80d84b1dfc86fde6b48a7e91655849a9fef34082bd58afa71a4a46304402206cf00001c8def91af2a30a9a02b91e685e22360112e88ced637a7553d7d13d7d0220335c860e4e18bf99eeab50121abf6b1f59099339126d1e7b58cd0459b4bf0d8b01000492b45f00008a000217010001fedf6a65d337e344872e8cdf455d39537e78e539010001004f202804000000000000000000000000000000000000000000000000000000000000000000000000170100018efa2de9522ce624e53d635993e042f3c5f90c7001000100f578ec00000000000000000000000000000000000000000000000000000000000000000000000000001000f691b45f009c0100011d52afe277b0c575355e618a194ffa1ae1cb518f010002be36277487d7c45974d1fcc722d6729f47cddd8900000000000000000000000000000000000000000000000000000000000000001b540000000000001900000000000000087472616e73666572000201254e554c5364364867554763523351626f76593155467561753532374532464e354c70434e54010a333030303030303030304801170100011d52afe277b0c575355e618a194ffa1ae1cb518f0100010043bd090000000000000000000000000000000000000000000000000000000000082665ce6eda74395500006a2103a1f65c80936606df6185fe9bd808d7dd5201e1e88f2a475f6b2a70d81f7f52e4473045022100f79379974afcd3a06289076f9ef62c635636b0ce1ce00174e5bb0f869ad1406e022014680dc8750e614ce61da83260ba3aca2513b560cb0b82680d31251608e56afd1000f591b45f009c01000191053835d0242f800d2d8786c2e9813cde1ae020010002be36277487d7c45974d1fcc722d6729f47cddd890000000000000000000000000000000000000000000000000000000000000000a0860100000000001900000000000000087472616e73666572000201254e554c536436486767644353705475464b524761623874395163434e455245623631796766010a3136383030363535303748011701000191053835d0242f800d2d8786c2e9813cde1ae0200100010040ac27000000000000000000000000000000000000000000000000000000000008c4577cb35a4a07d200006a21036358a3e9ab6da104d177b029e19ff305608d1457e87afdcb7cd6823fc3e923994730450221008e1eba0e0216c03178d7b3ef25caff1465f13a0a39866f531edc8e99abaaa6460220142c8e71e7ca2178ce14bea4caeaadefb754279985efe077f8e4483c2ba615710200f791b45f00008c01170100016f60abe6550578d554d1b2539d5464160df4ceb201000100a067f70500000000000000000000000000000000000000000000000000000000088216c34144b051fc0001170100010efee4de7eba9220847645799b0cc18c1c9554980100010000e1f505000000000000000000000000000000000000000000000000000000000000000000000000692102f5a7c4151ed8bbe3af47a55e40b464504a1e77a0fe8cfe92a2757058c08bc49b463044022052ce140fd312b3e1b40e4eaa48a23690fc0f889fb147582c999d2a56a1808ba702200abd4ba4109cad251e4b9088b3795d658c062dfca56baab2eccd5a491ce82aa91000fa91b45f0094010001d1e60e0b3fb774e325165043aae8b2b3335d60b80100029dcaeebcca8c5ec7e6d1ca7727f530e89e4cd4120000000000000000000000000000000000000000000000000000000000000000bcd001000000000019000000000000000b636c61696d4561726e65641d28537472696e6720636176654e616d65292072657475726e20766f6964010109426c61636b49726f6e480117010001d1e60e0b3fb774e325165043aae8b2b3335d60b801000100fce82e0000000000000000000000000000000000000000000000000000000000082ba5a208dd1a0bb300006921033852484d44ec6a7d0fa740a9aad6dfa399b59ccf26a035fb7ca9c630019186ca4630440220421aa258be60c590688871a447dc3415036bc74591d78532c07e8d059051f19502203ca83d52d5d00fd4a0967caf76110a00aadf2817deff89ab71d9a7466b3949dc1000fa91b45f00ce0100015470f6c2c3d3850d5fe3ded46e5c658e9fb6393e010002be36277487d7c45974d1fcc722d6729f47cddd890000000000000000000000000000000000000000000000000000000000000000a839000000000000190000000000000007617070726f7665322841646472657373207370656e6465722c20426967496e74656765722076616c7565292072657475726e20626f6f6c65616e0201254e554c53643648677878584a34767a66336a58387365546d444e6e384242626e6354554850010b32343030303030303030304801170100015470f6c2c3d3850d5fe3ded46e5c658e9fb6393e0100010008280700000000000000000000000000000000000000000000000000000000000879acd1b1f9062e8700006a2102b5e3913df715832ebe207b63e30333355aa285b4183e035b84fa767f67edf6224730450221008ead5406624ce7715feb0a3da547081166dc491b14cd32259d28b4137abb0ca5022045d3393df0832a5588039aac2d4fc30ec34e4dcd281935db9fbeba20892c3c2b13000492b45f0000fd12010004170100011d52afe277b0c575355e618a194ffa1ae1cb518f01000100e1bc02000000000000000000000000000000000000000000000000000000000000000000000000001701000191053835d0242f800d2d8786c2e9813cde1ae0200100010002de1f0000000000000000000000000000000000000000000000000000000000000000000000000017010001d1e60e0b3fb774e325165043aae8b2b3335d60b801000100b5220f00000000000000000000000000000000000000000000000000000000000000000000000000170100015470f6c2c3d3850d5fe3ded46e5c658e9fb6393e0100010078e0010000000000000000000000000000000000000000000000000000000000000000000000000000"), 0); + for (Transaction tx : block.getTxs()) { + if(tx.getHash().toHex().equals("7f4a3125bd232a1be8bed8b6ca7567aa69ca5f4fdb67048287bffcfca74efd82")){ + System.out.println(HexUtil.encode(tx.getTxData())); + CallContractData data = new CallContractData(); + data.parse(tx.getTxData(),0); + System.out.println(data); + + + } + } } + @Test public void createAccountByPrefix() { AddressTool.addPrefix(4, "LJS"); @@ -36,12 +52,12 @@ public void createAccountByPrefix() { @Test public void creaateMainNetAccount() { System.out.println("=======================main net======================="); - while (true){ + while (true) { ECKey key = new ECKey(); Address address = new Address(1, (byte) 1, SerializeUtils.sha256hash160(key.getPubKey())); String value = address.getBase58(); - if(value.toUpperCase().endsWith("55")) - System.out.println(value + "===========" + key.getPrivateKeyAsHex()); + if (value.toUpperCase().endsWith("55")) + System.out.println(value + "===========" + key.getPrivateKeyAsHex()); } } @@ -63,7 +79,7 @@ public void calc() { long monthReward = 41095890410959L; while (init < total) { monthReward = (long) DoubleUtils.mul(monthReward, rate); - if(0==monthReward){ + if (0 == monthReward) { break; } init = init + monthReward; @@ -71,7 +87,7 @@ public void calc() { } System.out.println(init); System.out.println(month); - System.out.println(month/12); + System.out.println(month / 12); } @Test diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/thread/process/ConsensusProcess.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/thread/process/ConsensusProcess.java index aff06eeeb1..e4f54b51d6 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/thread/process/ConsensusProcess.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/thread/process/ConsensusProcess.java @@ -314,6 +314,7 @@ private Block doPacking(Chain chain, MeetingMember self, MeetingRound round) thr if (!(bd.getPreHash().equals(bestBlock.getHash()) && realPackageHeight > packageHeight)) { bd.setHeight(realPackageHeight); bd.setPreHash(bestBlock.getHash()); + bestBlock = chain.getNewestHeader(); } BlockExtendsData bestExtendsData = bestBlock.getExtendsData(); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index a3f67e3d7c..7e15779449 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -983,7 +983,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi nulsLogger.error(e); //可打包交易,孤儿交易,全加回去 putBackPackablePool(chain, packingTxList, orphanTxSet); - return new TxPackage(new ArrayList<>(), preStateRoot, chain.getBestBlockHeight() + 1); + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); } finally { chain.getPackageLock().unlock(); } From 520ffb419a46be490185027ba3c9badaec2f8480 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 20 Nov 2020 16:08:19 +0800 Subject: [PATCH 169/304] update multi-asset in contract --- .../validator/CallContractTxValidator.java | 2 + .../main/java/io/nuls/contract/vm/Heap.java | 19 ++++ .../src/main/java/io/nuls/contract/vm/VM.java | 13 ++- .../java/io/nuls/contract/vm/VMFactory.java | 13 ++- .../nuls/contract/vm/code/VariableType.java | 2 + .../io/nuls/contract/sdk/NativeMsg.java | 46 +------- .../nuls/contract/vm/program/ProgramCall.java | 19 +++- .../vm/program/ProgramMultyAssetValue.java | 103 ++++++++++++++++++ .../vm/program/impl/ProgramContext.java | 29 ++--- .../vm/program/impl/ProgramExecutorImpl.java | 35 +++--- .../vm/program/impl/ProgramInvoke.java | 30 ++--- 11 files changed, 199 insertions(+), 112 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMultyAssetValue.java diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 087d30380c..1808899679 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -163,6 +163,7 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc Log.error("contract call error: The contract caller is not the transaction signer."); return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); } + //TODO pierre 1->25 if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { Log.error("contract call error: The value of gas limit ranges from 1 to 10,000,000."); return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); @@ -223,6 +224,7 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc } if (transferValue.compareTo(BigInteger.ZERO) > 0) { + //TODO pierre 手续费账户也能支出,向合约转资产 if (!existSender) { Log.error("contract call error: The contract caller is not the transaction creator."); return Result.getFailed(CONTRACT_CALLER_ERROR); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 477a0f6661..6f498cbcee 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -32,6 +32,7 @@ import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.code.VariableType; import io.nuls.contract.vm.natives.io.nuls.contract.sdk.NativeAddress; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.contract.vm.util.CloneUtils; import io.nuls.contract.vm.util.Constants; import io.nuls.contract.vm.util.JsonUtils; @@ -466,6 +467,24 @@ public ObjectRef stringArrayToObjectRef(String[] resultArray) { return objectRef; } + public ObjectRef multyAssetValueArrayToObjectRef(List multyAssetValueArray) { + ObjectRef objectRef = newArray(VariableType.MULTY_ASSET_VALUE_ARRAY_TYPE, multyAssetValueArray.size()); + int i = 0; + for(ProgramMultyAssetValue value : multyAssetValueArray) { + putArray(objectRef, i++, newMultyAssetValue(value)); + } + return objectRef; + } + + private ObjectRef newMultyAssetValue(ProgramMultyAssetValue value) { + // MULTY_ASSET_VALUE_TYPE + ObjectRef objectRef = newObject(VariableType.MULTY_ASSET_VALUE_TYPE); + putField(objectRef, "value", newBigInteger(value.getValue().toString())); + putField(objectRef, "assetChainId", value.getAssetChainId()); + putField(objectRef, "assetId", value.getAssetId()); + return objectRef; + } + public ObjectRef stringTwoDimensionalArrayToObjectRef(String[][] resultArray) { ObjectRef objectRef = newArray(VariableType.STRING_TWO_DIMENSIONAL_ARRAY_TYPE, resultArray.length, 0); int i = 0; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 8b223fa819..0ffc7f1cfb 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -47,10 +47,7 @@ import io.nuls.contract.vm.instructions.stack.Swap; import io.nuls.contract.vm.instructions.stores.*; import io.nuls.contract.vm.natives.io.nuls.contract.sdk.NativeAddress; -import io.nuls.contract.vm.program.ProgramInternalCall; -import io.nuls.contract.vm.program.ProgramInvokeRegisterCmd; -import io.nuls.contract.vm.program.ProgramMethodArg; -import io.nuls.contract.vm.program.ProgramTransfer; +import io.nuls.contract.vm.program.*; import io.nuls.contract.vm.program.impl.ProgramContext; import io.nuls.contract.vm.program.impl.ProgramExecutorImpl; import io.nuls.contract.vm.program.impl.ProgramInvoke; @@ -197,8 +194,12 @@ public void initProgramContext(ProgramInvoke programInvoke) { programContext.setGasPrice(programInvoke.getPrice()); programContext.setGas(programInvoke.getGasLimit()); programContext.setValue(this.heap.newBigInteger(programInvoke.getValue().toString())); - programContext.setAssetChainId(programInvoke.getAssetChainId()); - programContext.setAssetId(programInvoke.getAssetId()); + // 转化多资产列表 + List multyAssetValues = programInvoke.getMultyAssetValues(); + if (multyAssetValues != null && !multyAssetValues.isEmpty()) { + programContext.setMultyAssetValues(this.heap.multyAssetValueArrayToObjectRef(multyAssetValues)); + } + programContext.setNumber(programInvoke.getNumber()); programContext.setEstimateGas(programInvoke.isEstimateGas()); if(programInvoke.getSenderPublicKey() != null) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index 9f531b7780..012d9052e4 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -28,7 +28,9 @@ import io.nuls.contract.vm.code.ClassCodeLoader; import org.checkerframework.checker.units.qual.C; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -336,10 +338,13 @@ private static VM loadVM_v8() { classCodes.put(classCode.name, classCode); } // v8 add - String className = "io/nuls/contract/sdk/annotation/PayableMultyAsset"; - ClassCode classCode = ClassCodeLoader.loadFromResource_v8(className); - classCodes.put(classCode.name, classCode); - + List list = new ArrayList<>(); + list.add("io/nuls/contract/sdk/annotation/PayableMultyAsset"); + list.add("io/nuls/contract/sdk/MultyAssetValue"); + for (String className : list) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v8(className); + classCodes.put(classCode.name, classCode); + } vm.methodArea.loadClassCodes(classCodes); return vm; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java index 1e4e1ebfdf..1731cb716e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java @@ -116,6 +116,8 @@ public List load(String desc) { public static final VariableType ABSTRACT_COLLECTION_TYPE = valueOf("Ljava/util/AbstractCollection;"); public static final VariableType HASH_MAP_TYPE = valueOf("Ljava/util/HashMap;"); public static final VariableType HASH_MAP_NODE_TYPE = valueOf("Ljava/util/HashMap$Node;"); + public static final VariableType MULTY_ASSET_VALUE_TYPE = valueOf("Lio/nuls/contract/sdk/MultyAssetValue;"); + public static final VariableType MULTY_ASSET_VALUE_ARRAY_TYPE = valueOf("[Lio/nuls/contract/sdk/MultyAssetValue;"); public static final VariableType[] WRAPPER_TYPE = new VariableType[]{ INT_WRAPPER_TYPE, diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java index bfc42307f9..d911edfc7a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java @@ -67,23 +67,11 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra } else { return value(methodCode, methodArgs, frame); } - case isMainAssetValue: + case multyAssetValues: if (check) { return SUPPORT_NATIVE; } else { - return isMainAssetValue(methodCode, methodArgs, frame); - } - case assetChainId: - if (check) { - return SUPPORT_NATIVE; - } else { - return assetChainId(methodCode, methodArgs, frame); - } - case assetId: - if (check) { - return SUPPORT_NATIVE; - } else { - return assetId(methodCode, methodArgs, frame); + return multyAssetValues(methodCode, methodArgs, frame); } case gasprice: if (check) { @@ -155,34 +143,10 @@ private static Result value(MethodCode methodCode, MethodArgs methodArgs, Frame return result; } - public static final String isMainAssetValue = TYPE + "." + "isMainAssetValue" + "()Z"; - - private static Result isMainAssetValue(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - boolean mainAsset = frame.vm.getProgramContext().getAssetChainId() == CHAIN_ID && frame.vm.getProgramContext().getAssetId() == ASSET_ID; - Result result = NativeMethod.result(methodCode, mainAsset, frame); - return result; - } - - public static final String assetChainId = TYPE + "." + "assetChainId" + "()I"; - public static final String assetId = TYPE + "." + "assetId" + "()I"; + public static final String multyAssetValues = TYPE + "." + "multyAssetValues" + "()[Lio/nuls/contract/sdk/MultyAssetValue;"; - /** - * native - * - * @see Msg#assetChainId() - */ - private static Result assetChainId(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getAssetChainId(), frame); - return result; - } - - /** - * native - * - * @see Msg#assetId() - */ - private static Result assetId(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getAssetId(), frame); + private static Result multyAssetValues(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getMultyAssetValues(), frame); return result; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java index d78e8eba10..b91df23f89 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java @@ -30,6 +30,7 @@ import java.math.BigInteger; import java.util.Arrays; +import java.util.List; import static io.nuls.contract.util.ContractUtil.argToString; @@ -47,9 +48,13 @@ public class ProgramCall { private byte[] senderPublicKey; /** - * 交易附带的货币量 + * 交易向合约转入的NULS的金额 */ private BigInteger value; + /** + * 交易向合约转入的其他资产的金额 + */ + private List multyAssetValues; /** * 转入资产的链ID @@ -246,6 +251,14 @@ public void setInternalCall(boolean internalCall) { this.internalCall = internalCall; } + public List getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(List multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -264,6 +277,7 @@ public boolean equals(Object o) { if (!Arrays.equals(sender, that.sender)) return false; if (!Arrays.equals(senderPublicKey, that.senderPublicKey)) return false; if (value != null ? !value.equals(that.value) : that.value != null) return false; + if (multyAssetValues != null ? !Arrays.deepEquals(multyAssetValues.toArray(), that.multyAssetValues != null ? that.multyAssetValues.toArray() : null) : that.multyAssetValues != null) return false; if (!Arrays.equals(contractAddress, that.contractAddress)) return false; if (methodName != null ? !methodName.equals(that.methodName) : that.methodName != null) return false; if (methodDesc != null ? !methodDesc.equals(that.methodDesc) : that.methodDesc != null) return false; @@ -285,6 +299,7 @@ public int hashCode() { result = 31 * result + Arrays.hashCode(contractAddress); result = 31 * result + (methodName != null ? methodName.hashCode() : 0); result = 31 * result + (methodDesc != null ? methodDesc.hashCode() : 0); + result = 31 * result + (multyAssetValues != null ? Arrays.deepHashCode(multyAssetValues.toArray()) : 0); result = 31 * result + Arrays.deepHashCode(args); result = 31 * result + (estimateGas ? 1 : 0); result = 31 * result + (viewMethod ? 1 : 0); @@ -303,6 +318,8 @@ public String toString() { .append(HexUtil.encode(senderPublicKey)); sb.append(",\"value\":") .append(value); + sb.append(",\"value\":") + .append(multyAssetValues != null ? Arrays.deepToString(multyAssetValues.toArray()) : "null"); sb.append(",\"assetChainId\":") .append(assetChainId); sb.append(",\"assetId\":") diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMultyAssetValue.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMultyAssetValue.java new file mode 100644 index 0000000000..9493d8f774 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMultyAssetValue.java @@ -0,0 +1,103 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.contract.vm.program; + +import java.math.BigInteger; + +public class ProgramMultyAssetValue { + + private BigInteger value; + + private int assetChainId; + + private int assetId; + + public ProgramMultyAssetValue() {} + + public ProgramMultyAssetValue(BigInteger value, int assetChainId, int assetId) { + this.value = value; + this.assetChainId = assetChainId; + this.assetId = assetId; + } + + public BigInteger getValue() { + return value; + } + + public void setValue(BigInteger value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ProgramMultyAssetValue that = (ProgramMultyAssetValue) o; + + if (assetChainId != that.assetChainId) return false; + if (assetId != that.assetId) return false; + if (!value.equals(that.value)) return false; + + return true; + } + + @Override + public int hashCode() { + int result = value.hashCode(); + result = 31 * result + assetChainId; + result = 31 * result + assetId; + return result; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"value\":") + .append(value); + sb.append(",\"assetChainId\":") + .append(assetChainId); + sb.append(",\"assetId\":") + .append(assetId); + sb.append('}'); + return sb.toString(); + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java index 7ac7756b53..22df0e6600 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramContext.java @@ -42,12 +42,10 @@ public class ProgramContext { //private long gasLimit; - private int assetChainId; - - private int assetId; - private ObjectRef value; + private ObjectRef multyAssetValues; + private long number; //private long difficulty; @@ -96,22 +94,6 @@ public void setGas(long gas) { this.gas = gas; } - public int getAssetChainId() { - return assetChainId; - } - - public void setAssetChainId(int assetChainId) { - this.assetChainId = assetChainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - public ObjectRef getValue() { return value; } @@ -136,4 +118,11 @@ public void setEstimateGas(boolean estimateGas) { this.estimateGas = estimateGas; } + public ObjectRef getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(ObjectRef multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index f750f06421..cf1b2f3c96 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -248,8 +248,7 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setPrice(programCall.getPrice()); programInvoke.setGasLimit(programCall.getGasLimit()); programInvoke.setValue(programCall.getValue() != null ? programCall.getValue() : BigInteger.ZERO); - programInvoke.setAssetChainId(programCall.getAssetChainId()); - programInvoke.setAssetId(programCall.getAssetId()); + programInvoke.setMultyAssetValues(programCall.getMultyAssetValues()); programInvoke.setNumber(programCall.getNumber()); programInvoke.setMethodName(programCall.getMethodName()); programInvoke.setMethodDesc(programCall.getMethodDesc()); @@ -401,24 +400,14 @@ private ProgramResult execute(ProgramInvoke programInvoke) { if (!methodCode.isPublic) { return revert("can only invoke public method"); } - int assetChainId = programInvoke.getAssetChainId(); - int assetId = programInvoke.getAssetId(); if (transferValue.compareTo(BigInteger.ZERO) > 0) { - if (assetChainId == 0 && assetId == 0) { - assetChainId = CHAIN_ID; - assetId = ASSET_ID; - programInvoke.setAssetChainId(assetChainId); - programInvoke.setAssetId(assetId); - } - boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; - if (mainAsset) { - if (!methodCode.hasPayableAnnotation()) - return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); - } else { - if (!methodCode.hasPayableMultyAssetAnnotation()) - return revert(String.format("contract[%s]'s method[%s] is not a payableMultyAsset method", contractAddress, methodCode.name)); - } - + if (!methodCode.hasPayableAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); + } + List multyAssetValues = programInvoke.getMultyAssetValues(); + if (multyAssetValues != null && !multyAssetValues.isEmpty()) { + if (!methodCode.hasPayableMultyAssetAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payableMultyAsset method", contractAddress, methodCode.name)); } // 不允许非系统调用此方法 boolean isBalanceTriggerForConsensusContractMethod = BALANCE_TRIGGER_METHOD_NAME.equals(methodName) && @@ -468,7 +457,13 @@ private ProgramResult execute(ProgramInvoke programInvoke) { if (transferValue.compareTo(BigInteger.ZERO) > 0) { // 合约相应资产余额变化 - getAccount(contractAddressBytes, assetChainId, assetId).addBalance(transferValue); + getAccount(contractAddressBytes, CHAIN_ID, ASSET_ID).addBalance(transferValue); + } + if (multyAssetValues != null && !multyAssetValues.isEmpty()) { + for (ProgramMultyAssetValue assetValue : multyAssetValues) { + // 合约相应资产余额变化 + getAccount(contractAddressBytes, assetValue.getAssetChainId(), assetValue.getAssetId()).addBalance(assetValue.getValue()); + } } vm.setRepository(repository); vm.setGas(programInvoke.getGasLimit()); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java index ce7e51dad7..8c18ea45ef 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java @@ -24,7 +24,10 @@ */ package io.nuls.contract.vm.program.impl; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; + import java.math.BigInteger; +import java.util.List; public class ProgramInvoke { @@ -53,19 +56,14 @@ public class ProgramInvoke { private long gasLimit; /** - * 交易附带的货币量 + * 交易向合约转入的NULS金额 */ private BigInteger value; /** - * 转入资产的链ID - */ - private int assetChainId; - - /** - * 转入资产ID + * 交易向合约转入的其他资产的金额 */ - private int assetId; + private List multyAssetValues; /** * 当前块编号 @@ -159,20 +157,12 @@ public void setValue(BigInteger value) { this.value = value; } - public int getAssetChainId() { - return assetChainId; - } - - public void setAssetChainId(int assetChainId) { - this.assetChainId = assetChainId; - } - - public int getAssetId() { - return assetId; + public List getMultyAssetValues() { + return multyAssetValues; } - public void setAssetId(int assetId) { - this.assetId = assetId; + public void setMultyAssetValues(List multyAssetValues) { + this.multyAssetValues = multyAssetValues; } public long getNumber() { From d06e606c9b4294e348c4fcf0066de88b5915f0f5 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Fri, 20 Nov 2020 16:10:40 +0800 Subject: [PATCH 170/304] v2.7.3 --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 7e15779449..070e0fbd50 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -684,7 +684,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi //放回可打包交易和孤儿 putBackPackablePool(chain, packingTxList, orphanTxSet); //直接打空块 - return new TxPackage(new ArrayList<>(), preStateRoot, chain.getBestBlockHeight() + 1); + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); } //如果本地最新区块+1 大于当前在打包区块的高度, 说明本地最新区块已更新,需要重新打包,把取出的交易放回到打包队列 if (blockHeight < chain.getBestBlockHeight() + 1) { From 2fb19c1a956329937210e23bc6ebdaba5cdc8f5b Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Fri, 20 Nov 2020 16:17:10 +0800 Subject: [PATCH 171/304] update package --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 070e0fbd50..ff30b7e52a 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -604,7 +604,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi long batchValidReserve = TxConstant.PACKAGE_MODULE_VALIDATOR_RESERVE_TIME; if (packableTime <= batchValidReserve) { //直接打空块 - return new TxPackage(new ArrayList<>(), preStateRoot, chain.getBestBlockHeight() + 1); + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); } //重置标志 chain.setContractTxFail(false); @@ -955,7 +955,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi baseValidateTx(chain, tx, txRegister); chain.getUnverifiedQueue().addLast(new TransactionNetPO(txPackageWrapper.getTx())); } - return new TxPackage(new ArrayList<>(), preStateRoot, chain.getBestBlockHeight() + 1); + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); } //检测预留传输时间 long current = NulsDateUtils.getCurrentTimeMillis(); From 475d10a131af8c82a79108f0ce1905f4efac0031 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 20 Nov 2020 16:21:14 +0800 Subject: [PATCH 172/304] single thread in contract --- .../io/nuls/contract/callable/ContractTxCallable.java | 10 +++++++--- .../nuls/contract/service/impl/ContractCallerImpl.java | 10 +++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java index 88d67a8eaa..171c9770ae 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java @@ -194,7 +194,10 @@ private void checkCreateResult(ContractWrapperTransaction tx, CallableResult cal private void checkCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult) throws IOException { - List reCallList = callableResult.getReCallList(); + // 没有冲突, 处理合约结果 + dealCallResult(tx, callableResult, contractResult, chainId, blockTime); + + /*List reCallList = callableResult.getReCallList(); boolean isConflict = checker.checkConflict(chainId, tx, contractResult, container.getCommitSet()); if (isConflict) { // 冲突后,添加到重新执行的集合中,但是gas消耗完的不再重复执行 @@ -208,13 +211,14 @@ private void checkCallResult(ContractWrapperTransaction tx, CallableResult calla } else { // 没有冲突, 处理合约结果 dealCallResult(tx, callableResult, contractResult, chainId, blockTime); - } + }*/ } private void dealCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult, int chainId, long blockTime) throws IOException { if (contractResult.isSuccess()) { // 执行成功,检查与执行失败的交易是否有冲突,把执行失败的交易添加到重新执行的集合中 - checkConflictWithFailedMap(callableResult, contractResult); + //checkConflictWithFailedMap(callableResult, contractResult); + // 本合约与成功执行的其他合约没有冲突,处理业务逻辑,提交本合约 // 处理合约生成的其他交易、临时余额、合约内部转账 contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index 51485d6641..88dfe5909e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -60,12 +60,12 @@ public class ContractCallerImpl implements ContractCaller { private static ExecutorService TX_EXECUTOR_SERVICE; static { - int availableProcessors = Runtime.getRuntime().availableProcessors(); - int threadCount = 4; + int threadCount = 1; + //int availableProcessors = Runtime.getRuntime().availableProcessors(); // 线程数最大4个,线程核心小于4时,使用线程核心数 - if(availableProcessors < threadCount) { - threadCount = availableProcessors; - } + //if(availableProcessors < threadCount) { + // threadCount = availableProcessors; + //} TX_EXECUTOR_SERVICE = new ThreadPoolExecutor( threadCount, From d84588e042bfedcf09b8e03d3e3dbadf16c809ca Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 20 Nov 2020 16:39:40 +0800 Subject: [PATCH 173/304] revert --- .../io/nuls/contract/callable/ContractTxCallable.java | 10 +++------- .../nuls/contract/service/impl/ContractCallerImpl.java | 10 +++++----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java index 171c9770ae..88d67a8eaa 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java @@ -194,10 +194,7 @@ private void checkCreateResult(ContractWrapperTransaction tx, CallableResult cal private void checkCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult) throws IOException { - // 没有冲突, 处理合约结果 - dealCallResult(tx, callableResult, contractResult, chainId, blockTime); - - /*List reCallList = callableResult.getReCallList(); + List reCallList = callableResult.getReCallList(); boolean isConflict = checker.checkConflict(chainId, tx, contractResult, container.getCommitSet()); if (isConflict) { // 冲突后,添加到重新执行的集合中,但是gas消耗完的不再重复执行 @@ -211,14 +208,13 @@ private void checkCallResult(ContractWrapperTransaction tx, CallableResult calla } else { // 没有冲突, 处理合约结果 dealCallResult(tx, callableResult, contractResult, chainId, blockTime); - }*/ + } } private void dealCallResult(ContractWrapperTransaction tx, CallableResult callableResult, ContractResult contractResult, int chainId, long blockTime) throws IOException { if (contractResult.isSuccess()) { // 执行成功,检查与执行失败的交易是否有冲突,把执行失败的交易添加到重新执行的集合中 - //checkConflictWithFailedMap(callableResult, contractResult); - + checkConflictWithFailedMap(callableResult, contractResult); // 本合约与成功执行的其他合约没有冲突,处理业务逻辑,提交本合约 // 处理合约生成的其他交易、临时余额、合约内部转账 contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index 88dfe5909e..cb42446ece 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -60,12 +60,12 @@ public class ContractCallerImpl implements ContractCaller { private static ExecutorService TX_EXECUTOR_SERVICE; static { - int threadCount = 1; - //int availableProcessors = Runtime.getRuntime().availableProcessors(); + int threadCount = 4; // 线程数最大4个,线程核心小于4时,使用线程核心数 - //if(availableProcessors < threadCount) { - // threadCount = availableProcessors; - //} + int availableProcessors = Runtime.getRuntime().availableProcessors(); + if(availableProcessors < threadCount) { + threadCount = availableProcessors; + } TX_EXECUTOR_SERVICE = new ThreadPoolExecutor( threadCount, From 5a5a31b55e608e8cbeb5a08c721d671eeb169966 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Sat, 21 Nov 2020 19:00:56 +0800 Subject: [PATCH 174/304] update --- .../nuls/contract/helper/ContractHelper.java | 21 +++++++++------- .../model/txdata/CallContractData.java | 24 +++++++------------ .../contract/model/txdata/ContractData.java | 11 ++++----- .../service/impl/ContractExecutorImpl.java | 3 +-- .../io/nuls/contract/sdk/NativeAddress.java | 12 +++++----- 5 files changed, 32 insertions(+), 39 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index bfd180dec1..f45dcd1f8e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -60,10 +60,7 @@ import org.bouncycastle.util.Arrays; import java.math.BigInteger; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import static io.nuls.contract.config.ContractContext.ASSET_ID; @@ -712,15 +709,21 @@ public ContractResult makeFailedContractResult(int chainId, ContractWrapperTrans } public void extractAssetInfoFromCallTransaction(CallContractData contractData, Transaction tx) throws NulsException { - contractData.setAssetChainId(CHAIN_ID); - contractData.setAssetId(ASSET_ID); CoinData coinData = tx.getCoinDataInstance(); List toList = coinData.getTo(); if (toList == null || toList.isEmpty()) { return; } - CoinTo to = toList.get(0); - contractData.setAssetChainId(to.getAssetsChainId()); - contractData.setAssetId(to.getAssetsId()); + List list = null; + for (CoinTo to : toList) { + if (to.getAssetsChainId() == CHAIN_ID && to.getAssetsId() == ASSET_ID) { + continue; + } + if (list == null) { + list = new ArrayList<>(); + } + list.add(new ProgramMultyAssetValue(to.getAmount(), to.getAssetsChainId(), to.getAssetsId())); + } + contractData.setMultyAssetValues(list); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java index 543664780c..7b242bee9b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/CallContractData.java @@ -27,11 +27,13 @@ import io.nuls.base.basic.NulsOutputStreamBuffer; import io.nuls.base.data.Address; import io.nuls.base.data.BaseNulsData; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.exception.NulsException; import io.nuls.core.parse.SerializeUtils; import java.io.IOException; import java.math.BigInteger; +import java.util.List; /** * @Author: PierreLuo @@ -47,9 +49,7 @@ public class CallContractData extends BaseNulsData implements ContractData { private String methodDesc; private short argsCount; private String[][] args; - private transient int assetChainId; - private transient int assetId; - + private transient List multyAssetValues; @Override public int size() { @@ -215,21 +215,13 @@ public void setArgs(String[][] args) { this.args = args; } - @Override - public int getAssetChainId() { - return assetChainId; - } - - public void setAssetChainId(int assetChainId) { - this.assetChainId = assetChainId; - } + public void setAssetId(){} - @Override - public int getAssetId() { - return assetId; + public List getMultyAssetValues() { + return multyAssetValues; } - public void setAssetId(int assetId) { - this.assetId = assetId; + public void setMultyAssetValues(List multyAssetValues) { + this.multyAssetValues = multyAssetValues; } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java index 646bd253ef..ead5384cdf 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/txdata/ContractData.java @@ -23,7 +23,10 @@ */ package io.nuls.contract.model.txdata; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; + import java.math.BigInteger; +import java.util.List; /** * @desription: @@ -50,11 +53,7 @@ public interface ContractData { String[][] getArgs(); - default int getAssetChainId() { - return 0; - } - - default int getAssetId() { - return 0; + default List getMultyAssetValues() { + return null; } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java index d79c53d278..a2156b1289 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java @@ -112,8 +112,7 @@ public ContractResult call(ProgramExecutor executor, ContractData call, long num programCall.setContractAddress(contractAddress); programCall.setSender(sender); programCall.setValue(call.getValue()); - programCall.setAssetChainId(call.getAssetChainId()); - programCall.setAssetId(call.getAssetId()); + programCall.setMultyAssetValues(call.getMultyAssetValues()); programCall.setPrice(price); programCall.setGasLimit(call.getGasLimit()); programCall.setNumber(number); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index 54d90504cb..2d9d46502a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -282,15 +282,15 @@ private static Result callWithReturnValue(MethodCode methodCode, MethodArgs meth return call(methodCode, methodArgs, frame, true, CHAIN_ID, ASSET_ID); } - public static final String callWithReturnValueAndAssetInfo = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/String;"; + public static final String callWithReturnValueAndAssetInfo = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;[Lio/nuls/contract/sdk/MultyAssetValue;)Ljava/lang/String;"; private static Result callWithReturnValueAndAssetInfo(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - ObjectRef assetChainIdRef = (ObjectRef) methodArgs.invokeArgs[4]; - ObjectRef assetIdRef = (ObjectRef) methodArgs.invokeArgs[5]; + ObjectRef multyAssetValuesRef = (ObjectRef) methodArgs.invokeArgs[4]; + //TODO pierre 反解析multyAssetValuesRef - Integer assetChainId = frame.heap.toInteger(assetChainIdRef); - Integer assetId = frame.heap.toInteger(assetIdRef); + //Integer assetChainId = frame.heap.toInteger(assetChainIdRef); + //Integer assetId = frame.heap.toInteger(assetIdRef); - return call(methodCode, methodArgs, frame, true, assetChainId, assetId); + return call(methodCode, methodArgs, frame, true, 0, 0); } private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame, boolean returnResult, Integer assetChainId, Integer assetId) { From 25df1b4278d8296912cdac4dd37e3aca2585ade1 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Sat, 21 Nov 2020 19:05:03 +0800 Subject: [PATCH 175/304] update max count --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index ff30b7e52a..36489cfaf9 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -649,8 +649,8 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi //是否停止执行职能合约,如果位true,则取出的智能合约本次打包不再处理,需要还回待打包队列 boolean stopInvokeContract = false; - Random random = new Random(); int packageContractTxMaxCount; + /*Random random = new Random(); int availableProcessors = Runtime.getRuntime().availableProcessors(); if (availableProcessors <= 4) { packageContractTxMaxCount = 20 + random.nextInt(10); @@ -658,7 +658,8 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi packageContractTxMaxCount = 50 + random.nextInt(10); } else { packageContractTxMaxCount = 100 + random.nextInt(20); - } + }*/ + packageContractTxMaxCount = 15; for (int index = 0; ; index++) { long currentTimeMillis = NulsDateUtils.getCurrentTimeMillis(); From 4f9a5c6151d18c15616d27a4d12816aa4a1821ef Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 21 Nov 2020 20:59:35 +0800 Subject: [PATCH 176/304] =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TransactionController.java | 3 + .../crosschain/nuls/model/po/CtxSignPO.java | 93 +++++++++++++++++++ .../rpc/controller/TransactionController.java | 4 + release.sh | 6 +- 4 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index a268ef3f66..1780bb0988 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -204,6 +204,9 @@ public RpcResult broadcastTx(List params) { return RpcResult.dataNotFound(); } int type = extractTxTypeFromTx(txHex); + if(type == CROSS_CHAIN){ + return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + } Result result = new Result(); switch (type) { case CREATE_CONTRACT: diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java new file mode 100644 index 0000000000..bd3e92adf4 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java @@ -0,0 +1,93 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.nuls.crosschain.nuls.model.po; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.base.data.Transaction; +import io.nuls.core.constant.TxStatusEnum; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * 保存已确认交易的数据 + * + * @author: Charlie + * @date: 2019/3/12 + */ +public class CtxStatusPO extends BaseNulsData { + + private Transaction tx; + + private byte status = TxStatusEnum.UNCONFIRM.getStatus(); + + public CtxStatusPO() { + } + + public CtxStatusPO(Transaction tx, byte status) { + this.tx = tx; + this.status = status; + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.tx = byteBuffer.readTransaction(); + this.status = byteBuffer.readByte(); + + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeNulsData(tx); + stream.write(status); + } + + @Override + public int size() { + int size = 0; + size += SerializeUtils.sizeOfNulsData(tx); + size += 1; + return size; + } + + public Transaction getTx() { + return tx; + } + + public void setTx(Transaction tx) { + this.tx = tx; + } + + public byte getStatus() { + return status; + } + + public void setStatus(byte status) { + this.status = status; + } +} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 5c04f99181..3283622584 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -22,6 +22,7 @@ import io.nuls.base.data.Transaction; import io.nuls.core.basic.Result; import io.nuls.core.constant.CommonCodeConstanst; +import io.nuls.core.constant.ErrorCode; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Controller; @@ -307,6 +308,9 @@ public RpcResult broadcastTx(List params) { return RpcResult.dataNotFound(); } int type = this.extractTxTypeFromTx(txHex); + if(type == CROSS_CHAIN){ + return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + } Result result = Result.getSuccess(null); CallContractData call = null; String contract = null, txHash = null; diff --git a/release.sh b/release.sh index 1bea9022d6..7f9c8fb065 100755 --- a/release.sh +++ b/release.sh @@ -16,10 +16,8 @@ fi ./package -a protocol-update ./package -a nuls-api ./package -O ${OS} -o NULS_Wallet -cp config/nuls.ncf NULS_Wallet/nuls.ncf -echo "" >> NULS_WALLET/nuls.ncf -echo "[cmd-client]" >> NULS_WALLET/nuls.ncf -echo "clientVersion=`cat NULS_WALLET/version`" >> NULS_WALLET/nuls.ncf +PACKAGE_VERSION=`cat NULS_WALLET/version` +eval "sed -e 's/%PACKAGE_VERSION%/${PACKAGE_VERSION}/g' config/nuls.ncf > NULS_Wallet/nuls.ncf" cp config/genesis-block.json NULS_Wallet/genesis-block.json tar -czf NULS_Wallet_${OS}_v2.6.0.1.tar NULS_Wallet rm -rf NULS_Wallet From b4432ab6c75c5d2a83db400c17cfb9b96cc6679d Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 21 Nov 2020 21:07:28 +0800 Subject: [PATCH 177/304] =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/model/po/CtxSignPO.java | 93 ------------------- 1 file changed, 93 deletions(-) delete mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java deleted file mode 100644 index bd3e92adf4..0000000000 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.crosschain.nuls.model.po; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.Transaction; -import io.nuls.core.constant.TxStatusEnum; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; - -/** - * 保存已确认交易的数据 - * - * @author: Charlie - * @date: 2019/3/12 - */ -public class CtxStatusPO extends BaseNulsData { - - private Transaction tx; - - private byte status = TxStatusEnum.UNCONFIRM.getStatus(); - - public CtxStatusPO() { - } - - public CtxStatusPO(Transaction tx, byte status) { - this.tx = tx; - this.status = status; - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.tx = byteBuffer.readTransaction(); - this.status = byteBuffer.readByte(); - - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeNulsData(tx); - stream.write(status); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfNulsData(tx); - size += 1; - return size; - } - - public Transaction getTx() { - return tx; - } - - public void setTx(Transaction tx) { - this.tx = tx; - } - - public byte getStatus() { - return status; - } - - public void setStatus(byte status) { - this.status = status; - } -} From 77caebc4c9d68a9bdc657b8636a5745ee1a774ce Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 21 Nov 2020 21:19:41 +0800 Subject: [PATCH 178/304] =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/api/rpc/controller/TransactionController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index 3283622584..d38cd70333 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -482,6 +482,9 @@ public RpcResult sendCrossTx(List params) { if (!ApiContext.isReady) { return RpcResult.chainNotReady(); } + if(true){ + return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + } VerifyUtils.verifyParams(params, 2); int chainId; String txHex; From ea87750114419421b08da319bdbf64160f4fe268 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Sat, 21 Nov 2020 23:12:13 +0800 Subject: [PATCH 179/304] support many assets transfer to contract --- .../contract/helper/ContractTxHelper.java | 104 ++++++------ .../rpc/resource/ContractResource.java | 148 ++++++++++-------- .../contract/service/ContractTxService.java | 7 +- .../service/impl/ContractTxServiceImpl.java | 13 +- .../io/nuls/contract/sdk/NativeAddress.java | 81 ++++++---- .../nuls/contract/vm/program/ProgramCall.java | 36 ----- .../vm/program/ProgramInternalCall.java | 28 +--- .../nuls/contract/mock/basetest/MockBase.java | 11 +- .../ContractMakeAndBroadcastBase.java | 2 +- 9 files changed, 207 insertions(+), 223 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java index 85c5e847f2..c1b0a2e959 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java @@ -131,7 +131,7 @@ public Result newCreateTx(int chainId, String sender, * 多扣除的费用会以ContractReturnGasTransaction交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData, CHAIN_ID, ASSET_ID); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData, null); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -226,53 +226,51 @@ private int calcSize(NulsData nulsData) { return VarInt.sizeOf(size) + size - 1; } - public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData, int assetChainId, int assetId) { + public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData, List multyAssetValues) { long gasUsed = gasLimit; BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, price)); - boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; // 总花费 BigInteger totalValue = imputedValue; - if (mainAsset) { - totalValue = totalValue.add(value); - ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); - CoinFrom coinFrom = new CoinFrom(senderBytes, assetChainId, assetId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); - coinData.addFrom(coinFrom); - - if (value.compareTo(BigInteger.ZERO) > 0) { - CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); - coinData.addTo(coinTo); - } + int assetChainId = CHAIN_ID; + int assetId = ASSET_ID; + totalValue = totalValue.add(value); + ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); + CoinFrom coinFrom = new CoinFrom(senderBytes, assetChainId, assetId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); + coinData.addFrom(coinFrom); + + if (value.compareTo(BigInteger.ZERO) > 0) { + CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); + coinData.addTo(coinTo); + } - BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); - totalValue = totalValue.add(fee); - if (senderBalance.getBalance().compareTo(totalValue) < 0) { - Log.error("Insufficient balance, asset: {}-{}", CHAIN_ID, ASSET_ID); - return Result.getFailed(INSUFFICIENT_BALANCE); - } - coinFrom.setAmount(totalValue); - } else { - ContractBalance senderBalanceOfNuls = contractHelper.getUnConfirmedBalanceAndNonce(chainId, CHAIN_ID, ASSET_ID, sender); - BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); - totalValue = totalValue.add(fee); - if (senderBalanceOfNuls.getBalance().compareTo(totalValue) < 0) { - Log.error("Insufficient balance, asset: {}-{}", CHAIN_ID, ASSET_ID); - return Result.getFailed(INSUFFICIENT_BALANCE); - } - CoinFrom coinFrom = new CoinFrom(senderBytes, CHAIN_ID, ASSET_ID, totalValue, RPCUtil.decode(senderBalanceOfNuls.getNonce()), UNLOCKED_TX); - coinData.addFrom(coinFrom); - - ContractBalance senderBalanceOfTransfer = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); - if (value.compareTo(BigInteger.ZERO) > 0) { - if (senderBalanceOfTransfer.getBalance().compareTo(value) < 0) { - Log.error("Insufficient balance, asset: {}-{}", assetChainId, assetId); - return Result.getFailed(INSUFFICIENT_BALANCE); + if (multyAssetValues != null && !multyAssetValues.isEmpty()) { + BigInteger _value; + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + assetChainId = multyAssetValue.getAssetChainId(); + assetId = multyAssetValue.getAssetId(); + _value = multyAssetValue.getValue(); + ContractBalance senderBalanceOfTransfer = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); + if (_value.compareTo(BigInteger.ZERO) > 0) { + if (senderBalanceOfTransfer.getBalance().compareTo(_value) < 0) { + Log.error("Insufficient balance, asset: {}-{}", assetChainId, assetId); + return Result.getFailed(INSUFFICIENT_BALANCE); + } + CoinFrom coinFromOfTransfer = new CoinFrom(senderBytes, assetChainId, assetId, _value, RPCUtil.decode(senderBalanceOfTransfer.getNonce()), UNLOCKED_TX); + CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, _value); + coinData.addFrom(coinFromOfTransfer); + coinData.addTo(coinTo); } - CoinFrom coinFromOfTransfer = new CoinFrom(senderBytes, assetChainId, assetId, value, RPCUtil.decode(senderBalanceOfTransfer.getNonce()), UNLOCKED_TX); - CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); - coinData.addFrom(coinFromOfTransfer); - coinData.addTo(coinTo); } } + + BigInteger fee = TransactionFeeCalculator.getNormalUnsignedTxFee(txSize + calcSize(txData) + calcSize(coinData)); + totalValue = totalValue.add(fee); + if (senderBalance.getBalance().compareTo(totalValue) < 0) { + Log.error("Insufficient balance, asset: {}-{}", CHAIN_ID, ASSET_ID); + return Result.getFailed(INSUFFICIENT_BALANCE); + } + coinFrom.setAmount(totalValue); + return getSuccess(); } @@ -293,15 +291,11 @@ public CreateContractData getCreateContractData(byte[] senderBytes, byte[] contr public Result makeCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, String methodName, String methodDesc, String[][] args, - String password, String remark, int assetChainId, int assetId) { + String password, String remark, List multyAssetValues) { if (value == null) { value = BigInteger.ZERO; } - if (BigInteger.ZERO.equals(value)) { - assetChainId = CHAIN_ID; - assetId = ASSET_ID; - } Result accountResult = AccountCall.validationPassword(chainId, sender, password); if (accountResult.isFailed()) { @@ -311,17 +305,17 @@ public Result makeCallTx(int chainId, String sender, Bi byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); byte[] senderBytes = AddressTool.getAddress(sender); - Result validateCall = this.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); + Result validateCall = this.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, multyAssetValues); if (validateCall.isFailed()) { return validateCall; } - Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, assetChainId, assetId); + Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, multyAssetValues); return result; } public Result newCallTx(int chainId, String sender, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, String remark, int assetChainId, int assetId) { + String methodName, String methodDesc, String[][] args, String remark, List multyAssetValues) { try { CallContractTransaction tx = new CallContractTransaction(); @@ -341,7 +335,7 @@ public Result newCallTx(int chainId, String sender, byt * 多扣除的费用会以CoinBase交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData, assetChainId, assetId); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData, multyAssetValues); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -377,7 +371,7 @@ private CallContractData getCallContractData(byte[] senderBytes, byte[] contract } - public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { + public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, List multyAssetValues) { try { if (!ContractUtil.checkPrice(price.longValue())) { return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); @@ -408,8 +402,7 @@ public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddre } // 创建链上交易,包含智能合约 programCall.setValue(value); - programCall.setAssetChainId(assetChainId); - programCall.setAssetId(assetId); + programCall.setMultyAssetValues(multyAssetValues); programCall.setPrice(price.longValue()); // 获取VM执行器 @@ -453,7 +446,7 @@ public Result validateCall(int chainId, byte[] senderBytes, byte[] contractAddre } } - public Result previewCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { + public Result previewCall(int chainId, byte[] senderBytes, byte[] contractAddressBytes, BigInteger value, Long gasLimit, Long price, String methodName, String methodDesc, String[][] args, List multyAssetValues) { try { if (!ContractUtil.checkPrice(price.longValue())) { return Result.getFailed(CONTRACT_MINIMUM_PRICE_ERROR); @@ -485,8 +478,7 @@ public Result previewCall(int chainId, byte[] senderBytes, byte[ // 创建链上交易,包含智能合约 programCall.setValue(value); // add by pierre at 2020-10-29 - programCall.setAssetChainId(assetChainId); - programCall.setAssetId(assetId); + programCall.setMultyAssetValues(multyAssetValues); // end code by pierre programCall.setPrice(price.longValue()); @@ -576,7 +568,7 @@ public Result newDeleteTx(int chainId, String sender, * 没有Gas消耗,在终止智能合约里 */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData, CHAIN_ID, ASSET_ID); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData, null); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index e498789ca4..40771afe57 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -50,10 +50,7 @@ import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.util.MapUtil; -import io.nuls.contract.vm.program.ProgramExecutor; -import io.nuls.contract.vm.program.ProgramMethod; -import io.nuls.contract.vm.program.ProgramResult; -import io.nuls.contract.vm.program.ProgramStatus; +import io.nuls.contract.vm.program.*; import io.nuls.core.basic.Page; import io.nuls.core.basic.Result; import io.nuls.core.constant.TxStatusEnum; @@ -285,9 +282,8 @@ public Response validateCreate(Map params) { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "password", parameterDes = "调用者账户密码"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), - @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -305,19 +301,9 @@ public Response call(Map params) { ChainManager.chainHandle(chainId); String sender = (String) params.get("sender"); String password = (String) params.get("password"); - Object valueObj = params.get("value"); valueObj = valueObj == null ? "0" : valueObj; - - Object assetChainIdObj = params.get("assetChainId"); - assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; - - Object assetIdObj = params.get("assetId"); - assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; - BigInteger value = new BigInteger(valueObj.toString()); - int assetChainId = Integer.parseInt(assetChainIdObj.toString()); - int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); @@ -325,9 +311,13 @@ public Response call(Map params) { String methodDesc = (String) params.get("methodDesc"); List argsList = (List) params.get("args"); Object[] args = argsList != null ? argsList.toArray() : null; + + List multyAssetValuesList = (List) params.get("multyAssetValues"); + Object[] multyAssetValues = multyAssetValuesList != null ? multyAssetValuesList.toArray() : null; + String remark = (String) params.get("remark"); - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId < 0 || assetId < 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -357,7 +347,16 @@ public Response call(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark, assetChainId, assetId); + List multyAssetValueList = null; + if (multyAssetValues != null) { + Result> multyAssetValueListResult = convertMultyAssetValues(multyAssetValues); + if (multyAssetValueListResult.isFailed()) { + return failed(multyAssetValueListResult.getErrorCode()); + } + multyAssetValueList = multyAssetValueListResult.getData(); + } + + Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark, multyAssetValueList); if (result.isFailed()) { return wrapperFailed(result); @@ -370,13 +369,33 @@ public Response call(Map params) { } } + private Result> convertMultyAssetValues(Object[] multyAssetValues) { + List results = null; + String[][] convertMultyAssetValues = ContractUtil.twoDimensionalArray(multyAssetValues); + if (convertMultyAssetValues != null && convertMultyAssetValues.length > 0) { + results = new ArrayList<>(); + int assetChainId, assetId; + for (String[] value : convertMultyAssetValues) { + if (value == null || value.length != 3) { + return Result.getFailed(PARAMETER_ERROR); + } + assetChainId = Integer.parseInt(value[1]); + assetId = Integer.parseInt(value[2]); + if (assetChainId <= 0 || assetId <= 0) { + return Result.getFailed(PARAMETER_ERROR); + } + results.add(new ProgramMultyAssetValue(new BigInteger(value[0]), assetChainId, assetId)); + } + } + return Result.getSuccess(results); + } + @CmdAnnotation(cmd = VALIDATE_CALL, version = 1.0, description = "validate call contract") @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), - @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -392,25 +411,18 @@ public Response validateCall(Map params) { String sender = (String) params.get("sender"); Object valueObj = params.get("value"); valueObj = valueObj == null ? "0" : valueObj; - - Object assetChainIdObj = params.get("assetChainId"); - assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; - - Object assetIdObj = params.get("assetId"); - assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; - BigInteger value = new BigInteger(valueObj.toString()); - int assetChainId = Integer.parseInt(assetChainIdObj.toString()); - int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); String methodName = (String) params.get("methodName"); String methodDesc = (String) params.get("methodDesc"); List argsList = (List) params.get("args"); + List multyAssetValuesList = (List) params.get("multyAssetValues"); + Object[] multyAssetValues = multyAssetValuesList != null ? multyAssetValuesList.toArray() : null; Object[] args = argsList != null ? argsList.toArray() : null; - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -441,7 +453,16 @@ public Response validateCall(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.validateContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); + List multyAssetValueList = null; + if (multyAssetValues != null) { + Result> multyAssetValueListResult = convertMultyAssetValues(multyAssetValues); + if (multyAssetValueListResult.isFailed()) { + return failed(multyAssetValueListResult.getErrorCode()); + } + multyAssetValueList = multyAssetValueListResult.getData(); + } + + Result result = contractTxService.validateContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, multyAssetValueList); if (result.isFailed()) { return wrapperFailed(result); @@ -458,9 +479,8 @@ public Response validateCall(Map params) { @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), - @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -476,16 +496,7 @@ public Response previewCall(Map params) { String sender = (String) params.get("sender"); Object valueObj = params.get("value"); valueObj = valueObj == null ? "0" : valueObj; - - Object assetChainIdObj = params.get("assetChainId"); - assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; - - Object assetIdObj = params.get("assetId"); - assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; - BigInteger value = new BigInteger(valueObj.toString()); - int assetChainId = Integer.parseInt(assetChainIdObj.toString()); - int assetId = Integer.parseInt(assetIdObj.toString()); Long gasLimit = Long.parseLong(params.get("gasLimit").toString()); Long price = Long.parseLong(params.get("price").toString()); String contractAddress = (String) params.get("contractAddress"); @@ -493,8 +504,10 @@ public Response previewCall(Map params) { String methodDesc = (String) params.get("methodDesc"); List argsList = (List) params.get("args"); Object[] args = argsList != null ? argsList.toArray() : null; + List multyAssetValuesList = (List) params.get("multyAssetValues"); + Object[] multyAssetValues = multyAssetValuesList != null ? multyAssetValuesList.toArray() : null; - if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0 || assetChainId <= 0 || assetId <= 0) { + if (value.compareTo(BigInteger.ZERO) < 0 || gasLimit < 0 || price < 0) { return failed(ContractErrorCode.PARAMETER_ERROR); } @@ -525,7 +538,16 @@ public Response previewCall(Map params) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - Result result = contractTxService.previewContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); + List multyAssetValueList = null; + if (multyAssetValues != null) { + Result> multyAssetValueListResult = convertMultyAssetValues(multyAssetValues); + if (multyAssetValueListResult.isFailed()) { + return failed(multyAssetValueListResult.getErrorCode()); + } + multyAssetValueList = multyAssetValueListResult.getData(); + } + + Result result = contractTxService.previewContractCallTx(chainId, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, convertArgs, multyAssetValueList); if (result.isFailed()) { return wrapperFailed(result); @@ -546,9 +568,8 @@ public Response previewCall(Map params) { @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), - @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产链ID"), - @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "转入资产ID"), + @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @@ -569,21 +590,14 @@ public Response imputedCallGas(Map params) { String sender = (String) params.get("sender"); Object valueObj = params.get("value"); valueObj = valueObj == null ? "0" : valueObj; - - Object assetChainIdObj = params.get("assetChainId"); - assetChainIdObj = assetChainIdObj == null ? CHAIN_ID : assetChainIdObj; - - Object assetIdObj = params.get("assetId"); - assetIdObj = assetIdObj == null ? ASSET_ID : assetIdObj; - BigInteger value = new BigInteger(valueObj.toString()); - int assetChainId = Integer.parseInt(assetChainIdObj.toString()); - int assetId = Integer.parseInt(assetIdObj.toString()); String contractAddress = (String) params.get("contractAddress"); String methodName = (String) params.get("methodName"); String methodDesc = (String) params.get("methodDesc"); List argsList = (List) params.get("args"); Object[] args = argsList != null ? argsList.toArray() : null; + List multyAssetValuesList = (List) params.get("multyAssetValues"); + Object[] multyAssetValues = multyAssetValuesList != null ? multyAssetValuesList.toArray() : null; if (value.compareTo(BigInteger.ZERO) < 0) { break; } @@ -609,7 +623,17 @@ public Response imputedCallGas(Map params) { if (method != null) { convertArgs = ContractUtil.twoDimensionalArray(args, method.argsType2Array()); } - result = contractTxService.validateContractCallTx(chainId, senderBytes, value, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractAddressBytes, methodName, methodDesc, convertArgs, assetChainId, assetId); + + List multyAssetValueList = null; + if (multyAssetValues != null) { + Result> multyAssetValueListResult = convertMultyAssetValues(multyAssetValues); + if (multyAssetValueListResult.isFailed()) { + return failed(multyAssetValueListResult.getErrorCode()); + } + multyAssetValueList = multyAssetValueListResult.getData(); + } + + result = contractTxService.validateContractCallTx(chainId, senderBytes, value, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractAddressBytes, methodName, methodDesc, convertArgs, multyAssetValueList); if (result.isFailed()) { break; } @@ -761,7 +785,7 @@ public Response transfer(Map params) { Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, BALANCE_TRIGGER_METHOD_NAME, BALANCE_TRIGGER_METHOD_DESC, - null, password, remark, CHAIN_ID, ASSET_ID); + null, password, remark, null); if (result.isFailed()) { return wrapperFailed(result); } @@ -844,7 +868,7 @@ public Response tokenTransfer(Map params) { Result result = contractTxService.contractCallTx(chainId, from, BigInteger.ZERO, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, ContractConstant.NRC20_METHOD_TRANSFER, null, - ContractUtil.twoDimensionalArray(argsObj), password, remark, CHAIN_ID, ASSET_ID); + ContractUtil.twoDimensionalArray(argsObj), password, remark, null); if (result.isFailed()) { return wrapperFailed(result); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java index befb298825..0fd0c92253 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java @@ -26,6 +26,7 @@ import io.nuls.contract.model.bo.ContractResult; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; import java.math.BigInteger; @@ -43,13 +44,13 @@ Result contractCreateTx(int chainId, String sender, String alias, Long gasLimit, Result validateContractCreateTx(int chainId, byte[] sender, Long gasLimit, Long price, byte[] contractCode, String[][] args); Result contractCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, - String methodName, String methodDesc, String[][] args, String password, String remark, int assetChainId, int assetId); + String methodName, String methodDesc, String[][] args, String password, String remark, List multyAssetValues); Result validateContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, int assetChainId, int assetId); + String methodName, String methodDesc, String[][] args, List multyAssetValues); Result previewContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, int assetChainId, int assetId); + String methodName, String methodDesc, String[][] args, List multyAssetValues); Result contractDeleteTx(int chainId, String sender, String contractAddress, String password, String remark); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java index 2e272684dc..d62fe92acf 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java @@ -42,6 +42,7 @@ import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.util.MapUtil; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; import io.nuls.core.basic.VarInt; import io.nuls.core.core.annotation.Autowired; @@ -121,9 +122,9 @@ public Result validateContractCreateTx(int chainId, byte[] sender, Long gasLimit @Override public Result contractCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, String methodName, String methodDesc, String[][] args, - String password, String remark, int assetChainId, int assetId) { + String password, String remark, List multyAssetValues) { try { - Result result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark, assetChainId, assetId); + Result result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark, multyAssetValues); if (result.isFailed()) { return result; } @@ -157,14 +158,14 @@ public Result contractCallTx(int chainId, String sender, BigInteger value, Long @Override public Result validateContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { - return contractTxHelper.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); + String methodName, String methodDesc, String[][] args, List multyAssetValues) { + return contractTxHelper.validateCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, multyAssetValues); } @Override public Result previewContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, int assetChainId, int assetId) { - return contractTxHelper.previewCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, assetChainId, assetId); + String methodName, String methodDesc, String[][] args, List multyAssetValues) { + return contractTxHelper.previewCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, multyAssetValues); } private Result saveUnConfirmedTokenTransfer(int chainId, CallContractTransaction tx, String sender, String contractAddress, String methodName, String[][] args) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index 2d9d46502a..68e60a0d8a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -32,15 +32,13 @@ import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.exception.ErrorException; import io.nuls.contract.vm.natives.NativeMethod; -import io.nuls.contract.vm.program.ProgramCall; -import io.nuls.contract.vm.program.ProgramInternalCall; -import io.nuls.contract.vm.program.ProgramResult; -import io.nuls.contract.vm.program.ProgramTransfer; +import io.nuls.contract.vm.program.*; import io.nuls.contract.vm.program.impl.ProgramInvoke; import java.math.BigInteger; import java.util.Arrays; import java.util.Iterator; +import java.util.List; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; @@ -252,7 +250,12 @@ private static Result transferBase(MethodCode methodCode, MethodArgs methodArgs, String methodDesc = "()V"; String[][] args = null; //BigInteger value; - call(address, methodName, methodDesc, args, value, frame, assetChainId, assetId); + if (!mainAsset) { + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[] {new ProgramMultyAssetValue(value, assetChainId, assetId)}; + call(address, methodName, methodDesc, args, BigInteger.ZERO, frame, multyAssetValues); + } else { + call(address, methodName, methodDesc, args, value, frame, null); + } } else { frame.vm.getProgramExecutor().getAccount(from, assetChainId, assetId).addBalance(value.negate()); ProgramTransfer programTransfer = new ProgramTransfer(from, to, value, assetChainId, assetId, lockedTime); @@ -274,26 +277,37 @@ private static Result transferBase(MethodCode methodCode, MethodArgs methodArgs, * @see Address#call(String, String, String[][], BigInteger) */ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - return call(methodCode, methodArgs, frame, false, CHAIN_ID, ASSET_ID); + return call(methodCode, methodArgs, frame, false, null); } public static final String callWithReturnValue = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;)Ljava/lang/String;"; private static Result callWithReturnValue(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { - return call(methodCode, methodArgs, frame, true, CHAIN_ID, ASSET_ID); + return call(methodCode, methodArgs, frame, true, null); } public static final String callWithReturnValueAndAssetInfo = TYPE + "." + "callWithReturnValue" + "(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;Ljava/math/BigInteger;[Lio/nuls/contract/sdk/MultyAssetValue;)Ljava/lang/String;"; private static Result callWithReturnValueAndAssetInfo(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef multyAssetValuesRef = (ObjectRef) methodArgs.invokeArgs[4]; - //TODO pierre 反解析multyAssetValuesRef - - //Integer assetChainId = frame.heap.toInteger(assetChainIdRef); - //Integer assetId = frame.heap.toInteger(assetIdRef); - - return call(methodCode, methodArgs, frame, true, 0, 0); + ProgramMultyAssetValue[] multyAssetValues = null; + if (multyAssetValuesRef != null) { + int length = multyAssetValuesRef.getDimensions()[0]; + multyAssetValues = new ProgramMultyAssetValue[length]; + for (int i = 0; i < length; i++) { + Object item = frame.heap.getArray(multyAssetValuesRef, i); + if (item == null) { + throw new ErrorException(String.format("Empty elements in array"), frame.vm.getGasUsed(), null); + } + ObjectRef itemRef = (ObjectRef) item; + ObjectRef value = (ObjectRef) frame.heap.getField(itemRef, "value"); + ObjectRef assetChainId = (ObjectRef) frame.heap.getField(itemRef, "assetChainId"); + ObjectRef assetId = (ObjectRef) frame.heap.getField(itemRef, "assetId"); + multyAssetValues[i] = new ProgramMultyAssetValue(frame.heap.toBigInteger(value), frame.heap.toInteger(assetChainId), frame.heap.toInteger(assetId)); + } + } + return call(methodCode, methodArgs, frame, true, multyAssetValues); } - private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame, boolean returnResult, Integer assetChainId, Integer assetId) { + private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame, boolean returnResult, ProgramMultyAssetValue[] multyAssetValues) { ObjectRef addressRef = methodArgs.objectRef; ObjectRef methodNameRef = (ObjectRef) methodArgs.invokeArgs[0]; ObjectRef methodDescRef = (ObjectRef) methodArgs.invokeArgs[1]; @@ -308,15 +322,7 @@ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame f if (value == null) { value = BigInteger.ZERO; } - if (value.compareTo(BigInteger.ZERO) > 0) { - if (assetChainId == null || assetId == null) { - throw new ErrorException(String.format("Missing asset information, assetChainId: %s, assetId: %s", assetChainId, assetId), frame.vm.getGasUsed(), null); - } - } else { - assetChainId = CHAIN_ID; - assetId = ASSET_ID; - } - ProgramResult programResult = call(address, methodName, methodDesc, args, value, frame, assetChainId, assetId); + ProgramResult programResult = call(address, methodName, methodDesc, args, value, frame, multyAssetValues); if (!programResult.isSuccess()) { return new Result(); @@ -347,7 +353,7 @@ private static String[][] getArgs(ObjectRef argsRef, Frame frame) { return array; } - public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame, int assetChainId, int assetId) { + public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame, ProgramMultyAssetValue[] multyAssetValues) { if (value.compareTo(BigInteger.ZERO) < 0) { throw new ErrorException(String.format("amount less than zero, value=%s", value), frame.vm.getGasUsed(), null); } @@ -357,8 +363,7 @@ public static ProgramResult call(String address, String methodName, String metho programCall.setNumber(programInvoke.getNumber()); programCall.setSender(programInvoke.getContractAddress()); programCall.setValue(value != null ? value : BigInteger.ZERO); - programCall.setAssetChainId(assetChainId); - programCall.setAssetId(assetId); + programCall.setMultyAssetValues(multyAssetValues != null ? List.of(multyAssetValues) : null); programCall.setGasLimit(programInvoke.getGasLimit() - frame.vm.getGasUsed()); programCall.setPrice(programInvoke.getPrice()); programCall.setContractAddress(NativeAddress.toBytes(address)); @@ -370,20 +375,32 @@ public static ProgramResult call(String address, String methodName, String metho programCall.setInternalCall(true); if (programCall.getValue().compareTo(BigInteger.ZERO) > 0) { - checkBalance(programCall.getSender(), assetChainId, assetId, programCall.getValue(), frame); - frame.vm.getProgramExecutor().getAccount(programCall.getSender(), assetChainId, assetId).addBalance(programCall.getValue().negate()); - ProgramTransfer programTransfer = new ProgramTransfer(programCall.getSender(), programCall.getContractAddress(), programCall.getValue(), assetChainId, assetId, 0); + checkBalance(programCall.getSender(), CHAIN_ID, ASSET_ID, programCall.getValue(), frame); + frame.vm.getProgramExecutor().getAccount(programCall.getSender(), CHAIN_ID, ASSET_ID).addBalance(programCall.getValue().negate()); + ProgramTransfer programTransfer = new ProgramTransfer(programCall.getSender(), programCall.getContractAddress(), programCall.getValue(), CHAIN_ID, ASSET_ID, 0); frame.vm.getTransfers().add(programTransfer); // add by pierre at 2019-11-23 标记 按合约执行顺序添加合约生成交易,按此顺序处理合约生成交易的业务 不确定 需要协议升级 frame.vm.getOrderedInnerTxs().add(programTransfer); // end code by pierre } + if (multyAssetValues != null && multyAssetValues.length > 0) { + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + int assetChainId = multyAssetValue.getAssetChainId(); + int assetId = multyAssetValue.getAssetId(); + checkBalance(programCall.getSender(), assetChainId, assetId, multyAssetValue.getValue(), frame); + frame.vm.getProgramExecutor().getAccount(programCall.getSender(), assetChainId, assetId).addBalance(multyAssetValue.getValue().negate()); + ProgramTransfer programTransfer = new ProgramTransfer(programCall.getSender(), programCall.getContractAddress(), multyAssetValue.getValue(), assetChainId, assetId, 0); + frame.vm.getTransfers().add(programTransfer); + // add by pierre at 2019-11-23 标记 按合约执行顺序添加合约生成交易,按此顺序处理合约生成交易的业务 不确定 需要协议升级 + frame.vm.getOrderedInnerTxs().add(programTransfer); + // end code by pierre + } + } ProgramInternalCall programInternalCall = new ProgramInternalCall(); programInternalCall.setSender(programCall.getSender()); programInternalCall.setValue(programCall.getValue()); - programInternalCall.setAssetChainId(programCall.getAssetChainId()); - programInternalCall.setAssetId(programCall.getAssetId()); + programInternalCall.setMultyAssetValues(programCall.getMultyAssetValues()); programInternalCall.setContractAddress(programCall.getContractAddress()); programInternalCall.setMethodName(programCall.getMethodName()); programInternalCall.setMethodDesc(programCall.getMethodDesc()); @@ -497,6 +514,6 @@ public static boolean validAddress(int chainId, String str) { } public static ProgramResult call(String address, String methodName, String methodDesc, String[][] args, BigInteger value, Frame frame) { - return call(address, methodName, methodDesc, args, value, frame, CHAIN_ID, ASSET_ID); + return call(address, methodName, methodDesc, args, value, frame, null); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java index b91df23f89..08b177546d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCall.java @@ -32,8 +32,6 @@ import java.util.Arrays; import java.util.List; -import static io.nuls.contract.util.ContractUtil.argToString; - public class ProgramCall { /** @@ -56,16 +54,6 @@ public class ProgramCall { */ private List multyAssetValues; - /** - * 转入资产的链ID - */ - private int assetChainId; - - /** - * 转入资产ID - */ - private int assetId; - /** * 最大Gas消耗 */ @@ -171,22 +159,6 @@ public void setValue(BigInteger value) { this.value = value; } - public int getAssetChainId() { - return assetChainId; - } - - public void setAssetChainId(int assetChainId) { - this.assetChainId = assetChainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - public long getGasLimit() { return gasLimit; } @@ -267,8 +239,6 @@ public boolean equals(Object o) { ProgramCall that = (ProgramCall) o; if (number != that.number) return false; - if (assetChainId != that.assetChainId) return false; - if (assetId != that.assetId) return false; if (gasLimit != that.gasLimit) return false; if (price != that.price) return false; if (estimateGas != that.estimateGas) return false; @@ -292,8 +262,6 @@ public int hashCode() { result = 31 * result + Arrays.hashCode(sender); result = 31 * result + Arrays.hashCode(senderPublicKey); result = 31 * result + (value != null ? value.hashCode() : 0); - result = 31 * result + assetChainId; - result = 31 * result + assetId; result = 31 * result + (int) (gasLimit ^ (gasLimit >>> 32)); result = 31 * result + (int) (price ^ (price >>> 32)); result = 31 * result + Arrays.hashCode(contractAddress); @@ -320,10 +288,6 @@ public String toString() { .append(value); sb.append(",\"value\":") .append(multyAssetValues != null ? Arrays.deepToString(multyAssetValues.toArray()) : "null"); - sb.append(",\"assetChainId\":") - .append(assetChainId); - sb.append(",\"assetId\":") - .append(assetId); sb.append(",\"gasLimit\":") .append(gasLimit); sb.append(",\"price\":") diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java index 2c4b421af6..d5ce74e195 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCall.java @@ -25,6 +25,7 @@ package io.nuls.contract.vm.program; import java.math.BigInteger; +import java.util.List; public class ProgramInternalCall { @@ -34,19 +35,14 @@ public class ProgramInternalCall { private byte[] sender; /** - * 交易附带的货币量 + * 交易向合约转入的NULS的金额 */ private BigInteger value; /** - * 转入资产的链ID + * 交易向合约转入的其他资产的金额 */ - private int assetChainId; - - /** - * 转入资产ID - */ - private int assetId; + private List multyAssetValues; /** * 合约地址 @@ -84,20 +80,12 @@ public void setValue(BigInteger value) { this.value = value; } - public int getAssetChainId() { - return assetChainId; - } - - public void setAssetChainId(int assetChainId) { - this.assetChainId = assetChainId; - } - - public int getAssetId() { - return assetId; + public List getMultyAssetValues() { + return multyAssetValues; } - public void setAssetId(int assetId) { - this.assetId = assetId; + public void setMultyAssetValues(List multyAssetValues) { + this.multyAssetValues = multyAssetValues; } public byte[] getContractAddress() { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java index 78c1b5b493..47652f2fd4 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java @@ -34,10 +34,7 @@ import io.nuls.contract.util.VMContext; import io.nuls.contract.util.VMContextMock; import io.nuls.contract.vm.natives.io.nuls.contract.sdk.NativeAddress; -import io.nuls.contract.vm.program.ProgramCall; -import io.nuls.contract.vm.program.ProgramCreate; -import io.nuls.contract.vm.program.ProgramExecutor; -import io.nuls.contract.vm.program.ProgramResult; +import io.nuls.contract.vm.program.*; import io.nuls.contract.vm.program.impl.ProgramExecutorImpl; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.rockdb.service.RocksDBService; @@ -45,6 +42,7 @@ import org.junit.BeforeClass; import java.math.BigInteger; +import java.util.List; /** * @author: PierreLuo @@ -179,10 +177,9 @@ private Object[] execute(String contractAddress, byte[] preStateRoot, String sen programCall.setMethodDesc(methodDesc); programCall.setArgs(args); if (assetChainId != null && assetId != null) { - programCall.setAssetChainId(assetChainId); - programCall.setAssetId(assetId); + programCall.setValue(BigInteger.ZERO); + programCall.setMultyAssetValues(List.of(new ProgramMultyAssetValue(value == null ? BigInteger.ZERO : value, assetChainId, assetId))); } - ProgramExecutor begin = programExecutor.begin(preStateRoot); ProgramExecutor tracking = begin.startTracking(); ProgramResult programResult = tracking.call(programCall); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java index 34a33455a8..a6b51d7606 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java @@ -203,7 +203,7 @@ protected Result makeCallTx(int chainId, String sender, } byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); byte[] senderBytes = AddressTool.getAddress(sender); - return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, CHAIN_ID, ASSET_ID); + return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, null); } protected Result broadcastCallTx(CallContractTransaction tx) { From a41b067d7fe28c2b4894049d16de450d99a390d4 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Sun, 22 Nov 2020 21:51:10 +0800 Subject: [PATCH 180/304] update vm cache settings --- module/nuls-smart-contract/module.ncf | 4 ++-- .../io/nuls/contract/vm/code/ClassCodeLoader.java | 6 ++---- .../java/io/nuls/contract/vm/code/VariableType.java | 12 ++++-------- .../java/org/ethereum/config/SystemProperties.java | 3 +-- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 9343dd0b0d..9feed11600 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,8 +2,8 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=256 -JOPT_XMX=1024 +JOPT_XMS=1024 +JOPT_XMX=3072 [Core] Managed=1 diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java index 3c7dbc6014..d94af4669e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java @@ -56,10 +56,8 @@ public class ClassCodeLoader { static { CACHE = CacheBuilder.newBuilder() - //.initialCapacity(100) - //.maximumSize(1024) - .initialCapacity(50) - .maximumSize(512) + .initialCapacity(100) + .maximumSize(1024) .expireAfterAccess(10 * 60, TimeUnit.SECONDS) .build(new CacheLoader>() { @Override diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java index 1e4e1ebfdf..59658ad779 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java @@ -45,10 +45,8 @@ public class VariableType { static { CACHE = CacheBuilder.newBuilder() - //.initialCapacity(1024) - //.maximumSize(102400) - .initialCapacity(512) - .maximumSize(51200) + .initialCapacity(1024) + .maximumSize(102400) .expireAfterAccess(10, TimeUnit.MINUTES) .build(new CacheLoader() { @Override @@ -57,10 +55,8 @@ public VariableType load(String desc) { } }); CACHE_LIST = CacheBuilder.newBuilder() - //.initialCapacity(1024) - //.maximumSize(10240) - .initialCapacity(512) - .maximumSize(5120) + .initialCapacity(1024) + .maximumSize(10240) .expireAfterAccess(10, TimeUnit.MINUTES) .build(new CacheLoader>() { @Override diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java index 7e8b326474..3a68cc9729 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java @@ -147,8 +147,7 @@ public SystemProperties() { values.put("cache.flush.writeCacheSize", 64); values.put("cache.flush.blocks", 0); values.put("cache.flush.shortSyncFlush", true); - //values.put("cache.stateCacheSize", 384); - values.put("cache.stateCacheSize", 128); + values.put("cache.stateCacheSize", 384); values.put("crypto.providerName", "BC"); values.put("crypto.hash.alg256", "ETH-KECCAK-256"); values.put("crypto.hash.alg512", "ETH-KECCAK-512"); From 27de3ff8daf87fc243b974ef093ddbe02c315f17 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Sun, 22 Nov 2020 23:05:04 +0800 Subject: [PATCH 181/304] update setting --- module/nuls-smart-contract/module.ncf | 4 ++-- .../main/java/io/nuls/contract/vm/code/ClassCodeLoader.java | 2 +- .../src/main/java/io/nuls/contract/vm/code/VariableType.java | 4 ++-- .../src/main/java/org/ethereum/config/SystemProperties.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 9feed11600..7d54c7bae9 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,8 +2,8 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=1024 -JOPT_XMX=3072 +JOPT_XMS=4096 +JOPT_XMX=8192 [Core] Managed=1 diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java index d94af4669e..55c91ef12c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java @@ -57,7 +57,7 @@ public class ClassCodeLoader { static { CACHE = CacheBuilder.newBuilder() .initialCapacity(100) - .maximumSize(1024) + .maximumSize(4096) .expireAfterAccess(10 * 60, TimeUnit.SECONDS) .build(new CacheLoader>() { @Override diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java index 59658ad779..d3decd4dee 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/VariableType.java @@ -46,7 +46,7 @@ public class VariableType { static { CACHE = CacheBuilder.newBuilder() .initialCapacity(1024) - .maximumSize(102400) + .maximumSize(409600) .expireAfterAccess(10, TimeUnit.MINUTES) .build(new CacheLoader() { @Override @@ -56,7 +56,7 @@ public VariableType load(String desc) { }); CACHE_LIST = CacheBuilder.newBuilder() .initialCapacity(1024) - .maximumSize(10240) + .maximumSize(40960) .expireAfterAccess(10, TimeUnit.MINUTES) .build(new CacheLoader>() { @Override diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java index 3a68cc9729..d37297f256 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java @@ -145,13 +145,13 @@ static boolean isUseOnlySpringConfig() { public SystemProperties() { Map values = new HashMap<>(); values.put("cache.flush.writeCacheSize", 64); - values.put("cache.flush.blocks", 0); + values.put("cache.flush.blocks", 10000); values.put("cache.flush.shortSyncFlush", true); values.put("cache.stateCacheSize", 384); values.put("crypto.providerName", "BC"); values.put("crypto.hash.alg256", "ETH-KECCAK-256"); values.put("crypto.hash.alg512", "ETH-KECCAK-512"); - values.put("database.maxOpenFiles", 512); + values.put("database.maxOpenFiles", 2048); values.put("database.prune.enabled", false); values.put("database.prune.maxDepth", 192); values.put("keyvalue.datasource", ""); From a289c85b28ed1ea0f0b180dbd82dadf0312e0a80 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Mon, 23 Nov 2020 14:35:44 +0800 Subject: [PATCH 182/304] remove debug logs --- .../io/nuls/block/message/handler/GetBlocksHandler.java | 2 +- .../nuls/block/message/handler/GetSmallBlockHandler.java | 2 +- .../io/nuls/block/message/handler/GetTxGroupHandler.java | 4 ++-- .../io/nuls/block/message/handler/SmallBlockHandler.java | 4 ++-- .../io/nuls/block/message/handler/TxGroupHandler.java | 4 ++-- .../src/main/java/io/nuls/block/rpc/call/NetworkCall.java | 4 ++-- .../java/io/nuls/block/service/impl/BlockServiceImpl.java | 6 +++--- .../io/nuls/block/thread/monitor/TxGroupRequestor.java | 8 ++++---- .../src/main/java/io/nuls/block/utils/BlockUtil.java | 4 ++-- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetBlocksHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetBlocksHandler.java index 3e5ce02b9f..c880d884a0 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetBlocksHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetBlocksHandler.java @@ -74,7 +74,7 @@ public void process(int chainId, String nodeId, String msgStr) { logger.error("PARAMETER_ERROR"); return; } - logger.debug("recieve HeightRangeMessage from node-" + nodeId + ", start:" + startHeight + ", end:" + endHeight); +// logger.debug("recieve HeightRequestMessage from node-" + nodeId + ", start:" + startHeight + ", end:" + endHeight); NulsHash requestHash; try { requestHash = NulsHash.calcHash(message.serialize()); diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetSmallBlockHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetSmallBlockHandler.java index 41c7cdce79..8f3d83e8d2 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetSmallBlockHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetSmallBlockHandler.java @@ -58,7 +58,7 @@ public void process(int chainId, String nodeId, String msgStr) { } NulsLogger logger = ContextManager.getContext(chainId).getLogger(); NulsHash blockHash = message.getRequestHash(); - logger.debug("recieve " + message + " from node-" + nodeId + ", hash:" + blockHash); +// logger.debug("recieve " + message + " from node-" + nodeId + ", hash:" + blockHash); SmallBlock smallBlock = SmallBlockCacher.getSmallBlock(chainId, blockHash); if (smallBlock != null) { SmallBlockMessage smallBlockMessage = new SmallBlockMessage(); diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetTxGroupHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetTxGroupHandler.java index 9cb0af0eee..7c31f5f9c5 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetTxGroupHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/GetTxGroupHandler.java @@ -60,13 +60,13 @@ public void process(int chainId, String nodeId, String msgStr) { } NulsLogger logger = ContextManager.getContext(chainId).getLogger(); List hashList = message.getTxHashList(); - logger.debug("recieve HashListMessage from node-" + nodeId + ", txcount:" + hashList.size()); +// logger.debug("recieve HashListMessage from node-" + nodeId + ", txcount:" + hashList.size()); TxGroupMessage request = new TxGroupMessage(); List transactions = TransactionCall.getTransactions(chainId, hashList, true); if (transactions.isEmpty()) { return; } - logger.debug("transactions size:" + transactions.size()); +// logger.debug("transactions size:" + transactions.size()); request.setBlockHash(message.getBlockHash()); request.setTransactions(transactions); NetworkCall.sendToNode(chainId, request, nodeId, TXGROUP_MESSAGE); diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java index a7a3e81da7..71e1be4c43 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/SmallBlockHandler.java @@ -102,7 +102,7 @@ public void process(int chainId, String nodeId, String msgStr) { return; } - logger.debug("recieve smallBlockMessage from node-" + nodeId + ", height:" + header.getHeight() + ", hash:" + header.getHash()); +// logger.debug("recieve smallBlockMessage from node-" + nodeId + ", height:" + header.getHeight() + ", hash:" + header.getHash()); context.getCachedHashHeightMap().put(blockHash, header.getHeight()); NetworkCall.setHashAndHeight(chainId, blockHash, header.getHeight(), nodeId); if (context.getStatus().equals(StatusEnum.SYNCHRONIZING)) { @@ -190,7 +190,7 @@ public void process(int chainId, String nodeId, String msgStr) { TxGroupRequestor.removeTask(chainId, blockHash); Block block = BlockUtil.assemblyBlock(header, txMap, txHashList); block.setNodeId(nodeId); - logger.debug("record recv block, block create time-" + DateUtils.timeStamp2DateStr(block.getHeader().getTime() * 1000) + ", hash-" + block.getHeader().getHash()); +// logger.debug("record recv block, block create time-" + DateUtils.timeStamp2DateStr(block.getHeader().getTime() * 1000) + ", hash-" + block.getHeader().getHash()); boolean b = blockService.saveBlock(chainId, block, 1, true, false, true); if (!b) { SmallBlockCacher.setStatus(chainId, blockHash, ERROR); diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/TxGroupHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/TxGroupHandler.java index d95fc56ca0..9cc6f0fe12 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/TxGroupHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/TxGroupHandler.java @@ -72,7 +72,7 @@ public void process(int chainId, String nodeId, String msgStr) { logger.warn("recieved a null txGroup form " + nodeId); return; } - logger.debug("recieve TxGroupMessage from network node-" + nodeId + ", txcount:" + transactions.size()); +// logger.debug("recieve TxGroupMessage from network node-" + nodeId + ", txcount:" + transactions.size()); NulsHash blockHash = message.getBlockHash(); BlockForwardEnum status = SmallBlockCacher.getStatus(chainId, blockHash); //1.已收到完整区块,丢弃 @@ -95,7 +95,7 @@ public void process(int chainId, String nodeId, String msgStr) { Block block = BlockUtil.assemblyBlock(header, txMap, smallBlock.getTxHashList()); block.setNodeId(nodeId); TxGroupRequestor.removeTask(chainId, blockHash); - logger.debug("record recv block, block create time-" + DateUtils.timeStamp2DateStr(block.getHeader().getTime() * 1000) + ", hash-" + block.getHeader().getHash()); +// logger.debug("record recv block, block create time-" + DateUtils.timeStamp2DateStr(block.getHeader().getTime() * 1000) + ", hash-" + block.getHeader().getHash()); boolean b = blockService.saveBlock(chainId, block, 1, true, false, true); if (!b) { SmallBlockCacher.setStatus(chainId, blockHash, ERROR); diff --git a/module/nuls-block/src/main/java/io/nuls/block/rpc/call/NetworkCall.java b/module/nuls-block/src/main/java/io/nuls/block/rpc/call/NetworkCall.java index 4c4486efd9..996d48615f 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/rpc/call/NetworkCall.java +++ b/module/nuls-block/src/main/java/io/nuls/block/rpc/call/NetworkCall.java @@ -132,7 +132,7 @@ public static boolean broadcast(int chainId, BaseBusinessMessage message, String params.put("messageBody", RPCUtil.encode(message.serialize())); params.put("command", command); boolean success = ResponseMessageProcessor.requestAndResponse(ModuleE.NW.abbr, "nw_broadcast", params).isSuccess(); - logger.debug("broadcast " + message.getClass().getName() + ", success:" + success); +// logger.debug("broadcast " + message.getClass().getName() + ", success:" + success); return success; } catch (Exception e) { logger.error("", e); @@ -158,7 +158,7 @@ public static boolean sendToNode(int chainId, BaseBusinessMessage message, Strin params.put("messageBody", RPCUtil.encode(message.serialize())); params.put("command", command); boolean success = ResponseMessageProcessor.requestAndResponse(ModuleE.NW.abbr, "nw_sendPeersMsg", params).isSuccess(); - logger.debug("send " + message.toString() + " to node-" + nodeId + ", success:" + success); +// logger.debug("send " + message.toString() + " to node-" + nodeId + ", success:" + success); return success; } catch (Exception e) { logger.error("", e); diff --git a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java index a9b5f52595..d663a5b88c 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java +++ b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java @@ -257,7 +257,7 @@ public Block getBlock(int chainId, long height) { return null; } block.setTxs(transactions); - logger.debug("get block time-" + (System.nanoTime() - l) + ", height-" + height); +// logger.debug("get block time-" + (System.nanoTime() - l) + ", height-" + height); return block; } catch (Exception e) { logger.error("error when getBlock by height", e); @@ -314,7 +314,7 @@ private boolean saveBlock(int chainId, Block block, boolean localInit, int downl //1.验证区块 Result result = verifyBlock(chainId, block, localInit, download); if (result.isFailed()) { - logger.debug("verifyBlock fail! height-" + height); +// logger.debug("verifyBlock fail! height-" + height); return false; } //同步\链切换\孤儿链对接过程中不进行区块广播 @@ -600,7 +600,7 @@ private Result verifyBlock(int chainId, Block block, boolean localInit, int down //分叉验证 boolean forkVerify = BlockUtil.forkVerify(chainId, block); if (!forkVerify) { - logger.debug("forkVerify-" + forkVerify); +// logger.debug("forkVerify-" + forkVerify); return Result.getFailed(BlockErrorCode.BLOCK_VERIFY_ERROR); } //共识验证 diff --git a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/TxGroupRequestor.java b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/TxGroupRequestor.java index 2d4247745b..8ff9f556aa 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/TxGroupRequestor.java +++ b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/TxGroupRequestor.java @@ -84,13 +84,13 @@ public static void addTask(int chainId, String hash, TxGroupTask task) { map.get(chainId).put(hash, txGroupTasks); } boolean add = txGroupTasks.add(task); - logger.debug("TxGroupRequestor add TxGroupTask, hash-" + hash + ", task-" + task + ", result-" + add); +// logger.debug("TxGroupRequestor add TxGroupTask, hash-" + hash + ", task-" + task + ", result-" + add); } public static void removeTask(int chainId, NulsHash hash) { NulsLogger logger = ContextManager.getContext(chainId).getLogger(); DelayQueue remove = map.get(chainId).remove(hash.toHex()); - logger.debug("TxGroupRequestor remove TxGroupTask, hash-" + hash + ", size-" + (remove == null ? 0 : remove.size())); +// logger.debug("TxGroupRequestor remove TxGroupTask, hash-" + hash + ", size-" + (remove == null ? 0 : remove.size())); } @Override @@ -104,12 +104,12 @@ protected void process(int chainId, ChainContext context, NulsLogger logger) { HashListMessage hashListMessage = task.getRequest(); List hashList = hashListMessage.getTxHashList(); int original = hashList.size(); - logger.debug("TxGroupRequestor send getTxgroupMessage, original hashList size-" + original + ", blockHash-" + blockHash); +// logger.debug("TxGroupRequestor send getTxgroupMessage, original hashList size-" + original + ", blockHash-" + blockHash); List existTransactions = TransactionCall.getTransactions(chainId, hashList, false); List existHashes = existTransactions.stream().map(Transaction::getHash).collect(Collectors.toList()); hashList = CollectionUtils.removeAll(hashList, existHashes); int filtered = hashList.size(); - logger.debug("TxGroupRequestor send getTxgroupMessage, filtered hashList size-" + filtered + ", blockHash-" + blockHash); +// logger.debug("TxGroupRequestor send getTxgroupMessage, filtered hashList size-" + filtered + ", blockHash-" + blockHash); CachedSmallBlock cachedSmallBlock = SmallBlockCacher.getCachedSmallBlock(chainId, NulsHash.fromHex(blockHash)); if (cachedSmallBlock == null) { continue; diff --git a/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java b/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java index 83bca36809..038e4c1b3d 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java +++ b/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java @@ -186,7 +186,7 @@ private static Result mainChainProcess(int chainId, Block block) { //2.收到的区块可以连到主链,验证通过 if (blockHeight == masterChainEndHeight + 1 && blockPreviousHash.equals(masterChainEndHash)) { - logger.debug("received continuous block of masterChain, height:" + blockHeight + ", hash:" + blockHash); +// logger.debug("received continuous block of masterChain, height:" + blockHeight + ", hash:" + blockHash); return Result.getSuccess(BlockErrorCode.SUCCESS); } @@ -194,7 +194,7 @@ private static Result mainChainProcess(int chainId, Block block) { //3.收到的区块是主链上的重复区块,丢弃 BlockHeaderPo masterHeader = blockService.getBlockHeaderPo(chainId, blockHeight); if (blockHash.equals(masterHeader.getHash())) { - logger.debug("received duplicate block of masterChain, height:" + blockHeight + ", hash:" + blockHash); +// logger.debug("received duplicate block of masterChain, height:" + blockHeight + ", hash:" + blockHash); return Result.getFailed(BlockErrorCode.DUPLICATE_MAIN_BLOCK); } //4.收到的区块是主链上的分叉区块,保存区块,并新增一条分叉链链接到主链 From f99041e7534e7fc8bc2d4fa7c4990c6a9231a803 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 23 Nov 2020 16:01:39 +0800 Subject: [PATCH 183/304] update log --- .../java/io/nuls/contract/service/impl/ContractCallerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index cb42446ece..29f23f36df 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -146,7 +146,7 @@ public List reCallTx(ProgramExecutor batchExecutor, List Date: Mon, 23 Nov 2020 16:11:17 +0800 Subject: [PATCH 184/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=88=97=E8=A1=A8=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/core/constant/TxType.java | 6 + .../service/ResetLocalVerifierService.java | 57 +++++ .../tx/v1/ResetLocalVerifierProcessor.java | 45 ++++ .../crosschain/nuls/CrossChainBootStrap.java | 8 + .../nuls/constant/NulsCrossChainConfig.java | 14 ++ .../nuls/constant/NulsCrossChainConstant.java | 9 + .../constant/NulsCrossChainErrorCode.java | 5 + .../impl/ResetLocalVerifierServiceImpl.java | 231 ++++++++++++++++++ .../nuls/srorage/LocalVerifierService.java | 16 ++ .../srorage/imp/LocalVerifierServiceImpl.java | 31 +++ .../src/main/resources/protocol-config.json | 8 + 11 files changed, 430 insertions(+) create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java index 73406dd23a..5b0d754a34 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java @@ -144,4 +144,10 @@ public class TxType { */ public static final int REGISTERED_CHAIN_CHANGE = 60; + /** + * 重置跨链模块存储的本链验证人列表 + * 本交易必须由种子节点发出,节点收到本交易后从共识模块获取到最新的共识节点出块地址列表,覆盖跨链模块本地存储的本链验证人列表。 + */ + public static final int RESET_LOCAL_VERIFIER_LIST = 61; + } diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java new file mode 100644 index 0000000000..ebf1c3cbbb --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java @@ -0,0 +1,57 @@ +package io.nuls.crosschain.base.service; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.core.basic.Result; +import io.nuls.core.exception.NulsException; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * @Author: zhoulijun + * @Time: 2020/11/23 11:15 + * @Description: 重新对齐本链验证人列表的数据 + * + */ +public interface ResetLocalVerifierService { + + /** + * 创建重置本地验证人交易 + * + * @return processor result + * */ + Result createResetLocalVerifierTx(int chainId,String address,String password) throws NulsException, IOException; + + /** + * 交易验证 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * + * @return processor result + * */ + Map validate(int chainId, List txs, BlockHeader blockHeader); + + /** + * 交易提交 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * + * @return processor result + * */ + boolean commitTx(int chainId, List txs, BlockHeader blockHeader); + + /** + * 交易回滚 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * + * @return processor result + * */ + boolean rollbackTx(int chainId, List txs, BlockHeader blockHeader); + +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java new file mode 100644 index 0000000000..9bf4503c5a --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java @@ -0,0 +1,45 @@ +package io.nuls.crosschain.base.tx.v1; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.crosschain.base.service.ResetLocalVerifierService; + +import java.util.List; +import java.util.Map; + +/** + * @Author: zhoulijun + * @Time: 2020/11/23 12:00 + * @Description: 功能描述 + */ +@Component("ResetLocalVerifierProcessorV1") +public class ResetLocalVerifierProcessor implements TransactionProcessor { + + @Autowired + ResetLocalVerifierService resetLocalVerifierService; + + @Override + public int getType() { + return TxType.RESET_LOCAL_VERIFIER_LIST; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + return resetLocalVerifierService.validate(chainId,txs,blockHeader); + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + return resetLocalVerifierService.commitTx(chainId,txs,blockHeader); + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + return resetLocalVerifierService.rollbackTx(chainId,txs,blockHeader); + } + +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java index 72925fd257..763e6c0a58 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java @@ -8,6 +8,7 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.core.config.ConfigurationLoader; +import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.log.Log; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.info.HostInfo; @@ -29,6 +30,8 @@ import java.lang.reflect.Field; import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.stream.Collectors; import static io.nuls.crosschain.nuls.constant.NulsCrossChainConstant.*; import static java.nio.charset.StandardCharsets.UTF_8; @@ -174,6 +177,11 @@ public void onDependenciesReady(Module module){ if (module.getName().equals(ModuleE.SC.abbr)) { chainManager.registerContractTx(); } + + ConfigurationLoader configurationLoader = SpringLiteContext.getBean(ConfigurationLoader.class); + nulsCrossChainConfig.setSeedNodeList(Arrays.stream(configurationLoader.getValue(ModuleE.Constant.CONSENSUS, "seedNodes").split(",")) + .collect(Collectors.toSet())); + }catch (Exception e){ Log.error(e); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConfig.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConfig.java index 9e112298f3..256e74bd4e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConfig.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConfig.java @@ -8,6 +8,7 @@ import io.nuls.crosschain.nuls.model.bo.config.ConfigBean; import java.io.File; +import java.util.Set; /** * 跨链模块配置类 @@ -42,6 +43,11 @@ public class NulsCrossChainConfig extends ConfigBean implements ModuleConfig { /**默认链接到的跨链节点*/ private String crossSeedIps; + /** + * 种子节点列表 + */ + private Set seedNodeList; + public String getDataPath() { return dataPath; } @@ -117,4 +123,12 @@ public String getCrossSeedIps() { public void setCrossSeedIps(String crossSeedIps) { this.crossSeedIps = crossSeedIps; } + + public Set getSeedNodeList() { + return seedNodeList; + } + + public void setSeedNodeList(Set seedNodeList) { + this.seedNodeList = seedNodeList; + } } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConstant.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConstant.java index a7feed9f60..fcd8a794a7 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConstant.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainConstant.java @@ -49,6 +49,10 @@ public interface NulsCrossChainConstant { /**本地验证人信息表*/ String DB_NAME_LOCAL_VERIFIER ="local_verifier"; + /**使用重置本链验证人列表交易重置本链验证人后,将改变前的验证人列表存在此表中*/ + String DB_NAME_OLD_LOCAL_VERIFIER ="old_local_verifier"; + + /** * config @@ -67,6 +71,11 @@ public interface NulsCrossChainConstant { int CHAIN_ID_MIN = 0; + /** + * 非锁定交易 + */ + byte UNLOCKED_TX = (byte) 0; + /** * 跨链交易固定为非解锁交易 */ diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java index 135a88d2b5..21ef97c40e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/constant/NulsCrossChainErrorCode.java @@ -43,4 +43,9 @@ public interface NulsCrossChainErrorCode extends CommonCodeConstanst { ErrorCode TO_MANY_VERIFIER_EXIT = ErrorCode.init("cc_0030"); //资产没有注册跨链 ErrorCode ASSET_NOT_REG_CROSS_CHAIN = ErrorCode.init("cc_0031"); + + /** + * 交易必须种子节点签名 + */ + ErrorCode MUST_SEED_ADDRESS_SIGN = ErrorCode.init("cc_0032"); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java new file mode 100644 index 0000000000..5578fd9358 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -0,0 +1,231 @@ +package io.nuls.crosschain.nuls.servive.impl; + +import com.google.common.collect.Lists; +import io.nuls.base.RPCUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.Transaction; +import io.nuls.base.signture.P2PHKSignature; +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.exception.NulsException; +import io.nuls.core.model.BigIntegerUtils; +import io.nuls.core.model.StringUtils; +import io.nuls.crosschain.base.service.ResetLocalVerifierService; +import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; +import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; +import io.nuls.crosschain.nuls.constant.NulsCrossChainErrorCode; +import io.nuls.crosschain.nuls.model.bo.Chain; +import io.nuls.crosschain.nuls.model.po.LocalVerifierPO; +import io.nuls.crosschain.nuls.rpc.call.AccountCall; +import io.nuls.crosschain.nuls.rpc.call.ConsensusCall; +import io.nuls.crosschain.nuls.rpc.call.LedgerCall; +import io.nuls.crosschain.nuls.rpc.call.TransactionCall; +import io.nuls.crosschain.nuls.srorage.LocalVerifierService; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; +import io.nuls.crosschain.nuls.utils.manager.CoinDataManager; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.*; +import java.util.stream.Collectors; + +import static io.nuls.base.basic.TransactionFeeCalculator.NORMAL_PRICE_PRE_1024_BYTES; +import static io.nuls.core.constant.CommonCodeConstanst.PARAMETER_ERROR; +import static io.nuls.crosschain.nuls.constant.NulsCrossChainConstant.CHAIN_ID_MIN; +import static io.nuls.crosschain.nuls.constant.NulsCrossChainErrorCode.*; +import static io.nuls.crosschain.nuls.constant.ParamConstant.TX_HASH; + +/** + * @Author: zhoulijun + * @Time: 2020/11/23 11:17 + * @Description: 功能描述 + */ +public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService { + + @Autowired + private ChainManager chainManager; + + @Autowired + private CoinDataManager coinDataManager; + + @Autowired + NulsCrossChainConfig nulsCrossChainConfig; + + @Autowired + LocalVerifierService localVerifierService; + + private List assemblyCoinFrom(Chain chain, String addressStr) throws NulsException { + List coinFroms = new ArrayList<>(); + byte[] address = AddressTool.getAddress(addressStr); + if (!AddressTool.validAddress(chain.getChainId(), addressStr)) { + //转账交易转出地址必须是本链地址 + chain.getLogger().error("跨链交易转出账户不为本链账户"); + throw new NulsException(ADDRESS_IS_NOT_THE_CURRENT_CHAIN); + } + int assetChainId = chain.getChainId(); + int assetId = nulsCrossChainConfig.getAssetId(); + //检查对应资产余额 是否足够 + Map result = LedgerCall.getBalanceAndNonce(chain, addressStr, assetChainId, assetId); + byte[] nonce = RPCUtil.decode((String) result.get("nonce")); + BigInteger balance = new BigInteger(result.get("available").toString()); + if (BigIntegerUtils.isLessThan(balance, NORMAL_PRICE_PRE_1024_BYTES)) { + chain.getLogger().error("账户余额不足"); + throw new NulsException(INSUFFICIENT_BALANCE); + } + CoinFrom coinFrom = new CoinFrom(address, assetChainId, assetId, NORMAL_PRICE_PRE_1024_BYTES, nonce, NulsCrossChainConstant.UNLOCKED_TX); + coinFroms.add(coinFrom); + return coinFroms; + } + + /** + * 创建并广播一个重置本链验证人交易 + * + * @return + */ + @Override + public Result createResetLocalVerifierTx(int chainId, String address, String password) throws NulsException, IOException { + if (chainId <= CHAIN_ID_MIN) { + return Result.getFailed(PARAMETER_ERROR); + } + if (StringUtils.isBlank(address) && StringUtils.isBlank(password)) { + return Result.getFailed(PARAMETER_ERROR); + } + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + return Result.getFailed(CHAIN_NOT_EXIST); + } + if (!nulsCrossChainConfig.getSeedNodeList().contains(address)) { + return Result.getFailed(PARAMETER_ERROR); + } + Transaction tx = new Transaction(TxType.RESET_LOCAL_VERIFIER_LIST); + CoinData coinData = new CoinData(); + coinData.setFrom(assemblyCoinFrom(chain, address)); + coinData.setTo(Lists.newArrayList()); + tx.setCoinData(coinData.serialize()); + + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + P2PHKSignature p2PHKSignature = AccountCall.signDigest(address, password, tx.getHash().getBytes()); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + if (!TransactionCall.sendTx(chain, RPCUtil.encode(tx.serialize()))) { + chain.getLogger().error("重置本链验证人列表交易发送交易模块失败\n\n"); + throw new NulsException(INTERFACE_CALL_FAILED); + } + Map result = new HashMap<>(2); + result.put(TX_HASH, tx.getHash().toHex()); + return Result.getSuccess(SUCCESS).setData(result); + } + + /** + * 验证此交易的coin data中的from中只能有1个种子节点签名的交易 + * + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * @return + */ + @Override + public Map validate(int chainId, List txs, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + Map result = new HashMap<>(2); + if (chain == null) { + result.put("txList", txs); + result.put("errorCode", NulsCrossChainErrorCode.CHAIN_NOT_EXIST.getCode()); + return result; + } + //一个区块只处理一条重置交易,其他的丢掉 + List invalidCtxList = txs.stream().skip(1).collect(Collectors.toList()); + String errorCode = null; + Transaction tx = txs.get(0); + try { + CoinData coinData = tx.getCoinDataInstance(); + //只能有一个from + if (coinData.getFrom().size() != 1) { + result.put("txList", txs); + result.put("errorCode", COINDATA_VERIFY_FAIL.getCode()); + return result; + } + //必须是种子节点发出的交易 + if (coinData.getFromAddressList().stream().noneMatch(d -> nulsCrossChainConfig.getSeedNodeList().contains(d))) { + result.put("txList", txs); + result.put("errorCode", MUST_SEED_ADDRESS_SIGN.getCode()); + return result; + } + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(tx.getTransactionSignature(), 0); + byte[] txHashByte = tx.getHash().getBytes(); + //只能有一个签名 + if (transactionSignature.getP2PHKSignatures().size() != 1) { + chain.getLogger().error("Signature verification failed"); + throw new NulsException(new Exception("Transaction signature error !")); + } + + //验证签名 + P2PHKSignature signature = transactionSignature.getP2PHKSignatures().get(0); + if (!ECKey.verify(txHashByte, signature.getSignData().getSignBytes(), signature.getPublicKey())) { + chain.getLogger().error("Signature verification failed"); + throw new NulsException(new Exception("Transaction signature error !")); + } + //签名必须是种子节点 + String signAddress = AddressTool.getStringAddressByBytes(AddressTool.getAddress(signature.getPublicKey(), chain.getChainId())); + if (!nulsCrossChainConfig.getSeedNodeList().contains(signAddress)) { + chain.getLogger().error("Signature verification failed"); + throw new NulsException(NulsCrossChainErrorCode.SIGNATURE_ERROR); + } + } catch (NulsException e) { + invalidCtxList.add(tx); + chain.getLogger().error("reset local verifier Transaction Verification Failure"); + chain.getLogger().error(e); + errorCode = e.getErrorCode().getCode(); + } + result.put("txList", invalidCtxList); + result.put("errorCode", errorCode); + return result; + } + + /** + * 1.将当前的本链验证人列表存储在old_local_verifier表中 key为高度 + * 2.从共识模块获取最新的节点列表,将出块地址刷新到本链验证人列表中。 + * 3.组装一个平行链验证人初始化交易广播到平行链 + * + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * @return + */ + @Override + public boolean commitTx(int chainId, List txs, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + return false; + } + Set allAgentPackingAddress = new HashSet<>(ConsensusCall.getWorkAgentList(chain)); + allAgentPackingAddress.addAll(nulsCrossChainConfig.getSeedNodeList()); + chain.getLogger().info("获取到当前网络最新的出块地址列表(包括种子节点):{}",allAgentPackingAddress); + + //备份当前本链验证人列表 + localVerifierService.backup(chainId,blockHeader.getHeight()); + LocalVerifierPO localVerifierPO = new LocalVerifierPO(); + localVerifierPO.setVerifierList(new ArrayList<>(allAgentPackingAddress)); + localVerifierService.save(localVerifierPO,chainId); + chain.getLogger().info("重置本链验证人列表完成"); + return true; + } + + @Override + public boolean rollbackTx(int chainId, List txs, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + return false; + } + return localVerifierService.rollback(chainId,blockHeader.getHeight()); + } + +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/LocalVerifierService.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/LocalVerifierService.java index a1aac11167..f7e080eae3 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/LocalVerifierService.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/LocalVerifierService.java @@ -21,6 +21,22 @@ public interface LocalVerifierService { * */ boolean save(LocalVerifierPO po, int chainID); + /** + * 将当前验证人列表备份到备份表中 + * @param chainID + * @param blockHeight + * @return + */ + boolean backup(int chainID,long blockHeight); + + /** + * 从指定高度的备份中恢复本链验证人列表 + * @param chainID + * @param blockHeight + * @return + */ + boolean rollback(int chainID,long blockHeight); + /** * 查询 * @param chainID 链ID diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/LocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/LocalVerifierServiceImpl.java index 28bbde9a8a..60374b730b 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/LocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/LocalVerifierServiceImpl.java @@ -23,6 +23,37 @@ public boolean save(LocalVerifierPO po, int chainID) { return false; } + @Override + public boolean backup(int chainID, long blockHeight) { + LocalVerifierPO localVerifierPO = get(chainID); + try { + if(localVerifierPO == null){ + return false; + } + return RocksDBService.put(NulsCrossChainConstant.DB_NAME_OLD_LOCAL_VERIFIER + chainID, ByteUtils.longToBytes(blockHeight), localVerifierPO.serialize()); + }catch (Exception e){ + Log.error(e); + } + return true; + } + + @Override + public boolean rollback(int chainID, long blockHeight) { + byte[] value = RocksDBService.get(NulsCrossChainConstant.DB_NAME_OLD_LOCAL_VERIFIER + chainID,ByteUtils.longToBytes(blockHeight)); + if(value == null){ + Log.error("没有找到备份数据" ); + return true; + } + try { + RocksDBService.put(NulsCrossChainConstant.DB_NAME_LOCAL_VERIFIER, ByteUtils.intToBytes(chainID), value); + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + + } + @Override public LocalVerifierPO get(int chainID) { byte[] value = RocksDBService.get(NulsCrossChainConstant.DB_NAME_LOCAL_VERIFIER,ByteUtils.intToBytes(chainID)); diff --git a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json index c8c45aaffe..5c3785c79c 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json +++ b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json @@ -42,6 +42,14 @@ "verifySignature": false, "verifyFee": true, "handler": "RegisteredChainChangeProcessorV1" + }, + { + "type": "61", + "systemTx": false, + "unlockTx": false, + "verifySignature": false, + "verifyFee": true, + "handler": "ResetLocalVerifierProcessorV1" } ], "validMsgs": [ From 3f9e6a151c39fa5686fac1a6b11df0605a72a32e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 23 Nov 2020 16:33:02 +0800 Subject: [PATCH 185/304] update data source in contract --- .../src/main/java/io/nuls/contract/vm/VM.java | 6 +- .../vm/program/impl/ProgramExecutorImpl.java | 14 +-- .../datasource/rocksdb/RocksDbDataSource.java | 93 +++++++++++-------- 3 files changed, 62 insertions(+), 51 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 5e7107a4de..4159c8399e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -214,18 +214,18 @@ public void run(ObjectRef objectRef, MethodCode methodCode, VMContext vmContext, long startTime = System.nanoTime(); Object[] runArgs = runArgs(objectRef, methodCode, programInvoke.getArgs()); long use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.1 : {}ns",use); + //Log.info("===================================================================step 1.1 : {}ns",use); startTime = System.nanoTime(); if (isEnd()) { return; } initProgramContext(programInvoke); use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.2 : {}ns",use); + //Log.info("===================================================================step 1.2 : {}ns",use); startTime = System.nanoTime(); run(methodCode, runArgs, true); use = System.nanoTime()-startTime; - Log.info("===================================================================step 1.3 : {}ns",use); + //Log.info("===================================================================step 1.3 : {}ns",use); } private Object[] runArgs(ObjectRef objectRef, MethodCode methodCode, String[][] args) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 0645395b99..42f5566027 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -257,7 +257,7 @@ public ProgramResult call(ProgramCall programCall) { programInvoke.setSenderPublicKey(programCall.getSenderPublicKey()); long start = System.nanoTime(); ProgramResult result = execute(programInvoke); - Log.info("=========== total use:{}ms",(System.nanoTime()-start)/1000000); + //Log.info("=========== total use:{}ms",(System.nanoTime()-start)/1000000); return result; } @@ -291,7 +291,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { logTime("start"); long use = System.nanoTime()-startTime; - Log.info("================step 0.1 : {}ns",use); + //Log.info("================step 0.1 : {}ns",use); startTime = System.nanoTime(); VM vm = null; try { @@ -340,7 +340,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm = VMFactory.createVM(); logTime("load vm"); use = System.nanoTime()-startTime; - Log.info("================step 0.2 : {}ns",use); + //Log.info("================step 0.2 : {}ns",use); startTime = System.nanoTime(); vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); @@ -401,7 +401,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { logTime("load classes"); use = System.nanoTime()-startTime; - Log.info("================step 0.3 : {}ns",use); + //Log.info("================step 0.3 : {}ns",use); startTime = System.nanoTime(); ClassCode contractClassCode = getContractClassCode(classCodes); String methodDesc = ProgramDescriptors.parseDesc(methodDescBase); @@ -436,7 +436,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { logTime("load method"); use = System.nanoTime()-startTime; - Log.info("================step 0.4 : {}ns",use); + //Log.info("================step 0.4 : {}ns",use); startTime = System.nanoTime(); ObjectRef objectRef; if (programInvoke.isCreate()) { @@ -468,7 +468,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { logTime("load contract ref"); use = System.nanoTime()-startTime; - Log.info("================step 0.5 : {}ns",use); + //Log.info("================step 0.5 : {}ns",use); startTime = System.nanoTime(); if (transferValue.compareTo(BigInteger.ZERO) > 0) { @@ -480,7 +480,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { logTime("load end"); use = System.nanoTime()-startTime; - Log.info("================step 0.6 : {}ns",use); + //Log.info("================step 0.6 : {}ns",use); vm.run(objectRef, methodCode, vmContext, programInvoke); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java index c48a66a557..a5b565cccd 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java @@ -17,12 +17,15 @@ */ package org.ethereum.datasource.rocksdb; +import io.nuls.core.rockdb.manager.RocksDBManager; import io.nuls.core.rockdb.service.BatchOperation; import io.nuls.core.rockdb.service.RocksDBService; import org.apache.commons.lang3.ArrayUtils; import org.ethereum.config.SystemProperties; import org.ethereum.datasource.DbSettings; import org.ethereum.datasource.DbSource; +import org.rocksdb.RocksDB; +import org.rocksdb.RocksDBException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +50,7 @@ public class RocksDbDataSource implements DbSource { String name; boolean alive; + RocksDB rocksDB; DbSettings settings = DbSettings.DEFAULT; @@ -95,6 +99,7 @@ public void init(DbSettings settings) { if (!ArrayUtils.contains(areas, AREA)) { RocksDBService.createTable(AREA); } + rocksDB = RocksDBManager.getTable(AREA); alive = true; @@ -134,21 +139,27 @@ public String getName() { public byte[] get(byte[] key) { resetDbLock.readLock().lock(); try { - if (logger.isTraceEnabled()) { - logger.trace("~> RocksDbDataSource.get(): " + name + ", key: " + toHexString(key)); - } + //if (logger.isTraceEnabled()) { + // logger.trace("~> RocksDbDataSource.get(): " + name + ", key: " + toHexString(key)); + //} try { - byte[] ret = RocksDBService.get(AREA, key); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); - } + + byte[] ret = rocksDB.get(key); + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); + //} return ret; } catch (Exception e) { logger.warn("Exception. Retrying again...", e); - byte[] ret = RocksDBService.get(AREA, key); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); + byte[] ret = null; + try { + ret = rocksDB.get(key); + } catch (RocksDBException ex) { + // skip it } + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); + //} return ret; } } finally { @@ -158,38 +169,37 @@ public byte[] get(byte[] key) { @Override public void put(byte[] key, byte[] value) { - resetDbLock.readLock().lock(); + resetDbLock.writeLock().lock(); try { - if (logger.isTraceEnabled()) { - logger.trace("~> RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); - } - RocksDBService.put(AREA, key, value); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); - } + //if (logger.isTraceEnabled()) { + // logger.trace("~> RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //} + rocksDB.put(key, value); + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //} } catch (Exception e) { logger.error("RocksDbDataSource.put() error", e); } finally { - resetDbLock.readLock().unlock(); + resetDbLock.writeLock().unlock(); } } @Override public void delete(byte[] key) { - resetDbLock.readLock().lock(); + resetDbLock.writeLock().lock(); try { - if (logger.isTraceEnabled()) { - logger.trace("~> RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); - } - RocksDBService.delete(AREA, key); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); - } + //if (logger.isTraceEnabled()) { + // logger.trace("~> RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); + //} + rocksDB.delete(key); + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); + //} } catch (Exception e) { - e.printStackTrace(); logger.error("RocksDbDataSource.delete() error", e); } finally { - resetDbLock.readLock().unlock(); + resetDbLock.writeLock().unlock(); } } @@ -200,7 +210,8 @@ public Set keys() { private void updateBatchInternal(Map rows) throws Exception { BatchOperation batchOperation = RocksDBService.createWriteBatch(AREA); - for (Map.Entry entry : rows.entrySet()) { + Set> entrySet = rows.entrySet(); + for (Map.Entry entry : entrySet) { if (entry.getValue() == null) { batchOperation.delete(entry.getKey()); } else { @@ -212,31 +223,31 @@ private void updateBatchInternal(Map rows) throws Exception { @Override public void updateBatch(Map rows) { - resetDbLock.readLock().lock(); + resetDbLock.writeLock().lock(); try { - if (logger.isTraceEnabled()) { - logger.trace("~> RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); - } + //if (logger.isTraceEnabled()) { + // logger.trace("~> RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //} try { updateBatchInternal(rows); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); - } + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //} } catch (Exception e) { logger.error("Error, retrying one more time...", e); // try one more time try { updateBatchInternal(rows); - if (logger.isTraceEnabled()) { - logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); - } + //if (logger.isTraceEnabled()) { + // logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //} } catch (Exception e1) { logger.error("Error", e); throw new RuntimeException(e); } } } finally { - resetDbLock.readLock().unlock(); + resetDbLock.writeLock().unlock(); } } From 0b35da634ce88999d1957c249961c835681b5cf1 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 09:51:01 +0800 Subject: [PATCH 186/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=88=97=E8=A1=A8=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/CrossChainProvider.java | 7 ++ .../crosschain/CrossChainProviderForRpc.java | 5 ++ .../facade/CreateResetLocalVerifierTxReq.java | 40 +++++++++++ .../io/nuls/cmd/client/CommandHandler.java | 1 + .../ResetLocalVerifierTxProcessor.java | 67 +++++++++++++++++ .../service/ResetLocalVerifierService.java | 2 +- .../crosschain/nuls/rpc/cmd/MainNetCmd.java | 25 +++++++ .../impl/ResetLocalVerifierServiceImpl.java | 71 +++++++++++-------- .../nuls/utils/manager/ChainManager.java | 8 +++ 9 files changed, 195 insertions(+), 31 deletions(-) create mode 100644 common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/CreateResetLocalVerifierTxReq.java create mode 100644 module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/ResetLocalVerifierTxProcessor.java diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java index 9c1343b002..3c1bbb43ce 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java @@ -32,4 +32,11 @@ public interface CrossChainProvider { */ Result rehandleCtx(RehandleCtxReq req); + /** + * 创建一个通知所有节点重置本地验证人列表的交易 + * @param req + * @return + */ + Result resetLocalVerifier(CreateResetLocalVerifierTxReq req); + } diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java index 737ac62b20..21dac493cc 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java @@ -46,6 +46,11 @@ public Result rehandleCtx(RehandleCtxReq req) { return callReturnString("ctxRehandle",req,"msg"); } + @Override + public Result resetLocalVerifier(CreateResetLocalVerifierTxReq req) { + return callReturnString("createResetLocalVerifierTx",req,"txHash"); + } + private Result _call(String method, Object req, Function callback){ return call(method,req,callback); diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/CreateResetLocalVerifierTxReq.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/CreateResetLocalVerifierTxReq.java new file mode 100644 index 0000000000..525cebfb13 --- /dev/null +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/facade/CreateResetLocalVerifierTxReq.java @@ -0,0 +1,40 @@ +package io.nuls.base.api.provider.crosschain.facade; + +import io.nuls.base.api.provider.BaseReq; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: zhoulijun + * @Time: 2019-05-06 16:56 + * @Description: 功能描述 + */ +public class CreateResetLocalVerifierTxReq extends BaseReq { + + String address; + + String password; + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public CreateResetLocalVerifierTxReq(String address, String password) { + this.address = address; + this.password = password; + } +} diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java index c02538b0aa..d573082d69 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java @@ -192,6 +192,7 @@ public void afterPropertiesSet() throws NulsException { register(getBean(GetCrossChainRegisterInfoProcessor.class)); register(getBean(GetCrossAssetInfoProcessor.class)); register(getBean(GetCrossTxStateProcessor.class)); + register(getBean(ResetLocalVerifierTxProcessor.class)); JSONUtils.getInstance().configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/ResetLocalVerifierTxProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/ResetLocalVerifierTxProcessor.java new file mode 100644 index 0000000000..81775db633 --- /dev/null +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/ResetLocalVerifierTxProcessor.java @@ -0,0 +1,67 @@ +package io.nuls.cmd.client.processor.crosschain; + +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; +import io.nuls.base.api.provider.crosschain.facade.CreateResetLocalVerifierTxReq; +import io.nuls.base.basic.AddressTool; +import io.nuls.cmd.client.CommandBuilder; +import io.nuls.cmd.client.CommandResult; +import io.nuls.cmd.client.utils.AssetsUtil; +import io.nuls.core.constant.ErrorCode; +import io.nuls.core.core.annotation.Component; + +import java.math.BigDecimal; +import java.math.BigInteger; + +/** + * @Author: zhoulijun + * @Time: 2019-05-06 17:34 + * @Description: 功能描述 + */ +@Component +public class ResetLocalVerifierTxProcessor extends CrossChainBaseProcessor { + + @Override + public String getCommand() { + return "resetlocalverifier"; + } + + @Override + public String getHelp() { + CommandBuilder builder = new CommandBuilder(); + builder.newLine(getCommandDescription()) + .newLine("\t
address - require") + .newLine("\t[password] \t\tpassword"); + return builder.toString(); + } + + @Override + public String getCommandDescription() { + return "resetlocalverifier
[password]--create cross chain tx"; + } + + + @Override + public boolean argsValidate(String[] args) { + checkArgsNumber(args, 1,2); + checkAddress(config.getChainId(), args[1]); + return true; + } + + @Override + public CommandResult execute(String[] args) { + Integer chainId = config.getChainId(); + String address = args[1]; + String password = null; + if (args.length == 3) { + password = args[2]; + }else { + password = getPwd(); + } + Result result = crossChainProvider.resetLocalVerifier(new CreateResetLocalVerifierTxReq(address,password)); + if (result.isFailed()) { + return CommandResult.getFailed(result); + } + return CommandResult.getSuccess(result.getData()); + } +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java index ebf1c3cbbb..3eda73425c 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java @@ -22,7 +22,7 @@ public interface ResetLocalVerifierService { * * @return processor result * */ - Result createResetLocalVerifierTx(int chainId,String address,String password) throws NulsException, IOException; + Result createResetLocalVerifierTx(int chainId,String address,String password) ; /** * 交易验证 diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java index 118b04acae..3fe59ce5dd 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/MainNetCmd.java @@ -12,6 +12,8 @@ import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.constant.CrossChainErrorCode; import io.nuls.crosschain.base.message.CirculationMessage; +import io.nuls.crosschain.base.model.dto.input.CoinDTO; +import io.nuls.crosschain.base.service.ResetLocalVerifierService; import io.nuls.crosschain.nuls.constant.ParamConstant; import io.nuls.crosschain.nuls.servive.MainNetService; import io.nuls.crosschain.nuls.srorage.RegisteredCrossChainService; @@ -33,6 +35,9 @@ public class MainNetCmd extends BaseCmd { @Autowired RegisteredCrossChainService registeredCrossChainService; + @Autowired + ResetLocalVerifierService resetLocalVerifierService; + /** * 友链向主网链管理模块注册跨链信息,链管理模块通知跨链模块 * */ @@ -182,4 +187,24 @@ public Response getRegisterChainInfo(Map params){ return success(registeredCrossChainService.get()); } + @CmdAnnotation(cmd = "createResetLocalVerifierTx", version = 1.0, description = "创建一个重置本链验证人交易交易") + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") + @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "调用地址") + @Parameter(parameterName = "password", requestType = @TypeDescriptor(value = String.class), parameterDes = "调用地址密码") + @Parameter(parameterName = "remark", parameterType = "String", parameterDes = "备注", canNull = true) + @ResponseData(name = "返回值", description = "交易HASH", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "txHash", description = "交易HASH") + })) + public Response createResetLocalVerifierTx(Map params){ + int chainId = Integer.parseInt(params.get("chainId").toString()); + String address = (String) params.get("address"); + String password = (String) params.get("password"); + Result res = resetLocalVerifierService.createResetLocalVerifierTx(chainId,address,password); + if(res.isSuccess()){ + return success(res); + }else{ + return failed(res.getErrorCode()); + } + } + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 5578fd9358..7c5f9434ab 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -3,19 +3,20 @@ import com.google.common.collect.Lists; import io.nuls.base.RPCUtil; import io.nuls.base.basic.AddressTool; -import io.nuls.base.data.BlockHeader; -import io.nuls.base.data.CoinData; -import io.nuls.base.data.CoinFrom; -import io.nuls.base.data.Transaction; +import io.nuls.base.data.*; import io.nuls.base.signture.P2PHKSignature; import io.nuls.base.signture.TransactionSignature; import io.nuls.core.basic.Result; +import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.ECKey; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.StringUtils; +import io.nuls.core.rpc.util.NulsDateUtils; import io.nuls.crosschain.base.service.ResetLocalVerifierService; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; @@ -33,6 +34,7 @@ import java.io.IOException; import java.math.BigInteger; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static io.nuls.base.basic.TransactionFeeCalculator.NORMAL_PRICE_PRE_1024_BYTES; @@ -46,6 +48,7 @@ * @Time: 2020/11/23 11:17 * @Description: 功能描述 */ +@Component public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService { @Autowired @@ -60,7 +63,7 @@ public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService @Autowired LocalVerifierService localVerifierService; - private List assemblyCoinFrom(Chain chain, String addressStr) throws NulsException { + private CoinData assemblyCoinFrom(Chain chain, String addressStr) throws NulsException { List coinFroms = new ArrayList<>(); byte[] address = AddressTool.getAddress(addressStr); if (!AddressTool.validAddress(chain.getChainId(), addressStr)) { @@ -78,9 +81,10 @@ private List assemblyCoinFrom(Chain chain, String addressStr) throws N chain.getLogger().error("账户余额不足"); throw new NulsException(INSUFFICIENT_BALANCE); } - CoinFrom coinFrom = new CoinFrom(address, assetChainId, assetId, NORMAL_PRICE_PRE_1024_BYTES, nonce, NulsCrossChainConstant.UNLOCKED_TX); - coinFroms.add(coinFrom); - return coinFroms; + CoinData coinData = new CoinData(); + coinData.setFrom(List.of(new CoinFrom(address, assetChainId, assetId, NORMAL_PRICE_PRE_1024_BYTES, nonce, NulsCrossChainConstant.UNLOCKED_TX))); + coinData.setTo(List.of(new CoinTo(address,assetChainId,assetId,BigInteger.ZERO))); + return coinData; } /** @@ -89,7 +93,7 @@ private List assemblyCoinFrom(Chain chain, String addressStr) throws N * @return */ @Override - public Result createResetLocalVerifierTx(int chainId, String address, String password) throws NulsException, IOException { + public Result createResetLocalVerifierTx(int chainId, String address, String password) { if (chainId <= CHAIN_ID_MIN) { return Result.getFailed(PARAMETER_ERROR); } @@ -103,24 +107,31 @@ public Result createResetLocalVerifierTx(int chainId, String address, String pas if (!nulsCrossChainConfig.getSeedNodeList().contains(address)) { return Result.getFailed(PARAMETER_ERROR); } - Transaction tx = new Transaction(TxType.RESET_LOCAL_VERIFIER_LIST); - CoinData coinData = new CoinData(); - coinData.setFrom(assemblyCoinFrom(chain, address)); - coinData.setTo(Lists.newArrayList()); - tx.setCoinData(coinData.serialize()); - - TransactionSignature transactionSignature = new TransactionSignature(); - List p2PHKSignatures = new ArrayList<>(); - P2PHKSignature p2PHKSignature = AccountCall.signDigest(address, password, tx.getHash().getBytes()); - p2PHKSignatures.add(p2PHKSignature); - transactionSignature.setP2PHKSignatures(p2PHKSignatures); - if (!TransactionCall.sendTx(chain, RPCUtil.encode(tx.serialize()))) { - chain.getLogger().error("重置本链验证人列表交易发送交易模块失败\n\n"); - throw new NulsException(INTERFACE_CALL_FAILED); + try { + Transaction tx = new Transaction(TxType.RESET_LOCAL_VERIFIER_LIST); + tx.setTime(NulsDateUtils.getCurrentTimeSeconds()); + tx.setCoinData(assemblyCoinFrom(chain,address).serialize()); + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + P2PHKSignature p2PHKSignature = AccountCall.signDigest(address, password, tx.getHash().getBytes()); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + if (!TransactionCall.sendTx(chain, RPCUtil.encode(tx.serialize()))) { + chain.getLogger().error("重置本链验证人列表交易发送交易模块失败\n\n"); + throw new NulsException(INTERFACE_CALL_FAILED); + } + Map result = new HashMap<>(2); + result.put(TX_HASH, tx.getHash().toHex()); + return Result.getSuccess(SUCCESS).setData(result); + }catch (NulsException e){ + chain.getLogger().error("创建重置本链验证人列表交易时捕获异常",e); + return Result.getFailed(e.getErrorCode()); + }catch (Throwable e){ + chain.getLogger().error("创建重置本链验证人列表交易时捕获到未知异常,{}",e.getMessage(),e); + return Result.getFailed(CommonCodeConstanst.SYS_UNKOWN_EXCEPTION); } - Map result = new HashMap<>(2); - result.put(TX_HASH, tx.getHash().toHex()); - return Result.getSuccess(SUCCESS).setData(result); + } /** @@ -163,15 +174,15 @@ public Map validate(int chainId, List txs, BlockHea byte[] txHashByte = tx.getHash().getBytes(); //只能有一个签名 if (transactionSignature.getP2PHKSignatures().size() != 1) { - chain.getLogger().error("Signature verification failed"); - throw new NulsException(new Exception("Transaction signature error !")); + chain.getLogger().error("signatures can not be null"); + throw new NulsException(NulsCrossChainErrorCode.SIGNATURE_ERROR); } //验证签名 P2PHKSignature signature = transactionSignature.getP2PHKSignatures().get(0); if (!ECKey.verify(txHashByte, signature.getSignData().getSignBytes(), signature.getPublicKey())) { chain.getLogger().error("Signature verification failed"); - throw new NulsException(new Exception("Transaction signature error !")); + throw new NulsException(NulsCrossChainErrorCode.SIGNATURE_ERROR); } //签名必须是种子节点 String signAddress = AddressTool.getStringAddressByBytes(AddressTool.getAddress(signature.getPublicKey(), chain.getChainId())); @@ -215,7 +226,7 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea LocalVerifierPO localVerifierPO = new LocalVerifierPO(); localVerifierPO.setVerifierList(new ArrayList<>(allAgentPackingAddress)); localVerifierService.save(localVerifierPO,chainId); - chain.getLogger().info("重置本链验证人列表完成"); + chain.getLogger().info("重置本链验证人列表完成:{}",localVerifierService.get(chainId)); return true; } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/manager/ChainManager.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/manager/ChainManager.java index 69d8646d03..e685d39f6e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/manager/ChainManager.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/manager/ChainManager.java @@ -23,6 +23,8 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import static io.nuls.crosschain.nuls.constant.NulsCrossChainConstant.DB_NAME_OLD_LOCAL_VERIFIER; + /** * 链管理类,负责各条链的初始化,运行,启动,参数维护等 * Chain management class, responsible for the initialization, operation, start-up, parameter maintenance of each chain, etc. @@ -261,6 +263,12 @@ private void initTable(Chain chain) { value:List */ RocksDBService.createTable(NulsCrossChainConstant.DB_NAME_CROSS_CHANGE_FAILED+ chainId); + + /* + 使用重置本链验证人列表交易重置本链验证人后,将改变前的验证人列表存在此表中 + */ + RocksDBService.createTable(DB_NAME_OLD_LOCAL_VERIFIER + chainId); + } catch (Exception e) { LoggerUtil.commonLog.error(e.getMessage()); } From 447cf231864e2d17acefb762de98e3a744494845 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 11:55:40 +0800 Subject: [PATCH 187/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=88=97=E8=A1=A8=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/tx/v1/ResetLocalVerifierProcessor.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java index 9bf4503c5a..e8f1d2d937 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java @@ -1,5 +1,6 @@ package io.nuls.crosschain.base.tx.v1; +import com.google.common.collect.Maps; import io.nuls.base.data.BlockHeader; import io.nuls.base.data.Transaction; import io.nuls.base.protocol.TransactionProcessor; @@ -8,6 +9,7 @@ import io.nuls.core.core.annotation.Component; import io.nuls.crosschain.base.service.ResetLocalVerifierService; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,17 +31,23 @@ public int getType() { @Override public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { - return resetLocalVerifierService.validate(chainId,txs,blockHeader); + if (txs.isEmpty()) { + Map result = Maps.newHashMap(); + result.put("txList", txs); + result.put("errorCode", null); + return result; + } + return resetLocalVerifierService.validate(chainId, txs, blockHeader); } @Override public boolean commit(int chainId, List txs, BlockHeader blockHeader) { - return resetLocalVerifierService.commitTx(chainId,txs,blockHeader); + return resetLocalVerifierService.commitTx(chainId, txs, blockHeader); } @Override public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { - return resetLocalVerifierService.rollbackTx(chainId,txs,blockHeader); + return resetLocalVerifierService.rollbackTx(chainId, txs, blockHeader); } } From f018949029355901ba89a46a52f82b26b5371edb Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 14:34:51 +0800 Subject: [PATCH 188/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=88=97=E8=A1=A8=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/tx/v1/ResetLocalVerifierProcessor.java | 6 ++++++ .../io/nuls/crosschain/nuls/utils/MessageUtil.java | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java index e8f1d2d937..9701531868 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetLocalVerifierProcessor.java @@ -42,11 +42,17 @@ public Map validate(int chainId, List txs, Map txs, BlockHeader blockHeader) { + if(txs.isEmpty()){ + return true; + } return resetLocalVerifierService.commitTx(chainId, txs, blockHeader); } @Override public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + if(txs.isEmpty()){ + return true; + } return resetLocalVerifierService.rollbackTx(chainId, txs, blockHeader); } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index 8a501f2319..0be40e56a0 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -300,6 +300,16 @@ private static boolean crossTransferLocalByzantine(Chain chain, Transaction ctx, ctxStatusService.save(realHash, ctxStatusPO, chain.getChainId()); saveCtxSendHeight(chain, broadHeight, ctx); chain.getLogger().info("跨链交易拜占庭完成,放入待打包队列,等待广播,Hash:{},sendHeight:{},txType:{}",ctx.getHash().toHex(), broadHeight, ctx.getType()); + //饱和签名数,在最低签名数的基础上上浮30% +// int fullByzantineCount = byzantineCount + (int)(byzantineCount * .3); + int fullByzantineCount = byzantineCount + 2; + if(signCount >= fullByzantineCount){ + chain.getLogger().info("跨链交易签名数达到饱和签名数:{},ctx设置为CONFIRMED状态,本节点不再处理此交易",signCount); + ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); + }else{ + chain.getLogger().debug("跨链交易签名数达到最低签名数:{},但为达到饱和签名数:{},本节点将继续处理此交易",signCount,fullByzantineCount); + } + ctxStatusService.save(realHash, ctxStatusPO, chain.getChainId()); return true; } else { signature.getP2PHKSignatures().addAll(misMatchSignList); From 570775710e67c8cab245695721e700c4be98af52 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 15:13:53 +0800 Subject: [PATCH 189/304] =?UTF-8?q?=E6=99=AE=E9=80=9A=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=A5=B1=E5=92=8C=E7=AD=BE=E5=90=8D=E6=95=B0?= =?UTF-8?q?=E5=9C=A8=E6=9C=80=E5=B0=91=E7=AD=BE=E5=90=8D=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=8A=E4=B8=8A=E6=B5=AE30%=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index 0be40e56a0..6e7638556e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -296,13 +296,10 @@ private static boolean crossTransferLocalByzantine(Chain chain, Transaction ctx, signCount = signature.getSignersCount(); if (signCount >= byzantineCount) { ctx.setTransactionSignature(signature.serialize()); - ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); - ctxStatusService.save(realHash, ctxStatusPO, chain.getChainId()); saveCtxSendHeight(chain, broadHeight, ctx); chain.getLogger().info("跨链交易拜占庭完成,放入待打包队列,等待广播,Hash:{},sendHeight:{},txType:{}",ctx.getHash().toHex(), broadHeight, ctx.getType()); //饱和签名数,在最低签名数的基础上上浮30% -// int fullByzantineCount = byzantineCount + (int)(byzantineCount * .3); - int fullByzantineCount = byzantineCount + 2; + int fullByzantineCount = byzantineCount + (int)((agentCount - byzantineCount) * .3); if(signCount >= fullByzantineCount){ chain.getLogger().info("跨链交易签名数达到饱和签名数:{},ctx设置为CONFIRMED状态,本节点不再处理此交易",signCount); ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); From 615d12e767566dd55350dd96bac5809e4197760e Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Tue, 24 Nov 2020 15:50:08 +0800 Subject: [PATCH 190/304] =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=AA=8C=E8=AF=81=E4=B8=AD=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9=E8=8E=B7=E5=8F=96=E4=BA=A4=E6=98=93?= =?UTF-8?q?size=E6=97=B6,=20=E5=8E=BB=E6=8E=89=E4=BA=A4=E6=98=93=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E7=9A=84size=EF=BC=88=E9=92=88=E5=AF=B9=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=BA=A4=E6=98=93=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/transaction/service/impl/TxServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 36489cfaf9..f463cff981 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -305,14 +305,20 @@ public void baseValidateTx(Chain chain, Transaction tx, TxRegister txRegister) t //验证签名 validateTxSignature(tx, txRegister, chain); //如果有coinData, 则进行验证,有一些交易(黄牌)没有coinData数据 - if (tx.getType() == TxType.YELLOW_PUNISH || tx.getType() == TxType.VERIFIER_CHANGE || tx.getType() == TxType.VERIFIER_INIT || tx.getType() == TxType.REGISTERED_CHAIN_CHANGE) { + int txType = tx.getType(); + if (txType == TxType.YELLOW_PUNISH + || txType == TxType.VERIFIER_CHANGE + || txType == TxType.VERIFIER_INIT + || txType == TxType.REGISTERED_CHAIN_CHANGE) { return; } CoinData coinData = TxUtil.getCoinData(tx); validateCoinFromBase(chain, txRegister, coinData.getFrom()); validateCoinToBase(chain, txRegister, coinData.getTo()); if (txRegister.getVerifyFee()) { - validateFee(chain, tx.getType(), tx.size(), coinData, txRegister); + /* 2020/11/24 基础验证中验证手续费获取交易size时, 去掉交易签名的size */ + int validateTxSize = tx.size() - SerializeUtils.sizeOfBytes(tx.getTransactionSignature()); + validateFee(chain, tx.getType(), validateTxSize, coinData, txRegister); } } From 2fee4c31ed61a0cd023b9b645721dff59a355d02 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 16:21:12 +0800 Subject: [PATCH 191/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=90=8E=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E7=AC=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E7=BD=AE=E5=B9=B3=E8=A1=8C=E9=93=BE?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=B8=BB=E9=93=BE=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/servive/impl/MainNetServiceImpl.java | 1 - .../impl/ResetLocalVerifierServiceImpl.java | 39 +++++++++--- .../crosschain/nuls/utils/MessageUtil.java | 59 +++++++++++++++-- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 63 +++++++++++++++++++ .../ResetOtherChainVerifierListHandler.java | 30 +++++++++ 5 files changed, 175 insertions(+), 17 deletions(-) create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/ResetOtherChainVerifierListHandler.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java index cd6d296200..9fd876f822 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/MainNetServiceImpl.java @@ -108,7 +108,6 @@ public Result registerCrossChain(Map params) { if(registeredChainMessage.haveOtherChain(chainInfo.getChainId(), chain.getChainId())){ chain.getLogger().info("将新注册的链信息广播给已注册的链"); chain.getCrossTxThreadPool().execute(new CrossTxHandler(chain, TxUtil.createCrossChainChangeTx(chainInfo,chainInfo.getRegisterTime(),chainInfo.getChainId(), ChainInfoChangeType.NEW_REGISTER_CHAIN.getType()),syncStatus)); - } } catch (IOException e) { chain.getLogger().error(e); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 7c5f9434ab..c24eab8275 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -23,13 +23,14 @@ import io.nuls.crosschain.nuls.constant.NulsCrossChainErrorCode; import io.nuls.crosschain.nuls.model.bo.Chain; import io.nuls.crosschain.nuls.model.po.LocalVerifierPO; -import io.nuls.crosschain.nuls.rpc.call.AccountCall; -import io.nuls.crosschain.nuls.rpc.call.ConsensusCall; -import io.nuls.crosschain.nuls.rpc.call.LedgerCall; -import io.nuls.crosschain.nuls.rpc.call.TransactionCall; +import io.nuls.crosschain.nuls.rpc.call.*; import io.nuls.crosschain.nuls.srorage.LocalVerifierService; +import io.nuls.crosschain.nuls.utils.TxUtil; import io.nuls.crosschain.nuls.utils.manager.ChainManager; import io.nuls.crosschain.nuls.utils.manager.CoinDataManager; +import io.nuls.crosschain.nuls.utils.manager.LocalVerifierManager; +import io.nuls.crosschain.nuls.utils.thread.CrossTxHandler; +import io.nuls.crosschain.nuls.utils.thread.ResetOtherChainVerifierListHandler; import java.io.IOException; import java.math.BigInteger; @@ -63,8 +64,10 @@ public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService @Autowired LocalVerifierService localVerifierService; + @Autowired + LocalVerifierManager localVerifierManager; + private CoinData assemblyCoinFrom(Chain chain, String addressStr) throws NulsException { - List coinFroms = new ArrayList<>(); byte[] address = AddressTool.getAddress(addressStr); if (!AddressTool.validAddress(chain.getChainId(), addressStr)) { //转账交易转出地址必须是本链地址 @@ -220,13 +223,29 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea Set allAgentPackingAddress = new HashSet<>(ConsensusCall.getWorkAgentList(chain)); allAgentPackingAddress.addAll(nulsCrossChainConfig.getSeedNodeList()); chain.getLogger().info("获取到当前网络最新的出块地址列表(包括种子节点):{}",allAgentPackingAddress); - //备份当前本链验证人列表 localVerifierService.backup(chainId,blockHeader.getHeight()); - LocalVerifierPO localVerifierPO = new LocalVerifierPO(); - localVerifierPO.setVerifierList(new ArrayList<>(allAgentPackingAddress)); - localVerifierService.save(localVerifierPO,chainId); - chain.getLogger().info("重置本链验证人列表完成:{}",localVerifierService.get(chainId)); + chain.getSwitchVerifierLock().writeLock().lock(); + try{ + boolean res = LocalVerifierManager.initLocalVerifier(chain,new ArrayList<>(allAgentPackingAddress)); + if(!res){ + chain.getLogger().error("重置本链验证人列表失败"); + return false; + } + }finally { + chain.getSwitchVerifierLock().writeLock().unlock(); + } + chain.getLogger().info("重置本链验证人列表完成:{}",chain.getVerifierList()); + int syncStatus = BlockCall.getBlockStatus(chain); + try { + //组装一个重置平行链存储的主网验证人列表的交易 + Transaction initOtherVeriferTx = TxUtil.createVerifierInitTx(chain.getVerifierList(), NulsDateUtils.getNanoTime(), chainId); + chain.getCrossTxThreadPool().execute( + new ResetOtherChainVerifierListHandler(chain, initOtherVeriferTx,syncStatus)); + chain.getLogger().info("发起一笔重置平行链存储的主链验证人列表的交易,txHash:{}",initOtherVeriferTx.getHash().toHex()); + } catch (IOException e) { + e.printStackTrace(); + } return true; } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index 6e7638556e..a9f72af8cd 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -190,9 +190,14 @@ public static void signByzantine(Chain chain, int chainId, NulsHash realHash, Tr * @param packAddressList 验证账户列表 * @return 拜占庭验证是否通过 */ - public static boolean signByzantineInChain(Chain chain, Transaction ctx, TransactionSignature signature, List packAddressList, NulsHash realHash) throws NulsException, IOException { + public static boolean signByzantineInChain( + Chain chain, + Transaction ctx, + TransactionSignature signature, + List packAddressList, + NulsHash realHash) throws NulsException, IOException { if (ctx.getType() == TxType.VERIFIER_INIT) { - return verifierInitLocalByzantine(chain, ctx, signature, packAddressList, realHash); + return verifierInitLocalByzantine(chain, ctx, signature, packAddressList, realHash,0F); } else if (ctx.getType() == TxType.VERIFIER_CHANGE) { return verifierChangeLocalByzantine(chain, ctx, signature, realHash); } else { @@ -200,7 +205,26 @@ public static boolean signByzantineInChain(Chain chain, Transaction ctx, Transac } } - private static boolean verifierInitLocalByzantine(Chain chain, Transaction ctx, TransactionSignature signature, List packAddressList, NulsHash realHash) throws IOException { + /** + * 验证人初始化交易本地拜占庭签名 + * @param chain + * @param ctx + * @param signature + * @param packAddressList + * @param realHash + * @param signCountOverflow 饱和签名上浮的幅度 0.3 在达到最低签名数后再上浮数量(上浮数量等于 总签名数减去最低签名数后的百分比) + * 示例: 总签名数100,最低签名数60,上浮 0.3 就等于 (100 - 60)* 0.3 = 12 ,则饱和签名数为 72. + * 当签名数达到60后,就会想其他链广播交易,当签名数达到72后,停止处理签名。 + * @return + * @throws IOException + */ + public static boolean verifierInitLocalByzantine( + Chain chain, + Transaction ctx, + TransactionSignature signature, + List packAddressList, + NulsHash realHash, + Float signCountOverflow) throws IOException { List handleAddressList = new ArrayList<>(packAddressList); int agentCount = handleAddressList.size(); //交易签名拜占庭 @@ -217,10 +241,19 @@ private static boolean verifierInitLocalByzantine(Chain chain, Transaction ctx, if (chainManager.getChainHeaderMap().get(chain.getChainId()) != null) { sendHeight = chainManager.getChainHeaderMap().get(chain.getChainId()).getHeight(); } - ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); - ctxStatusService.save(realHash, ctxStatusPO, chain.getChainId()); saveCtxSendHeight(chain, sendHeight, ctx); chain.getLogger().info("初始化验证人交易签名拜占庭验证通过,保存验证人变更高度等待广播,Hash{},广播高度{}", ctx.getHash().toHex(), sendHeight); + if(signCountOverflow == null){ + signCountOverflow = 0F; + } + int fullByzantineCount = byzantineCount + (int)((agentCount - byzantineCount) * signCountOverflow); + if(signCount >= fullByzantineCount){ + chain.getLogger().info("初始化验证人交易签名数达到饱和签名数:{},ctx设置为CONFIRMED状态,本节点不再处理此交易",signCount); + ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); + }else{ + chain.getLogger().debug("初始化验证人交易签名数达到最低签名数:{},但为达到饱和签名数:{},本节点将继续处理此交易",signCount,fullByzantineCount); + } + ctxStatusService.save(realHash, ctxStatusPO, chain.getChainId()); return true; } else { signature.getP2PHKSignatures().addAll(misMatchSignList); @@ -273,7 +306,21 @@ private static boolean verifierChangeLocalByzantine(Chain chain, Transaction ctx return false; } - private static boolean crossTransferLocalByzantine(Chain chain, Transaction ctx, TransactionSignature signature, NulsHash realHash) throws NulsException, IOException { + /** + * 跨链交易 + * @param chain + * @param ctx + * @param signature + * @param realHash + * @return + * @throws NulsException + * @throws IOException + */ + private static boolean crossTransferLocalByzantine( + Chain chain, + Transaction ctx, + TransactionSignature signature, + NulsHash realHash) throws NulsException, IOException { List handleAddressList; long broadHeight = chainManager.getChainHeaderMap().get(chain.getChainId()).getHeight(); try { diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 3c7ed9a80d..9a03773fc1 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -277,6 +277,69 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { } } + + /** + * 重置平行链存储的主链验证人列表 + * Cross-Chain Transaction Processing + */ + @SuppressWarnings("unchecked") + public static void handleResetOtherVerifierListCtx(Transaction ctx, Chain chain) { + int chainId = chain.getChainId(); + NulsHash hash = ctx.getHash(); + String hashHex = hash.toHex(); + /* + 判断本节点是否为共识节点,如果为共识节点则签名,如果不为共识节点则广播该交易 + */ + Map packerInfo; + List verifierList = chain.getVerifierList(); + packerInfo = ConsensusCall.getPackerInfo(chain); + String password = (String) packerInfo.get(ParamConstant.PARAM_PASSWORD); + String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); + BroadCtxSignMessage message = new BroadCtxSignMessage(); + message.setLocalHash(hash); + CtxStatusPO ctxStatusPO = new CtxStatusPO(ctx, TxStatusEnum.UNCONFIRM.getStatus()); + boolean byzantinePass = false; + //验证人变更,减少的验证人不签名 + boolean sign = verifierList.contains(address); + if (sign) { + chain.getLogger().info("本节点为共识节点,对跨链交易签名,Hash:{}", hashHex); + P2PHKSignature p2PHKSignature; + try { + p2PHKSignature = AccountCall.signDigest(address, password, hash.getBytes()); + message.setSignature(p2PHKSignature.serialize()); + TransactionSignature signature = new TransactionSignature(); + List p2PHKSignatureList = new ArrayList<>(); + p2PHKSignatureList.add(p2PHKSignature); + signature.setP2PHKSignatures(p2PHKSignatureList); + ctx.setTransactionSignature(signature.serialize()); + byzantinePass = MessageUtil.verifierInitLocalByzantine(chain, ctx, signature, verifierList,hash,1F); + } catch (Exception e) { + chain.getLogger().error(e); + chain.getLogger().error("签名错误!,hash:{}", hashHex); + return; + } + if (!chain.getWaitBroadSignMap().keySet().contains(hash)) { + chain.getWaitBroadSignMap().put(hash, new HashSet<>()); + } + /* + 保存并广播该交易 + */ + chain.getWaitBroadSignMap().get(hash).add(new WaitBroadSignMessage(null, message)); + }else{ + chain.getLogger().debug("本节点不是共识节点,不对交易此交易进行签名,Hash:{}",hashHex); + ctxStatusService.save(hash, ctxStatusPO, chainId); + } + if (byzantinePass) { + chain.getFutureMessageMap().remove(hash); + } else { + if (chain.getFutureMessageMap().containsKey(hash)) { + chain.getSignMessageByzantineQueue().addAll(chain.getFutureMessageMap().remove(hash)); + } + } + MessageUtil.broadcastCtx(chain, hash, chainId, hashHex); + } + + /** * 跨链交易处理 * Cross-Chain Transaction Processing diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/ResetOtherChainVerifierListHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/ResetOtherChainVerifierListHandler.java new file mode 100644 index 0000000000..f5fbf77974 --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/thread/ResetOtherChainVerifierListHandler.java @@ -0,0 +1,30 @@ +package io.nuls.crosschain.nuls.utils.thread; + +import io.nuls.base.data.Transaction; +import io.nuls.core.constant.TxType; +import io.nuls.crosschain.nuls.model.bo.Chain; +import io.nuls.crosschain.nuls.utils.TxUtil; + +/** + * 重置平行链上存储的主链验证人列表 + */ +public class ResetOtherChainVerifierListHandler implements Runnable { + private Chain chain; + private Transaction transaction; + private int syncStatus; + + public ResetOtherChainVerifierListHandler(Chain chain, Transaction transaction, int syncStatus){ + this.chain = chain; + this.transaction = transaction; + this.syncStatus = syncStatus; + } + + @Override + public void run() { + if(syncStatus == 0){ + TxUtil.signAndBroad(chain, transaction); + return; + } + TxUtil.handleResetOtherVerifierListCtx(transaction,chain); + } +} From 51230a93cf18c23d3f29c5f9b28ede84978251e2 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 17:25:10 +0800 Subject: [PATCH 192/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=90=8E=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E7=AC=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E7=BD=AE=E5=B9=B3=E8=A1=8C=E9=93=BE?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=B8=BB=E9=93=BE=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ResetLocalVerifierService.java | 13 ++++++ .../impl/ResetLocalVerifierServiceImpl.java | 28 +++++++++--- .../crosschain/nuls/utils/MessageUtil.java | 44 +++++++++++++++++-- 3 files changed, 75 insertions(+), 10 deletions(-) diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java index 3eda73425c..8364b8cdc3 100644 --- a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetLocalVerifierService.java @@ -54,4 +54,17 @@ public interface ResetLocalVerifierService { * */ boolean rollbackTx(int chainId, List txs, BlockHeader blockHeader); + /** + * 判断初始化验证人交易是不是用于重置平行链上的主链验证人列表 + * @param txHash + * @return + */ + boolean isResetOtherVerifierTx(String txHash); + + /** + * 重置平行链上的主链验证人交易已经完成拜占庭签名,从缓存中移除 + * @param txHash + */ + void finishResetOtherVerifierTx(String txHash); + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index c24eab8275..7761d08fcb 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -1,6 +1,5 @@ package io.nuls.crosschain.nuls.servive.impl; -import com.google.common.collect.Lists; import io.nuls.base.RPCUtil; import io.nuls.base.basic.AddressTool; import io.nuls.base.data.*; @@ -13,7 +12,6 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.ECKey; import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.util.NulsDateUtils; @@ -22,20 +20,17 @@ import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; import io.nuls.crosschain.nuls.constant.NulsCrossChainErrorCode; import io.nuls.crosschain.nuls.model.bo.Chain; -import io.nuls.crosschain.nuls.model.po.LocalVerifierPO; import io.nuls.crosschain.nuls.rpc.call.*; import io.nuls.crosschain.nuls.srorage.LocalVerifierService; import io.nuls.crosschain.nuls.utils.TxUtil; import io.nuls.crosschain.nuls.utils.manager.ChainManager; import io.nuls.crosschain.nuls.utils.manager.CoinDataManager; import io.nuls.crosschain.nuls.utils.manager.LocalVerifierManager; -import io.nuls.crosschain.nuls.utils.thread.CrossTxHandler; import io.nuls.crosschain.nuls.utils.thread.ResetOtherChainVerifierListHandler; import java.io.IOException; import java.math.BigInteger; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static io.nuls.base.basic.TransactionFeeCalculator.NORMAL_PRICE_PRE_1024_BYTES; @@ -67,6 +62,13 @@ public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService @Autowired LocalVerifierManager localVerifierManager; + /** + * 缓存重置异构链存储的主链验证人的初始化验证人交易的hash + * 用于在处理拜占庭签名时与普通的初始化验证人交易进行区别 + * 本节点处理完此交易后交易hash从此列表移除 + */ + private Set resetOtherVerifierTxList = new HashSet<>(); + private CoinData assemblyCoinFrom(Chain chain, String addressStr) throws NulsException { byte[] address = AddressTool.getAddress(addressStr); if (!AddressTool.validAddress(chain.getChainId(), addressStr)) { @@ -242,13 +244,17 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea Transaction initOtherVeriferTx = TxUtil.createVerifierInitTx(chain.getVerifierList(), NulsDateUtils.getNanoTime(), chainId); chain.getCrossTxThreadPool().execute( new ResetOtherChainVerifierListHandler(chain, initOtherVeriferTx,syncStatus)); - chain.getLogger().info("发起一笔重置平行链存储的主链验证人列表的交易,txHash:{}",initOtherVeriferTx.getHash().toHex()); + String txHash = initOtherVeriferTx.getHash().toHex(); + resetOtherVerifierTxList.add(txHash); + chain.getLogger().info("发起一笔重置平行链存储的主链验证人列表的交易,txHash:{}",txHash); } catch (IOException e) { e.printStackTrace(); } return true; } + + @Override public boolean rollbackTx(int chainId, List txs, BlockHeader blockHeader) { Chain chain = chainManager.getChainMap().get(chainId); @@ -258,4 +264,14 @@ public boolean rollbackTx(int chainId, List txs, BlockHeader blockH return localVerifierService.rollback(chainId,blockHeader.getHeight()); } + @Override + public boolean isResetOtherVerifierTx(String txHash) { + return resetOtherVerifierTxList.contains(txHash); + } + + @Override + public void finishResetOtherVerifierTx(String txHash) { + resetOtherVerifierTxList.remove(txHash); + } + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index a9f72af8cd..1d4f394e87 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -22,6 +22,7 @@ import io.nuls.crosschain.base.model.bo.ChainInfo; import io.nuls.crosschain.base.model.bo.txdata.CrossTransferData; import io.nuls.crosschain.base.model.bo.txdata.VerifierChangeData; +import io.nuls.crosschain.base.service.ResetLocalVerifierService; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; import io.nuls.crosschain.nuls.constant.ParamConstant; @@ -40,6 +41,7 @@ import io.nuls.crosschain.nuls.utils.manager.ChainManager; import java.io.IOException; +import java.sql.ResultSet; import java.util.*; /** @@ -51,6 +53,7 @@ */ @Component public class MessageUtil { + @Autowired private static ConvertHashService convertHashService; @@ -69,6 +72,9 @@ public class MessageUtil { @Autowired private static SendHeightService sendHeightService; + @Autowired + private static ResetLocalVerifierService resetLocalVerifierService; + /** * 对本链广播的交易进行处理 * @@ -171,12 +177,22 @@ public static void signByzantine(Chain chain, int chainId, NulsHash realHash, Tr signature.getP2PHKSignatures().add(p2PHKSignature); //交易签名拜占庭 List packAddressList; + //拜赞庭签名饱和度上浮值 0为不上浮 + Float signCountOverflow = 0F; if (ctx.getType() == TxType.VERIFIER_INIT) { - packAddressList = (List) ConsensusCall.getSeedNodeList(chain).get(ParamConstant.PARAM_PACK_ADDRESS_LIST); + String txHash = realHash.toHex(); + //这是一笔特殊的初始化验证人交易,用户重置平行链上存储的主网验证人列表 + if(resetLocalVerifierService.isResetOtherVerifierTx(txHash)){ + packAddressList = chain.getVerifierList(); + //1为上浮到全部 + signCountOverflow = 1F; + }else{ + packAddressList = (List) ConsensusCall.getSeedNodeList(chain).get(ParamConstant.PARAM_PACK_ADDRESS_LIST); + } } else { packAddressList = chain.getVerifierList(); } - signByzantineInChain(chain, ctx, signature, packAddressList, realHash); + signByzantineInChain(chain, ctx, signature, packAddressList, realHash,signCountOverflow); NetWorkCall.broadcast(chainId, messageBody, excludeNodes, CommandConstant.BROAD_CTX_SIGN_MESSAGE, false); chain.getLogger().info("将新收到的跨链交易签名广播给链接到的其他节点,Hash:{},签名:{}\n\n", nativeHex, signHex); } @@ -195,9 +211,10 @@ public static boolean signByzantineInChain( Transaction ctx, TransactionSignature signature, List packAddressList, - NulsHash realHash) throws NulsException, IOException { + NulsHash realHash, + Float signCountOverflow) throws NulsException, IOException{ if (ctx.getType() == TxType.VERIFIER_INIT) { - return verifierInitLocalByzantine(chain, ctx, signature, packAddressList, realHash,0F); + return verifierInitLocalByzantine(chain, ctx, signature, packAddressList, realHash,signCountOverflow); } else if (ctx.getType() == TxType.VERIFIER_CHANGE) { return verifierChangeLocalByzantine(chain, ctx, signature, realHash); } else { @@ -205,6 +222,24 @@ public static boolean signByzantineInChain( } } + /** + * 交易签名拜占庭验证 + * + * @param chain 本链信息 + * @param ctx 跨链交易 + * @param signature 签名列表 + * @param packAddressList 验证账户列表 + * @return 拜占庭验证是否通过 + */ + public static boolean signByzantineInChain( + Chain chain, + Transaction ctx, + TransactionSignature signature, + List packAddressList, + NulsHash realHash) throws NulsException, IOException { + return signByzantineInChain(chain,ctx,signature,packAddressList,realHash,0F); + } + /** * 验证人初始化交易本地拜占庭签名 * @param chain @@ -250,6 +285,7 @@ public static boolean verifierInitLocalByzantine( if(signCount >= fullByzantineCount){ chain.getLogger().info("初始化验证人交易签名数达到饱和签名数:{},ctx设置为CONFIRMED状态,本节点不再处理此交易",signCount); ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); + resetLocalVerifierService.finishResetOtherVerifierTx(realHash.toHex()); }else{ chain.getLogger().debug("初始化验证人交易签名数达到最低签名数:{},但为达到饱和签名数:{},本节点将继续处理此交易",signCount,fullByzantineCount); } From cfb03f6043253ff801c32e8fbd25cf1a522217f9 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 17:40:42 +0800 Subject: [PATCH 193/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=90=8E=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E7=AC=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E7=BD=AE=E5=B9=B3=E8=A1=8C=E9=93=BE?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=B8=BB=E9=93=BE=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/servive/impl/ResetLocalVerifierServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 7761d08fcb..1984de5138 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -222,6 +222,7 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea if (chain == null) { return false; } + Transaction tx = txs.get(0); Set allAgentPackingAddress = new HashSet<>(ConsensusCall.getWorkAgentList(chain)); allAgentPackingAddress.addAll(nulsCrossChainConfig.getSeedNodeList()); chain.getLogger().info("获取到当前网络最新的出块地址列表(包括种子节点):{}",allAgentPackingAddress); @@ -241,10 +242,10 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea int syncStatus = BlockCall.getBlockStatus(chain); try { //组装一个重置平行链存储的主网验证人列表的交易 - Transaction initOtherVeriferTx = TxUtil.createVerifierInitTx(chain.getVerifierList(), NulsDateUtils.getNanoTime(), chainId); + Transaction initOtherVerifierTx = TxUtil.createVerifierInitTx(chain.getVerifierList(), tx.getTime(), chainId); chain.getCrossTxThreadPool().execute( - new ResetOtherChainVerifierListHandler(chain, initOtherVeriferTx,syncStatus)); - String txHash = initOtherVeriferTx.getHash().toHex(); + new ResetOtherChainVerifierListHandler(chain, initOtherVerifierTx,syncStatus)); + String txHash = initOtherVerifierTx.getHash().toHex(); resetOtherVerifierTxList.add(txHash); chain.getLogger().info("发起一笔重置平行链存储的主链验证人列表的交易,txHash:{}",txHash); } catch (IOException e) { From e5ff7ba016de12dde6472f3adf23afd8375dd8bd Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 17:59:25 +0800 Subject: [PATCH 194/304] rm --- .../crosschain/nuls/model/po/CtxSignPO.java | 93 ------------------- 1 file changed, 93 deletions(-) delete mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java deleted file mode 100644 index bd3e92adf4..0000000000 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/model/po/CtxSignPO.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.crosschain.nuls.model.po; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.Transaction; -import io.nuls.core.constant.TxStatusEnum; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; - -/** - * 保存已确认交易的数据 - * - * @author: Charlie - * @date: 2019/3/12 - */ -public class CtxStatusPO extends BaseNulsData { - - private Transaction tx; - - private byte status = TxStatusEnum.UNCONFIRM.getStatus(); - - public CtxStatusPO() { - } - - public CtxStatusPO(Transaction tx, byte status) { - this.tx = tx; - this.status = status; - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.tx = byteBuffer.readTransaction(); - this.status = byteBuffer.readByte(); - - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeNulsData(tx); - stream.write(status); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfNulsData(tx); - size += 1; - return size; - } - - public Transaction getTx() { - return tx; - } - - public void setTx(Transaction tx) { - this.tx = tx; - } - - public byte getStatus() { - return status; - } - - public void setStatus(byte status) { - this.status = status; - } -} From c7c2449861fb2449a3dff95e0d65f3ff1abd0730 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 24 Nov 2020 18:22:57 +0800 Subject: [PATCH 195/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=90=8E=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E7=AC=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E7=BD=AE=E5=B9=B3=E8=A1=8C=E9=93=BE?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=B8=BB=E9=93=BE=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ResetLocalVerifierServiceImpl.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 1984de5138..05bf60d434 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -1,5 +1,6 @@ package io.nuls.crosschain.nuls.servive.impl; +import com.google.common.collect.Lists; import io.nuls.base.RPCUtil; import io.nuls.base.basic.AddressTool; import io.nuls.base.data.*; @@ -15,6 +16,7 @@ import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.util.NulsDateUtils; +import io.nuls.crosschain.base.model.bo.ChainInfo; import io.nuls.crosschain.base.service.ResetLocalVerifierService; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; @@ -62,6 +64,8 @@ public class ResetLocalVerifierServiceImpl implements ResetLocalVerifierService @Autowired LocalVerifierManager localVerifierManager; + + /** * 缓存重置异构链存储的主链验证人的初始化验证人交易的hash * 用于在处理拜占庭签名时与普通的初始化验证人交易进行区别 @@ -240,17 +244,26 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea } chain.getLogger().info("重置本链验证人列表完成:{}",chain.getVerifierList()); int syncStatus = BlockCall.getBlockStatus(chain); - try { - //组装一个重置平行链存储的主网验证人列表的交易 - Transaction initOtherVerifierTx = TxUtil.createVerifierInitTx(chain.getVerifierList(), tx.getTime(), chainId); + List otherChainInfoList = chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() != chainId).collect(Collectors.toList()); ; + List newTxList = Lists.newArrayList(); + otherChainInfoList.forEach(chainInfo -> { + try { + //组装一个重置平行链存储的主网验证人列表的交易 + newTxList.add(TxUtil.createVerifierInitTx(chain.getVerifierList(), chainInfo.getRegisterTime(), chainInfo.getChainId())); + } catch (IOException e) { + chain.getLogger().error("组装重置平行链存储的主网验证人列表的交易失败",e); + } + }); + if(otherChainInfoList.size() != newTxList.size()){ + return false; + } + newTxList.forEach(initOtherVerifierTx->{ chain.getCrossTxThreadPool().execute( new ResetOtherChainVerifierListHandler(chain, initOtherVerifierTx,syncStatus)); String txHash = initOtherVerifierTx.getHash().toHex(); resetOtherVerifierTxList.add(txHash); chain.getLogger().info("发起一笔重置平行链存储的主链验证人列表的交易,txHash:{}",txHash); - } catch (IOException e) { - e.printStackTrace(); - } + }); return true; } From 0af6c976a794de0ca45dc1cfecc75e962f4de726 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 25 Nov 2020 15:52:09 +0800 Subject: [PATCH 196/304] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=9C=AC=E9=93=BE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E5=90=8E=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E7=AC=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=AA=8C=E8=AF=81=E4=BA=BA?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=87=8D=E7=BD=AE=E5=B9=B3=E8=A1=8C=E9=93=BE?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=B8=BB=E9=93=BE=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/servive/impl/ResetLocalVerifierServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 05bf60d434..b3afd0c11a 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -249,7 +249,7 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea otherChainInfoList.forEach(chainInfo -> { try { //组装一个重置平行链存储的主网验证人列表的交易 - newTxList.add(TxUtil.createVerifierInitTx(chain.getVerifierList(), chainInfo.getRegisterTime(), chainInfo.getChainId())); + newTxList.add(TxUtil.createVerifierInitTx(chain.getVerifierList(), tx.getTime(), chainInfo.getChainId())); } catch (IOException e) { chain.getLogger().error("组装重置平行链存储的主网验证人列表的交易失败",e); } From c0e004afc6d5802e3580ea52ed9f8a9ef84ffd37 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 25 Nov 2020 17:18:42 +0800 Subject: [PATCH 197/304] =?UTF-8?q?=E6=99=AE=E9=80=9A=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=A5=B1=E5=92=8C=E7=AD=BE=E5=90=8D=E6=95=B0?= =?UTF-8?q?=E5=9C=A8=E6=9C=80=E5=B0=91=E7=AD=BE=E5=90=8D=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=8A=E4=B8=8A=E6=B5=AE30%=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/servive/impl/ResetLocalVerifierServiceImpl.java | 2 +- .../java/io/nuls/crosschain/nuls/utils/MessageUtil.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index b3afd0c11a..60db0b5767 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -213,7 +213,7 @@ public Map validate(int chainId, List txs, BlockHea /** * 1.将当前的本链验证人列表存储在old_local_verifier表中 key为高度 * 2.从共识模块获取最新的节点列表,将出块地址刷新到本链验证人列表中。 - * 3.组装一个平行链验证人初始化交易广播到平行链 + * 3.组装一个平行链验证人初始化交易广播到平行链,所有注册的平行链都要广播。 * * @param chainId chain ID * @param txs cross chain transaction list diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index 1d4f394e87..e95253b233 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -15,6 +15,7 @@ import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.model.BigIntegerUtils; import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.constant.CrossChainConstant; import io.nuls.crosschain.base.message.BroadCtxSignMessage; @@ -382,7 +383,11 @@ private static boolean crossTransferLocalByzantine( saveCtxSendHeight(chain, broadHeight, ctx); chain.getLogger().info("跨链交易拜占庭完成,放入待打包队列,等待广播,Hash:{},sendHeight:{},txType:{}",ctx.getHash().toHex(), broadHeight, ctx.getType()); //饱和签名数,在最低签名数的基础上上浮30% - int fullByzantineCount = byzantineCount + (int)((agentCount - byzantineCount) * .3); + float overflow = (agentCount - byzantineCount) * .3F; + int fullByzantineCount = byzantineCount + (int)(Math.ceil(overflow)); + if(fullByzantineCount > agentCount){ + fullByzantineCount = agentCount; + } if(signCount >= fullByzantineCount){ chain.getLogger().info("跨链交易签名数达到饱和签名数:{},ctx设置为CONFIRMED状态,本节点不再处理此交易",signCount); ctxStatusPO.setStatus(TxStatusEnum.CONFIRMED.getStatus()); @@ -715,4 +720,5 @@ public static synchronized void saveCtxSendHeight(Chain chain, long sendHeight, } sendHeightService.save(sendHeight, sendCtxHashPo, chain.getChainId()); } + } From 2ccb9328f95484c0125e54b3c19042f0068bb894 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 26 Nov 2020 14:12:31 +0800 Subject: [PATCH 198/304] =?UTF-8?q?=E6=99=AE=E9=80=9A=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=A5=B1=E5=92=8C=E7=AD=BE=E5=90=8D=E6=95=B0?= =?UTF-8?q?=E5=9C=A8=E6=9C=80=E5=B0=91=E7=AD=BE=E5=90=8D=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=8A=E4=B8=8A=E6=B5=AE5%=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servive/impl/NulsProtocolServiceImpl.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java index 233018cb0a..3b302ec79f 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java @@ -3,26 +3,31 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.base.signture.TransactionSignature; import io.nuls.core.constant.TxStatusEnum; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.message.*; import io.nuls.crosschain.base.model.bo.Circulation; import io.nuls.crosschain.base.service.ProtocolService; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; import io.nuls.crosschain.nuls.constant.NulsCrossChainConstant; +import io.nuls.crosschain.nuls.constant.ParamConstant; import io.nuls.crosschain.nuls.model.bo.Chain; import io.nuls.crosschain.nuls.model.bo.CtxStateEnum; import io.nuls.crosschain.nuls.model.bo.message.UntreatedMessage; import io.nuls.crosschain.nuls.model.bo.message.WaitBroadSignMessage; import io.nuls.crosschain.nuls.model.po.CtxStatusPO; +import io.nuls.crosschain.nuls.rpc.call.ConsensusCall; import io.nuls.crosschain.nuls.rpc.call.LedgerCall; import io.nuls.crosschain.nuls.rpc.call.NetWorkCall; import io.nuls.crosschain.nuls.srorage.*; +import io.nuls.crosschain.nuls.utils.CommonUtil; import io.nuls.crosschain.nuls.utils.TxUtil; import io.nuls.crosschain.nuls.utils.manager.ChainManager; @@ -212,9 +217,20 @@ public void getOtherCtx(int chainId, String nodeId, GetOtherCtxMessage messageBo chain.getLogger().error("交易不存在,hash:{}",nativeHex); return; } - if(ctxStatusPO.getStatus() != TxStatusEnum.CONFIRMED.getStatus()){ - chain.getLogger().info("The cross chain transaction obtained has not been confirmed at this node,hash:{}",nativeHex); - return; + if (ctxStatusPO.getTx().getType() != TxType.VERIFIER_INIT) { + List packAddressList = chain.getVerifierList(); + int byzantineCount = CommonUtil.getByzantineCount(chain, packAddressList.size()); + TransactionSignature transactionSignature = new TransactionSignature(); + try { + transactionSignature.parse(ctxStatusPO.getTx().getTransactionSignature(),0); + } catch (NulsException e) { + Log.error("解析交易签名失败"); + return; + } + if(transactionSignature.getP2PHKSignatures().size() < byzantineCount){ + chain.getLogger().info("The cross chain transaction obtained has not been confirmed at this node,hash:{}",nativeHex); + return; + } } Transaction localCtx = ctxStatusPO.getTx(); /* From 1409d32e8e461871dc5801367d4fac2059963306 Mon Sep 17 00:00:00 2001 From: vv <251556768@qq.com> Date: Sat, 28 Nov 2020 09:43:53 +0800 Subject: [PATCH 199/304] update MongoAccountServiceImpl change AddressLIst --- .../java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index 733b2b1784..5749b8d440 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -20,10 +20,7 @@ import org.checkerframework.checker.units.qual.A; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import static io.nuls.api.constant.DBTableConstant.*; @@ -33,7 +30,7 @@ public class MongoAccountServiceImpl implements AccountService { @Autowired private MongoDBService mongoDBService; - private List addressList = new LinkedList<>(); + private static List addressList = Collections.synchronizedList(new ArrayList<>()); public static int cacheSize = 5000; From c71034ea18c674e161781420702e89db919a4a7c Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 28 Nov 2020 15:12:53 +0800 Subject: [PATCH 200/304] =?UTF-8?q?=E6=89=93=E5=BC=80=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/jsonrpc/controller/TransactionController.java | 6 +++--- .../io/nuls/api/rpc/controller/TransactionController.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 1780bb0988..d44604bede 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -204,9 +204,9 @@ public RpcResult broadcastTx(List params) { return RpcResult.dataNotFound(); } int type = extractTxTypeFromTx(txHex); - if(type == CROSS_CHAIN){ - return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); - } + // if(type == CROSS_CHAIN){ + // return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + // } Result result = new Result(); switch (type) { case CREATE_CONTRACT: diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java index d38cd70333..b905ef959b 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java @@ -482,9 +482,9 @@ public RpcResult sendCrossTx(List params) { if (!ApiContext.isReady) { return RpcResult.chainNotReady(); } - if(true){ - return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); - } + //if(true){ + // return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + //} VerifyUtils.verifyParams(params, 2); int chainId; String txHex; From e37d0ee7c02a13851f6615c17a2032a3bcb5387a Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 30 Nov 2020 13:39:13 +0800 Subject: [PATCH 201/304] update config --- module.ncf | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/module.ncf b/module.ncf index 6b47581744..15ec586188 100644 --- a/module.ncf +++ b/module.ncf @@ -23,6 +23,7 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=2.7.0-a4354e9 [network] port=18001 @@ -50,7 +51,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -106,16 +107,14 @@ databasePort=27017 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 -#连接最大持续时间 -socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress= -ambassadorNodeAddress= -mappingAddress= -businessAddress= -teamAddress= -communityAddress= +developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri +ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE +mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm +businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL +teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH +communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS dependent=smart-contract,cross-chain [cross-chain] From 1e8d835b588e1a73e920f323c7ddf7970732b00e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 1 Dec 2020 13:35:51 +0800 Subject: [PATCH 202/304] gas price coding --- build/gen_languages/en.properties | 2 +- build/gen_languages/en_all.properties | 2 +- build/gen_languages/zh-CHS.properties | 2 +- .../core/rockdb/manager/RocksDBManager.java | 50 +++++++++++++++---- .../core/rockdb/service/RocksDBService.java | 3 +- .../main/resources/languages/en.properties | 2 +- .../helper/ContractTransferHandler.java | 1 - .../io/nuls/contract/util/ContractUtil.java | 6 --- .../validator/CallContractTxValidator.java | 3 +- .../main/resources/languages/en.properties | 2 +- 10 files changed, 47 insertions(+), 26 deletions(-) diff --git a/build/gen_languages/en.properties b/build/gen_languages/en.properties index 0d407d0482..b57edd1b9b 100644 --- a/build/gen_languages/en.properties +++ b/build/gen_languages/en.properties @@ -323,7 +323,7 @@ sc_0032=Insufficient token balance sc_0033=Different modules are registered with duplicate cmd sc_0034=The interface does not support non-string array return values sc_0035=Illegal operation, cannot transfer token, can't send event, can't transfer internally, can't call contract internally, can't generate new transaction -sc_0036=The value of gas limit ranges from 1 to 10,000,000 +sc_0036=The value of gas limit ranges from 25 to 10,000,000 sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. diff --git a/build/gen_languages/en_all.properties b/build/gen_languages/en_all.properties index 0d407d0482..b57edd1b9b 100644 --- a/build/gen_languages/en_all.properties +++ b/build/gen_languages/en_all.properties @@ -323,7 +323,7 @@ sc_0032=Insufficient token balance sc_0033=Different modules are registered with duplicate cmd sc_0034=The interface does not support non-string array return values sc_0035=Illegal operation, cannot transfer token, can't send event, can't transfer internally, can't call contract internally, can't generate new transaction -sc_0036=The value of gas limit ranges from 1 to 10,000,000 +sc_0036=The value of gas limit ranges from 25 to 10,000,000 sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. diff --git a/build/gen_languages/zh-CHS.properties b/build/gen_languages/zh-CHS.properties index 28182f6c24..68e00466eb 100644 --- a/build/gen_languages/zh-CHS.properties +++ b/build/gen_languages/zh-CHS.properties @@ -323,7 +323,7 @@ sc_0032=\u4EE4\u724C\u4F59\u989D\u4E0D\u8DB3 sc_0033=\u4E0D\u540C\u7684\u6A21\u5757\u6CE8\u518C\u4E86\u91CD\u590D\u7684cmd sc_0034=\u63A5\u53E3\u4E0D\u652F\u6301\u975E\u5B57\u7B26\u4E32\u6570\u7EC4\u8FD4\u56DE\u503C sc_0035=\u975E\u6CD5\u64CD\u4F5C\uFF0C\u4E0D\u80FD\u4F20\u8F93token\uFF0C\u4E0D\u80FD\u53D1\u9001\u4E8B\u4EF6\uFF0C\u4E0D\u80FD\u5185\u90E8\u8F6C\u8D26\uFF0C\u4E0D\u80FD\u5728\u5185\u90E8\u8C03\u7528\u5408\u7EA6\uFF0C\u4E0D\u80FD\u751F\u6210\u65B0\u4EA4\u6613 -sc_0036=GAS\u503C\u7684\u8303\u56F4\u662F1\u523010,000,000 +sc_0036=GAS\u503C\u7684\u8303\u56F4\u662F25\u523010,000,000 sc_0037=\u4EE3\u5E01\u7684\u94FE\u6761ID\u6216\u8D44\u4EA7ID\u9519\u8BEF\u3002 sc_0038=\u8981\u53D1\u9001\u7684\u5408\u7EA6\u901A\u8BC1\u4E0D\u4E3A\u7A7A\u3002 sc_0039=\u5408\u7EA6\u522B\u540D\u683C\u5F0F\u9519\u8BEF\u3002 diff --git a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java index fb426ddebc..3dfb358050 100644 --- a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java +++ b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java @@ -70,6 +70,10 @@ public class RocksDBManager { * @throws Exception 数据库打开连接异常 */ public static void init(final String path) throws Exception { + init(path, null); + } + + public static void init(final String path, Options options) throws Exception { synchronized (RocksDBManager.class) { File dir = DBUtils.loadDataPath(path); dataPath = dir.getPath(); @@ -84,7 +88,11 @@ public static void init(final String path) throws Exception { } try { dbPath = tableFile.getPath() + File.separator + BASE_DB_NAME; - db = initOpenDB(dbPath); + if (options == null) { + db = initOpenDB(dbPath); + } else { + db = initOpenDB(dbPath, options); + } if (db != null) { TABLES.put(tableFile.getName(), db); } @@ -97,6 +105,14 @@ public static void init(final String path) throws Exception { } + private static RocksDB initOpenDB(final String dbPath, Options options) throws RocksDBException { + File checkFile = new File(dbPath + File.separator + "CURRENT"); + if (!checkFile.exists()) { + return null; + } + return RocksDB.open(options, dbPath); + } + /** * @param dbPath 数据库地址 * @return RocksDB 数据库连接对象 @@ -112,6 +128,11 @@ private static RocksDB initOpenDB(final String dbPath) throws RocksDBException { return RocksDB.open(options, dbPath); } + private static RocksDB openDB(final String dbPath, final boolean createIfMissing, Options options) throws RocksDBException { + options.setCreateIfMissing(createIfMissing); + return RocksDB.open(options, dbPath); + } + /** * 装载数据库. * load database @@ -126,14 +147,7 @@ private static RocksDB openDB(final String dbPath, final boolean createIfMissing return RocksDB.open(options, dbPath); } - /** - * 根据名称创建对应的数据库. - * Create database based by name - * - * @param tableName 数据库表名称 - * @return Result 创建结果 - */ - public static boolean createTable(final String tableName) throws Exception { + public static boolean createTable(final String tableName, Options options) throws Exception { lock.lock(); try { if (StringUtils.isBlank(tableName)) { @@ -151,7 +165,12 @@ public static boolean createTable(final String tableName) throws Exception { dir.mkdir(); } String filePath = dataPath + File.separator + tableName + File.separator + BASE_DB_NAME; - RocksDB db = openDB(filePath, true); + RocksDB db; + if (options == null) { + db = openDB(filePath, true); + } else { + db = openDB(filePath, true, options); + } TABLES.put(tableName, db); } catch (Exception e) { Log.error("error create table: " + tableName, e); @@ -163,6 +182,17 @@ public static boolean createTable(final String tableName) throws Exception { } } + /** + * 根据名称创建对应的数据库. + * Create database based by name + * + * @param tableName 数据库表名称 + * @return Result 创建结果 + */ + public static boolean createTable(final String tableName) throws Exception { + return createTable(tableName, null); + } + /** * 根据名称获得对应的数据库对象. * Get database objects by name diff --git a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/service/RocksDBService.java b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/service/RocksDBService.java index 38dd025214..0cf85def76 100644 --- a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/service/RocksDBService.java +++ b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/service/RocksDBService.java @@ -75,8 +75,7 @@ public static boolean createTableIfNotExist(String table) throws Exception { * @return */ public static boolean existTable(String table) { - String[] tables = RocksDBManager.listTable(); - return Arrays.asList(tables).contains(table); + return RocksDBManager.getTable(table) != null; } diff --git a/module/nuls-api/src/main/resources/languages/en.properties b/module/nuls-api/src/main/resources/languages/en.properties index c0c5ec2d27..91af8f504a 100644 --- a/module/nuls-api/src/main/resources/languages/en.properties +++ b/module/nuls-api/src/main/resources/languages/en.properties @@ -254,7 +254,7 @@ sc_0032=Insufficient token balance sc_0033=Different modules registered duplicate cmd sc_0034=The type of NEW_TX does not support non-string array return values sc_0035=Illegal operation, cannot transfer token, cannot send events, cannot transfer internally, cannot call contracts internally, cannot generate new transactions -sc_0036=The value of gas limit ranges from 1 to 10,000,000 +sc_0036=The value of gas limit ranges from 25 to 10,000,000 sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java index 70e86e1345..02452e6fca 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTransferHandler.java @@ -252,7 +252,6 @@ private Result verifyTransfer(List transfers) { return getSuccess(); } for (ProgramTransfer transfer : transfers) { - //TODO pierre 多资产是否最小金额校验 if (transfer.getAssetChainId() == CHAIN_ID && transfer.getAssetId() == ASSET_ID && transfer.getValue().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { return Result.getFailed(TOO_SMALL_AMOUNT); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index c1f14c543f..c39deddf57 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -441,12 +441,6 @@ public static String argToString(String[][] args) { } public static boolean checkPrice(long price) { - if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { - if (price <= 0) { - return false; - } - return true; - } if (price < CONTRACT_MINIMUM_PRICE) { return false; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 1808899679..e0eccdf722 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -163,9 +163,8 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc Log.error("contract call error: The contract caller is not the transaction signer."); return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); } - //TODO pierre 1->25 if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { - Log.error("contract call error: The value of gas limit ranges from 1 to 10,000,000."); + Log.error("contract call error: The value of gas limit ranges from 25 to 10,000,000."); return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); } diff --git a/module/nuls-smart-contract/src/main/resources/languages/en.properties b/module/nuls-smart-contract/src/main/resources/languages/en.properties index a693b8678a..9508351667 100644 --- a/module/nuls-smart-contract/src/main/resources/languages/en.properties +++ b/module/nuls-smart-contract/src/main/resources/languages/en.properties @@ -33,7 +33,7 @@ sc_0032=Insufficient token balance sc_0033=Different modules registered duplicate cmd sc_0034=The type of NEW_TX does not support non-string array return values sc_0035=Illegal operation, cannot transfer token, cannot send events, cannot transfer internally, cannot call contracts internally, cannot generate new transactions -sc_0036=The value of gas limit ranges from 1 to 10,000,000 +sc_0036=The value of gas limit ranges from 25 to 10,000,000 sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. From 23cce1f21466d6665d03bc5453aa3e5d926ee0b9 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 1 Dec 2020 18:12:19 +0800 Subject: [PATCH 203/304] update vm class code load --- .../main/resources/languages/en.properties | 4 +- .../validator/CallContractTxValidator.java | 125 ++++++++++-------- .../java/io/nuls/contract/vm/VMFactory.java | 8 +- .../io/nuls/contract/sdk/NativeAddress.java | 6 +- .../contract/vm/program/ProgramResult.java | 1 + .../vm/program/impl/ProgramConstants.java | 19 ++- .../vm/program/impl/ProgramExecutorImpl.java | 2 +- .../main/resources/languages/en.properties | 4 +- .../src/main/resources/used_classes_sdk_v8 | Bin 9484 -> 10389 bytes .../mock/contractvm/ContractVmV8Test.java | 25 ++-- 10 files changed, 121 insertions(+), 73 deletions(-) diff --git a/module/nuls-api/src/main/resources/languages/en.properties b/module/nuls-api/src/main/resources/languages/en.properties index 91af8f504a..5b24ce7258 100644 --- a/module/nuls-api/src/main/resources/languages/en.properties +++ b/module/nuls-api/src/main/resources/languages/en.properties @@ -259,8 +259,8 @@ sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. sc_0040=Duplicate transaction of contract return gas. -sc_0041=There are too many coinTo in the contract. -sc_0042=There are too many coinFrom in the contract. +sc_0041=Illegal coinTo in the contract. +sc_0042=Illegal coinFrom in the contract. sc_0043=The contract caller is not the transaction signer. sc_0100=Insufficient balance sc_0101=Transaction fee is not right diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index e0eccdf722..a07d88722d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -42,11 +42,10 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; +import io.nuls.core.model.BigIntegerUtils; import java.math.BigInteger; -import java.util.Arrays; -import java.util.List; -import java.util.Set; +import java.util.*; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; @@ -154,10 +153,6 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc CallContractData txData = tx.getTxDataObj(); byte[] sender = txData.getSender(); - if (fromList.size() > 2) { - Log.error("contract call error: There are too many coinFrom in the contract."); - return Result.getFailed(CONTRACT_COIN_FROM_ERROR); - } Set signatureAddressSet = SignatureUtil.getAddressFromTX(tx, chainId); if (!signatureAddressSet.contains(AddressTool.getStringAddressByBytes(sender))) { Log.error("contract call error: The contract caller is not the transaction signer."); @@ -175,60 +170,86 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc return Result.getFailed(CONTRACT_ADDRESS_NOT_EXIST); } - int toSize = toList.size(); - if (toSize > 1) { - Log.error("contract call error: There are too many coinTo in the contract."); - return Result.getFailed(CONTRACT_COIN_TO_ERROR); - } - int assetChainId = 0; - int assetId = 0; - BigInteger transferValue = txData.getValue(); - BigInteger contractReceivedValue = BigInteger.ZERO; - if (toSize == 1) { - CoinTo coin = toList.get(0); - if (coin.getLockTime() != 0) { - Log.error("contract call error: Transfer amount cannot be locked."); - return Result.getFailed(AMOUNT_LOCK_ERROR); - } - byte[] owner = coin.getAddress(); - if (!Arrays.equals(owner, contractAddress)) { - Log.error("contract call error: The receiver is not the contract address."); - return Result.getFailed(CONTRACT_RECEIVER_ERROR); + Map multyAssetMap = new HashMap<>(); + Set multyAssetKeys = new HashSet<>(); + int assetChainId, assetId; + String assetKey; + BigInteger nulsValue = BigInteger.ZERO; + for(CoinFrom from : fromList) { + assetChainId = from.getAssetsChainId(); + assetId = from.getAssetsId(); + assetKey = assetChainId + "_" + assetId; + if (CHAIN_ID == assetChainId && ASSET_ID == assetId) { + nulsValue = nulsValue.add(from.getAmount()); } else { - contractReceivedValue = contractReceivedValue.add(coin.getAmount()); + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "from", BigInteger.ZERO); + multyAssetMap.put(assetKey + "from", multyAssetValue.add(from.getAmount())); } - boolean mainAsset = coin.getAssetsChainId() == CHAIN_ID && coin.getAssetsId() == ASSET_ID; - if (mainAsset && coin.getAmount().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { - Log.error("contract call error: The amount of the transfer is too small."); - return Result.getFailed(TOO_SMALL_AMOUNT); - } - assetChainId = coin.getAssetsChainId(); - assetId = coin.getAssetsId(); - - } - if (contractReceivedValue.compareTo(transferValue) < 0) { - Log.error("contract call error: Insufficient balance to transfer to the contract address."); - return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); } - boolean existSender = false; - BigInteger senderValue = BigInteger.ZERO; - for(CoinFrom from : fromList) { - if(Arrays.equals(from.getAddress(), sender)) { - existSender = true; - if (assetChainId == from.getAssetsChainId() && assetId == from.getAssetsId()) { - senderValue = senderValue.add(from.getAmount()); + int toSize = toList.size(); + BigInteger transferNulsValue = txData.getValue(); + BigInteger contractReceivedNulsValue = BigInteger.ZERO; + if (toSize > 0) { + for (CoinTo coin : toList) { + coin = toList.get(0); + if (coin.getLockTime() != 0) { + Log.error("contract call error: Transfer amount cannot be locked."); + return Result.getFailed(AMOUNT_LOCK_ERROR); + } + byte[] owner = coin.getAddress(); + if (!Arrays.equals(owner, contractAddress)) { + Log.error("contract call error: The receiver is not the contract address."); + return Result.getFailed(CONTRACT_RECEIVER_ERROR); + } + assetChainId = coin.getAssetsChainId(); + assetId = coin.getAssetsId(); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + assetKey = assetChainId + "_" + assetId; + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "to", BigInteger.ZERO); + multyAssetMap.put(assetKey + "to", multyAssetValue.add(coin.getAmount())); + continue; + } + if (coin.getAmount().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { + Log.error("contract call error: The amount of the transfer is too small."); + return Result.getFailed(TOO_SMALL_AMOUNT); } + contractReceivedNulsValue = contractReceivedNulsValue.add(coin.getAmount()); } + } - if (transferValue.compareTo(BigInteger.ZERO) > 0) { - //TODO pierre 手续费账户也能支出,向合约转资产 - if (!existSender) { - Log.error("contract call error: The contract caller is not the transaction creator."); - return Result.getFailed(CONTRACT_CALLER_ERROR); + // 其他资产校验 + BigInteger assetKeyFrom, assetKeyTo; + for (String multyAssetKey : multyAssetKeys) { + assetKeyFrom = multyAssetMap.get(multyAssetKey + "from"); + assetKeyTo = multyAssetMap.get(multyAssetKey + "to"); + if(null == assetKeyFrom){ + Log.error("contract call error: Illegal coinFrom in the contract."); + return Result.getFailed(CONTRACT_COIN_FROM_ERROR); + } + if (null == assetKeyTo) { + Log.error("contract call error: Illegal coinTo in the contract."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); } - if (senderValue.compareTo(transferValue) < 0) { + if (!BigIntegerUtils.isEqual(assetKeyFrom, assetKeyTo)) { + Log.error("contract call error: The amount of coin data is error."); + return Result.getFailed(CONTRACT_COIN_ASSETS_ERROR); + } + } + + // 主资产校验 + if (contractReceivedNulsValue.compareTo(transferNulsValue) < 0) { + Log.error("contract call error: Insufficient balance of nuls to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + + if (transferNulsValue.compareTo(BigInteger.ZERO) > 0) { + // 手续费账户也能支出,向合约转资产 + if (nulsValue.compareTo(transferNulsValue) < 0) { Log.error("contract call error: Insufficient balance to transfer to the contract address."); return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index 012d9052e4..c6f39c1547 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -26,7 +26,7 @@ import io.nuls.contract.vm.code.ClassCode; import io.nuls.contract.vm.code.ClassCodeLoader; -import org.checkerframework.checker.units.qual.C; +import io.nuls.contract.vm.program.impl.ProgramConstants; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -346,6 +346,12 @@ private static VM loadVM_v8() { classCodes.put(classCode.name, classCode); } vm.methodArea.loadClassCodes(classCodes); + + ProgramConstants.SDK_CLASS_NAMES = new String[ProgramConstants.SDK_CLASSES_V8.length]; + for (int i = 0; i < ProgramConstants.SDK_CLASSES_V8.length; i++) { + ProgramConstants.SDK_CLASS_NAMES[i] = ProgramConstants.classNameReplace(ProgramConstants.SDK_CLASSES_V8[i].getName()); + } + return vm; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index 68e60a0d8a..e626c11765 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -299,9 +299,9 @@ private static Result callWithReturnValueAndAssetInfo(MethodCode methodCode, Met } ObjectRef itemRef = (ObjectRef) item; ObjectRef value = (ObjectRef) frame.heap.getField(itemRef, "value"); - ObjectRef assetChainId = (ObjectRef) frame.heap.getField(itemRef, "assetChainId"); - ObjectRef assetId = (ObjectRef) frame.heap.getField(itemRef, "assetId"); - multyAssetValues[i] = new ProgramMultyAssetValue(frame.heap.toBigInteger(value), frame.heap.toInteger(assetChainId), frame.heap.toInteger(assetId)); + Integer assetChainId = (Integer) frame.heap.getField(itemRef, "assetChainId"); + Integer assetId = (Integer) frame.heap.getField(itemRef, "assetId"); + multyAssetValues[i] = new ProgramMultyAssetValue(frame.heap.toBigInteger(value), assetChainId, assetId); } } return call(methodCode, methodArgs, frame, true, multyAssetValues); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java index 38e926dd37..1fd667a015 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java @@ -271,6 +271,7 @@ public String toString() { ", transfers=" + transfers + ", internalCalls=" + internalCalls + ", events=" + events + + ", debugEvents=" + debugEvents + ", invokeRegisterCmds=" + invokeRegisterCmds + '}'; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java index 9a442cb350..f66deb0a81 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java @@ -26,6 +26,7 @@ import io.nuls.contract.sdk.*; import io.nuls.contract.sdk.annotation.Payable; +import io.nuls.contract.sdk.annotation.PayableMultyAsset; import io.nuls.contract.sdk.annotation.Required; import io.nuls.contract.sdk.annotation.View; import io.nuls.contract.sdk.event.DebugEvent; @@ -54,6 +55,22 @@ public class ProgramConstants { DebugEvent.class }; + public static final Class[] SDK_CLASSES_V8 = new Class[]{ + Address.class, + Block.class, + BlockHeader.class, + Contract.class, + Event.class, + Msg.class, + Utils.class, + View.class, + Required.class, + Payable.class, + DebugEvent.class, + PayableMultyAsset.class, + MultyAssetValue.class + }; + public static final Class[] CONTRACT_USED_CLASSES = new Class[]{ Boolean.class, Byte.class, @@ -92,7 +109,7 @@ public class ProgramConstants { StackOverflowError.class, }; - public static final String[] SDK_CLASS_NAMES = new String[SDK_CLASSES.length]; + public static String[] SDK_CLASS_NAMES = new String[SDK_CLASSES.length]; public static final String[] CONTRACT_USED_CLASS_NAMES = new String[CONTRACT_USED_CLASSES.length]; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index cf1b2f3c96..dbc70df708 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -767,8 +767,8 @@ private static Set getEventConstructor(Map cla method.setArgs(methodCode.args); method.setReturnArg(methodCode.returnArg); method.setView(false); - //TODO pierre payable method.setPayable(false); + method.setPayableMultyAsset(false); method.setJsonSerializable(false); method.setEvent(true); return method; diff --git a/module/nuls-smart-contract/src/main/resources/languages/en.properties b/module/nuls-smart-contract/src/main/resources/languages/en.properties index 9508351667..3d841f7def 100644 --- a/module/nuls-smart-contract/src/main/resources/languages/en.properties +++ b/module/nuls-smart-contract/src/main/resources/languages/en.properties @@ -38,8 +38,8 @@ sc_0037=The chain id or assets id of coin is error. sc_0038=The contract coin to is not empty. sc_0039=The contract alias format error. sc_0040=Duplicate transaction of contract return gas. -sc_0041=There are too many coinTo in the contract. -sc_0042=There are too many coinFrom in the contract. +sc_0041=Illegal coinTo in the contract. +sc_0042=Illegal coinFrom in the contract. sc_0043=The contract caller is not the transaction signer. sc_0100=Insufficient balance diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v8 index 608d81774d4c1996cf5c4e982e02bc076c3e82b7..e75caa269fbe332c128f8ce26290bd241dca2f59 100644 GIT binary patch delta 2827 zcmZuz2{_bS8y|)+#=gX0jIn02WM4CyF=QWPix`QqWF3^H$(n??f7!Vj%hf`PWQZt) zP$?=~mMasvmMoWB`DUi)>#Ohk&i^^j@BN?mJ?A~=ywC4FZ>HrnJdeE)&50&?rE_ z_4K;&ERr$_9)(;y02HQH09J&GHsN7$V$BQt)9_M% z3!BjaUd%-1vZ2e;PKIq*@a|nA&L|@>V5(Q-B(~(caR+VTTc$%%&iG_MEMAvP^Fy^pG zReVGsu7olk3w;AC9e9u8<{o+otDcmp2&Lk;T7^cz*>sh;f&HiKaaXKe= zDCRg0`$IxCuJ@K~eqHUP?+p0(Qe#MZTfvlW0|+ zU;mP?F22H)AMG!R`$y_xDc8B)+UU2q_}ATmRhAYkQ#5?l=@bQu_NxI^*{u@mf@caE zPFe5e#$lJ!q-fXVoXBqM<9E=Z4taTj?(GR|CDWXS*`n4Ku8s>$kdiFILa^e2s+fFB z-HTO&{tpHe;XB@UBzFjpV0+A9S)c1> z2hM=%n~J41j~ChVEs!BbIGA0ng5B|PP34Wq zoBiBHGid7v`7>g?g!JxBJVd8XKCI9=vX7|04W5FfZG|t%hJVfb)5`lELh9~KXGi6M z`hwhCRWDJ6mP?m1q0t)k*#d;_gFD$ z(>2iZ3uCRvtou4#LTS84ZlwCW4Z6SoCMw>GtM2&8qVQF~RH;4a$eCJz*sVCpb6&W` zxYF0xCPE0VAY8j1Y4pL5R^C6Op@HPjP#O&vEDkUaBJAZ`Qzz=S=aXn;s+^j=gqmfn z@7$UjI?X}NHcyePT9uH=x)nzpde(Ykb{1|TIy10ww)xzsc4?V$9p!F602aQmfo*l%c?5kkT(I3>uB8e?Houykq8<}gKv*JU#~P|mvjPTwIX<*4 z*_gj7h_AkCLP@J=g+4@)ZR`uqjyI)pzh*zvy(0j zb{ciR2V)OBRYyCo%6ao+nnu9A3z75}G=5XWi|;VJtJdYA<-3f&;f1RerOnyTXwXrz z@1I;x$_}rx-4%+w-0PA90dYy~p*Io{r(0rq<)Tt@q`NDMce&9i4U}*Le(YBAVYZ}9 zj^x@4Ir2B%IzV!>i7&2f4DVU%%eY%nzi_0CKKWuN7x9#H@nhW8Fq-;4I5#6FD8C~H ziOlK8w`Cv8j)1Pztu3g_Tn5r`&FF11+;cJEu@{DSna#CZ)+i@ksO*Dcy1YjvN0(BJ zsH3oBSTe;poyfH6rRT;RG)rsTqP zm^c78WFn_DmWg)K7R;)qSlW$=+tQ9ajLPOmW(AxPR?>_SaMvf@MLI$2>G@WP!O0&@ z0_a41_p*nOV0DE8N02C9`bLC7KS&JN%Sf=6Gc?M;I26Li*yqpc2DV`~h{OEpz9IND0BC0=Ls>xt z<0L<)8iik0YY_qnlF~q?tO)bSsJP}aZo11EdPn_Y7yxw28Zg)YDl5S{B+8toFLw|@ zzjJ27`nR?0zXc|OCFzFp|8u+-MwK)Q-N#A#)oT7S0Sk1>=_&tmSNNaft?`SsIh?T% Z)c;L<_Ezi%7{(&>kC*;jhRZPi{snhQkv0GT delta 1908 zcmY*Z30M>77M+9yF(fQuF@>;XNB9gPJBWD#34uUZ)RYQgQ3{$`Wh)I!8$b*oAf*GZ zB83v62x$QU*(o9rgcK~hwYaeOo`5K#Mr%vuCBv)lIrGhT?wtS5+?jjM{YwJ#eJ}wW zH3SL(Gyve9Ft!LoQ&WK>6@myW2rk$`Aahb{6~;Eh>JTafe?)d5lo$w(5RAbuuvoA} z-AMG0o{V&1_|euy{=tU(vz4qs-oa&DFFh}%2P*tJ?dKX(C4A|dz&=iq$vk$2G7@Mm=qJChgO?w^0*kLwkx*i z=@XVo?ZVeE&1^J&AWr;BQOC}>oNJkw>PCNSTK);b=h673@}}su8c`AVy2w)c)i|?7 z>ry+>tF55-wE02p@o0KR=`0poqxfK?@S#s-`C4@KaP-J(l;Z^Jta|6pUPfQ3@=KUIl>B@9wYyP*LIr+?W*J@C6*73ycQGYhQ$^)If%=i3x z|8Ik9uGgmb2aO;z+48Ke-5<{Ho)og|lMhaY1r>z{`i1?B`15$zj0oWshx20lT7Mq_ zT4z)}93xcy>sSB8lep=dwS|L>dflM>X)yhqQ z(+s5b0aNg&1FLTaoz86adt2efhxV<$JQKj#p~2w<+zeL(fcPB%pqg5JKtn?VP>mq) z_W`yc$>0_d32KqmTOv^~xN2~flS&7}$r!K_t)ZISmLJf37!+t~MQ;a*+KJo2W1WQU zAQBr11)xmNS=7l@v(d+U(A~}Puzrk*B*NH5CnzUNUn3jgbMVpHrGkN>yi?ZL@0jO2 zZ|ry$m=i(2K+rQh_?prOY?u;odA9QCykUmR*xfbeJ~ zm2}9(ZjyDOH6dC8iubR?@8L7332oMxfumkE8FH*hFRQNkQnth1iQ};+7fIq{qkcrw zA3t}Zd5{j1?FMdzEuG=pp1-zNd~If8&2N?yB_xF51Z1OUF{b2D*^T;{AZKvX)_))B z@RqY_{G2xTA`NCWrPn-z>42z1el-O4XT$ z+7LY<6cX9cRz5)d2tqT`A&kmT@0O$c)J~caRHS->7(9;v0C#00-~X{&hEU=$+AgSlX*6Rv0uM&uDPS)R dz5O~R#Z*!Dh5;O;x~j6i@@!B>Y*W?Ue*lNi4C(*? diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java index a7262bb5e3..82186eed31 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java @@ -34,6 +34,7 @@ import io.nuls.contract.vm.program.ProgramResult; import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.core.crypto.HexUtil; +import io.nuls.core.parse.JSONUtils; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Before; @@ -146,7 +147,8 @@ public class ContractVmV8Test extends MockBase { @Before public void createAndInit() throws Exception { // 加载协议升级的数据 - ContractContext.CHAIN_ID = 2; + ContractContext.CHAIN_ID = chainId; + ContractContext.ASSET_ID = assetId; short version = 8; ProtocolGroupManager.setLoadProtocol(false); ProtocolGroupManager.updateProtocol(chainId, version); @@ -228,7 +230,7 @@ public void test9() throws Exception { this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); } - @Test + /*@Test public void test1v2() throws Exception { this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); } @@ -266,7 +268,7 @@ public void test8v2() throws Exception { @Test public void test9v2() throws Exception { this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); - } + }*/ @Test public void test11() throws Exception { @@ -310,49 +312,49 @@ public void test19() throws Exception { @Test public void test21() throws Exception { - this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); + this.testAsset(contractA, prevStateRoot, SENDER, "test1", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); this.testAsset(contractA, prevStateRoot, SENDER, "test11", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 70, 0, 0, 0); } @Test public void test22() throws Exception { - this.testAsset(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); + this.testAsset(contractA, prevStateRoot, SENDER, "test2", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); this.testAsset(contractA, prevStateRoot, SENDER, "test12", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 70, 0, 0, 0); } @Test public void test23() throws Exception { - this.testAsset(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); + this.testAsset(contractA, prevStateRoot, SENDER, "test3", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); this.testAsset(contractA, prevStateRoot, SENDER, "test13", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 20, 10, 60, 0, 0, 10); } @Test public void test24() throws Exception { - this.testAsset(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); + this.testAsset(contractA, prevStateRoot, SENDER, "test4", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); this.testAsset(contractA, prevStateRoot, SENDER, "test14", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, SENDER}, 0, 30, 50, 0, 0, 20); } @Test public void test26() throws Exception { - this.testFailed(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test6", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); this.testFailed(contractA, prevStateRoot, SENDER, "test16", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); } @Test public void test27() throws Exception { - this.testFailed(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test7", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); this.testFailed(contractA, prevStateRoot, SENDER, "test17", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); } @Test public void test28() throws Exception { - this.testFailed(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test8", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); this.testFailed(contractA, prevStateRoot, SENDER, "test18", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); } @Test public void test29() throws Exception { - this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, true); + this.testFailed(contractA, prevStateRoot, SENDER, "test9", new String[]{}, BigDecimal.valueOf(100L), chainId, assetId, false); this.testFailed(contractA, prevStateRoot, SENDER, "test19", new String[]{}, BigDecimal.valueOf(100L), chainId, 2, true); } @@ -428,6 +430,7 @@ protected void testAsset(String contract, byte[] stateRoot, String sender, Strin programResult = (ProgramResult) objects[1]; Assert.assertTrue(String.format("测试方法[%s]expect success, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), Arrays.deepToString(programResult.getStackTraces().toArray())), programResult.isSuccess()); + Log.info(JSONUtils.obj2PrettyJson(programResult)); List transfers = programResult.getTransfers(); LinkedHashMap[] contracts = this.filterContractValue(transfers); BigInteger[][] balanceList = this.balanceList(assetChainId, assetId, contracts, addresses); From f55ff34a6c0945484de16155c715eb6f16783297 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 2 Dec 2020 10:15:43 +0800 Subject: [PATCH 204/304] update mongodb.estimatedDocumentCount() --- .../api/db/mongo/MongoAccountServiceImpl.java | 2 +- .../api/db/mongo/MongoAgentServiceImpl.java | 2 +- .../api/db/mongo/MongoBlockServiceImpl.java | 20 ++++++++++++++----- .../io/nuls/api/db/mongo/MongoDBService.java | 4 ++++ .../api/db/mongo/MongoRoundServiceImpl.java | 2 +- .../db/mongo/MongoTransactionServiceImpl.java | 2 +- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java index 5749b8d440..3c4f14f787 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java @@ -141,7 +141,7 @@ public void saveAccounts(int chainId, Map accountInfoMap) { public PageInfo pageQuery(int chainId, int pageNumber, int pageSize) { List docsList = this.mongoDBService.pageQuery(ACCOUNT_TABLE + chainId, pageNumber, pageSize); List accountInfoList = new ArrayList<>(); - long totalCount = mongoDBService.getCount(ACCOUNT_TABLE + chainId); + long totalCount = mongoDBService.getEstimateCount(ACCOUNT_TABLE + chainId); for (Document document : docsList) { accountInfoList.add(DocumentTransferTool.toInfo(document, "address", AccountInfo.class)); } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java index 74a64cbdb8..fdf140644d 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java @@ -241,7 +241,7 @@ public PageInfo getAgentList(int chainId, int type, int pageNumber, i @Override public PageInfo getAgentList(int chainId, int pageNumber, int pageSize) { - long totalCount = this.mongoDBService.getCount(AGENT_TABLE + chainId); + long totalCount = this.mongoDBService.getEstimateCount(AGENT_TABLE + chainId); List docsList = this.mongoDBService.pageQuery(AGENT_TABLE + chainId, Sorts.descending("createTime"), pageNumber, pageSize); List agentInfoList = new ArrayList<>(); for (Document document : docsList) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java index 0206dcddb7..55ca52a6b0 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java @@ -6,12 +6,10 @@ import com.mongodb.client.model.Sorts; import com.mongodb.client.model.WriteModel; import io.nuls.api.cache.ApiCache; +import io.nuls.api.db.AgentService; import io.nuls.api.db.BlockService; import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.BlockHexInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.SyncInfo; +import io.nuls.api.model.po.*; import io.nuls.api.model.po.mini.MiniBlockHeaderInfo; import io.nuls.api.utils.DocumentTransferTool; import io.nuls.core.core.annotation.Autowired; @@ -34,6 +32,8 @@ public class MongoBlockServiceImpl implements BlockService { private MongoDBService mongoDBService; @Autowired private MongoChainServiceImpl mongoChainServiceImpl; + @Autowired + AgentService agentService; public BlockHeaderInfo getBestBlockHeader(int chainId) { ApiCache apiCache = CacheManager.getCache(chainId); @@ -154,7 +154,17 @@ public PageInfo pageQuery(int chainId, int pageIndex, int p filter = Filters.and(filter, Filters.gt("txCount", 1)); } } - long totalCount = mongoDBService.getCount(BLOCK_HEADER_TABLE + chainId, filter); + long totalCount; + if(StringUtils.isNotBlank(packingAddress)){ + AgentInfo agentInfo = agentService.getAgentByPackingAddress(chainId,packingAddress); + if(agentInfo == null){ + totalCount = 0; + }else { + totalCount = agentInfo.getTotalPackingCount(); + } + }else{ + totalCount = mongoDBService.getEstimateCount(BLOCK_HEADER_TABLE + chainId); + } BasicDBObject fields = new BasicDBObject(); fields.append("_id", 1).append("createTime", 1).append("txCount", 1).append("agentHash", 1). append("agentId", 1).append("agentAlias", 1).append("size", 1).append("reward", 1); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java index 4406221fa9..701380954a 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java @@ -365,6 +365,10 @@ public long getCount(String collName) { return getCount(collName, null); } + public long getEstimateCount(String collName) { + return getCollection(collName).estimatedDocumentCount(); + } + public BulkWriteResult bulkWrite(String collName, List> modelList) { MongoCollection collection = getCollection(collName); return collection.bulkWrite(modelList); diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java index a3035d52bd..71355e6d60 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java @@ -74,7 +74,7 @@ public void removeRound(int chainId, long roundIndex) { } public long getTotalCount(int chainId) { - return this.mongoDBService.getCount(ROUND_TABLE + chainId); + return this.mongoDBService.getEstimateCount(ROUND_TABLE + chainId); } public List getRoundList(int chainId, int pageIndex, int pageSize) { diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java index 7e085c1c6a..e659c114ba 100644 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java @@ -75,7 +75,7 @@ public void initCache() { public void deleteTxs(int chainId) { - long totalCount = mongoDBService.getCount(TX_TABLE + chainId); + long totalCount = mongoDBService.getEstimateCount(TX_TABLE + chainId); if (totalCount > 1000000) { int deleteCount = (int) (totalCount - 1000000); BasicDBObject fields = new BasicDBObject(); From 27462304676bf767cd3fdaf3182b6d22531e0539 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Wed, 2 Dec 2020 16:10:30 +0800 Subject: [PATCH 205/304] =?UTF-8?q?=E6=99=AE=E9=80=9A=E8=B7=A8=E9=93=BE?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E9=A5=B1=E5=92=8C=E7=AD=BE=E5=90=8D=E6=95=B0?= =?UTF-8?q?=E5=9C=A8=E6=9C=80=E5=B0=91=E7=AD=BE=E5=90=8D=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=8A=E4=B8=8A=E6=B5=AE30%=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java | 2 +- version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java index 3b302ec79f..170b6e4ba8 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/NulsProtocolServiceImpl.java @@ -227,7 +227,7 @@ public void getOtherCtx(int chainId, String nodeId, GetOtherCtxMessage messageBo Log.error("解析交易签名失败"); return; } - if(transactionSignature.getP2PHKSignatures().size() < byzantineCount){ + if(transactionSignature.getP2PHKSignatures().size() < byzantineCount && ctxStatusPO.getStatus() == TxStatusEnum.UNCONFIRM.getStatus()){ chain.getLogger().info("The cross chain transaction obtained has not been confirmed at this node,hash:{}",nativeHex); return; } diff --git a/version b/version index 37c2961c24..6533b66871 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.7.2 +2.8.0 \ No newline at end of file From 251885c114a923b263582d13084f0f426647f7f5 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 2 Dec 2020 17:10:08 +0800 Subject: [PATCH 206/304] fix bug about contract multi-asset --- .../contract/helper/ContractNewTxHandler.java | 35 +++++++++++++++--- .../rpc/resource/ContractResource.java | 8 ++-- .../io/nuls/contract/util/ContractUtil.java | 29 +++++++++++++++ .../validator/CallContractTxValidator.java | 4 ++ .../io/nuls/contract/sdk/NativeAddress.java | 6 +++ .../contract/vm/program/ProgramAccount.java | 20 ++++++++++ .../src/main/resources/used_classes_sdk_v8 | Bin 10389 -> 10459 bytes .../test/java/io/nuls/contract/base/Base.java | 11 +++--- .../tx/contractvm/ContractVmV8SendTxTest.java | 25 +++++-------- .../tx/multyasset/ContractMultyAssetTest.java | 19 ++++++---- 10 files changed, 119 insertions(+), 38 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java index c647e0a26e..89530dd4f3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java @@ -85,21 +85,28 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran byte[] contractAddress = contractData.getContractAddress(); CoinData coinData = tx.getCoinDataInstance(); List toList = coinData.getTo(); - int assetChainId = CHAIN_ID, assetId = ASSET_ID; + int assetChainId, assetId; + boolean mainAsset; if (toList != null && !toList.isEmpty()) { for (CoinTo to : toList) { if (Arrays.equals(to.getAddress(), contractAddress)) { assetChainId = to.getAssetsChainId(); assetId = to.getAssetsId(); + mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + // 初始化其他资产的临时余额 + tempBalanceManager.getBalance(contractAddress, assetChainId, assetId); + tempBalanceManager.addTempBalance(contractAddress, to.getAmount(), assetChainId, assetId); + } } } } - // 增加调用合约时转入的金额 + // 增加调用合约时转入的NULS金额 BigInteger value = contractData.getValue(); if (value.compareTo(BigInteger.ZERO) > 0) { - // 初始化临时余额 - tempBalanceManager.getBalance(contractAddress, assetChainId, assetId); - tempBalanceManager.addTempBalance(contractAddress, value, assetChainId, assetId); + // 初始化NULS主资产临时余额 + tempBalanceManager.getBalance(contractAddress, CHAIN_ID, ASSET_ID); + tempBalanceManager.addTempBalance(contractAddress, value, CHAIN_ID, ASSET_ID); } boolean isSuccess = true; @@ -153,6 +160,9 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran if(rollbackTx instanceof ProgramNewTx) { contractNewTxFromOtherModuleHandler.rollbackTempBalance(chainId, contractResult.getContractAddress(), List.of((ProgramNewTx) rollbackTx), tempBalanceManager); } + //else if(rollbackTx instanceof ProgramTransfer) { + // contractTransferHandler.rollbackContractTempBalance(chainId, List.of((ProgramTransfer) rollbackTx), tempBalanceManager); + //} } contractResult.getInvokeRegisterCmds().clear(); break; @@ -163,7 +173,20 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran if (!isSuccess) { // 回滚 - 扣除调用合约时转入的金额 if (value.compareTo(BigInteger.ZERO) > 0) { - tempBalanceManager.minusTempBalance(contractAddress, value, assetChainId, assetId); + tempBalanceManager.minusTempBalance(contractAddress, value, CHAIN_ID, ASSET_ID); + } + if (toList != null && !toList.isEmpty()) { + for (CoinTo to : toList) { + if (Arrays.equals(to.getAddress(), contractAddress)) { + assetChainId = to.getAssetsChainId(); + assetId = to.getAssetsId(); + mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + // 回滚 - 扣除其他资产的临时余额 + tempBalanceManager.minusTempBalance(contractAddress, to.getAmount(), assetChainId, assetId); + } + } + } } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 40771afe57..b2a153ca1d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -283,7 +283,7 @@ public Response validateCreate(Map params) { @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "password", parameterDes = "调用者账户密码"), @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -395,7 +395,7 @@ private Result> convertMultyAssetValues(Object[] mu @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -480,7 +480,7 @@ public Response validateCall(Map params) { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]"), @Parameter(parameterName = "gasLimit", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS限制"), @Parameter(parameterName = "price", requestType = @TypeDescriptor(value = long.class), parameterDes = "GAS单价"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @@ -569,7 +569,7 @@ public Response previewCall(Map params) { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @Parameter(parameterName = "sender", parameterDes = "交易创建者账户地址"), @Parameter(parameterName = "value", requestType = @TypeDescriptor(value = BigInteger.class), parameterDes = "调用者向合约地址转入的NULS资产金额,没有此业务时填BigInteger.ZERO"), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空"), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]"), @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index c39deddf57..d3f0bf819d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -43,6 +43,7 @@ import io.nuls.contract.model.txdata.DeleteContractData; import io.nuls.contract.rpc.call.BlockCall; import io.nuls.contract.rpc.call.ChainManagerCall; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; import io.nuls.core.constant.ErrorCode; import io.nuls.core.exception.NulsException; @@ -750,4 +751,32 @@ public static void addDebugEvents(List debugEvents, Result result) { msg += ", debugEvents: " + debugEvents.toString(); result.setMsg(msg); } + + public static String[][] multyAssetStringArray(ProgramMultyAssetValue[] multyAssetValues) { + int length; + if (multyAssetValues == null || (length = multyAssetValues.length) == 0) { + return null; + } + String[][] array = new String[length][]; + ProgramMultyAssetValue value; + for (int i=0;il~^b9sjzKM{s-n;fsgJ9z;Q2T0N8 z)jY9`U;rr0|k!nUw=2xJ2t9r3YQp{lGEDCuQsu7VCQdJ znscjl>D71Bj?^FRR<|t-P@Yj?Fwf?Px#Z(L*K-dp^|g7k$NX}o@%*3ruE*E!t7YHN zG1Z`I!rR84=sRbM7Js}EBk(!#&M_wQZpS-`95S!N4kvVo^LF&hyoM zfo88(^K|9iZrdDq@oZMz{Klt}O-e^>Ez`q%(|Zrj_Y#*}(tFG9YM0oVRU5Bb+%kS; z{cE1<#73vJOQK!(<`v!N_3}HqMRFN;n(t~eooMZ=tNdd1EobemUy*C3^Zcw;e#ny+ zmq{L_X=k2Sz7M#0Hbug3>2BY8;Z3(Am19qRObXQ6_V4^169r$nt$PbKRd=;VvsdWk z#22JIE_L3XaZYjj{H5WiZ*AVoy!gqQW$_ahnXWs(bbgE7uEQ60zkRXvu*|#+^0c!*| zwjH#vxmou~EF*Ob+m-bR^IdK=czl{Tx1~i|V#(Y~K2AK&TRt%rZf|g%DYVuw&f)Bw zL(BW-9a`Tv*U4(V`0~vMd{50$+au}Z8F+WginV6-=XY=Y+1G5m@$n10jgLRnb;TXs za62-4aed?aX z*q~F!BI*1|$fGIcbCb^HnN#%?Vx;d?>{0G`!g{ilW#$VWrAo(l7iWIeQxFtyxwkp` zweiy*nP*qe_|E%)%m6A#_v?tSlh4sO3A ze)tEgpOE7w{u6dfrhk|*rN&ABh32$?1Ijs^M>^9!nOTAxdm-rU1 zT?&eyF0Tt)Wik6FcYrrL2S@tGO#;je3>j>|eDBT3#KizF112{pnuBxIE=4mi{aMi( zOdBe>fawY)4{$C!tP}~R<&}fMbg6PEm_7^SgL1sG3Pik8B^E4xQza2h+p1=P=~b$k vU|LKq0Zdn_1%m0bYGGhnO&wxRjk+I1Ts@8tRNx@oKG{+ujBUFj0}ucJe-04I delta 1173 zcmcZ|I5m(rz?+$ci-CcIfuW27r1Sp5jv~kRZ@yc0d)JmfVme|0E&m+ESX*1V8r^)iUS)1;Why|JPUowCOhhymA_b%ax-g&|Lxzm(_UNN z-==vfJ}+$N-jmVOKI~oa>Y8qQ;;tOiUbow2Jz1L{ZmYOzI%lr!;!E4^nrAP%xJ*H1 zQpVZa#yu&U#6P;toxJ9vPr)Py-}+05+5dgqlrQ9X9+wX{Rt*$*FV+!p$MUhund`ZE zmsOnO>}Q*29ozgicJr%sDe)81d>0&ge_djy=1=AFf|wP~vXlI@kJZ->iw# zUQQ6ZQnL7FUg+8OX#)8dmY<(v5$7(n*Xq%ZCC={seJuv%1=AB>)w^8Vuq2sjvQ^rI z`lJ_MmCN5P$hiF1n5X2ugW3s&UK5EW7HTh9kG;rkTfkv;OOq*J9p}zt2Uu)w+I`}Q zl3e@nPWT3YqqXyMT-c5qIE1}dNf2<}a*6ra)8eD?3u?ZI#`EjQ9b6H<$LnU-iE~f; z7tGn#clrg-)s!ckhv(|NXW1xR+<7c~0v7|P>@SDO;BAGxsO5RVdI7FPv?I5SSm(&@BG8wa`o^Zf0d%+9M4}? z_ZPe{_|H7CYeM$4edS6@6HW&1?sMuZ;(5FF!&3vr&dF_V+Z?{h#Xhe+6z|OUnkC|h zvdx4J;knP$JL*+q7PBAJC>IMB2`*?}WZRL!`Axc3YS~wnzw;~wKP_GEYNf8YsP*2* zkk|)#rRA@}6iZhX*oSQD7d$F_Yx>J7?er~P)e3>1jOT?#M$Z1t9pKH*aaDZ&fm2Kj z3};vw7y`T*nYb9>nKzID32-p5FigI#2+qfol+3`{#8Sx`OqVOUfa!fo9^mZ4sT>KW zQ params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); params.put("sender", sender); params.put("value", value); - params.put("assetChainId", assetChainId); - params.put("assetId", assetId); + params.put("multyAssetValues", ContractUtil.multyAssetStringArray(multyAssetValues)); params.put("gasLimit", gasLimit); params.put("price", gasPrice); params.put("contractAddress", contractAddress); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java index f075a7137f..47dca81a4b 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -32,6 +32,7 @@ import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; import io.nuls.contract.util.MapUtil; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.contract.vm.program.ProgramTransfer; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.model.ModuleE; @@ -143,7 +144,7 @@ public class ContractVmV8SendTxTest extends BaseQuery { protected long gasLimit = 200000L; - protected long gasPrice = 1L; + protected long gasPrice = 25L; protected long minutes_3 = 60 * 3; protected long minutes_5 = 60 * 5; protected String contractA = ""; @@ -153,7 +154,7 @@ public class ContractVmV8SendTxTest extends BaseQuery { @Before public void createAndInit() throws Exception { // 加载协议升级的数据 - ContractContext.CHAIN_ID = 2; + ContractContext.CHAIN_ID = chainId; if (!createContract) { // 注册链内资产 @@ -178,8 +179,10 @@ public void createAndInit() throws Exception { contractResult = this.callByParams(contractB, toAddress, "setSender", "0", new String[]{sender}); Assert.assertTrue("expect success, " + contractResult.getErrorMessage() + ", " + contractResult.getStackTrace(), contractResult.isSuccess()); } else { - contractA = "tNULSeBaMwVijojTRBneW8zpqGwEgNf8mKVNbD"; - contractB = "tNULSeBaN9uBG7DWTWJN1WUcDReoGJopNjsbHb"; + //contractA = "tNULSeBaMy6NZRUzvKSMpKjw87ABAgietZ2THh"; + //contractB = "tNULSeBaN8Ytuc6AuwD37gGozqrPSVi8qCLmqy"; + contractA = "tNULSeBaMwPWQbZWZvQDd8FGSB4sNUPVLBmkAh"; + contractB = "tNULSeBaN76yL5YGd46spCx2srGykNtoRPavqw"; } JSONUtils.getInstance().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } @@ -203,14 +206,6 @@ public void testFull() throws Exception { test7(); test8(); test9(); - test1v2(); - test2v2(); - test3v2(); - test4v2(); - test6v2(); - test7v2(); - test8v2(); - test9v2(); test11(); test12(); test13(); @@ -270,7 +265,7 @@ public void test9() throws Exception { this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, false, errorMsgKey); } - @Test + /*@Test public void test1v2() throws Exception { this.testAsset(contractA, sender, "test1", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); } @@ -312,7 +307,7 @@ public void test8v2() throws Exception { public void test9v2() throws Exception { String errorMsgKey = "Cannot transfer the locked amount to the contract address"; this.testFailed(contractA, sender, "test9", new String[]{}, BigInteger.valueOf(100L), chainId, assetId, true, errorMsgKey); - } + }*/ @Test public void test11() throws Exception { @@ -635,7 +630,7 @@ protected ContractResultDto callByParams(String contract, String sender, String protected ContractResultDto callOfDesignatedAssetByParams(String contract, String sender, String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { BigInteger value = toNa(new BigDecimal(valueStr)); - Map params = this.makeCallParams(sender, value, gasLimit, gasPrice, contract, methodName, null, "", assetChainId, assetId, args); + Map params = this.makeCallParams(sender, null, gasLimit, gasPrice, contract, methodName, null, "", new ProgramMultyAssetValue[]{new ProgramMultyAssetValue(value, assetChainId, assetId)}, args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); assertTrue(cmdResp2, result); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index 4d3474ac3a..1c2686b108 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -37,6 +37,7 @@ import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.crypto.HexUtil; @@ -55,6 +56,7 @@ import org.junit.Assert; import org.junit.Test; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -76,15 +78,17 @@ public class ContractMultyAssetTest extends BaseQuery { protected long gasLimit = 200000L; - protected long gasPrice = 1L; + protected long gasPrice = 25L; protected long minutes_3 = 60 * 3; + protected String otherContract = "tNULSeBaN5npy43YB6GpdXie83a4mt9Zb2Ut1w"; /** * 创建合约 */ @Test public void createContract() throws Exception { - InputStream in = new FileInputStream(ContractTest.class.getResource("/multi-asset-contract").getFile()); + //InputStream in = new FileInputStream(ContractTest.class.getResource("/multi-asset-contract").getFile()); + InputStream in = new FileInputStream(new File("/Users/pierreluo/IdeaProjects/contract-multi-asset/target/multi-asset-contract-1.0-SNAPSHOT.jar")); byte[] contractCode = IOUtils.toByteArray(in); String remark = "test multy asset"; Map params = this.makeCreateParams(sender, contractCode, "asset", remark); @@ -140,10 +144,10 @@ public void otherAssetTest() throws Exception { this.callOfDesignatedAssetByParams("_payableMultyAsset", "3.2", null, 2, 2); // 转出 1.1 Object[] args = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; - this.callOfDesignatedAssetByParams("transferDesignatedAsset", "0", args, 0, 0); + this.callByParams("transferDesignatedAsset", "0", args); // 转出 1.2 Object[] argsLock = new Object[]{toAddress17, new BigDecimal("1.2").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2, minutes_3}; - this.callOfDesignatedAssetByParams("transferDesignatedAssetLock", "0", argsLock, 0, 0); + this.callByParams("transferDesignatedAssetLock", "0", argsLock); } @@ -153,7 +157,6 @@ public void otherAssetTest() throws Exception { @Test public void innerCall() throws Exception { String methodName = "callOtherContract"; - String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; // 转入 6.6 NULS (外部合约) this.callByParams("_payable", "6.6", null); // 转入 6.6 NULS (内部合约) @@ -174,7 +177,6 @@ public void innerCall() throws Exception { @Test public void innerCallWithReturnValue() throws Exception { String methodName = "callWithReturnValueOfOtherContract"; - String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; // 转入 6.6 NULS (外部合约) this.callByParams("_payable", "6.6", null); // 转入 6.6 NULS (内部合约) @@ -195,11 +197,12 @@ public void innerCallWithReturnValue() throws Exception { @Test public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { String methodName = "callWithReturnValueOfOtherContractOfDesignatedAsset"; - String otherContract = "tNULSeBaN74aQ3n2p9DbyvudrUHMzABQuKAEMH"; + // 转入 6.6 2-2 (外部合约) this.callOfDesignatedAssetByParams("_payableMultyAsset", "6.6", null, 2, 2); // 转入 6.6 2-2 (内部合约) this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "_payableMultyAsset", null, "6.6", 2, 2); + // 转出 3.3 2-2 Object[] innerArgs = new Object[]{toAddress17, new BigDecimal("3.3").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAsset", innerArgs, "0", 0, 0); @@ -378,7 +381,7 @@ protected void callByParams(String methodName, String valueStr, Object[] args) t protected void callOfDesignatedAssetByParams(String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { BigInteger value = new BigDecimal(valueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); - Map params = this.makeCallParams(sender, value, gasLimit, gasPrice, contractAddress, methodName, null, "", assetChainId, assetId, args); + Map params = this.makeCallParams(sender, null, gasLimit, gasPrice, contractAddress, methodName, null, "", new ProgramMultyAssetValue[]{new ProgramMultyAssetValue(value, assetChainId, assetId)}, args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); assertTrue(cmdResp2, result); From cf0c31082ea66c9610d003f1db741f9911eafd0a Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 3 Dec 2020 11:48:28 +0800 Subject: [PATCH 207/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=B8=B4=E6=97=B6=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E7=BB=AD=E9=9C=80=E8=A6=81=E4=BB=94=E7=BB=86=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/nuls/block/model/CheckResult.java | 30 +++++++++++++++++ .../nuls/block/thread/BlockSynchronizer.java | 33 ++++++++++--------- 2 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 module/nuls-block/src/main/java/io/nuls/block/model/CheckResult.java diff --git a/module/nuls-block/src/main/java/io/nuls/block/model/CheckResult.java b/module/nuls-block/src/main/java/io/nuls/block/model/CheckResult.java new file mode 100644 index 0000000000..f2fd80ffa7 --- /dev/null +++ b/module/nuls-block/src/main/java/io/nuls/block/model/CheckResult.java @@ -0,0 +1,30 @@ +package io.nuls.block.model; + +/** + * @author Niels + */ +public class CheckResult { + private boolean result; + private boolean timeout; + + public CheckResult(boolean result, boolean timeout) { + this.result = result; + this.timeout = timeout; + } + + public boolean isResult() { + return result; + } + + public void setResult(boolean result) { + this.result = result; + } + + public boolean isTimeout() { + return timeout; + } + + public void setTimeout(boolean timeout) { + this.timeout = timeout; + } +} diff --git a/module/nuls-block/src/main/java/io/nuls/block/thread/BlockSynchronizer.java b/module/nuls-block/src/main/java/io/nuls/block/thread/BlockSynchronizer.java index 7ae5c4fb0f..0dbf08de04 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/thread/BlockSynchronizer.java +++ b/module/nuls-block/src/main/java/io/nuls/block/thread/BlockSynchronizer.java @@ -177,23 +177,23 @@ public void run() { /** * 回滚区块到指定高度 - * */ - private void rollbackToHeight(long latestHeight, int chainId){ + */ + private void rollbackToHeight(long latestHeight, int chainId) { BlockConfig blockConfig = SpringLiteContext.getBean(BlockConfig.class); long height = blockConfig.getRollbackHeight(); - if(height > 0){ + if (height > 0) { RollbackStorageService rollbackService = SpringLiteContext.getBean(RollbackStorageService.class); RollbackInfoPo po = rollbackService.get(chainId); - if(po == null || po.getHeight() != height){ - if(latestHeight > height + 1000){ + if (po == null || po.getHeight() != height) { + if (latestHeight > height + 1000) { ContextManager.getContext(chainId).getLogger().warn("If the rollback height is greater than 1000,p;ease replace the data package"); System.exit(1); } - while (latestHeight >= height){ - if(!blockService.rollbackBlock(chainId, latestHeight--, true)){ + while (latestHeight >= height) { + if (!blockService.rollbackBlock(chainId, latestHeight--, true)) { latestHeight++; } - if ( latestHeight == 0) { + if (latestHeight == 0) { break; } } @@ -206,7 +206,6 @@ private void rollbackToHeight(long latestHeight, int chainId){ /** * 等待网络稳定 * 每隔5秒请求一次getAvailableNodes,连续5次节点数大于minNodeAmount就认为网络稳定 - * */ private List waitUntilNetworkStable() throws InterruptedException { ChainContext context = ContextManager.getContext(chainId); @@ -252,7 +251,7 @@ private boolean synchronize() throws Exception { BlockDownloaderParams downloaderParams = statistics(availableNodes, context); context.setDownloaderParams(downloaderParams); - if(downloaderParams.getNodes() == null || downloaderParams.getNodes().isEmpty()){ + if (downloaderParams.getNodes() == null || downloaderParams.getNodes().isEmpty()) { //网络上没有可用的一致节点,就是节点高度都不一致,或者一致的节点比例不够 logger.warn("There are no consistent nodes available on the network, availableNodes-" + availableNodes); return false; @@ -462,7 +461,8 @@ private LocalBlockStateEnum checkLocalBlock(BlockDownloaderParams params) { long netHeight = params.getNetLatestHeight(); //得到共同高度 long commonHeight = Math.min(localHeight, netHeight); - if (checkHashEquality(params)) { + CheckResult result = checkHashEquality(params); + if (result.isResult() || result.isTimeout()) { //commonHeight区块的hash一致,正常,比远程节点落后,下载区块 if (commonHeight < netHeight) { return INCONSISTENT; @@ -487,7 +487,8 @@ private LocalBlockStateEnum checkRollback(int rollbackCount, BlockDownloaderPara BlockHeader latestBlockHeader = blockService.getLatestBlockHeader(chainId); params.setLocalLatestHeight(latestBlockHeader.getHeight()); params.setLocalLatestHash(latestBlockHeader.getHash()); - if (checkHashEquality(params)) { + CheckResult result = checkHashEquality(params); + if (result.isResult() || result.isTimeout()) { return INCONSISTENT; } return checkRollback(rollbackCount + 1, params); @@ -500,7 +501,7 @@ private LocalBlockStateEnum checkRollback(int rollbackCount, BlockDownloaderPara * @date 18-11-9 下午6:13 * @version 1.0 */ - private boolean checkHashEquality(BlockDownloaderParams params) { + private CheckResult checkHashEquality(BlockDownloaderParams params) { NulsHash localHash = params.getLocalLatestHash(); long localHeight = params.getLocalLatestHeight(); long netHeight = params.getNetLatestHeight(); @@ -513,15 +514,15 @@ private boolean checkHashEquality(BlockDownloaderParams params) { Block remoteBlock = BlockUtil.downloadBlockByHash(chainId, localHash, node.getId(), commonHeight); if (remoteBlock != null) { netHash = remoteBlock.getHeader().getHash(); - return localHash.equals(netHash); + return new CheckResult(localHash.equals(netHash), false); } } //如果从网络上下载区块失败,返回false - return false; + return new CheckResult(false, true); } if (commonHeight < localHeight) { localHash = blockService.getBlockHash(chainId, commonHeight); } - return localHash.equals(netHash); + return new CheckResult(localHash.equals(netHash), false); } } From 5057b679aec04934f582c85abbc7e10696a158b5 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 3 Dec 2020 15:16:31 +0800 Subject: [PATCH 208/304] remove ps module --- .../Module documentation is all here.txt | 0 .../documents/NULS2.0-Public-PRC.md | 1954 ----------------- .../documents/Public-Service_Design.md | 92 - .../img/public-service-functions.png | Bin 32624 -> 0 bytes module/nuls-public-service/module.ncf | 14 - module/nuls-public-service/pom.xml | 65 - module/nuls-public-service/readme.md | 24 - .../src/main/java/io/nuls/api/ApiContext.java | 110 - .../io/nuls/api/PublicServiceBootstrap.java | 251 --- .../io/nuls/api/analysis/AnalysisHandler.java | 909 -------- .../nuls/api/analysis/WalletRpcHandler.java | 717 ------ .../main/java/io/nuls/api/cache/ApiCache.java | 151 -- .../io/nuls/api/constant/AddressType.java | 47 - .../io/nuls/api/constant/ApiConstant.java | 124 -- .../io/nuls/api/constant/ApiErrorCode.java | 34 - .../io/nuls/api/constant/CommandConstant.java | 108 - .../io/nuls/api/constant/DBTableConstant.java | 72 - .../nuls/api/constant/RunningStatusEnum.java | 62 - .../nuls/api/constant/config/ApiConfig.java | 302 --- .../nuls/api/constant/config/ConfigBean.java | 88 - .../nuls/api/constant/config/ConfigItem.java | 70 - .../io/nuls/api/db/AccountLedgerService.java | 26 - .../java/io/nuls/api/db/AccountService.java | 34 - .../java/io/nuls/api/db/AgentService.java | 36 - .../java/io/nuls/api/db/AliasService.java | 18 - .../java/io/nuls/api/db/BlockService.java | 39 - .../java/io/nuls/api/db/ChainService.java | 33 - .../java/io/nuls/api/db/ContractService.java | 42 - .../java/io/nuls/api/db/DBTableService.java | 16 - .../java/io/nuls/api/db/DepositService.java | 36 - .../java/io/nuls/api/db/PunishService.java | 22 - .../java/io/nuls/api/db/RoundManager.java | 325 --- .../java/io/nuls/api/db/RoundService.java | 28 - .../io/nuls/api/db/StatisticalService.java | 26 - .../java/io/nuls/api/db/TokenService.java | 26 - .../io/nuls/api/db/TransactionService.java | 38 - .../mongo/MongoAccountLedgerServiceImpl.java | 197 -- .../api/db/mongo/MongoAccountServiceImpl.java | 323 --- .../api/db/mongo/MongoAgentServiceImpl.java | 297 --- .../api/db/mongo/MongoAliasServiceImpl.java | 95 - .../api/db/mongo/MongoBlockServiceImpl.java | 225 -- .../api/db/mongo/MongoChainServiceImpl.java | 188 -- .../db/mongo/MongoContractServiceImpl.java | 244 -- .../io/nuls/api/db/mongo/MongoDBService.java | 400 ---- .../api/db/mongo/MongoDBTableServiceImpl.java | 146 -- .../api/db/mongo/MongoDepositServiceImpl.java | 209 -- .../api/db/mongo/MongoPunishServiceImpl.java | 98 - .../api/db/mongo/MongoRoundServiceImpl.java | 89 - .../db/mongo/MongoStatisticalServiceImpl.java | 258 --- .../api/db/mongo/MongoTokenServiceImpl.java | 133 -- .../db/mongo/MongoTransactionServiceImpl.java | 609 ----- .../api/exception/DbRuntimeException.java | 38 - .../nuls/api/exception/JsonRpcException.java | 54 - .../nuls/api/exception/NotFoundException.java | 35 - .../io/nuls/api/manager/CacheManager.java | 88 - .../io/nuls/api/manager/ChainManager.java | 13 - .../io/nuls/api/manager/MessageManager.java | 77 - .../io/nuls/api/manager/ScheduleManager.java | 40 - .../java/io/nuls/api/model/entity/Agent.java | 290 --- .../java/io/nuls/api/model/entity/Alias.java | 99 - .../api/model/entity/CallContractData.java | 216 -- .../nuls/api/model/entity/CancelDeposit.java | 94 - .../nuls/api/model/entity/ContractData.java | 52 - .../model/entity/ContractTransferData.java | 140 -- .../api/model/entity/CreateContractData.java | 209 -- .../api/model/entity/DeleteContractData.java | 125 -- .../io/nuls/api/model/entity/Deposit.java | 161 -- .../io/nuls/api/model/entity/Message.java | 57 - .../io/nuls/api/model/entity/StopAgent.java | 93 - .../io/nuls/api/model/entity/TxAsset.java | 149 -- .../io/nuls/api/model/entity/TxChain.java | 185 -- .../io/nuls/api/model/entity/v4/TxAsset.java | 111 - .../io/nuls/api/model/entity/v4/TxChain.java | 184 -- .../io/nuls/api/model/entity/v5/TxAsset.java | 111 - .../io/nuls/api/model/entity/v5/TxChain.java | 184 -- .../io/nuls/api/model/po/AccountInfo.java | 202 -- .../nuls/api/model/po/AccountLedgerInfo.java | 153 -- .../nuls/api/model/po/AccountTokenInfo.java | 123 -- .../java/io/nuls/api/model/po/AgentInfo.java | 321 --- .../java/io/nuls/api/model/po/AliasInfo.java | 24 - .../java/io/nuls/api/model/po/AssetInfo.java | 116 - .../io/nuls/api/model/po/BlockHeaderInfo.java | 249 --- .../io/nuls/api/model/po/BlockHexInfo.java | 36 - .../java/io/nuls/api/model/po/BlockInfo.java | 36 - .../io/nuls/api/model/po/ChainConfigInfo.java | 54 - .../java/io/nuls/api/model/po/ChainInfo.java | 135 -- .../api/model/po/ChainStatisticalInfo.java | 34 - .../io/nuls/api/model/po/CoinContextInfo.java | 129 -- .../io/nuls/api/model/po/CoinDataInfo.java | 64 - .../io/nuls/api/model/po/CoinFromInfo.java | 90 - .../java/io/nuls/api/model/po/CoinToInfo.java | 80 - .../nuls/api/model/po/ContractCallInfo.java | 107 - .../nuls/api/model/po/ContractDeleteInfo.java | 44 - .../io/nuls/api/model/po/ContractInfo.java | 350 --- .../io/nuls/api/model/po/ContractMethod.java | 79 - .../nuls/api/model/po/ContractMethodArg.java | 68 - .../nuls/api/model/po/ContractResultInfo.java | 235 -- .../api/model/po/ContractTransferInfo.java | 74 - .../io/nuls/api/model/po/ContractTxInfo.java | 96 - .../api/model/po/CrossTxRelationInfo.java | 182 -- .../io/nuls/api/model/po/CurrentRound.java | 117 - .../io/nuls/api/model/po/DepositInfo.java | 140 -- .../io/nuls/api/model/po/DestroyInfo.java | 43 - .../java/io/nuls/api/model/po/FeeInfo.java | 57 - .../java/io/nuls/api/model/po/KeyValue.java | 46 - .../java/io/nuls/api/model/po/Nrc20Info.java | 44 - .../io/nuls/api/model/po/NulsTransfer.java | 47 - .../java/io/nuls/api/model/po/PageInfo.java | 65 - .../java/io/nuls/api/model/po/PocRound.java | 127 -- .../io/nuls/api/model/po/PocRoundItem.java | 166 -- .../io/nuls/api/model/po/PunishLogInfo.java | 84 - .../io/nuls/api/model/po/StatisticalInfo.java | 109 - .../java/io/nuls/api/model/po/SyncInfo.java | 71 - .../io/nuls/api/model/po/TokenTransfer.java | 124 -- .../io/nuls/api/model/po/TransactionInfo.java | 337 --- .../java/io/nuls/api/model/po/TxDataInfo.java | 4 - .../java/io/nuls/api/model/po/TxHexInfo.java | 34 - .../io/nuls/api/model/po/TxRelationInfo.java | 260 --- .../api/model/po/mini/MiniAccountInfo.java | 88 - .../model/po/mini/MiniBlockHeaderInfo.java | 86 - .../api/model/po/mini/MiniCoinBaseInfo.java | 45 - .../api/model/po/mini/MiniContractInfo.java | 136 -- .../model/po/mini/MiniTransactionInfo.java | 135 -- .../io/nuls/api/model/rpc/AccountTxInfo.java | 160 -- .../io/nuls/api/model/rpc/BalanceInfo.java | 76 - .../io/nuls/api/model/rpc/FreezeInfo.java | 64 - .../io/nuls/api/model/rpc/RpcErrorCode.java | 76 - .../java/io/nuls/api/model/rpc/RpcResult.java | 159 -- .../io/nuls/api/model/rpc/RpcResultError.java | 100 - .../nuls/api/model/rpc/SearchResultDTO.java | 47 - .../main/java/io/nuls/api/rpc/RpcCall.java | 94 - .../api/rpc/controller/AccountController.java | 731 ------ .../api/rpc/controller/BlockController.java | 305 --- .../api/rpc/controller/ChainController.java | 407 ---- .../rpc/controller/ContractController.java | 1167 ---------- .../api/rpc/controller/MessageController.java | 114 - .../controller/PocConsensusController.java | 831 ------- .../rpc/controller/TransactionController.java | 605 ----- .../controller/runner/QueueContractRun.java | 74 - .../nuls/api/rpc/jsonRpc/JsonRpcContext.java | 32 - .../nuls/api/rpc/jsonRpc/JsonRpcHandler.java | 213 -- .../nuls/api/rpc/jsonRpc/JsonRpcServer.java | 113 - .../api/rpc/jsonRpc/RpcMethodInvoker.java | 84 - .../api/service/ConfigStorageService.java | 74 - .../io/nuls/api/service/RollbackService.java | 865 -------- .../java/io/nuls/api/service/SyncService.java | 1212 ---------- .../impl/ConfigStorageServiceImpl.java | 74 - .../java/io/nuls/api/task/DeleteTxsTask.java | 27 - .../io/nuls/api/task/GetGlobalInfoTask.java | 33 - .../io/nuls/api/task/QueryChainInfoTask.java | 60 - .../io/nuls/api/task/StatisticalNulsTask.java | 152 -- .../nuls/api/task/StatisticalRewardTask.java | 72 - .../io/nuls/api/task/StatisticalTask.java | 152 -- .../java/io/nuls/api/task/SyncBlockTask.java | 133 -- .../io/nuls/api/task/UnConfirmTxTask.java | 63 - .../io/nuls/api/utils/AgentComparator.java | 71 - .../java/io/nuls/api/utils/AgentSorter.java | 62 - .../java/io/nuls/api/utils/AssetTool.java | 100 - .../main/java/io/nuls/api/utils/DBUtil.java | 22 - .../nuls/api/utils/DocumentTransferTool.java | 181 -- .../java/io/nuls/api/utils/LoggerUtil.java | 48 - .../java/io/nuls/api/utils/VerifyUtils.java | 39 - .../main/resources/languages/en.properties | 0 .../resources/languages/zh-CHS.properties | 0 .../src/main/resources/module.json | 17 - .../test/java/io/nuls/api/test/ApiTest.java | 130 -- .../java/io/nuls/api/test/DropTableTest.java | 61 - .../io/nuls/api/test/MessageIntfTest.java | 155 -- .../java/io/nuls/api/test/MongoDBTest.java | 173 -- module/pom.xml | 1 - pom.xml | 12 + 171 files changed, 12 insertions(+), 27130 deletions(-) delete mode 100644 module/nuls-public-service/documents/Module documentation is all here.txt delete mode 100644 module/nuls-public-service/documents/NULS2.0-Public-PRC.md delete mode 100644 module/nuls-public-service/documents/Public-Service_Design.md delete mode 100644 module/nuls-public-service/documents/img/public-service-functions.png delete mode 100644 module/nuls-public-service/module.ncf delete mode 100644 module/nuls-public-service/pom.xml delete mode 100644 module/nuls-public-service/readme.md delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/cache/ApiCache.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/AddressType.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiConstant.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiErrorCode.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/RunningStatusEnum.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigBean.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigItem.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/AgentService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/AliasService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/BlockService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/ContractService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/DBTableService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/DepositService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/PunishService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/RoundManager.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/RoundService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/StatisticalService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/TokenService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAliasServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDepositServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoPunishServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoStatisticalServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/exception/DbRuntimeException.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/exception/JsonRpcException.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/exception/NotFoundException.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/manager/ChainManager.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/manager/MessageManager.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Agent.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Alias.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CallContractData.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CancelDeposit.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractData.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractTransferData.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CreateContractData.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/DeleteContractData.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Deposit.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Message.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/StopAgent.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxAsset.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxChain.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxAsset.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxChain.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxAsset.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxChain.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountLedgerInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AgentInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AliasInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHexInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainConfigInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainStatisticalInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinContextInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinDataInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractCallInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractDeleteInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethod.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethodArg.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractResultInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTransferInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTxInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/CurrentRound.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/DepositInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/DestroyInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/FeeInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/KeyValue.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/Nrc20Info.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/NulsTransfer.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/PageInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRound.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRoundItem.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/PunishLogInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/StatisticalInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/TokenTransfer.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxDataInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxHexInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxRelationInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniBlockHeaderInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniCoinBaseInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniContractInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/AccountTxInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/BalanceInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/FreezeInfo.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcErrorCode.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResult.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResultError.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/SearchResultDTO.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/BlockController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/MessageController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/PocConsensusController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcContext.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcHandler.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcServer.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/RpcMethodInvoker.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/service/ConfigStorageService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/service/RollbackService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/service/impl/ConfigStorageServiceImpl.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/DeleteTxsTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/GetGlobalInfoTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/SyncBlockTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/task/UnConfirmTxTask.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentComparator.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentSorter.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/AssetTool.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/DBUtil.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/LoggerUtil.java delete mode 100644 module/nuls-public-service/src/main/java/io/nuls/api/utils/VerifyUtils.java delete mode 100644 module/nuls-public-service/src/main/resources/languages/en.properties delete mode 100644 module/nuls-public-service/src/main/resources/languages/zh-CHS.properties delete mode 100644 module/nuls-public-service/src/main/resources/module.json delete mode 100644 module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java delete mode 100644 module/nuls-public-service/src/test/java/io/nuls/api/test/DropTableTest.java delete mode 100644 module/nuls-public-service/src/test/java/io/nuls/api/test/MessageIntfTest.java delete mode 100644 module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java diff --git a/module/nuls-public-service/documents/Module documentation is all here.txt b/module/nuls-public-service/documents/Module documentation is all here.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md b/module/nuls-public-service/documents/NULS2.0-Public-PRC.md deleted file mode 100644 index fe5b326712..0000000000 --- a/module/nuls-public-service/documents/NULS2.0-Public-PRC.md +++ /dev/null @@ -1,1954 +0,0 @@ -# NULS2.0——API接口文档 - -## 简介 - -每个 NULS2.0节点都可选的提供了一套 API 接口,用于从节点获取可视化区块链数据,使得开发区块链应用变得十分方便。接口通过 [JSON-RPC](http://wiki.geekdream.com/Specification/json-rpc_2.0.html) 的方式提供,底层使用 HTTP协议进行通讯。 - -要启动一个提供 RPC 服务的节点,需做到以下几个步骤: - -- 获取钱包 - -方式一:下载能提供RPC服务的全节点钱包(http://正式上线后填充 下载地址链接) - -方式二:同步https://github.com/nuls-io/nuls-v2上NULS2.0项目master分支的源代码,执行如下命令,手动打包全节点钱包: - -``` -./package -a public-service -./package -``` - -- 节点服务器需安装mongoDB数据库 -- 修改module.ncf文件,[public-service]的相关配置,如下: - -``` -[public-service] -#数据库url地址 -databaseUrl=127.0.0.1 -#数据库端口号 -databasePort=27017 -``` - -完成配置后,启动节点程序,客户端会解析已同步的区块,并存储到mongoDB中。 - -## 监听端口 - -默认端口为18003,可修改module.ncf文件,[public-service]的相关配置,如下: - -``` -[public-service] -#public-service模块对外的rpc端口号 -rpcPort=18003 -``` - -## 接口说明 - -### 字符集编码 - -UTF-8 - -### 远程调用协议 - -JSON-RPC - -``` -{ - "jsonrpc":"2.0", - "method":"getChainInfo", //接口名称 - "params":[], //所有接口的参数,都已数组方式传递,且参数顺序不能变 - "id":1234 -} -``` - -### 接口返回格式 - -``` -正常返回 -//example -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "networkHeight": 4936, - "localHeight": 4936 - } -} -异常返回 -//example -{ - "jsonrpc": "2.0", - "id": 1234, - "error": { - "code": 1000, - "message": "Parameters is wrong!", - "data": "Incorrect number of parameters" - } -} -``` - -### 代币转换 - -涉及到有代币的接口,参数和返回里的代币数量为了避免小数精度丢失,统一转为BigInteger格式。NULS主网的小数精度为8位,因此接口层统一右移8位,即100,000,000 = 1NULS。 - -### 返回数据定义 - -#### 交易类型(txType) - -``` - int COIN_BASE = 1; //coinBase奖励 - int TRANSFER = 2; //转账 - int ACCOUNT_ALIAS = 3; //设置账户别名 - int REGISTER_AGENT = 4; //新建共识节点 - int DEPOSIT = 5; //委托参与共识 - int CANCEL_DEPOSIT = 6; //取消委托 - int YELLOW_PUNISH = 7; //黄牌惩罚 - int RED_PUNISH = 8; //红牌惩罚 - int STOP_AGENT = 9; //注销共识节点 - int CROSS_CHAIN = 10; //跨链转账 - int REGISTER_CHAIN_AND_ASSET = 11; //注册链 - int DESTROY_CHAIN_AND_ASSET = 12; //销毁链 - int ADD_ASSET_TO_CHAIN = 13; //新增资产上链 - int REMOVE_ASSET_FROM_CHAIN = 14; //注销资产 - int CREATE_CONTRACT = 15; //创建智能合约 - int CALL_CONTRACT = 16; //调用智能合约 - int DELETE_CONTRACT = 17; //删除智能合约 - int CONTRACT_TRANSFER = 18; //合约内部转账 - int CONTRACT_RETURN_GAS = 19; //合约执行手续费返还 - int CONTRACT_CREATE_AGENT = 20; //合约创建共识节点 - int CONTRACT_DEPOSIT = 21; //合约委托参与共识 - int CONTRACT_CANCEL_DEPOSIT = 22; //合约取消委托 - int CONTRACT_STOP_AGENT = 23; //合约注销共识节点 -``` - - - -#### 资产信息(assetInfo) - -``` -assetInfo:{ - "key": "100-1", //string 主键 - "chainId": 100, //int 资产的链id - "assetId": 1, //int 资产id - "symbol": "NULS", //string 资产符号 - "decimals":8 //int 资产支持小数位 - "initCoins": 100000000000000, //bigInt 资产初始金额 - "address": "tNULSeBaMoodYW7A……", //string 资产创建人地址 - "status": 1 //int 状态, 0:注销 1:启用 -} - - -``` - -#### 区块头信息(blockHeaderInfo) - -``` -blockHeaderInfo: { - "hash": "c31d198b6fb5a……", //string 区块hash - "height": 304, //long 区块高度 - "preHash": "d7596990d508……", //string 前一区块hash - "merkleHash": "85c661b36aa3fdc……", //string 梅克尔hash - "createTime": 1559725301, //long 创建时间 - "agentHash": null, //string 出块节点的hash - "agentId": "8CPcA7kaXSHbWb3GHP7……", //string 出块节点的id - "packingAddress": "8CPcA7kaXSH……", //string 出块节点的区块打包地址 - "agentAlias": null, //string 出块节点的代理人别名 - "txCount": 1, //int 区块打包交易数量 - "roundIndex": 155972530, //long 出块轮次 - "totalFee": 0, //bigInt 打包的交易手续费 - "reward": 0, //bigInt 出块奖励 - "size": 235, //long 区块大小 - "packingIndexOfRound": 1, //int 本轮的出块顺序 - "scriptSign": "210e2ab7a219bca2a……", //string 区块签名 - "txHashList": [ //[string] 区块打包的交易对应的交易hash集合 - "85c661b36aa3fdc93b9bc27bb8fdf1……" - ], - "roundStartTime": 1559725291, //long 本轮出块的起始出块时间 - "agentVersion": 1, //int 出块节点的协议版本号 - "seedPacked": true //boolean 当前区块是否是种子节点打包 -} -``` - -#### 交易信息(txInfo) - -``` -txInfo: { - "hash": "0020b15e564……", //string 交易hash - "type": 2, //int 交易类型(txType) - "height": -1, //long 确认交易的区块高度,-1表示还未被确认 - "size": 228, //int 交易大小 - "createTime": 1552300674920, //long 创建时间 - "remark": "transfer test", //string 备注 - "txData": null, //object 交易业务对象,根据交易类型区分, - 具体见后面的数据定义 - "txDataHex": null, //string 业务对象16进制序列化字符串 - "txDataList": null, //[object] 交易业务对象集合,根据交易类型区分 - "fee": { //bigInt 手续费 - "chainId": 100, //手续费链id - "assetId": 1, //手续费资产id - "symbol": "ATOM", //手续费资产符号 - "value": 100000 //手续费金额 - }, - "coinFroms": [ - { - "address": "5MR_2CbSSboa……", //string 转出地址 - "chainId": 12345, //int 转出资产的链id - "assetsId": 1, //int 转出资产的id - "amount": 1870000000000, //bigInt 转出金额 - "locked": 0, //long 锁定时间 - "nonce": "ffffffff" //string 转出资产最新nonce值 - "symbol":"nuls" //string 资产符号 - } - ], - "coinTos": [ - { - "address": "5MR_2CbSSboa……", //string 接收地址 - "chainId": 12345, //int 接收资产的链id - "assetsId": 1, //int 接收资产的id - "amount": 1870000000000, //bigInt 接收金额 - "locked": 0, //long 锁定时间 - "symbol":"nuls" //string 资产符号 - } - ], - "value": 1860000000000 //bigInt 交易涉及到的资产变动额 -} -``` - -#### 账户信息(accountInfo) - -``` -accountInfo: { - "address": "5MR_2ChNj……", //string 账户地址 - "alias": null, //string 账户别名 - "type": 1, //int 账户类型 - //1:普通地址 2:合约地址 3:多签地址 - "txCount": 8, //int 交易笔数 - "totalOut": 0, //bigInt 总支出 - "totalIn": 1000000000000000, //bigInt 总收入 - "consensusLock": 0, //bigInt 本链默认资产共识锁定 - "timeLock": 0, //bigInt 本链默认资产时间锁定 - "balance": 1000000000000000, //bigInt 本链默认资产可用余额 - "totalBalance": 1000000000000000, //bigInt 本链默认资产总额 - "totalReward": 0, //bigInt 共识总奖励 - "tokens": [] //[string] 拥有的nrc20资产符号列表 -} -``` - -#### 资产信息(accountLedgerInfo) - -``` -accountLedgerInfo: { - "address": "tNULSeBaMrbMRiFAUeeAt……", //string 账户地址 - "chainId": 2, //int 资产的链id - "assetId": 1, //int 资产的id - "symbol": "NULS", //string 资产的符号 - "totalBalance": 1000000000000000, //bigInt 资产总额 - "balance": 1000000000000000, //bigInt 可用余额 - "timeLock": 0, //bigInt 时间锁定 - "consensusLock": 0 //bigInt 共识锁定 -} -``` - -#### 共识节点信息(consensusInfo) - -``` - { - "txHash": "0020c734c7ec……", //string 创建共识节点的交易hash - "agentId": "e4ae68a2", //string 节点id - "agentAddress": "5MR_2CfWGwnfh……", //string 创建节点的代理账户地址 - "packingAddress": "5MR_2CeXYdnth……", //string 节点负责打包区块的账户地址 - "rewardAddress": "5MR_2CeXYdnt……", //string 节点获取共识奖励的账户地址 - "agentAlias": null, //string 节点的代理地址别名 - "deposit": 2000000000000, //bigInt 创建节点时代理节点的保证金 - "commissionRate": 10, //int 节点收取的佣金比例,单位% - "createTime": 1552300674920, //long 节点的创建时间 - "status": 0, //int 节点状态 - //0:待共识, 1:共识中, 2:已注销 - "totalDeposit": 20000000000000, //bigInt 委托参与共识总金额 - "depositCount": 0, //int 委托次数 - "creditValue": 0, //double 信用值 取值[-1,1] - "totalPackingCount": 3966, //int 节点已打包出块总数 - "lostRate": 0, //double 丢块率 - "lastRewardHeight": 8000, //long 最后一次出块获取奖励的区块高度 - "deleteHash": null, //string 注销节点的交易hash - "blockHeight": 67, //long 创建节点时的区块高度 - "deleteHeight": 0, //long 注销节点时的区块高度 - "totalReward": 1256976254880, //bigInt 总共识奖励 totalReward=commissionReward+agentReward - "commissionReward": 1256976254880, //bigInt 委托共识奖励 - "agentReward": 0, //bigInt 节点获取奖励 - "roundPackingTime": 0, //long 当前轮次节点负责打包区块的时间 - "version": 1, //int 节点的协议版本号 - "type": 1, //int 1:普通节点,2:开发者节点,3:大使节点 - } -``` - -#### 委托共识信息(depositInfo) - -``` -depositInfo:{ - "txHash": "0020dd1b606191068566c……", //string 委托共识的交易hash - "amount": 20000000000000, //bigint 委托金额 - "agentHash": "0020c734c7ecf447……", //string 委托的共识节点的交易hash - "address": "5MR_2CfWGwnfhPcdnho……", //string 委托人的账户地址 - "createTime": 1552292357109, //long 委托时间 - "blockHeight": 69, //long 委托时的区块高度 - "deleteHeight": 0, //long 取消委托时的区块高度 - "type": 0 //int 0:委托, 1:取消委托 - "fee": { //bigInt 委托交易的手续费 - "chainId": 100, //手续费链id - "assetId": 1, //手续费资产id - "symbol": "ATOM", //手续费资产符号 - "value": 100000 //手续费金额 - }, -} -``` - - - -## 接口列表 - -### 链相关接口[chain] - -#### 查询本链信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getChainInfo", - "params":[], - "id":1234 -} -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "chainId": 100, //本链的id - "chainName": "nuls", //链名称 - "defaultAsset": {assetInfo}, //本链默认资产信息 - "assets": [ //本链所有资产信息集合 - {assetInfo} - ], - "seeds": [ //链的共识种子节点地址 - "8CPcA7kaXSHbWb3GHP7bd5hRLFu8RZv57rY9w" - ], - "inflationCoins": 500000000000000, //本链默认资产的通胀代币数量/年 - "status": 1 //状态:0 注销,1启用 - } -} -``` - -#### 查询链运行后的通用信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getInfo", - "params":[chainId], - "id":1234 -} -//参数说明 -chainId: int //本链的id -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "networkHeight": 278, //网络最新区块高度 - "localHeight": 278 //当前节点已同步的区块高度 - "defaultAsset": { //本链默认资产信息 - "symbol": "NULS", //资产符号 - "chainId": 2, //资产链ID - "assetId": 1, //资产ID - "decimals": 8 //支持小数位 - }, - "agentAsset": { //本链参与共识所用资产信息 - "symbol": "NULS", - "chainId": 2, - "assetId": 1, - "decimals": 8 - }, - "isRunCrossChain": true, //是否支持跨链 - "isRunSmartContract": true //是否启用智能合约 - } -} -``` - -#### 查询其他已注册跨链的链信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getOtherChainList", - "params":[chainId], - "id":1234 -} -//参数说明 -chainId: int //本链的id -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - { - "chainName": "nuls2", //链名称 - "chainId": 2 //链id - } - ] -} -``` - -### 区块相关接口[block] - -#### 查询最新区块头 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getBestBlockHeader", - "params":[chainId], - "id":1234 -} -//参数说明 -chainId: int //链的id -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {blockHeaderInfo} //区块头信息 -} -``` - -#### 根据高度查询区块头 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getHeaderByHeight", - "params":[chainId, blockHeight], - "id":1234 -} -//参数说明 -chainId: int //链的id -blockHeight:long //区块高度 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {blockHeaderInfo} //区块头信息 -} -``` - -#### 根据区块hash查询区块头 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getHeaderByHash", - "params":[chainId, blockHash], - "id":1234 -} -chainId: int //链的id -blockHash:string //区块hash -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {blockHeaderInfo} //区块头信息 -} -``` - -#### 根据高度查询完整区块 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getBlockByHeight", - "params":[chainId, blockHeight], - "id":1234 -} -//参数说明 -chainId: int //链的id -blockHeight:long //区块高度 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "header":{blockHeaderInfo}, //区块头信息 - "txList":[ //打包的交易信息 - {txInfo} - ] - } -} -``` - -#### 根据区块hash查询完整区块 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getBlockByHash", - "params":[chainId, blockHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -blockHash:string //区块hash -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "header":{blockHeaderInfo}, //区块头信息 - "txList":[ //打包的交易信息 - {txInfo} - ] - } -} -``` - -#### 查询区块头列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getBlockHeaderList", - "params":[chainId,pageNumber,pageSize, isHidden, packedAddress], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -isHidden:boolean //是否隐藏只有共识奖励交易的块 -packedAddress:string //根据区块打包地址过滤,非必填 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 7, - "list": [ - {blockHeaderInfo} - ] - } -} -``` - -### 账户相关的接口[account] - -#### 查询账户详细信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccount", - "params":[chainId,address], - "id":1234 -} -//参数说明 -chainId: int //链的id -address: string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {accountInfo} //账户信息 -} -``` - -#### 根据别名查询账户详细信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountByAlias", - "params":[chainId,alias], - "id":1234 -} -//参数说明 -chainId: int //链的id -alias: string //账户别名 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {accountInfo} //账户信息 -} -``` - -#### 查询持币账户排名 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAssetRanking", - "params":[chainId,assetChainId,assetId,pageNumber,pageSize], - "id":1234 -} -//参数说明 -chainId: int //链的id -assetChainId: int //资产链id -assetId: int //资产id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "address": "NULSd6HhGcgkvEjzGU6Zmx2cxonjKQXA26Cth", //账户地址 - "alias": null, //账户别名 - "type": 3, //地址类型,1:普通地址,2:合约地址,3:多签地址 - "totalBalance": 3029296137980, //总余额 - "locked": 0, //锁定金额 - "proportion": "0.159%", //金额总占比 - "decimal": 8 //资产小数位 - } - …… - ] - } -} -``` - -#### 查询账户本链资产列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountLedgerList", - "params":[chainId,address], - "id":1234 -} -//参数说明 -chainId: int //链的id -address: string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - {accountLedgerInfo} - ] -} -``` - -#### 查询账户跨链资产列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountCrossLedgerList", - "params":[chainId,address], - "id":1234 -} -//参数说明 -chainId: int //链的id -address: string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - {accountLedgerInfo} - ] -} -``` - -#### 查询账户单个资产余额 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountBalance", - "params":[chainId,assetChainId,assetId,address], - "id":1234 -} -//参数说明 -chainId: int //本链的id -assetChainId: int //资产的链id -assetId: int //资产的id -address: string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "totalBalance": 1000000000000000, //bigInt 资产总额 - "balance": 1000000000000000, //bigInt 可用余额 - "timeLock": 0, //bigInt 时间锁定金额 - "consensusLock": 0, //bigInt 共识锁定金额 - "freeze": 0, //bigInt 交易未确认金额 - "nonce": "0000000000000000", //string 资产的nonce值 - "nonceType": 1 //int nonce值是否已确认 - // 0:未确认, 1:已确认 - } -} -``` - -#### 查询账户锁定金额列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountFreezes", - "params":[chainId,pageNumber,pageSize,address], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -address: string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "txHash":"d3ks2x9bAl38bfsl……" //交易hash - "type":1 //锁定类型 - //1:时间锁定, 2:高度锁定, 3:共识锁定 - "time":1552300674920 //生成时间 - "lockedValue":155650000000 //锁定值 - "amount":100000000 //锁定金额 - "reason":"共识奖励" //锁定原因 - } -} -``` - -#### 查询别名是否可用 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"isAliasUsable", - "params":[chainId,alias], - "id":1234 -} -//参数说明 -chainId: int //链的id -alias:string //别名 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "value": true //boolean true: 可用, false: 不可用 - } -} -``` - -#### 查询各条链的地址前缀 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAllAddressPrefix", - "params":[], - "id":1234 -} -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": "1234", - "result": [ - { - "chainId": 1, //链ID - "addressPrefix": "NULS" //地址前缀 - }, - { - "chainId": 9, - "addressPrefix": "NERVE" - } - ] -} -``` - - - -### 交易相关接口[transaction] - -#### 查询交易详情 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getTx", - "params":[chainId,txHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -txHash: string //交易hash -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {txInfo} -} -``` - -#### 查询交易列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getTxList", - "params":[chainId,pageNumber,pageSize,txType,isHidden,startTime,endTime], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -txType:int //交易类型(txType),type=0时查询所有交易 -isHidden:boolean //是否隐藏共识奖励交易,默认是不隐藏,这个参数只能是type=0时有效 -startTime:long //区块开始时间(单位:秒),默认为0 -endTime:long //区块结束时间(单位:秒),默认为0 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "txHash": "a8611112f2b35385ee84f85……", //交易hash - "address": "tNULSeBaMrbMRiFA……", //账户地址 - "type": 1, //交易类型 - "createTime": 1531152, //交易时间,单位秒 - "height": 0, //交易被打包确定的区块高度 - "chainId": 2, //资产的链id - "assetId": 1, //资产id - "symbol": "NULS", //资产符号 - "values": 1000000000000000, //交易金额 - "fee": { //bigInt 手续费 - "chainId": 100, //手续费链id - "assetId": 1, //手续费资产id - "symbol": "ATOM", //手续费资产符号 - "value": 100000 //手续费金额 - }, - "balance": 1000000000000000, //交易后账户的余额 - "transferType": 1, // -1:转出, 1:转入 - "status": 1 //交易状态 0:未确认,1:已确认 - } - ] - } -} -``` - -#### 查询区块打包的交易 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getBlockTxList", - "params":[chainId,blockHeight,txType], - "id":1234 -} -//参数说明 -chainId: int //链的id -blockHeight:long //区块高度 -txType:int //交易类型(txType),type=0时查询所有交易 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "txHash": "a8611112f2b35385ee84f85……", //交易hash - "address": "tNULSeBaMrbMRiFA……", //账户地址 - "type": 1, //交易类型 - "createTime": 1531152, //交易时间,单位秒 - "height": 0, //交易被打包确定的区块高度 - "chainId": 2, //资产的链id - "assetId": 1, //资产id - "symbol": "NULS", //资产符号 - "values": 1000000000000000, //交易金额 - "fee": { //bigInt 手续费 - "chainId": 100, //手续费链id - "assetId": 1, //手续费资产id - "symbol": "ATOM", //手续费资产符号 - "value": 100000 //手续费金额 - }, - "balance": 1000000000000000, //交易后账户的余额 - "transferType": 1, // -1:转出, 1:转入 - "status": 1 //交易状态 0:未确认,1:已确认 - } - ] - } -} -``` - -#### 查询账户的交易列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountTxs", - "params":[chainId,pageNumber,pageSize,address,txType,startHeight, endHeight,assetChainId, assetId], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -address: string //账户地址 -txType:int //交易类型(txType),type=0时查询所有交易 -startHeight:long //打包交易的块起始高度,默认为-1,不限制 -endHeight:long //交易的块截止高度,默认为-1,不限制 -assetChainId:int //资产chainId,默认为0 -assetId:int //资产ID,默认为0 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "txHash": "a8611112f2b35385ee84f85……", //交易hash - "address": "tNULSeBaMrbMRiFA……", //账户地址 - "type": 1, //交易类型 - "createTime": 1531152, //交易时间,单位秒 - "height": 0, //交易被打包确定的区块高度 - "chainId": 2, //资产的链id - "assetId": 1, //资产id - "symbol": "NULS", //资产符号 - "values": 1000000000000000, //交易金额 - "fee": { //bigInt 手续费 - "chainId": 100, //手续费链id - "assetId": 1, //手续费资产id - "symbol": "ATOM", //手续费资产符号 - "value": 100000 //手续费金额 - }, - "balance": 1000000000000000, //交易后账户的余额 - "transferType": 1, // -1:转出, 1:转入 - "status": 1 //交易状态 0:未确认,1:已确认 - } - ] - } -} -``` - -#### 验证离线组装交易是否合法 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"validateTx", - "params":[chainId, txHex], - "id":1234 -} -//参数说明 -chainId: int //链的id -txHex: string //组装的交易序列化后的16进制字符串 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "value": "46b90763901898c0c250bd749……" //交易hash - } -} -``` - -#### 广播离线组装交易 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"broadcastTx", - "params":[chainId, txHex], - "id":1234 -} -//参数说明 -chainId: int //链的id -txHex: string //组装的交易序列化后的16进制字符串 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "value": true //true广播成功,false广播失败 - } -} -``` - -#### 广播离线组装交易(不验证合约) - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"broadcastTxWithNoContractValidation", - "params":[chainId, txHex], - "id":1234 -} -//参数说明 -chainId: int //链的id -txHex: string //组装的交易序列化后的16进制字符串 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "value": true //true广播成功,false广播失败 - } -} -``` - -### 共识相关接口[consensus] - -#### 查询可委托共识节点列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getConsensusNodes", - "params":[chainId,pageNumber,pageSize,type], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -type:int //节点类型 - //0:所有节点,1:普通节点,2:开发者节点,3:大使节点 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {conesnsusInfo} - ] - } -} -``` - -#### 查询所有委托共识节点列表(包括已退出、或被红牌罚下的) - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAllConsensusNodes", - "params":[chainId,pageNumber,pageSize], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {conesnsusInfo} - ] - } -} -``` - -#### 查询账户委托的共识节点列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountConsensus", - "params":[chainId,pageNumber,pageSize, address], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -address:string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {conesnsusInfo} - ] - } -} -``` - -#### 查询共识节点详情 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getConsensusNode", - "params":[chainId,txHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -txHash:string //创建节点时的交易hash -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {conesnsusInfo} -} -``` - -#### 查询账户创建的共识节点详情 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountConsensusNode", - "params":[chainId,address], - "id":1234 -} -//参数说明 -chainId: int //链的id -address:string //账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": {conesnsusInfo} -} -``` - -#### 查询节点委托中列表信息 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getConsensusDeposit", - "params":[chainId,pageNumber,pageSize,txHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -txHash:string //创建节点时的交易hash -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {depositInfo} - ] - } -} -``` - -#### 查询节点历史委托列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAllConsensusDeposit", - "params":[chainId,pageNumber,pageSize,txHash,type], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -txHash:string //创建节点时的交易hash -type:int //0:加入委托,1:退出委托,2:所有 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {depositInfo} - ] - } -} -``` - -#### 查询账户的委托列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountDeposit", - "params":[chainId,pageNumber,pageSize,address,agentHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -address:string //账户地址 -txHash:string //创建节点时的交易hash,为空时查询账户所有委托 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - {depositInfo} - ] - } -} -``` - -#### 查询账户的委托总额 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAccountDepositValue", - "params":[chainId,address,agentHash], - "id":1234 -} -//参数说明 -chainId: int //链的id -address:string //账户地址 -txHash:string //创建节点时的交易hash,为空时查询账户所有委托 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": 10000000000 //委托总额 -} -``` - -#### 查询共识惩罚列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getPunishList", - "params":[chainId,pageNumber,pageSize,0,agentAddress], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -type:int //惩罚类型 0:查询所有,1:黄牌,2:红牌 -agentAddress:string //共识节点的代理账户地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "txHash": //string 惩罚交易hash - "type": //int 惩罚类型 1:黄牌,2:红牌 - "address": //string 惩罚共识节点的代理账户地址 - "time": //long 惩罚时间 - "blockHeight": //long 惩罚交易的区块高度 - "roundIndex": //long 区块的轮次 - "packageIndex": //long 打包的序列号 - "reason": //string 惩罚原因 - } - ] - } -} -``` - -#### 查询轮次列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getRoundList", - "params":[chainId,pageNumber,pageSize], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 1, - "totalCount": 4036, - "list": [ - { - "index": 155233203, //long 共识轮次 - "startTime": 1552371670001, //long 当前轮起始时间 - "memberCount": 2, //int 当前轮出块节点数 - "endTime": 1552371690001, //long 当前轮结束时间 - "redCardCount": 0, //int 本轮罚出红牌数量 - "yellowCardCount": 0, //int 本轮发出黄牌数量 - "producedBlockCount": 1, //int 本轮共计出块数量 - "startHeight": 8000, //long 本轮起始高度 - "endHeight": 0, //long 本轮结束高度 - "lostRate": 0 //double 丢块率 - } - ] - } -} -``` - - - -### 智能合约相关接口[contract] - -#### 查询合约详情 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getContract", - "params":[chainId, contractAddress], - "id":1234 -} -chainId: int //链的id -contractAddress:string //智能合约地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "contractAddress": "tNULSeBaNC46Z66DgU……", //string 合约地址 - "creater": "tNULSeBaMvEtDfvZuu……", //string 合约创建人地址 - "createTxHash": "00209d28833258b192493……", //string 创建合约的交易hash - "blockHeight": 15, //long 创建合约的区块高度 - "success": true, //boolean 是否创建成功 - "balance": 0, //bigInt 合约的NULS余额 - "errorMsg": null, //string 创建失败的错误信息 - "status": 0, //int 合约状态 - -1:执行失败,0:未认证,1:正在审核,2:通过验证,3:已删除 - "certificationTime": 0, //long 认证时间 - "createTime": 1553336525059, //long 合约创建时间 - "remark": "create contract test", //string 备注 - "txCount": 2, //int 合约相关的交易 - "deleteHash": null, //string 删除合约的交易hash - "methods": [ //[object] 合约包含的函数 - { - "name": "name", //string 接口名称 - "returnType": "String", //string 返回值类型 - "params": [] //[object] 接口参数 - } - ], - "nrc20": true, //boolean 是否是nrc20合约 - "tokenName": "KQB", //string token名称 - "symbol": "KQB", //string token符号 - "decimals": 2, //string 小数位 - "totalSupply": "1000000000000", //bigInt 总量 - "transferCount": 2, //int token转账次数 - "owners": [ //[string] token持有者 - "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD" - ] - } -} -``` - -#### 查询合约列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getContractList", - "params":[chainId,pageNumber,pageSize,onlyNrc20,isHidden], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -tokenType:int //合约token类型 0: 非token, 1: NRC20, 2: NRC721 -isHidden: boolean //是否隐藏token类型合约 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "contractAddress": //string 合约地址 - "remark": //string 备注 - "txCount": //int 智能合约相关交易数量 - "status": //int 合约状态 - -1:执行失败,0:未认证,1:正在审核,2:通过验证,3:已删除 - "createTime": //long 创建时间 - "balance": //bigInt 合约剩余NULS余额 - "tokenName": //string token名称 - "symbol": "KQB", //string token符号 - "decimals": 2, //string 小数位 - "totalSupply": "1000000000000", //bigInt 总量, - "tokenType":1 //int token类型, 0: 非token, 1: NRC20, 2: NRC721 - } - ] - } -} -``` - -#### 查询合约相关交易列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getContractTxList", - "params":[chainId,pageNumber,pageSize,txType,contractAddress], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -txType:int //交易类型 默认为0,查询所有交易 -contractAddress:string //合约地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 3, - "list": [ - { - "contractAddress": "tNULSeBaN32a2h……", //string 合约地址 - "txHash": "0020658e3edc61196e73be0…… //string 交易hash - "blockHeight": 12, //long 交易确认区块高度 - "time": 1553336503846, //long 交易生成时间 - "type": 20 //int 交易类型 - "fee": "5100000" //bigint 交易手续费 - } - ] - } -} -``` - -#### 查询nrc20合约转账记录列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getContractTokens", - "params":[chainId,pageNumber,pageSize,contractAddress], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -contractAddress:string //合约地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 3, - "list": [ - { - "address": "tNULSeBaMvEt……", //string 账户地址 - "tokenName": "KQB", //string 转账token名称 - "tokenSymbol": "KQB", //string 转账token符号 - "contractAddress": "tNULSeBaNC46Z……", //string 合约地址 - "balance": 999900000000, //bigint 转账后余额 - "decimals": 2 //int 精确小数位数 - } - ] - } -} -``` - -#### 查询账户nrc20转账记录列表 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getTokenTransfers", - "params":[chainId,pageNumber,pageSize,address,contractAddress], - "id":1234 -} -//参数说明 -chainId: int //链的id -pageNumber:int //页码 -pageSize:int //每页显示条数,取值[1-1000] -address:string //账户地址 -contractAddress:string //合约地址 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": { - "pageNumber": 1, - "pageSize": 10, - "totalCount": 1, - "list": [ - { - "txHash": "002016f5a811b939535……", //string 交易hash - "height": 19, //long 交易打包确认区块高度 - "contractAddress": "tNULSeBaNC……", //string 合约地址 - "name": "KQB", //string token名称 - "symbol": "KQB", //string token符号 - "decimals": 2, //int 精确小数位数 - "fromAddress": "tNULSeBaMvE……", //string 转账地址 - "toAddress": "tNULSeBaMnrs6……", //string 接收地址 - "value": "100000000", //bigInt 转账金额 - "time": 1553336574791, //long 交易时间 - "fromBalance": "999900000000", //bigInt 转账人余额 - "toBalance": "100000000" //bigInt 接收人余额 - } - ] - } -} -``` - -### 统计相关接口[statistical] - -#### 交易数量统计 - -请求: - -``` -{ -"jsonrpc":"2.0", -"method":"getTxStatistical", -"params":[chainId,type], -"id":1234 -} -//参数说明 -chainId: int //链的id -type: int //0:最近14天, 1:最近一周, 2:最近一月, 3:最近一年 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - { - "key": "2018-6", //string 统计周期 - "value": 265234 //long 统计数量 - }, - { - "key": "2018-7", - "value": 425327 - } - ] -} -``` - -#### 统计共识节点数量 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getConsensusNodeCount", - "params":[chainId], - "id":1234 -} -//参数说明 -chainId: int //链的id -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result":{ - "consensusCount":78, //int 共识节点数量 - "seedsCount":5, //int 种子节点数量 - "totalCount":83 //int 总数量 - } -} -``` - -#### 共识奖励统计 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getConsensusStatistical", - "params":[chainId,type], - "id":1234 -} -//参数说明 -chainId: int //链的id -type: int //0:14天,1:周,2:月,3:年,4:全部 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - { - "key": "6/5", //string 统计周期 - "value": 556572872229264 //bigInt 共识奖励总额 - }, - { - "key": "6/6", - "value": 608939272229264 - }, - { - "key": "6/7", - "value": 628717072229264 - }, - { - "key": "6/8", - "value": 632738172229264 - }, - { - "key": "6/9", - "value": 629865972229264 - }, - { - "key": "6/10", - "value": 671865972229264 - } - ] -} -``` - -#### 年化奖励率统计 - -请求: - -``` -{ - "jsonrpc":"2.0", - "method":"getAnnulizedRewardStatistical", - "params":[chainId,type], - "id":1234 -} -//参数说明 -chainId: int //链的id -type: int //0:14天,1:周,2:月,3:年,4:全部 -``` - -返回: - -``` -{ - "jsonrpc": "2.0", - "id": 1234, - "result": [ - { - "key": "5/29", //string 统计周期 - "value": 116.17 //dobule 年化收益% - }, - { - "key": "5/30", - "value": 121.61 - }, - { - "key": "5/31", - "value": 106.16 - }, - { - "key": "6/1", - "value": 112.27 - }, - { - "key": "6/2", - "value": 112.27 - } - ] -} -``` - diff --git a/module/nuls-public-service/documents/Public-Service_Design.md b/module/nuls-public-service/documents/Public-Service_Design.md deleted file mode 100644 index acdbba5772..0000000000 --- a/module/nuls-public-service/documents/Public-Service_Design.md +++ /dev/null @@ -1,92 +0,0 @@ -# public-service模块设计文档 - -[TOC] - -## 总体概览 - -### 模块概述 - -#### 为什么要有public-service模块 - -区块链项目在运行过程中,所产生的链上的数据,都会相互广播,每个节点也会存储数据。但这些数据,并不能直观的展示给用户,且用户需要查询相关的数据也很麻烦。public-service指在给用户提供一个通过浏览器或网页钱包查询链上数据和相关统计信息。 - -#### public-service要做什么 - -解析节点钱包已同步到的区块,将数据存入到可提供关系查询和统计的数据库中。 - -对外提供查询区块、交易、账户、共识信息、合约信息、统计信息等接口。 - -#### public-service在系统中的定位 - -public-service属于辅助型模块,非底层核心模块,因此默认钱包启动后不会运行该模块。 - -运行public-service前服务器需要先安装数据库,默认实现是mongoDB数据库。 - -## 功能设计 - -### 功能架构图 - -![](/img/public-service-functions.png) - - - -### 接口说明 - -**io.nuls.api.analysis** - -负责调用底层模块接口和解析接口返回的数据 - -WalletRpcHandler:public-service调用其他模块RPC接口处理类 - -AnalysisHandler: public-service解析底层区块数据处理类 - -**io.nuls.api.db** - -提供public-service数据库增删改查的接口与实现 - -**io.nuls.api.model** - -public-service的数据结构,包括持久层、dto层 - -**io.nuls.api.rpc** - -对外提供rpc接口,查询区块、交易、账户信息等 - -**io.nuls.api.service** - -public-service同步区块和回滚区块的主业务接口 - -SyncService: 同步区块 - -RollbackService:回滚区块 - -**io.nuls.api.task** - -public-service定时任务,包括同步区块任务、统计任务等 - -SyncBlockTask:同步区块的定时任务 - -## 模块RPC接口 - -参考[NULS2.0-API接口文档](./account.md) - - - -## Java特有的设计 - -### JAVA实现细节简要说明 - -**io.nuls.api.cache.ApiCache** - -缓存链上的常用数据,包括链信息、账户信息、共识信息、统计信息等。 - -**io.nuls.api.task.SyncBlockTask** - -调用底层区块模块接口,获取下一个区块,区块连续性验证成功后,存储数据到mongoDB,继续获取下一区块信息;若区块hash连续性验证失败,回滚当前已存储的最新块,直到连续性验证通过为止。 - -若获取不到下一区块,说明当前public-service已经解析到最新高度,则每过10秒,重新获取一次最新高度的区块并做解析和存储。 - -**io.nuls.api.service.SyncService** - -同步区块的主接口, 首先得处理区块奖励的统计,再根据不同交易,处理各个业务相关的数据,再处理轮次相关的信息,最后将解析完的数据存储到数据库。 - diff --git a/module/nuls-public-service/documents/img/public-service-functions.png b/module/nuls-public-service/documents/img/public-service-functions.png deleted file mode 100644 index a85b7ffd0ea8cebf2649203d6c892e3945434241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32624 zcmdqIXH-)`|1KJe6r~8Lp!AM~F1@KBMXI8r5J9C%4IsTFiV7%2inP!KrHFv^-jQCF zoVQ3-! zCu?`fv4TM0r*t%K-uE_NpB#@r_h913(Prf8Vk3TIFJ}}*joIT_hlpH}7kE80kS-D( z8$uKEdR-&&G+$26b?po(et8IOMo$dIsrAx^O0U)kG?S|q!-K~Um=aCC@0i`YXsP+o z#Jr9__{7%Asuhf%u1q5jfgqxJvEav@cL)jyMC2kl1Gr)J|BD+`kL&ES=!WZ1D_M%x z?-Qf%U34yeB%G@nYpNAz=p-IrG1&$atg;x)NxbtRfFkHMf&%esSfcEXbm}*clil~Z zGR@SE9o8?qCmrsc8rJ+kU*)hWpiw6N!Ow2t z3REneW;>>ksKgX%FjM)e>1HEYBTsbHHNg;p1c5a)yakoHbZ;bgq=vQ#>dl4 zf#BZ$sWJsYaSd!3)u%TPu2ecoRAKJ~#|!ei-+eiLP&P!9%=}=&6D?x)0b)!cRwPQ! z5cB~||K|BtBVS5`V^rqv(`i-yibL#Rws@^4DW0l87?E&U#HqF1pD3%saPwYVI$`yBwgcSzNz)BK9c$=47`*PpWAqBlpF+XX>15ob=a9&;t@DnB1}HK z^`1(IrdyZ73%<`7-99+v523 zg*lGSs%ZDDlpT^-ln=YftntbPP##srMFMpcW{NNG2qTZ!QJFWW7!^u1bWuPk> zL9t{@$$=>UHvBD7(c{~Ak!5g|>+HK{_9~qU(e8qadVMLL23mO)WTT{$@-FG7V1#|!=&E(2 z3`MT4@1oB7s}aQQQ(+h5YuSgS5ir>*Q<5@qVGCBs8Fj3ctl&@8O`Q?7J;u0kksgu#M>NMAW)Ea`6P!Rn>zW z!AV^m$OdL1$^^4ayK^3<-sI%^{i_x>LtYo1>faKiO1_9Ur)CYW7u1~NP%?xIJ04;v zIjEROlO=avGmfGVQ%QP2J9FjVagzxZRKp6CGB=HgVacaDk}g>+|A;yIiPEFW44Ytr zv1x$qjiae7GQ3S++1i2J!+0n5&_H*0dlWe-li{J|9{xJtPj&mCbS-Q?jm`>A4WFi? zA!oRuONk!KeomF_by>PPpMcPfc=r}ZF6Pf4q+ur2xc%{r%U+~-Se4#2p*S)s>i2IxXtxK_{*>A-}D=;wJ;irSai8r@I&|e20r@9YvSe&KHrzwD5+@w`-r3#77}~$ zKfhSO-_idr4ftE92{tzuiBPKXseT+FLEL-w;KcHRqbkdZQteTg54?a-A;k%OZqt{a zSc2O;BU6IiJh8MXFSajyA_}%>7@p=l)o}L6PPj_{u{btDG`ZB{x3Rlfrw7Uqtcp3w zP=|(Tk~K`uJ#}sTn%Q$?hLj?!Xyy1JT^!Sz!3`^Jut^uR)H5shXk4C-XHRv?GN(o_ z|IY4R8P4ln8!uU3Ebnw$>X|5W7{;HDr3bVBT0kzA(C2LaTwNsWOWndzRWD5m?wWm?xZ}XM(_#B!vyqYwYwS;Y`A|70E(9s=*yW;_N z%b>ruHJi~(X6|#ke3xaKWhZoViXAy#JoEk;e}8h!FIx1WBA%wJ-+g03w`%S9T@ZE7+8&tW|LJ*^>1iP%GgiHNF*5eB2l*d(WUoT#| zB=zBfs8potVNRm7ZA8^#s$Wm(i{ES1Up+Zs&H~p?XU#eMYTf2p$&$11TWC*0W}p~4 ztjB_i>#Q2BEov_4J7X?;j>}WxF*l~U9pu%N$c3A7Hfn-$N6E5P`XE$iz(hjxObU}) zf*FyFYQ%x>k4xH!s}?6DpBJfC6j)l#_3Fbdop4U^iQ>Ws4iUaGEqNCo`Z&Tmi#=;P zndHX}WCc=07-o+sSI6yQcl@|v6PB`<{&`u!A-n56eJM)oA`{Vqx;=G!Q+aLiA46hB z^+e5U$F7-`_k1@k>#D_dU9~wn+_9N$3zyw5cfmN<@6VheWb79<98V<6yEZ4Q_>Dm8 z{i_H}^7_iZ7MexE%Dk`lgh!WEy_s;MG&mzq(4=8~K0yQZM)f?ck{^3*`RGU01!6K< z4w#BIjeI&~1gDaX<@$6mw`>L4?ZYMeTVilk!dgkz!@O~xm`LP6`DpltCbpR0WO=EW z-z78$FQkUefH$Nmy53fuj)_^qxg(>WAnt>UL3D?=_P zrM`jIErQLh2 z*62)E*V=Jidy7$_MfdF$jmY2UoDntMd(^ycc1IZeWspyjXEU z-{!@1xm8-O5na|@>f{O+I3E^r4mcA%^3d|dH273cvVt^2Int$mTp8aZZPOhmx~oq) z;T!XL7U7=hoU0ot^)~)tN!0lQ{)*twteT1be(KVt6A_J_vb6#42+>Yo_eOOZmnB6= zo(OEv)7KqJiWvAw0O7HN*n~}QlC@f}{?sYoW1^2oUFXOo4M&VDh+Mwm2#U7x&KTi! zEzkWz2eayzxd%jif3J80F{8j(0Ju_N;8F{jV2$z$-ha|LpVaJ(m^qam;nPk^)0%eY z<1M~*vz{jfkpVJb@t4&-Hp{DXHBYo!O#Yk1KFOAZ>NsceyInhP?BHD?W1n>|H&Ihr zZOr6@Wz>;@jthV0Gy6|-QkhETPiM};ZbSwgE@$tmyHB!UQoN>K93O4Mk+bcQdEKm> zq;V?Agr|RnmD*1>)Lp!un4m)mbz^_1m}BJwuYVxpG4BaiV}8AxATWWJoyTn9nq<+c z*F6ajjAKF^n0$O&%g1FUI)V98i#@5fl69GKTcJj=R zA>6Pp645;#`NT^^7>gT;LUe(*Dm9vGGgV}x*x{{kE={RkGpka|<)IW}2VMWF4auAVH1_ehd6oB}!HlWOm+jH7bOJuQoR_)FkP zSBj4i2zJ8#IfQ#ddj!2m)e}B2`J&XYp4lYV2uPQIR?mlsF!i`-Lt~dRWGl^8? z#Xmp9QRGxt+1N8*5A6A()mq9VAN5%5GL!DBIDXi!_coI43!4sv%FX%9#AH_&3AozCv)X+m*ZUTa-veh%XJ^ihPDKMe=M^W`^ybARX zpV8=DCujKMzcXyIu+`2Tc{0G*j67!~rgBD}_OpDS!0XsbP}CgSnQUre*ZQY?r-=(i zZMBv|k-3*IzIQg85FFYL-2Oo!1cIi9>fsWBJrv9R17y>Fu`s# zHdrZMzi!o+rdB9MttU&)fZ)MO49w}%;^Z?j=m{Eyb{rjc^CR4tv`SMe#ej5s)RnLD~jg`JI=5V?C@VikwSyu#t zf`>+a`)$5i1$Y7b;VYowe+K*&!#MA;Rc_OJ30$-IH;H=$;O1w&%|KFAO*dfpug4eb zmz# zM~d#@6<(MClP6Sc*Z)oZBS@5NF)yxc?RH%)%;|;%<;0VXvK3ICu;(RJA5}SjYdV>_ z(h?2}tV>c7uQG2Lx-#Vp5uzjuZjNGHA%!8QS{0DfkOl|Q8qEJK{+F)!xVPV0QF{-t zlp$-x&7XqzNgMxpZLFxJ4Hb4#x@Ry`YZ%;kn0tQ+MMif4JjI)~>4^#08%Lmutv^)L zNi2~{bxcZrFNK6Wjr_T`_vf!V){2^y>!mP0Z6)Pz*B<@2k@B}R7kNXDndh@w{GvtP$bONvNBfMhN0{-L)z#L088=u{(J6y?=ojTqrgeO`A z9^C%#^=1wQw^qFr#bGLRs*2x`H3V|Q54>Z~z`)0FxdSmRCot_LI?!v86H1odMcSrE zLf9Y~*gpi40w%RlU|wgx(2KOCD0rBc+YLZN@YZZz;M`Yi2{G->Myh@L??sdL2u^9> zr%T9$Ily9(9F*dPPL*I_5T`0Ak_QUrs_~_ zs9rgYWBu`=126=LgeN73uT5vPpez;uK>2;t5J=t4#?QjLYvY!)P9Oj+EDdIox=fb? zUAF%Es_WEPxBW|Z#UE^z5+z5QBc?t;cFMVK=b<}s-<8zm-^**`wrOQ#?It#45D7`J zDxI$=s2yu30}1P4_2AM?(k1tP6rxyE1xPG5^i?)%wvzSZ2il8f@TlzB9naMTE& zvm#BKJS^5H&XJ!XUgC6%Cfh>??iMfq=n)U zH*bOw%)O^i5vW&oMlDPhDMX?!@ZU&kwTpfebSX$Ia3a{?p7cFUIr4Z0aY29F>+D&? znN4HCgu>f78u4&7(-ex(lC>kcUBc~^WU9T-T{IlZlpNK&!zLEvYHVIpKG_Gygw0`V zNNg~rhIQqLRB1H7L+_7JOR;?~d2(TXcOQP+JLk&SR92iR`=H=iic#vt7AT$ z1nxG6ZTEAsUB=r@xIzHRgH!8Lx^t!#_M3h{N$ye37 zVZ}{swZf)$iiF#ME`Mj+Wxe zMcQenoA)U{M}?jbJ?CL2Hf0qnex6g-@mrPcUzpmeEi?9&1p4?f4S!*U13 z*q<`ZAHN%1jiW7pCLWx%$CN_AVs_+z72jPbpVyQ{qIz*!8v`da@-J`KJKa1s`fkx+ zp2C=}yq0tC>}C7L7t>a=>gFHL|J44W#{rW~j=nj)aFA)jED*STfG5Jux@2VnE8o1j z45cYMBfpsdprSH=(?iwy;yq!HYt1QIa5da!>yd8z6WLu7Ci-#>UFE*(;ZiZ_$(}}_ zicM*K)A~C6ohfRN^X??aH50>k`W&joVHa*6tL6`dn3%sA^BHt&>ObE7brM0*Hziyp z-sIcDe4}`Mm&|rF2IhWJR#7t>dy=JDQCn#*=nCy3+VBKRKBS+KE=s$BKbDE_bQDfc zbJ&(9XW&EuH*=)UTlnht0)@!ump$GU74#A{VbBX6O+(M_d*6&hGP`@wqNt71GK4;cyax)+MB3^RH{o-C( zgMnEUu>&18eij_(h(ahI13ECd&(QZX$0K+k2gE8zP;KUhU8 z;C*)^yEAToAerD5aT~Wxo{O+&A1PnWwd)8})qjt#oBRn?ywi+2LY%e~tJ0TSSqQvf z+9(rwS#|{RAtP^H0p}dKx%#8R`Q_BwQDpgY+6M`2(%x?;etk8DzpM4Q*1PD4f2&hC zEeB5)d!G**T@-V1IW&IjdGjg5=Ss&k(ChExX!F0=Bv^@Sy^ES1@j{)kZV}`(#JTs; zK+hRY(uj9bo$P9!5_LJ(i=&Vf-ksyH-gG(Vutj}9brRS8dvJG7S(2O@INW^oV1{uu zZTE#9$t`nXAu;M=NGTi@0ugkle)B%LLH)^nB;!-Jj(OvCPe{;PgnAo5 z2YQ_J^EU;P3{QWYg>^h?2(04_m`%BJW9wgP85Ydt+d+jku?YCu zM=jy=FTs25hbP~3qj(?sH%%4zZdTDpg|6AG&jU@W{xw;Pw+NKn!@wIzczytXP&pl< z^Y&k^;W;S=XSxjAKL80532+A~S^{CM0zi1$|8s?U6@<)Pcg!22nHg2%+`oi#1cX^f zEsWJU10-WQ+uw15%3dztV~3>$>?SI5gA_U@Q8l2tid1=89OGC^dH$7D>(Gdwm8YP9 zn7ePE^|@EqVMy=x<8n!;Bw!OWp&WL56e&NZxn$dK@%f8dS#?^d%O>a^)fy{@f% zah^joObmM|>u%(R**U!wN~mzRl?M}yjNNIlXpt(@tAIFcJ^V;aju*UhYocT~KSEydDNLKS*W{zktpzhvBvyO(+y#NIC&p0q#YwyW(g3fADisoXI(ASXYf#^9V~)dq(erv6 zKekyU$2x6WrPuBcf9^#A+@^$pm6h0ey};P9G2ON#dOrA&2+Nx(oYtxXI%_YUjYnMgl55#D_@eQE-+7p)$I6^`?=E7m5aX{Yj7_~Pe51;*#!qo?4tfz)L2 z?o)ReDA5RZF0OJo&r~4632e1^m+d8#z+Z@C5Cw)j;GuL&?O5-4bcMVbbtOyjT*OO3 zJ^}I5zsQ6$LL68l6FYPq^J4z2@Lp0R6)nH z0<`$`Jzgvo8kAn^CzX-hY6X4N|3EGI(ARhVyeUwP>Spm*JS*^W%^^35>8w@=^UW<~ z!3%30W~ESb=+7wrRXK z2D~NgM40&K8HrJ%AxZ!sJhI%{{%x3tC%f4g9&p8~v1(9?pkaPS>m@P7=)N3v_i#+6 zyzCEXtUevSRk9xB}yYSsZ|&zx`*-6`JHvdm5?irUdW=jr$ZQe@FT`K9;?(F8hn$`juTnerLe2=0x=( zHPmmg>RzM{i>i<-TiYTURp@0lgAoB77NYZO%!}VyiSCPix&Ovn*+l4SnN~udzqy=b zYk5WZlH>O(pRN#dZ?jSic5zoyU~t|^9c9xF@`|u)C(7f51cv)A=4D)5CVbk~fh)(k zRtH%5Z=xGDO5(={gU-5Y<|5qW&NtRk75&Ez<<{MCV4Prpybbk}u|^zIy0VI%CgDhNcieV{)&GiFSbqflQ1@ED<+&m`1ETY zgri2Ki1uw$8%h8oo8=nW%SjC@Q+cg%wm#;A6+<}=X562R4)a~T>KZtM7m6BQVQV4W zEi06HNpNvLnUt~^(vy)FQ`nQeW_{my;WqaSvNAsg|K=7ymTHJUQu(=a{ecZZ#&qJ} zz~>bKqXrmB1c_TX;T{7B=jT3Z|NjL-Q)t)6-z6uNc6c&w00x6#GT;C#&lH4u`pUxk z!#gRA`_;6SCCF^#Fm(%@`_Yb?P1Az(RznM_KVfgN8h-V6lc3E4I!WQ`NxhNund4(M z8=I?nyA#8|VmP#>lmp&JIJo~Xtbogn&pvw2prICF0}B7`OJs6S=lIo0b&|B#2Gm3K z;|L(%S`E(KAdzp^IJJ*sX)B4auE@=lkK}o(=-CWObvc|{(uby!tOQiEN{8jnlZvFiA2go&J>IL^Ltur{tkXaL zc2P;T`q$mXN}gQ>tSnh=s5azc`9qaDP=W*^@chhPJ=qS$_7wY z%T8Rl_UP&ECZ=&K8gYl?R-@ce#=1Oms>hnT+mye zU~3z=T)CAjeKD-2ByIsPhRLl+S;j^z50{6)1?yVgOiumGSQfQ_hRnHM5Yh>L2wK}i_DO%;5f(q_WW>L}90 z+~+5WO^awHaZL+}wyBbass~?uNO(-G559+jQTgdc)gqU)WgDG4%Bf-;6CXh#cAA&< zsVB&LRelHMAgAcK)ke_gCOvP6wQ%*cJ?f5(YeinmNLY2d z-=F5o37eQ@B&9hNbD%scGwk3F*p5=<{<#C7gd`SWgE9FS5kGvdTrYrddYa#!=>>$G zLzY2`JvVA=V21{pC&%PH7{__j!Tk05_2xGp@+H{J8dQ64Tl+f>hD;Kgik5&Gd&lVX zecr8%p!y3_Qp^EwR&KbhM*I_`$Q`3K#d(c;wb*^p0KZYQIpO6m3Sc$m?E&=#uqgLi zuB?NrvLr6^aj9KY?!!FKFCGBYT>#8X`IZs7{Vg>kS1Ca) zkXWhUgZskSTLYke`t|}X?DZ{eq~D|&n}e&!ZC+~&+l4rfit$s;mt83P+OTMzX5hjU z%X_Mu);Fo!c~))73w|EyL=2RrfvgJ9-Sid=59TMzBwjmJ&(1T{Z)6pBroTajcDryT&`YV z-Ff3^Z?8?-9?*uMnieFP?PoYO^S9}D(kg>XqC1*;pq?zu>+;q1s8?{+| zfQ)04;vWg~V=wf4I!hn7_gX3$NJ)(7fG_(vDm@91x7{c2Cj7(tNZ1}>v%y9Dh3Y;w zD1gZ!X@gvhj^pCj(?KG1l7vmW>sKQRmKHVWs-EJSJ0n_8b-!r4inT)RR%Tf0ffN`( z<<1a)T&J+C&>X)&>A_O6|G92m@j5HO2oA>=Wi88N(K$$5MDL$p-T9n3j)flvdH)K*4#ByyFtY)u@8KeUTJ5pkRMF+l z6}^V>8&gIDE}&Ou$_O3gKfBneN`oJd2TJ7mx3(Ip9eoiC67Xr?FmtK1ZYbzrls$l% zU3?Z3iDCQVQp^K_&p%Fb)g8y69U2M1IP;XqkIBMSt;${-XpPd&_;=lc#)*abax|ob z<||F5@33C(ke)g+ekAAA393U3#a58e1><)$6UO6)^*!$V9J(~+6dKS?#KQB`cNPHk zwHdoDD|IRB0?}pCA}eN=b27mGQlVvcUp)T4jEBp`PswI}Vww1F+KzIIUP34PbM;Fo z{iW?aSR)fGz(BRg;+PtU4$2OK?r8E`3+PWFJ_f2F{biA1jh))b^TzZO`s;aNvk^dPz1q9^l;d?(1(w>_n>_-@xE$veCskKe2hnlv>Ms zNHx1Tb(eYR@i}_x4O;d3dPd;1*?Jc=J}e7 zMW^*!i{3`6ALl%Dn;ST@*4kjU6;~4Zz%8Zc*z(YFc;!)4Bx2PPSYy>uW`+NOo5wNF z$L=pUdYTQ|8|Je@7|kYavqh3wy=AD>OAr{x{z*%>K4`TISH7Hmt9v$bdyMHS+``kW zbACto_#=mIS;3n4lub<(Pdj7W!g}KVwsoKJ4`-9llCJF+H1GZ(8oe~@MmU^yaXIqt zvTWG3hTj*zXqDm7c!25}9QNUaQbM`?j&?@ZPuKtv{k?C~#I`@RjC+%p8@hJPLlObV zE|ks>g4}~ddb8esEz5WAN7JWEPiS4v+_D$(XYLP6opZd(m0NTYp1LilOq>r&o7`=N z(VgtAmcCbV5)es4yQnGuk`%%lqwa9$OUTT|tka-*H;pt5o6TV|EuSwd z^uuTRRHL#xS^W5<(DlCz|9GNO+M@az=s0w#%?=mKCot^>FFhP_7%X~dR>VF*Q~kBL zw{q?LZ!%U*AGgFe+X{?h7*4fX&C4vXB{s6r?71BmQns*e+xP-c2(67+2PPJtcAd+2 zi5G}-EO@g-BR4u$PkF74G0p$)(@Z^;tbDmf_~^5#R($z4WYGMYV7bVZ*B-Mu(blz) zkhFv+Pphm=|76}`9}KOqwdCUEx;WK8C5ak{-#J1lPZw$Mju#cRy8tfiaH!x(&Dse~oY<3Z zeVf#{L6Jz6-A6<V;~`l?eN zUpJ(%(SD&nHea5U8o{N1^N>S(+*r8h{?5#TSYeInH+M=;J^qJ!edUzI+kK(8yx2dPz-Q| z`@OWdhsF=^jj;JYJd7HgO| z4D*h%1k?webU(ZW^tiX%T9x*-G!^)4pyO6mv`2HhQ~+J*&e2m{mB8hIQbp&hC4o7U z0nT#V2Ve?w<|jgF@T^{OmV>3pVD7-NDeeQh3XmpiJYirvr@|-?0cGC~uaABLrD6U< z8i<)^{bnIb-qyUBsF+FeHzIB@1dB)hO-YAH80U;C9!u}_SP!*LWJf$ZxnaICI{@S6EJv!R3A zTg%yL6S`mBz5||IVzEEXB%b2qUsUmLqZm1e9sUD0TyE+|yNHG4Hn1qb5Ox3&<9~XI z8U6GEFC624F2w)G4~{f{iA|ur8JZ`NnE#q!9{qry1bQ4>MY$MP0x98I5s6-b)_UK4 z!a(9Kfi!xDiB`aMXXOECyn+TxP9-lPuKq9k*h4EWR(7^g8M=aUU&jzd~3FY zosufJ4u1aw8?r?IzZxXTI1C-k z>P%hdC4fSGq3hFCKmhp$|1%NnRO26@63N52x0E@I&P38aE_X}>s?n*xXl(&wrJO{^ z=z|w{zjc7yUdJ!=mJnjaGe_gdBvk*c6$SG>ToLC)t$EGM<>)HHM$NkFyh9N{%EP$- zPT@{p-K%HQ&2LwT=FxH@BqDjkMatZT8iAlV%ZDZ1y{Q_ckHlOB(zv?G$d8e9gP`-{ zznx!I*rR$!^1gV#Y2aX7YmW$+lZWwSBnlKz{C{tgyiAJPLtuA6mjJ8=FwYXM|G7<@ z2jryR@V-qyQPm!+0P`2R@VB57TmWzV7Zqy<6y-(<3O*O5MY_%PKer`F*3Nw<^w#+9 z_VVvxa8FB|qCgT#d+cQ{<3VtrydQMZYx0hLn&>OzW$sq@F84w04n&WJyr31$&Iah- z%sy^WAFVt`la3lgKxXR!kRK=`?)22Xng*!&3UP41AAW3EarrMVFT@ycL`Hg6pqQkE z@tCsXQ1QJUQ4w$MtMddv=ilyMSy?CPSWWJ2(9_i&@*Mz*UNG=?vvj|5rWnOjTyLrh ziu5tTKZ%0i4&YeE#(Wo3yoL@YeOGd`*LF#v7tp=WKaSRm{g0MGaOZHf5QPPz<9Nje zcDJhg}dp-5fLi8l*XGa^> z%Ta6XQFbK#zzi^@93XUskn|ji4WG`iiY0*KJGSGu!zA#J>Ji)q`Wh4jRpV8t*l^yb z4*8uh7h?!OO2~~ZCYa!LP>-@dn+zNzvRe2*8)X4C`F#>?^i!+x(*Vg215O~LuNx0w zhPLTFpk(^1TW|wgN}^O{o4Ne|-1G?K+Uun!mHr37$NkkxD4c}}mbhS4*`Mpii#=F$ zm|OL<;^h60zQG6F|Lzc}L6mL=vo-E6&xAjQ z1P#W2`Uq%F2m%Mz8mydZ(cSXrKTmtq&&DC;TvGq3hrrCl$qO{l!CUn}mb&6^+w}UB zXVswpxC*$V3hsc9L+DE$Zi)bnOz;yMAY}5NC5J!)-XpF?-TC@_c8w&D@Gr6(w)>~`Jp;wFn~0KD=%R@$u1 zB#n3!gt!_CG*`V;697?2O!UGwk|`P1d%PNy1HE#CUIDUD616+1#cjPnQd4-E=RfT3 z0s4v~u`iZZT*D)&W_2EK=+UjkGk3m&}g30V0X^*%SrH(pV5X`_z; zEH!~b1yq5>T@t5+(pI`W`dHYBbAgji{Ca*p`*{dto146Vat?W3UWGT#*E}7cEx_nB~;vAQ3tAED;L)A>G!#Gazj2ZiXF=e`rU`tJB#Rt zV=8XXSjJdq5bkp)F>kcjh?W%8HB6hFUwGm5eG(`}s8OG0MBX`J?9@C`z&M(L_OkqgK3FEr*d zmEiY74zR1MS)PBY5B5@5ZRQJ@q)TV3eQ>i(__2}Ig{EHqg?jzb-bwZX^YLCd`@%`UQT58nnGUJqwUcAQ`vdrBs+{yYcrhy4sjJ+YyI6cYd(AB3 zX2k6Xoe2GiyAcm+7$H<)dv62{4OUpJdd^5ZHuRafAJl!xuW_EsqBdepJ(2t4k(GMm z2byuO=jJ10sg?Lh{ZVBTCko9kTpuDvbb`Ao(}J{xv3CiIfgBSezPTu_uiRr_p}tlCVskM=%c--cYGbi>SZbX0wG=Ude5i}Kun#D?uzJzz{# zK4MB+h_Spc`V8=I0))e@Rsy7PeQ|s71v1GbUwgw{jpIsx9i(2G4Jc=TuRasO`4^3|xT-iVE z$KY%C6nt(Zc)Yk2^0 zxAwsJ%x>npFpe}&zlewo@wz%!HEOr1pmv^+#cfY3R3fJ4(e73km#$~x^VFcJOCg9F z96khq0wF%`Cm{jhW9u&AInQ1X#<*WueAri%?4YnXVM&&*eJN|&B55dfjxW%0UL|T? zwdrdr+uLhMj-MUorePJrt5@5H=JHv88u5M9_z~`Hw*1JhCLmzwJ3I3^XZB_MTtEKA zsmuq;aRTjVYqIz zm!Es7>D89-qB$3Z&$T(pL9VNi7(ouE_i4%Km_+5!@y4y7D+iRhssfrIOXpLaFxgIDPX+izg^DSui34Q1d%BCTvg*n1LcpcljpvCR+jnvS zb6vH%&>O&SvvEP?k`WY_&}k_g`FVGYJV74UIyaMk(3(hh<%Gf?X=qifhYywBqZQj} z6|oxM?;OJIF3z-Bv`;N?NA6j1^vmWiIimBUlKJdJ^_w3r-{-o#cJ$@ZN zfk%C33?GlG^&eaQPL8MNezxfXQzJU*%_-O&C`E^edZkq}R%WCHnO}a=m{KkO+@4x% zZ87!5GXyTG{T`RGk7HRoN8>)s&~!sbFLfZv(BL@6PHKTDT=SA{UQNNz5K)yx(ANHG zrX7*%vldau*i`_hDgC*n9 z73d41{Cm>2v3*fa?+7}oSubWi7)aQmwwqeD^r9oee>n8Ye^H{d+ckTP z)0W5($Gnk6$|Dn-5X6*@vcm1VF@eR=)-%E#K)ZL0%Y-*~`$#>Q&A)u`CC!Wbm*LFa zZO4u4*N{nu#HN1E$kvWyt0N+TcP*f(+d7j!?0iK%%3NeKS*~Jni%Y9JGMyoOgX4|q zNrVQ9Zg+5HF9(S!*;1j7$r~W^nqCR}-Vi3WBJS0NC(j9aJB2YJsbUl`6Ih|V3G zA-gpckVc-%dX04fKaw$*--ik|@Z)MSju?PIQ$$Dw>zT$O>F%v{xmut>8dsBfWI%Sb z0n#lSP`TNFf&qMllRy#^K~8HEFfN69_KlrhFYFEbZe-7SX%i;N4?ndcHBhflo#{C~ zB7p2?yFmv~FF3rG+ECiZSI(WA%oaJ3H;X`0!R|7l3<a8F)Ha6|Ir^=H=O0tQL`On zUV@j*YYiPz-JjtQql<2dg7h=%;Nyi+FQCx#_ z9QR2}^6{3TyW%68Ds=g>Ny#)pt>-QK;9&z5zVF1@yst_l=`s9%pmdEj`>V;|xy6&D zcxX$A;J+|gAU3Rt3zb4Z$RF74EUJVN-A{pNth5eP+AKfnY!wp^*j8;W<>W*`!1$;xz>qz zQDf+p`g7EGtrq^t%Jq1Gs zc-o3rsi(d8LOSiLdR`te8uu$P5{@NC*TODr{tAx=Av0-I2%CDm!ssru`I2%qnJ7z0 z@VXU9U53$5{|+kd=TM4`4f?|vdxyJ}op!_E#k$ju?Bl4-RdK;p*o?J3wVs9h>DMXN z4BbstndkOk_b)?Fo>HBfQMqkfXw8MxMOZ!1S<_anG+rcWS7Fx#=W_$1U zTwC_wZDdw~gqH7yF7V$jQ|&1UFbyeFuY)GAt7*tn+pC7mp`AOdTzh>tVW|-s?dAS1 z@@{s*6`{0rm5-^DRyz;IJb(D4MMP*wzusZ+PlXn;;FNNXoXM?8;M43S*a_j?@t27S z7n{{Vi{WlW2}AH8|L;zhX#5N$=5k16FDeHA^Y=}S%ALa00~yJ}Q8HU~VU_pgM_w#1 zt=ta<*&pZiUso5tct@`1o$lbZL@#ajsOl(rMlD7^0^`i)lFMKidsD!D&81Y;DCJ-l zX4tXoQL+lRtm$Ns=louIeDLo%FC)SvW!HOv%$#O}bOH=^cv_ zRQM7l6TVokaFHy#tu4IOdN^}=G&HnMfvGgNYTZKoD2`jI$!&up@oK}*ivIT$SI&FV zHY8DO;MOQlLGhJ1t+BYYh`0l38h7i!tCSpv;5*|R=l(F;cTu0vi;HueOs+BTt(tB_ z1K0hf4K$>&+oO*Ze7fhU(B+t(5tas|Z-fa;{BvZK$8_v*QogrZmEhW?4KX#VMBSXak{7>)qyr9L zy8qUfOKc#{i`(7oi%Pz#U^`L8@gbG^KPtcfTUqkCI@hM09UV8-@X_**bG(ybqSS4< z`-TO1MSGq3G1ZK23`0)W_3~#%2K%-4tdJ=iYPx;uppd~22WJVy#{|6e=AKZC5P3~r zAIj@%yI=_K>MnK5Mk5^LUdOR8ueaPr{*sJgu}Ix*&vmhU=gWg?Z5OxKjCU7jz6+n3psv<9AQW6zw?f6PNVzZkeh%t1R9V%)P+ zeh;pAG+L)F)uDEBKGOW=FUTfi{V{lfQ+=cSXkSMoiBCMb)@h8uSs25e_oQfR&ZQz{ zBemzNH z0)bbzQ`W))t%Pape5crIUBp^8M!K8e7U=>d?^7yxT7I5)^vbU6s$7hCNH#pSPka6Ud;V=(7&16sd4_TQTA$uY#`Yp z^}wsz{%0Rr2_fR~zWh%bh|U+X;`V;Vo0^?MlWlr>BpOikv0rp_hh{cWAMC#SKjnzN z7hzj5<;n`}(*l`RPN_ZarD1}3HB9mrD6n^jSs|O57lcpI$CZ<@rUb(h{}c^v)cole z=7-Ho7mx{8A706yUFZ9HQBKr?BHk}_&@U=*MaJYUW2FYid>!pg;^^A3py|MejQuhj zQ4Gz%j6Pl3(X#^065IyzM6u3*LX4s9Ztcy_ob`9|v6z@i^yCW9FXwzUO_v-`D%PUa#jxtRCDpR}R{Vx8-5=2+#7MWds*M`i|KQ<3|nQY_aqAE`2G{8f;LgWG(gCmP15^R z4A0GcW@_~Ik(4{CHZF=iIFEQNPv@v}cc1NG0;h@=g~y5R5+BoO^=}Rz z8qt~W*E`KBTihd8&bFW*gq@GTpNNL_+i!sf@E11uVOhj7)f zvx{Hnt>76S({1Py2QGliO$Gk`1|`Sa-|K7Q*TZqosQKRAJr~e5>Z!G1tg=FuSMDp* z{&1$>F25HOxP-c0K&2%wuFk~Rb3?@GJT`)z|AwT6&(hHcMe}>hE^W9M^yZr1i^ZRa zWMGh)Ukla}&se`Y{$6P4^?n8CCQtKT0o?kB#E|1hcBHWFXHR`z@_p<0_MP8^wQFP- z)>7hJ>=BYs^zfhbV}4O;t4Xisg@(?g`aR7@%UNeGtudrYtYjBO|C#ZOX?&OdyV56P zql?JUGpmQ@Pajz*br2|Jrq&ARDjGTmJ|!qG$5Bq;R8)xiNo|pY8za6i+6S6 z-{RSm`R5J~yS$rP?6vgPz3|ZK_A2SDE3ulnIXSR9Yp&fCtsjPGKij*sOOr<9pj+RU=dV$v4ANe^_FOEwqV ziw{wDJy|5|E8DEco|!oG@l-0M2ofll)^sY3jytf_pxvh4o3?xnH>$QlzqntY6Q0m# z@UGf3FYowXS+xcK)IUxi=FS**pCbi1#@(04Nln$vY;GRi>QdnIFI!m8UGAgYc;E6v zt@Lw=ynp|w=aqocq9NH3Ch|>2VKt?_(pbx?L~zIkE%j(qkwCm%YdXuFWhumK;Tvq`GW9v&gV&`t&(w(0HjCzR zhht4^&e5Jma?#TzQ3P@ML-z8{tpoGNj(o3jaxq;LVARE{Sb=AJHB-XA1uWKKa%c3o%k#f8r-QfTqWTM-x~SKrnW zDQT6I$QrMwR4MjOJlG!%#jgW$n5$)cq8+X@}O5enkGPLj*<#-D#MWy)}J^ zvQ7e3jxTe&l5^zG5t-=L_#%c5&Uo$_L1ZaVMVu_IrAd^*x!2|JjalkZ9{SNUBJnm zjqa&&oKyTQQ)SBDeAiO{iOzR>|s>U4MEbT`?sjjw?D_X7~9)|@8sP~3O?s_+>Dr{ zoSD?1@YTu68b8q*A&?2N7-4DjW z@mM3reAcdG=;cEaCieO{2DiSyF|r1avsj^J)1g8{sc7BCzX;~K1l>%nc&KG$)wu3) zKZt$r=CR1ebLAFsMry9j;Zt~M?vm&;rfktP1x9_bpKzu+CBKKZOWd|gEO%t@-gt}O z0PKowx&zb&tai4ypw_T%dWWi2*4??TgE=gY-uHK_-hq1xu?umH=Gltl=LM%$=SP+q z?7*Eg4oc3`fJ>>kS!^5Q4PIb1KHpZvd^uY-!i<=mKEU!#Fw@mp`D0++N1NFo?n*4i891=ne z%AKI7Chfa2D@D)Dd-5SOpX5Up0clhJKQVm9n^2%aY|k_0``O}M;@6<=aTbxULQO10 z)^j!yQCgOR%v90oy!eHk)sgUVQ1(gJfJw6pg`NF6@k_6T7};a=pTBrsRZvavQthSlmuoMd|AmNpor}Q_U1;AU zS!mI~RtUu)9t$=rHXAluHhVTl!!I#<^^_1?q)`;kM?ZT0^IV6w6X$R97R`1C`ccX0 z_x8k(dD)AZDnU{oj>~`>S_m;-Q6zZXUJP1|Qu?1IQiv)nKAnysNED27Ct; zz79VbIQ4F{zsdY?_5qt{+zuEnTlvpsOh(i1OloD8N(3rRsN=+Xz!2o|CC z==(C~5motxqd!DZ&XR&61Q*L7Evjp((-xyzg4a|Rp8G9a_Psm<)%8*W4s;Gq635gH z!2jL_^}_mhR=+@ycXnmaH;>Of5wsad>AVI0}i}+9=fk%1$KLBmB3|gyfwGn^pgutA2hTn!Suz*ewt`9Kz8!Vk$H=1X^L& zyN9+oHGWP$Hg94PJ$o$T&pXWCKf}!&j%U{@&f>0wEM%mE#zBTc`1D)K%>R8UfO?b5 z?SHBSe5nERfJWk-dG^qb;>x;TCLdx!4?o2JDX~&9Uqg^|ZSIjK4dyKqdI=6qt3q@q z)tjm|=ewfD7unB!=H)+?H(l=dK&jf1f9rQee6h3r&=0wrqj6*1V@jX>BQ}IqG-uQM zZ;!krjWIcB#qFEBDFS4KAmwuGEGDYWj<8c50N?DD~xu`>_Lr(j66IhU#8p z;>Etp)4+7pR;Iy(W7dCGR7ZP}Iv(|S`_=jV{^PDI?=`R~zb8GWQnmR@*wnJr?QjPs z^vd*ZC8@S4;y=nr(RpDNsdR)t&#FF1WAwjAxLfiRi1oa*H(EZj5$WIfZj5u(U^H&D zdz5p`pm>AArh>6-ydE3GIvV;YV?=aamepCjpdWWHL8zlvrs;9%RCruNhixBNWFHxw zyx5eTYBd4N)8qS4mjo?L>pPUT61_$OO9;sDTSF_xst<`Na*OCHTsic>gwt|ihN)%s zmkmv8LM`cAV0Jl6lYDEP-Pl(IVT6a8Jtx?uC`AO0rMA$2Qujn*HF}YCS&AxG$YZwu z4z-rjiaH#c1JH82__eagr+Mci@lh;ho#WIa_mOC45}&@S{ zn98ST(#USU2XbwWr>g~yY$Qk4Xqx)lT-jb$EWi}c4p^pWc=9@3#HB~oViF!;-c#$G=P3xQvDqY5O!VN=)~}xGpvZjA(bLj-C(p zSIy^iMD?2-T^8JSmZW+p2{m7pTFvdJK%oFLO$a^0?E^U8ZIQ>X*R@^U#AE|wD(ruT z1~y2}sLedPI~hv=cX@*au18z_K`Krop!=fEd>V1k8qab-2vP01RrE9V}qrMt}ABqT@#xIy;+(Ti~vNu&J@vK_56HcQKz` zNE6f}sbnV5&WQ5o;^bY=D9o1fndzN<>aULQ=<8e>qkXzV`L0Df%Ca}4`LbJ&4WrbD zhRUE{5493Ml-6^V)29bL55xwa)%{$uWJUvMo*R;|=D)?!a7dWs z!037sBG{0j?5#+s5*1iOzU|l8=Y(&N!<=W^RCI2)ln}09eXBwtZ2tKTVP8QaesT53 z3t+MZEIpv{tW?Z(n`V%I92Zh#LA+o8D!*x!;8fjS9i(!d%~_NgE)3*s_B*S;V+@IA zzx0U0w@*|gJ`0mTcWmM#FMU1#rV{^+>V#t2p|A(Vy;gF=6?}K?Tu@FoRd^mh!kB-W4}0a6rOKV4&&7^MrSGQHbsmg|66u z_Xt=Oz;*!f5@;k4i64V;8TLJ0KiG>v%d$=Yv0YH}&G)#yz@J<9mLRkt%FXYg>GR4dO+iMfjB(Ee|GHw+# zW?2yH_TUrbJ#*pw5kwp!(;77fRTLs!oS>dWlXZMCaTui-{04~1kn3UDy`B=p-Gc@2 zp#HzTZ$o*Ap5IFu&SQt{&c5L?>y8B$O%if^GP);sw10}Ev^L6)oY$`Avtg#c{2Lvw zsXfa+x?Ld|QaX|*fsg|rBVSC(g10GZIFed8Kaf%;1$Nbilq+&&Wa%O05)1ir>%`@m zJ_jPeYg_>n0zwzEP!x-3Xs~1r4g5%CtWWOMvaa`ha&BPfPC=7Tv`b`ksz``5=sm%Q zoEXr0;kQU$h2YVF2&hAYe|sZ$=mVxQP!`3VxRHw}$yeyKnIo%-Yv(5NneG^@8QFzV69uk1V!Uqu6$4LO+A$HxbyNxL3jyvqpNaYO(b z4~oqmyzg+Z2#le|H`lUW?T(aWBr=Ydc6b(A20Jk=fb)9)XKkJTE5n$sT#ZwRVhVmS z?>GMm4&*-xfJ-p-O&7L-vMjm_0G~6K*MntLhw<+(g2orHXOtpCjo7sXOJKW<3A2g} z;r=4%3XhM5GFcWNh~NOqNnQ}pBf%q&^B*5$M99?m1Vq+6XB~^+v#lvDh$adSmX)p+ z-iseW!JjY)!Md>2uI5n3CxeBt1)l*?t~q&xlf`O?q)Zn4GSgpDFG!ORDJjAm5*4A! zZEJz4R<(bAq#i~tS!$YR!gQ4rac6tA3*QiOLb1kOy+}T=5_y;ExO;36D@F6in3zXwTYZ5}K(dGva zHrS|G?1?Z+;n{@qhTZ;tc(l$UB%#tlpX|TUD{%VY`Lh5goyP%3L`R5x94y=v2ptgy z^!Dn=KQG~(P2afxCY>W+p%RrNv1)BRL7MbE*BICaWJMoS9D?1X>j$lK%RgGOe6VCr zf^M>ib$3dDyMtJ@9C`{q()9zVhkSRs;Y!`co4HOSL@{s~ChSTj$pS>W4zL_fi}u5X zlfge9FM^lXxY7fL8JK^_A1{NCgSA9~$9ZS14M)Craqv9Vnr2$($JXjE)=^{VOFk&eO6|$LCbKEV|EF!^2$U?wGi31fOeC_;4 z4)WI`ufXyd4`_pDeU6nai3;A=fQj@;*SzfZ@efSy&tI|VX}tL{q<^;a*w4Oezw|b6 zTJnH-M_RCqZsLX*a`mcLr4B+W5!qp+zDY(^3szB?y zqCDn8IZB@Z#0P1BNo@)9@EP!W}{V&shUWw=FtjHETt=^hWOfJC#K@2|*g zKFUSv2FALlrB%&O2uy)r(4TCoPku5CXI_t}-^2R}$YIj}6Mc(2Io_HC;{|WRFp|M_ zY5Ns{F>Td)!?0jtz!9f zp8~%s2@yC8eO^gx6bPkdJOmSCib&w$MwLi4!Q--WF-&C^({6{b9;0H0B2G&um}PFF z^TUg(Ql>Tf+>0n^1!;IC0ix-&BLl0VI`Y-urNh2DfBUf~Q9v<^qM&`k)TCt^70q{- zamARcQJ~n4Km4zRYKgEKw68*=Bm)hv3qVA?;K`j42(v8)9s~XqBb99q3Y$caIiUBm z>7^_yfh!|w%wphBed4~dap(1d6$Va4DrPS9_G&u9i=7t8yGPFg3Rz;D%6!KaNe>KX zr>4}Sg6T=U0Ai2jfCDgN`W05zWpForjW*Ol=8LHsTJ;*Ro7i;!@LOmdJbNiVkfxat zxVVNl1;m&}j?DqFy@~oq4u(gror0vO7vuf<2>xJoxiv16xhx$u>|N=ht4T?9_&K9;O1Ql zI)X|<)oJ5F()FzC%{yB)I~=s>ijJTX<&_h3vUvK)2tY1KRImZroavolBQVv=dQ8WG zJU{pXF%`9-BglqDsO`JJwJ$ZX5~hyNeSRHt=O>?^dA9zW0@f8^CBj;?l!>@L`*Ay4 z(KiI(JVe57 z9Ff=k3=H$3M9nfselpz&KmP4#*^v51MIMA-C@0sbTN>Ar9du!@31Z z-i=-v2Ut465c2Un@s%-@fl z3_d&L_l*qV*frHqM0a`7WB#}EAOP-v?Bv_Oe&&O%oX$2}iFN4EuzdC0pfn4>XWuuR zEpWjz-?QhHw#LrP%%UNwooanZ9AmR{Dc7h}3j&-f9}X;=%Fnm9A8DTo*e^Ia^jreE z{d>8Flt}kzNF~~F+)N5GC`z(D%3aw1uJCTwXD0Q1a#YNUt^i_L1b4uQj*CsP;t?<#C5C zjQku=W|a;F^ldvM0c<(Au#p?Ym5gUJzg$~yd_H=og7u7lk~9=GJbit5yh}H(HL2X< z`eZQGeh$5`JC9A4!~U*!`v<`ELSZnjEy3Tty0Sb6@iT3SKsbD5YF58aiK5<-7?tI^T!WX!SyKMM*Q#|eDAkDv;--dX+ZnE?@r zJ`$cSZL--`KYJ8kG%b2l8jw=oj*~1*JZQ88f}_U1^?esY<#Az?>?&dV3+M5n3}E90 zxJmt7OjawsHvb4Kwny}eEeEz`P5f&h&bOUie56(r=>EozEq&qQl^Tm)hOm)Hw%~J! zr=en&1kuflnJ@C*wd26*yES~TX&Lfxkx%3DY3b{QxrraY z{z%{?P=!8qLO$Jrh=h^=`#ulnJ%7-eMtn~WsBY44_z=r&3YyePMJ`+kZ0WlpMub)iaek(3i@l1<{~YP7DZ`;t~Y1esxwjm&}zWu9XYsG*Ax zH9US}O*tWc$D=v?udS~y`C1+m!ei%A$KKP%N?!HX#8^jCb_LMnHiTALvO3tn^BA-W zF?KVbXaB7o(dzAWgp&B!ZUOlFs{pHv16E4?PTRuP%FqqCJ&;92W{IO6zkg$Sop*f| z+JGG*znJK&`vE*n4gu>wMc{e=I85IU_!Ea6mTrJt>73j)f3OYsz-wf_}TNbc?P}#$MUg52SS#+Q(`wMyVkxzG*{}^4oeSiNq(&^6OVf^r6@^q+e0QfC5{1^IskUtAn z3lm=FU8Wi0l0s(N1B0;h;aBV5jbuY4fUypY(~P$^?P)T@u=W5Z(`<7;wi-aIakh%S zz7Wj$$dgbcZSGE6sj#wL#~7!;2p^X1bj*(ja#uSZ9)J1$w^Me)ujnO*na^@FBbTVI zY=190bA2WDDxaF-s*xVVb{jnd<8M&Icm%}NrBkR=6|zSJU@w$YTIQvl$Y+PUkyHbz*>kughL0-~QxHgj=!>{G_{QBgyeXi&X#(PMZm#RqLY z>Y4<`_J*T)X?4{$gEwQ1wDv(4i2hqS1k}yCdRU7p>N{%nuZRWYT zDbl|#s=qo{XOn(gOWLu3k`R(^Pi&BM6bNPo%J|NZ{(<<08Eawcf+wtH%~dDQ6#MTH zWZ|Y__D9@ytW)G4p`0DN$TG*pw8X+bE+E%r=jrJC2*K{9oZh)f#lAsCdx?@RyFv1=iePhE<%S9 zhmQoE4`=zyynD8q@*8kbtgoG?gsHVm^%%rn+G^f_Iw zQ23{Y1U^U!Wr{!f0-)IGgmXy#c9BrCNlPmf9;%?aU~nh=hruOe25eT?TKa}W*3vOo zK5lb-OjGngVpY0c_&hs7&(!Cq@FL9l*-gv^|49c|b}R0&Y=b!}JVHT#A?{B2n9XJ4 z0L+Y5NY)MlQMhoTx~YE54u?EHiqlef;(Q<;d!kJ!JVwE)dQ&kL?+Zz}PH(b3Q{^i` zj{`VLNcRl)o^yhPQH$#jvoKK#Rtw#C!ta!dn^f6Qhqd2Hk=Y}2SlIt28NCC=-d_dx zlud4YoHSZH>fJn=|Be4!`|qJT3WQyV7xcgRCrp0!BoaW%0)?l-4;{r(e>%oBvR=zq zLk)6d5Q0)0UV>BXI*6>m(*u<^jNb{cV#ktT2FAf;PcPIBIm-L1eY`<_OP|3iYhRPA zZj=dV?|;38W3(9Saz{^zqWgY7lv+O`nTZz2rM^U38T{)oUr-Co zdfu78Aipv4)OT~fe&%5ozoO4|(r4N<8bI z8HEu@zA0>EzY^GDotC_qIV$_p@3<~eiVQ{8o(Nvo z27Jx7gS&20B4c1kQ85;Zmeb{(MA*Vr($m*@ezq z(POHiIp~2L6X74H2mZ2QM+YlM9{#pGwpcnrpXkCYIqXg^MG`W6Rx>iAr#X;2p{930 z+Z$uknccW)=G!!qe>Xj@`7+kVy<{DZv5hH(NjK$Eql&iF+{G*=Vw>bw~{`&xA1;*qA$nM4i=b%>g zc?c;<&b<**OYNJGDEy`5ugFm5HYpPjUDlr6PM63dt3KDa(PP5hQvHIfrK@B{Gk)vD zk=}i^zeW5j+1arWA=+IHxk|jB?#y;odN^$-?3e+@#yg*&&vaggsjSMqf0?a5!*u() zxfox_-ErX`HuCO0rIPEhd(RW0KTTw0_=yPhJjwN=Llj4xg36|HD+{hFiGAh~6J7N72xS_QeY>ms8c$^Abga_jO)oeuW^(EpFq-j$;VxOj_XO4rUY#ic) z%`vI&MLHRoIL1WCdPfEMg*42R4$Ug&k4`}qZvNZ+RCn6bf+JB}EdawDzPy}-t~jK% zE?LlGK@=v;Ph)TWy!QcvgPK!BU?Q!6*Kb0@lL$7;NcJ1SjpP)@d z_gb!SG#BoKe!m+2h!$OmFHE<|GPgPCIS==Ti_NiR<7rt4ciUBm6aG2M(CC9M5tF6} znwG7j3|#Gf)xM?v4|DuD=OG0<;7z>v{`Qbe3Z4GRECNq;LrZx2t7@zMpD62_z-0BP z)*zNgpi}!ZmkH+dXGpvf&(8dKMZg)s7BUqYAqhA%N}q|}su+oOSj+F!EBje6m%}9L ze3^I-nz7hqL8qeWJ$l0vTGZm}`IUEuRY`2^2L)U?P+=Z@G#E)@K`(8h9Mwc%J#Fk( z-aG&Lp{uidFwh%OqFnLc+m@iM*jGaF7a*~stZvRE!xj8kt)VDF3KxBaQKnqXar%k0~(k6yyc;)ASptkqqe)jU*IZVk7&t5?Ez;Zm;iop40Vf`^5?hJrSUl z=-Dj2k3mKhYAj-*$4J9XAv#qycgL^(Tw5s2@%^pwtHkYaL&x#i{udG>RGQnB>t>v0 zKYvf1A+bT;sW092siFy$xZ?Skm-HAQ9i%W&f9?__u{Bv{K*Kn+EY(D;CY>cT@;gSw z>`nd(B~q2Lb9;<8;g0RX?az)AbL!1^v05&V(_Tfb{jy?@_`IIDRU-cBoP z|B@Q_Ovg{*u1htvn6CberjySW0xvmU4Z1F&Mq=x`{O*S`V@=WYe8q-PB*7x7d5aQ~ zn)q0lB%bffDiVr(Moul!G+ zbH4;2uica_fzx=l6>+&$ItVy2{wM8%6|t_i&|Ucpt96c zQlYJyA0Iu2`6ikt;m7=?zju!Lr>GukLFE)*0!EAJ#y@?abD*E;Y|!t!Uwy*FAed^rM*z$l733-M2ebL2Xd49|;)SQLqK zVOw4?NL>CzN#Np|a-?Y;@~}o>xAPm`6>YFOw{vXX*xe4o9sji^+;RAJ$H~VQBT!sw zkm0VutIyV_(_yY-=yzBiXQIweyCo1F*?c0kC4Si=- z(yy1?G|yD@UDos|Ip`t)@mPk^61M1;p5AGCM5|>*3y%sUIQ4h)7A4ws3FP@^0N4JFk3;|!2bi7}KN zJfRfaoyK1XNL|o%w}e7 zozgnhS>c&5EpLs!GgHF!0^}1grpXVW21D&jU2*)TSrpE$NwvzXNhQW}BRbV*d|Cfi zw`4(@XilR?vH3#TNPc|^D6PU-55o=RNM5EeB}Ea{*Y7FCa*Q>bPlM@w=EZ2G>jF3q%fr% zuO5VPb<_NAry5-sdv@W_TqajcgTIB|REv7;fa)#YxJHF1tTIKQb$|!zCcv{_AAbGy z)C<@4qp8vR%B(g&D@c$6C+A0+#H^jv=_A-Kd!rnF&Ai_pEpS@&g8VrM+>!5x6!m^B zLm^o<^@jE=d!n$p2p85dNwuhov3^uebNgKd7*P7!&s^+t2Tc{@?q%+g5qse`LzOE# z#B=vax|-u+$%F|tA#SdOP!%m#f>)n8`?2O~&mKLf)xq4q`*b$pT?w}AeS0PzZfH8T zon6K^4LOc`;dNkfqHutObFSm-b19Z;d0$c37I)#q{yi8In>7Ja-##gcee9(V(Hj*^ zGQJuviSzRnU9D?VjU~~0XsO7j1D?FD+BoOCQIP76>@&9LxwJR!^Ok+OM3_9fD6)O* zJNveh97`G2IMn!481p!N=D{JYx^v{IAMRVR_vv%7jM*J(0bZLV7nE~w_v7XGu)I2- z`H4DV)X8c;$UcXsNj0qZ>~F$#9dCc2Po9?`KSIB|e83Y4eX->J$} zsw5;UkEn$K0@D^}_~rqW+~kpx8^xDcU#5QOnA2R?reudSBZ5L%Sm0%}BeLa&XLYcS z;=f+a{`(Ks|8Y_L|9u#sOn<_D)IbE42%RcZ1L=z(Q)AMSM8M=h`qfF%j7VOL{x!c~ z&eQHL-BKWC_~Stl1&Iz=AE9hlh_s_3*AQV`ar5&_gZN)MIbc0Y4tiQ3V~H=T)7A>< z - - - - 4.0.0 - - io.nuls.v2 - module - 1.0.0-SNAPSHOT - ../pom.xml - - nuls-public-service - - - - - org.mongodb - mongo-java-driver - 3.9.1 - - - org.glassfish.jersey.containers - jersey-container-servlet-core - 2.28 - - - org.glassfish.grizzly - grizzly-http-server - 2.4.4 - - - - io.nuls.v2 - nuls-base-api-provider - ${base.version} - - - - - nuls-public-service - - - \ No newline at end of file diff --git a/module/nuls-public-service/readme.md b/module/nuls-public-service/readme.md deleted file mode 100644 index 93f0247f0f..0000000000 --- a/module/nuls-public-service/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -# 模块运行环境 - -- jdk: 11 -- ide: IntelliJ IDEA 2018.3.3 (Community Edition) -- maven: 3.3.9 - -#模块说明 -nuls2.0对外提供的数据查询功能RCP接口。 -默认该模块不启动。启动该模块时需要安装mongoDB数据库。模块启动后,会自动解析底层区块信息,将区块数据转换为可查询业务数据存储到mongoDB数据库里。 -nuls-public-service提供的相关接口,详见NULS2.0-Public-RPC接口文档。 - -#模块配置说明 -#public-service模块对外的rpc端口号 -rpcPort=18003 -#mongoDB数据库url地址 -databaseUrl=127.0.0.1 -#mongoDB数据库端口号 -databasePort=27017 -#连接池最大数 -maxAliveConnect=20 -#连接最大等待时间 -maxWaitTime=120000 -#连接超时时间 -connectTimeOut=30000 \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java b/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java deleted file mode 100644 index e9942a1188..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/ApiContext.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * @author Niels - */ -public class ApiContext { - - public static int mainChainId; - - public static int mainAssetId; - - public static String mainSymbol; - - public static int defaultChainId; - - public static int defaultAssetId; - - public static String defaultChainName; - - public static String defaultSymbol; - - public static int defaultDecimals; - - public static int agentChainId; - - public static int agentAssetId; - - public static int awardAssetId; - - public static BigInteger minDeposit; - - public static String databaseUrl; - - public static int databasePort; - - public static String listenerIp; - - public static int rpcPort; - - public static String logLevel; - - public static String VERSION = "1.0"; - - public static int protocolVersion = 1; - - public static int maxAliveConnect; - - public static int maxWaitTime; - - public static int socketTimeout; - - public static int connectTimeOut; - - public static boolean isRunSmartContract; - - public static boolean isRunCrossChain; - - public static boolean isReady; - - public static long localHeight; - - public static long networkHeight; - - public static int magicNumber; - - public static boolean syncCoinBase; - - public static List syncAddress = new ArrayList<>(); - //开发者节点地址 - public static Set DEVELOPER_NODE_ADDRESS = new HashSet<>(); - //大使节点地址 - public static Set AMBASSADOR_NODE_ADDRESS = new HashSet<>(); - //映射地址 - public static Set MAPPING_ADDRESS = new HashSet<>(); - //商务地址 - public static String BUSINESS_ADDRESS = ""; - //团队地址 - public static String TEAM_ADDRESS = ""; - //社区地址 - public static String COMMUNITY_ADDRESS = ""; - //销毁地址公钥 - public static byte[] blackHolePublicKey; - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java b/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java deleted file mode 100644 index d9a66e9f55..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/PublicServiceBootstrap.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api; - -import com.fasterxml.jackson.core.JsonParser; -import com.google.common.cache.Cache; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.constant.config.ApiConfig; -import io.nuls.api.db.mongo.MongoChainServiceImpl; -import io.nuls.api.db.mongo.MongoDBTableServiceImpl; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.manager.ScheduleManager; -import io.nuls.api.model.po.AssetInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.api.model.po.SyncInfo; -import io.nuls.api.rpc.jsonRpc.JsonRpcServer; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.api.provider.Provider; -import io.nuls.base.api.provider.ServiceManager; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.Result; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.core.config.ConfigurationLoader; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.model.StringUtils; -import io.nuls.core.parse.JSONUtils; -import io.nuls.core.rpc.info.HostInfo; -import io.nuls.core.rpc.model.ModuleE; -import io.nuls.core.rpc.modulebootstrap.Module; -import io.nuls.core.rpc.modulebootstrap.NulsRpcModuleBootstrap; -import io.nuls.core.rpc.modulebootstrap.RpcModule; -import io.nuls.core.rpc.modulebootstrap.RpcModuleState; -import io.nuls.core.rpc.util.AddressPrefixDatas; -import org.bouncycastle.util.encoders.Hex; - -import java.math.BigInteger; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.ApiConstant.DEFAULT_SCAN_PACKAGE; - -/** - * public-service模块启动类 - * nuls's public-service startup class - * - * @author vivi - * @version 1.0 - * @date 19-2-25 上午10:48 - */ -@Component -public class PublicServiceBootstrap extends RpcModule { - - @Autowired - private ApiConfig apiConfig; - @Autowired - private AddressPrefixDatas addressPrefixDatas; - - public static void main(String[] args) { - if (args == null || args.length == 0) { - args = new String[]{"ws://" + HostInfo.getLocalIP() + ":7771"}; - } - Thread.currentThread().setName("public-service-main"); - - ConfigurationLoader configurationLoader = new ConfigurationLoader(); - configurationLoader.load(); - Provider.ProviderType providerType = Provider.ProviderType.valueOf(configurationLoader.getValue("providerType")); - int defaultChainId = Integer.parseInt(configurationLoader.getValue("chainId")); - ServiceManager.init(defaultChainId, providerType); - NulsRpcModuleBootstrap.run(DEFAULT_SCAN_PACKAGE, args); - } - - @Override - public Module[] declareDependent() { - return new Module[]{ - new Module(ModuleE.CS.abbr, ROLE), - new Module(ModuleE.BL.abbr, ROLE), - new Module(ModuleE.AC.abbr, ROLE), - new Module(ModuleE.TX.abbr, ROLE), - new Module(ModuleE.LG.abbr, ROLE), - new Module(ModuleE.NW.abbr, ROLE) - }; - } - - @Override - public Module moduleInfo() { - return new Module(ModuleE.AP.abbr, ROLE); - } - - @Override - public void init() { - try { - super.init(); - //初始化配置项 - initCfg(); - /** - * 地址工具初始化 - */ - AddressTool.init(addressPrefixDatas); -// LoggerUtil.init(ApiContext.defaultChainId, ApiContext.logLevel); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - /** - * 初始化模块相关配置 - * 有关mongoDB的连接初始化见:MongoDBService.afterPropertiesSet(); - */ - private void initCfg() { - ApiContext.mainChainId = apiConfig.getMainChainId(); - ApiContext.mainAssetId = apiConfig.getMainAssetId(); - ApiContext.mainSymbol = apiConfig.getMainSymbol(); - ApiContext.defaultChainId = apiConfig.getChainId(); - ApiContext.defaultAssetId = apiConfig.getAssetId(); - ApiContext.defaultSymbol = apiConfig.getSymbol(); - ApiContext.defaultChainName = apiConfig.getChainName(); - ApiContext.defaultDecimals = apiConfig.getDecimals(); - - ApiContext.databaseUrl = apiConfig.getDatabaseUrl(); - ApiContext.databasePort = apiConfig.getDatabasePort(); - ApiContext.listenerIp = apiConfig.getListenerIp(); - ApiContext.rpcPort = apiConfig.getRpcPort(); - ApiContext.logLevel = apiConfig.getLogLevel(); - ApiContext.maxWaitTime = apiConfig.getMaxWaitTime(); - ApiContext.maxAliveConnect = apiConfig.getMaxAliveConnect(); - ApiContext.connectTimeOut = apiConfig.getConnectTimeOut(); - ApiContext.socketTimeout = apiConfig.getSocketTimeout(); - ApiContext.syncCoinBase = apiConfig.isSyncCoinBase(); - if (StringUtils.isNotBlank(apiConfig.getSyncAddress())) { - for (String address : apiConfig.getSyncAddress().split(",")) { - ApiContext.syncAddress.add(address); - } - } - - ApiContext.blackHolePublicKey = Hex.decode(apiConfig.getBlackHolePublicKey()); - if (apiConfig.getDeveloperNodeAddress() != null) { - ApiContext.DEVELOPER_NODE_ADDRESS = new HashSet(Arrays.asList(apiConfig.getDeveloperNodeAddress().split(","))); - } - if (apiConfig.getAmbassadorNodeAddress() != null) { - ApiContext.AMBASSADOR_NODE_ADDRESS = new HashSet(Arrays.asList(apiConfig.getAmbassadorNodeAddress().split(","))); - } - if (apiConfig.getMappingAddress() != null) { - ApiContext.MAPPING_ADDRESS = new HashSet(Arrays.asList(apiConfig.getMappingAddress().split(","))); - } - ApiContext.BUSINESS_ADDRESS = apiConfig.getBusinessAddress(); - ApiContext.TEAM_ADDRESS = apiConfig.getTeamAddress(); - ApiContext.COMMUNITY_ADDRESS = apiConfig.getCommunityAddress(); - JSONUtils.getInstance().configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); - - } - - @Override - public boolean doStart() { - return true; - } - - @Override - public RpcModuleState onDependenciesReady() { - try { - Result result = WalletRpcHandler.getConsensusConfig(ApiContext.defaultChainId); - if (result.isSuccess()) { - Map configMap = result.getData(); - ApiContext.agentChainId = (int) configMap.get("agentChainId"); - ApiContext.agentAssetId = (int) configMap.get("agentAssetId"); - ApiContext.awardAssetId = (int) configMap.get("awardAssetId"); - ApiContext.minDeposit = new BigInteger(configMap.get("commissionMin").toString()); - } - initDB(); - - if (hasDependent(ModuleE.SC)) { - ApiContext.isRunSmartContract = true; - } - if (hasDependent(ModuleE.CC)) { - ApiContext.isRunCrossChain = true; - } - - ScheduleManager scheduleManager = SpringLiteContext.getBean(ScheduleManager.class); - JsonRpcServer server = new JsonRpcServer(); - server.startServer(ApiContext.listenerIp, ApiContext.rpcPort); - Thread.sleep(3000); - scheduleManager.start(); - } catch (Exception e) { - LoggerUtil.commonLog.error("------------------------public-service running failed---------------------------"); - LoggerUtil.commonLog.error(e); - System.exit(-1); - } - ApiContext.isReady = true; - return RpcModuleState.Running; - } - - /** - * Initialize the database connection - * 初始化数据库连接 - */ - private void initDB() { - MongoDBTableServiceImpl tableService = SpringLiteContext.getBean(MongoDBTableServiceImpl.class); - List chainList = tableService.getChainList(); - if (chainList == null) { - tableService.addDefaultChainCache(); - } else { - tableService.initCache(); - } - - MongoChainServiceImpl chainService = SpringLiteContext.getBean(MongoChainServiceImpl.class); - SyncInfo syncInfo = chainService.getSyncInfo(ApiContext.defaultChainId); - if (syncInfo != null) { - ApiContext.protocolVersion = syncInfo.getVersion(); - } - - List chainInfoList = chainService.getChainInfoList(); - if (chainInfoList != null) { - for (ChainInfo chainInfo : chainInfoList) { - CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); - for (AssetInfo assetInfo : chainInfo.getAssets()) { - CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); - } - } - } - } - - @Override - public RpcModuleState onDependenciesLoss(Module dependenciesModule) { - return RpcModuleState.Ready; - } - - @Override - protected long getTryRuningTimeout() { - return 360; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java deleted file mode 100644 index df3c1fb8f3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/AnalysisHandler.java +++ /dev/null @@ -1,909 +0,0 @@ -package io.nuls.api.analysis; - -import com.fasterxml.jackson.core.JsonProcessingException; -import io.nuls.api.ApiContext; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.constant.CommandConstant; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.entity.*; -import io.nuls.api.model.po.*; -import io.nuls.api.rpc.RpcCall; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.RPCUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.data.*; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.constant.TxStatusEnum; -import io.nuls.core.constant.TxType; -import io.nuls.core.crypto.HexUtil; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.parse.JSONUtils; -import io.nuls.core.rpc.info.Constants; -import io.nuls.core.rpc.model.ModuleE; - -import java.io.IOException; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.ApiConstant.*; - -public class AnalysisHandler { - - /** - * Convert block information to blockInfo information - * 将block信息转换为blockInfo信息 - * - * @param blockHex - * @param chainId - * @return - * @throws Exception - */ - public static BlockInfo toBlockInfo(String blockHex, int chainId) throws Exception { - byte[] bytes = RPCUtil.decode(blockHex); - Block block = new Block(); - block.parse(new NulsByteBuffer(bytes)); - - BlockInfo blockInfo = new BlockInfo(); - BlockHeaderInfo blockHeader = toBlockHeaderInfo(block.getHeader(), chainId); - blockHeader.setSize(bytes.length); - blockHeader.setTxHashList(new ArrayList<>()); - //提取智能合约相关交易的hash,查询合约执行结果 - //Extract the hash of smart contract related transactions and query the contract execution results - List contactHashList = new ArrayList<>(); - if (ApiContext.isRunSmartContract) { - for (Transaction tx : block.getTxs()) { - if (tx.getType() == TxType.CREATE_CONTRACT || - tx.getType() == TxType.CALL_CONTRACT || - tx.getType() == TxType.DELETE_CONTRACT || - tx.getType() == TxType.CROSS_CHAIN) { - contactHashList.add(tx.getHash().toHex()); - } - } - } - - BlockHexInfo hexInfo = new BlockHexInfo(); - hexInfo.setHeight(blockHeader.getHeight()); - hexInfo.setBlockHex(blockHex); - hexInfo.setContractHashList(contactHashList); - blockInfo.setBlockHexInfo(hexInfo); - - Map resultInfoMap = null; - if (!contactHashList.isEmpty()) { - Result> result = WalletRpcHandler.getContractResults(chainId, contactHashList); - if (result.isFailed()) { - return null; - } else { - resultInfoMap = result.getData(); - } - } - //执行成功的智能合约可能会产生系统内部交易,内部交易的序列化信息存放在执行结果中,将内部交易反序列后,一起解析 - //A successful intelligent contract execution may result in system internal trading. - // The serialized information of internal trading is stored in the execution result, and the internal trading is reversed and parsed together - if (resultInfoMap != null) { - for (ContractResultInfo resultInfo : resultInfoMap.values()) { - if (resultInfo.getContractTxList() != null) { - for (String txHex : resultInfo.getContractTxList()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - tx.setBlockHeight(blockHeader.getHeight()); - block.getTxs().add(tx); - // blockInfo.getTxList().add(toTransaction(chainId, tx)); - } - } - } - } - blockInfo.setTxList(toTxs(chainId, block.getTxs(), blockHeader, resultInfoMap)); - //计算coinBase奖励 - blockHeader.setReward(calcCoinBaseReward(chainId, blockInfo.getTxList().get(0))); - //计算总手续费 - blockHeader.setTotalFee(calcFee(blockInfo.getTxList(), chainId)); - //重新计算区块打包的交易个数 - blockHeader.setTxCount(blockInfo.getTxList().size()); - blockInfo.setHeader(blockHeader); - return blockInfo; - } - - public static BlockInfo toBlockInfo(String blockHex, Map resultInfoMap, int chainId) throws Exception { - byte[] bytes = RPCUtil.decode(blockHex); - Block block = new Block(); - block.parse(new NulsByteBuffer(bytes)); - - BlockInfo blockInfo = new BlockInfo(); - BlockHeaderInfo blockHeader = toBlockHeaderInfo(block.getHeader(), chainId); - blockHeader.setSize(bytes.length); - blockHeader.setTxHashList(new ArrayList<>()); - - //执行成功的智能合约可能会产生系统内部交易,内部交易的序列化信息存放在执行结果中,将内部交易反序列后,一起解析 - //A successful intelligent contract execution may result in system internal trading. - // The serialized information of internal trading is stored in the execution result, and the internal trading is reversed and parsed together - if (resultInfoMap != null) { - for (ContractResultInfo resultInfo : resultInfoMap.values()) { - if (resultInfo.getContractTxList() != null) { - for (String txHex : resultInfo.getContractTxList()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - tx.setBlockHeight(blockHeader.getHeight()); - block.getTxs().add(tx); - } - } - } - } - blockInfo.setTxList(toTxs(chainId, block.getTxs(), blockHeader, resultInfoMap)); - //计算coinBase奖励 - blockHeader.setReward(calcCoinBaseReward(chainId, blockInfo.getTxList().get(0))); - //计算总手续费 - blockHeader.setTotalFee(calcFee(blockInfo.getTxList(), chainId)); - //重新计算区块打包的交易个数 - blockHeader.setTxCount(blockInfo.getTxList().size()); - blockInfo.setHeader(blockHeader); - return blockInfo; - } - - - public static BlockHeaderInfo toBlockHeaderInfo(BlockHeader blockHeader, int chainId) throws IOException { - BlockExtendsData extendsData = blockHeader.getExtendsData(); - - BlockHeaderInfo info = new BlockHeaderInfo(); - info.setHash(blockHeader.getHash().toHex()); - info.setHeight(blockHeader.getHeight()); - info.setPreHash(blockHeader.getPreHash().toHex()); - info.setMerkleHash(blockHeader.getMerkleHash().toHex()); - info.setCreateTime(blockHeader.getTime()); - info.setPackingAddress(AddressTool.getStringAddressByBytes(blockHeader.getPackingAddress(chainId))); - info.setTxCount(blockHeader.getTxCount()); - info.setRoundIndex(extendsData.getRoundIndex()); - info.setPackingIndexOfRound(extendsData.getPackingIndexOfRound()); - info.setScriptSign(HexUtil.encode(blockHeader.getBlockSignature().serialize())); - info.setAgentVersion(extendsData.getBlockVersion()); - info.setMainVersion(extendsData.getMainVersion()); - info.setRoundStartTime(extendsData.getRoundStartTime()); - //是否是种子节点打包的区块 - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache.getChainInfo().getSeeds().contains(info.getPackingAddress()) || info.getHeight() == 0) { - info.setSeedPacked(true); - } - return info; - } - - public static List toTxs(int chainId, List txList, BlockHeaderInfo blockHeader, Map resultInfoMap) throws Exception { - List txs = new ArrayList<>(); - for (int i = 0; i < txList.size(); i++) { - Transaction tx = txList.get(i); - tx.setStatus(TxStatusEnum.CONFIRMED); - TransactionInfo txInfo = toTransaction(chainId, tx, resultInfoMap, blockHeader.getMainVersion()); - if (txInfo.getType() == TxType.RED_PUNISH) { - PunishLogInfo punishLog = (PunishLogInfo) txInfo.getTxData(); - punishLog.setRoundIndex(blockHeader.getRoundIndex()); - punishLog.setPackageIndex(blockHeader.getPackingIndexOfRound()); - } else if (txInfo.getType() == TxType.YELLOW_PUNISH) { - for (TxDataInfo txData : txInfo.getTxDataList()) { - PunishLogInfo punishLog = (PunishLogInfo) txData; - punishLog.setRoundIndex(blockHeader.getRoundIndex()); - punishLog.setPackageIndex(blockHeader.getPackingIndexOfRound()); - } - } - if (i != 0) { - txInfo.setCreateTime(blockHeader.getCreateTime() - (txs.size() - i)); - } - txs.add(txInfo); - blockHeader.getTxHashList().add(txInfo.getHash()); - } - return txs; - } - - public static TransactionInfo toTransaction(int chainId, Transaction tx, int version) throws Exception { - TransactionInfo info = new TransactionInfo(); - info.setHash(tx.getHash().toHex()); - info.setHeight(tx.getBlockHeight()); - info.setType(tx.getType()); - info.setSize(tx.getSize()); - info.setCreateTime(tx.getTime()); - if (tx.getTxData() != null) { - info.setTxDataHex(RPCUtil.encode(tx.getTxData())); - } - if (tx.getRemark() != null) { - info.setRemark(new String(tx.getRemark(), StandardCharsets.UTF_8)); - } - if (tx.getStatus() == TxStatusEnum.CONFIRMED) { - info.setStatus(ApiConstant.TX_CONFIRM); - } else { - info.setStatus(ApiConstant.TX_UNCONFIRM); - } - - CoinData coinData = new CoinData(); - if (tx.getCoinData() != null) { - coinData.parse(new NulsByteBuffer(tx.getCoinData())); - info.setCoinFroms(toCoinFromList(coinData)); - info.setCoinTos(toCoinToList(coinData)); - } - if (info.getType() == TxType.YELLOW_PUNISH) { - info.setTxDataList(toYellowPunish(tx)); - } else { - info.setTxData(toTxData(chainId, tx, version)); - } - info.calcValue(); - info.calcFee(chainId); - return info; - } - - public static TransactionInfo toTransaction(int chainId, Transaction tx, Map resultInfoMap, int version) throws Exception { - TransactionInfo info = new TransactionInfo(); - info.setHash(tx.getHash().toHex()); - info.setHeight(tx.getBlockHeight()); - info.setType(tx.getType()); - info.setSize(tx.getSize()); - info.setCreateTime(tx.getTime()); - if (tx.getTxData() != null) { - info.setTxDataHex(RPCUtil.encode(tx.getTxData())); - } - if (tx.getRemark() != null) { - info.setRemark(new String(tx.getRemark(), StandardCharsets.UTF_8)); - } - - CoinData coinData = new CoinData(); - if (tx.getCoinData() != null) { - coinData.parse(new NulsByteBuffer(tx.getCoinData())); - info.setCoinFroms(toCoinFromList(coinData)); - info.setCoinTos(toCoinToList(coinData)); - } - ContractResultInfo resultInfo = null; - if (resultInfoMap != null) { - resultInfo = resultInfoMap.get(info.getHash()); - } - if (resultInfo == null) { - if (info.getType() == TxType.YELLOW_PUNISH) { - info.setTxDataList(toYellowPunish(tx)); - } else { - info.setTxData(toTxData(chainId, tx, version)); - } - } else { - info.setTxData(toTxData(chainId, tx, resultInfo)); - } - info.calcValue(); - info.calcFee(chainId); - if (tx.getStatus() == TxStatusEnum.UNCONFIRM) { - info.setStatus(ApiConstant.TX_UNCONFIRM); - } else { - info.setStatus(ApiConstant.TX_CONFIRM); - } - return info; - } - - public static List toCoinFromList(CoinData coinData) { - if (coinData == null || coinData.getFrom() == null) { - return null; - } - List fromInfoList = new ArrayList<>(); - for (CoinFrom from : coinData.getFrom()) { - CoinFromInfo fromInfo = new CoinFromInfo(); - fromInfo.setAddress(AddressTool.getStringAddressByBytes(from.getAddress())); - fromInfo.setAssetsId(from.getAssetsId()); - fromInfo.setChainId(from.getAssetsChainId()); - fromInfo.setLocked(from.getLocked()); - fromInfo.setAmount(from.getAmount()); - fromInfo.setNonce(HexUtil.encode(from.getNonce())); - AssetInfo assetInfo = CacheManager.getRegisteredAsset(fromInfo.getAssetKey()); - fromInfo.setSymbol(assetInfo.getSymbol()); - fromInfo.setDecimal(assetInfo.getDecimals()); - fromInfoList.add(fromInfo); - } - return fromInfoList; - } - - public static List toCoinToList(CoinData coinData) { - if (coinData == null || coinData.getTo() == null) { - return null; - } - List toInfoList = new ArrayList<>(); - for (CoinTo to : coinData.getTo()) { - CoinToInfo coinToInfo = new CoinToInfo(); - coinToInfo.setAddress(AddressTool.getStringAddressByBytes(to.getAddress())); - coinToInfo.setAssetsId(to.getAssetsId()); - coinToInfo.setChainId(to.getAssetsChainId()); - coinToInfo.setLockTime(to.getLockTime()); - coinToInfo.setAmount(to.getAmount()); - AssetInfo assetInfo = CacheManager.getRegisteredAsset(coinToInfo.getAssetKey()); - coinToInfo.setSymbol(assetInfo.getSymbol()); - coinToInfo.setDecimal(assetInfo.getDecimals()); - toInfoList.add(coinToInfo); - } - return toInfoList; - } - - public static TxDataInfo toTxData(int chainId, Transaction tx, int version) throws NulsException { - if (tx.getType() == TxType.ACCOUNT_ALIAS) { - return toAlias(tx); - } else if (tx.getType() == TxType.REGISTER_AGENT || tx.getType() == TxType.CONTRACT_CREATE_AGENT) { - return toAgent(tx); - } else if (tx.getType() == TxType.DEPOSIT || tx.getType() == TxType.CONTRACT_DEPOSIT) { - return toDeposit(tx); - } else if (tx.getType() == TxType.CANCEL_DEPOSIT || tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT) { - return toCancelDeposit(tx); - } else if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.CONTRACT_STOP_AGENT) { - return toStopAgent(tx); - } else if (tx.getType() == TxType.RED_PUNISH) { - return toRedPublishLog(tx); - } else if (tx.getType() == TxType.CREATE_CONTRACT) { - return toContractInfo(chainId, tx); - } else if (tx.getType() == TxType.CALL_CONTRACT) { - return toContractCallInfo(chainId, tx); - } else if (tx.getType() == TxType.CROSS_CHAIN) { - // add by pierre at 2019-12-23 特殊跨链转账交易,从平行链跨链转回主网的NRC20资产 - return toContractCallInfoForCrossChain(chainId, tx); - // end code by pierre - } else if (tx.getType() == TxType.DELETE_CONTRACT) { - return toContractDeleteInfo(chainId, tx); - } else if (tx.getType() == TxType.CONTRACT_TRANSFER) { - return toContractTransferInfo(tx); - } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET || tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { - return toChainInfo(tx, version); - } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN || tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { - return toAssetInfo(tx, version); - } - return null; - } - - public static TxDataInfo toTxData(int chainId, Transaction tx, ContractResultInfo resultInfo) throws NulsException { - if (tx.getType() == TxType.CREATE_CONTRACT) { - return toContractInfo(chainId, tx, resultInfo); - } else if (tx.getType() == TxType.CALL_CONTRACT) { - return toContractCallInfo(chainId, tx, resultInfo); - } else if (tx.getType() == TxType.CROSS_CHAIN) { - return toContractCallInfoForCrossChain(chainId, tx, resultInfo); - } else if (tx.getType() == TxType.DELETE_CONTRACT) { - return toContractDeleteInfo(chainId, tx, resultInfo); - } - return null; - } - - public static AliasInfo toAlias(Transaction tx) throws NulsException { - Alias alias = new Alias(); - alias.parse(new NulsByteBuffer(tx.getTxData())); - AliasInfo info = new AliasInfo(); - info.setAddress(AddressTool.getStringAddressByBytes(alias.getAddress())); - info.setAlias(alias.getAlias()); - return info; - } - - public static AgentInfo toAgent(Transaction tx) throws NulsException { - Agent agent = new Agent(); - agent.parse(new NulsByteBuffer(tx.getTxData())); - - AgentInfo agentInfo = new AgentInfo(); - agentInfo.init(); - agentInfo.setAgentAddress(AddressTool.getStringAddressByBytes(agent.getAgentAddress())); - agentInfo.setPackingAddress(AddressTool.getStringAddressByBytes(agent.getPackingAddress())); - agentInfo.setRewardAddress(AddressTool.getStringAddressByBytes(agent.getRewardAddress())); - agentInfo.setDeposit(agent.getDeposit()); - agentInfo.setCreateTime(tx.getTime()); - - agentInfo.setCommissionRate(agent.getCommissionRate()); - agentInfo.setTxHash(tx.getHash().toHex()); - agentInfo.setAgentId(agentInfo.getTxHash().substring(agentInfo.getTxHash().length() - 8)); - agentInfo.setBlockHeight(tx.getBlockHeight()); - return agentInfo; - } - - public static DepositInfo toDeposit(Transaction tx) throws NulsException { - Deposit deposit = new Deposit(); - deposit.parse(new NulsByteBuffer(tx.getTxData())); - - DepositInfo info = new DepositInfo(); - info.setTxHash(tx.getHash().toHex()); - info.setAmount(deposit.getDeposit()); - info.setAgentHash(deposit.getAgentHash().toHex()); - info.setAddress(AddressTool.getStringAddressByBytes(deposit.getAddress())); - info.setTxHash(tx.getHash().toHex()); - info.setCreateTime(tx.getTime()); - info.setBlockHeight(tx.getBlockHeight()); - info.setFee(tx.getFee()); - - return info; - } - - public static DepositInfo toCancelDeposit(Transaction tx) throws NulsException { - CancelDeposit cancelDeposit = new CancelDeposit(); - cancelDeposit.parse(new NulsByteBuffer(tx.getTxData())); - DepositInfo deposit = new DepositInfo(); - deposit.setTxHash(cancelDeposit.getJoinTxHash().toHex()); - deposit.setFee(tx.getFee()); - deposit.setCreateTime(tx.getTime()); - deposit.setBlockHeight(tx.getBlockHeight()); - deposit.setType(ApiConstant.CANCEL_CONSENSUS); - return deposit; - } - - public static AgentInfo toStopAgent(Transaction tx) throws NulsException { - StopAgent stopAgent = new StopAgent(); - stopAgent.parse(new NulsByteBuffer(tx.getTxData())); - - AgentInfo agentNode = new AgentInfo(); - agentNode.setTxHash(stopAgent.getCreateTxHash().toHex()); - return agentNode; - } - - public static List toYellowPunish(Transaction tx) throws NulsException { - YellowPunishData data = new YellowPunishData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - List logList = new ArrayList<>(); - for (byte[] address : data.getAddressList()) { - PunishLogInfo log = new PunishLogInfo(); - log.setTxHash(tx.getHash().toHex()); - log.setAddress(AddressTool.getStringAddressByBytes(address)); - log.setBlockHeight(tx.getBlockHeight()); - log.setTime(tx.getTime()); - log.setType(ApiConstant.PUBLISH_YELLOW); - log.setReason("No packaged blocks"); - logList.add(log); - } - return logList; - } - - public static PunishLogInfo toRedPublishLog(Transaction tx) throws NulsException { - RedPunishData data = new RedPunishData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - PunishLogInfo punishLog = new PunishLogInfo(); - punishLog.setTxHash(tx.getHash().toHex()); - punishLog.setType(ApiConstant.PUBLISH_RED); - punishLog.setAddress(AddressTool.getStringAddressByBytes(data.getAddress())); - if (data.getReasonCode() == ApiConstant.TRY_FORK) { - punishLog.setReason("Trying to bifurcate many times"); - } else if (data.getReasonCode() == ApiConstant.DOUBLE_SPEND) { - punishLog.setReason("double-send tx in the block"); - } else if (data.getReasonCode() == ApiConstant.TOO_MUCH_YELLOW_PUNISH) { - punishLog.setReason("too much yellow publish"); - } - punishLog.setBlockHeight(tx.getBlockHeight()); - punishLog.setTime(tx.getTime()); - return punishLog; - } - - public static ContractInfo toContractInfo(int chainId, Transaction tx) throws NulsException { - CreateContractData data = new CreateContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - ContractInfo contractInfo = new ContractInfo(); - contractInfo.setCreateTxHash(tx.getHash().toHex()); - contractInfo.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - contractInfo.setAlias(data.getAlias()); - contractInfo.setBlockHeight(tx.getBlockHeight()); - contractInfo.setCreateTime(tx.getTime()); - try { - String args = JSONUtils.obj2json(data.getArgs()); - contractInfo.setArgs(args); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - if (tx.getStatus() == TxStatusEnum.CONFIRMED) { - Result result = WalletRpcHandler.getContractInfo(chainId, contractInfo); - return result.getData(); - } - return contractInfo; - } - - public static ContractInfo toContractInfo(int chainId, Transaction tx, ContractResultInfo resultInfo) throws NulsException { - CreateContractData data = new CreateContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - ContractInfo contractInfo = new ContractInfo(); - contractInfo.setCreateTxHash(tx.getHash().toHex()); - contractInfo.setAlias(data.getAlias()); - contractInfo.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - contractInfo.setBlockHeight(tx.getBlockHeight()); - contractInfo.setCreateTime(tx.getTime()); - try { - String args = JSONUtils.obj2json(data.getArgs()); - contractInfo.setArgs(args); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - contractInfo.setResultInfo(resultInfo); - if (!resultInfo.isSuccess()) { - contractInfo.setSuccess(false); - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_FAIL); - contractInfo.setErrorMsg(resultInfo.getErrorMessage()); - return contractInfo; - } - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_NORMAL); - contractInfo.setSuccess(true); - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("contractAddress", contractInfo.getContractAddress()); - params.put("hash", contractInfo.getCreateTxHash()); - LoggerUtil.commonLog.info("------ContractAddress:" + contractInfo.getContractAddress()); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_INFO, params); - - contractInfo.setCreater(map.get("creater").toString()); - contractInfo.setNrc20((Boolean) map.get("nrc20")); - contractInfo.setTokenType((Integer) map.get("tokenType")); - contractInfo.setDirectPayable((Boolean) map.get("directPayable")); - if (contractInfo.isNrc20()) { - contractInfo.setTokenName(map.get("nrc20TokenName").toString()); - contractInfo.setSymbol(map.get("nrc20TokenSymbol").toString()); - contractInfo.setDecimals((Integer) map.get("decimals")); - contractInfo.setTotalSupply(map.get("totalSupply").toString()); - contractInfo.setOwners(new ArrayList<>()); - } - - List> methodMap = (List>) map.get("method"); - List methodList = new ArrayList<>(); - List> argsList; - List paramList; - for (Map map1 : methodMap) { - ContractMethod method = new ContractMethod(); - method.setName((String) map1.get("name")); - method.setDesc((String) map1.get("desc")); - method.setReturnType((String) map1.get("returnArg")); - method.setView((boolean) map1.get("view")); - method.setPayable((boolean) map1.get("payable")); - method.setEvent((boolean) map1.get("event")); - method.setJsonSerializable((boolean) map1.get("jsonSerializable")); - argsList = (List>) map1.get("args"); - paramList = new ArrayList<>(); - for (Map arg : argsList) { - paramList.add(makeContractMethodArg(arg)); - } - method.setParams(paramList); - methodList.add(method); - } - contractInfo.setMethods(methodList); - return contractInfo; - } - - private static ContractMethodArg makeContractMethodArg(Map arg) { - return new ContractMethodArg((String) arg.get("type"), (String) arg.get("name"), (boolean) arg.get("required")); - } - - public static ContractCallInfo toContractCallInfo(int chainId, Transaction tx) throws NulsException { - CallContractData data = new CallContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - ContractCallInfo callInfo = new ContractCallInfo(); - callInfo.setCreater(AddressTool.getStringAddressByBytes(data.getSender())); - callInfo.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - callInfo.setGasLimit(data.getGasLimit()); - callInfo.setPrice(data.getPrice()); - callInfo.setMethodName(data.getMethodName()); - callInfo.setMethodDesc(data.getMethodDesc()); - callInfo.setCreateTxHash(tx.getHash().toHex()); - callInfo.setValue(data.getValue()); - try { - String args = JSONUtils.obj2json(data.getArgs()); - callInfo.setArgs(args); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - - //查询智能合约详情之前,先查询创建智能合约的执行结果是否成功 - if (tx.getStatus() == TxStatusEnum.CONFIRMED) { - Result result = WalletRpcHandler.getContractResultInfo(chainId, callInfo.getCreateTxHash()); - callInfo.setResultInfo(result.getData()); - } - return callInfo; - } - - public static ContractCallInfo toContractCallInfoForCrossChain(int chainId, Transaction tx) throws NulsException { - ContractResultInfo contractResultInfo = null; - //查询智能合约详情之前,先查询创建智能合约的执行结果是否成功 - if (tx.getStatus() == TxStatusEnum.CONFIRMED) { - try { - Result result = WalletRpcHandler.getContractResultInfo(chainId, tx.getHash().toHex()); - if (result.getData() == null) { - return null; - } - contractResultInfo = result.getData(); - } catch (Exception e) { - return null; - } - } - if (contractResultInfo == null) { - return null; - } - ContractCallInfo callInfo = new ContractCallInfo(); - callInfo.setContractAddress(contractResultInfo.getContractAddress()); - callInfo.setGasLimit(CROSS_CHAIN_GASLIMIT); - callInfo.setPrice(CONTRACT_MINIMUM_PRICE); - callInfo.setMethodName(CROSS_CHAIN_SYSTEM_CONTRACT_TRANSFER_IN_METHOD_NAME); - callInfo.setValue(BigInteger.ZERO); - callInfo.setCreateTxHash(tx.getHash().toHex()); - String nrcContractAddress = null; - List tokenTransfers = contractResultInfo.getTokenTransfers(); - if (tokenTransfers != null && !tokenTransfers.isEmpty()) { - nrcContractAddress = tokenTransfers.get(0).getContractAddress(); - } - CoinData coinData = tx.getCoinDataInstance(); - List toList = coinData.getTo(); - CoinTo coinTo = toList.get(0); - byte[] toAddress = coinTo.getAddress(); - List fromList = coinData.getFrom(); - CoinFrom from = fromList.get(0); - byte[] fromAddress = from.getAddress(); - BigInteger amount = coinTo.getAmount(); - int assetsChainId = coinTo.getAssetsChainId(); - int assetsId = coinTo.getAssetsId(); - - String[][] args = new String[][]{ - new String[]{nrcContractAddress}, - new String[]{AddressTool.getStringAddressByBytes(fromAddress)}, - new String[]{AddressTool.getStringAddressByBytes(toAddress)}, - new String[]{amount.toString()}, - new String[]{String.valueOf(assetsChainId)}, - new String[]{String.valueOf(assetsId)}}; - try { - String argsStr = JSONUtils.obj2json(args); - callInfo.setArgs(argsStr); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - callInfo.setResultInfo(contractResultInfo); - return callInfo; - } - - public static ContractCallInfo toContractCallInfo(int chainId, Transaction tx, ContractResultInfo resultInfo) throws NulsException { - CallContractData data = new CallContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - ContractCallInfo callInfo = new ContractCallInfo(); - callInfo.setCreater(AddressTool.getStringAddressByBytes(data.getSender())); - callInfo.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - callInfo.setGasLimit(data.getGasLimit()); - callInfo.setPrice(data.getPrice()); - callInfo.setMethodName(data.getMethodName()); - callInfo.setMethodDesc(data.getMethodDesc()); - callInfo.setCreateTxHash(tx.getHash().toHex()); - callInfo.setValue(data.getValue()); - try { - String args = JSONUtils.obj2json(data.getArgs()); - callInfo.setArgs(args); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - callInfo.setResultInfo(resultInfo); - return callInfo; - } - - public static ContractCallInfo toContractCallInfoForCrossChain(int chainId, Transaction tx, ContractResultInfo resultInfo) throws NulsException { - if (resultInfo == null) { - return null; - } - ContractCallInfo callInfo = new ContractCallInfo(); - callInfo.setContractAddress(resultInfo.getContractAddress()); - callInfo.setGasLimit(CROSS_CHAIN_GASLIMIT); - callInfo.setPrice(CONTRACT_MINIMUM_PRICE); - callInfo.setMethodName(CROSS_CHAIN_SYSTEM_CONTRACT_TRANSFER_IN_METHOD_NAME); - callInfo.setValue(BigInteger.ZERO); - callInfo.setCreateTxHash(tx.getHash().toHex()); - String nrcContractAddress = null; - List tokenTransfers = resultInfo.getTokenTransfers(); - if (tokenTransfers != null && !tokenTransfers.isEmpty()) { - nrcContractAddress = tokenTransfers.get(0).getContractAddress(); - } - CoinData coinData = tx.getCoinDataInstance(); - List toList = coinData.getTo(); - CoinTo coinTo = toList.get(0); - byte[] toAddress = coinTo.getAddress(); - List fromList = coinData.getFrom(); - CoinFrom from = fromList.get(0); - byte[] fromAddress = from.getAddress(); - BigInteger amount = coinTo.getAmount(); - int assetsChainId = coinTo.getAssetsChainId(); - int assetsId = coinTo.getAssetsId(); - - String[][] args = new String[][]{ - new String[]{nrcContractAddress}, - new String[]{AddressTool.getStringAddressByBytes(fromAddress)}, - new String[]{AddressTool.getStringAddressByBytes(toAddress)}, - new String[]{amount.toString()}, - new String[]{String.valueOf(assetsChainId)}, - new String[]{String.valueOf(assetsId)}}; - try { - String argsStr = JSONUtils.obj2json(args); - callInfo.setArgs(argsStr); - } catch (JsonProcessingException e) { - throw new NulsException(CommonCodeConstanst.DATA_PARSE_ERROR); - } - callInfo.setResultInfo(resultInfo); - return callInfo; - } - - public static ContractDeleteInfo toContractDeleteInfo(int chainId, Transaction tx) throws NulsException { - DeleteContractData data = new DeleteContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - ContractDeleteInfo info = new ContractDeleteInfo(); - info.setTxHash(tx.getHash().toHex()); - info.setCreater(AddressTool.getStringAddressByBytes(data.getSender())); - info.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - if (tx.getStatus() == TxStatusEnum.CONFIRMED) { - Result result = WalletRpcHandler.getContractResultInfo(chainId, info.getTxHash()); - info.setResultInfo(result.getData()); - } - - return info; - } - - public static ContractDeleteInfo toContractDeleteInfo(int chainId, Transaction tx, ContractResultInfo resultInfo) throws NulsException { - DeleteContractData data = new DeleteContractData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - ContractDeleteInfo info = new ContractDeleteInfo(); - info.setTxHash(tx.getHash().toHex()); - info.setCreater(AddressTool.getStringAddressByBytes(data.getSender())); - info.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - info.setResultInfo(resultInfo); - return info; - } - - public static ContractResultInfo toContractResultInfo(String hash, Map resultMap) { - ContractResultInfo resultInfo = new ContractResultInfo(); - resultInfo.setTxHash(hash); - resultInfo.setSuccess((Boolean) resultMap.get("success")); - resultInfo.setContractAddress((String) resultMap.get("contractAddress")); - resultInfo.setErrorMessage((String) resultMap.get("errorMessage")); - resultInfo.setResult((String) resultMap.get("result")); - - resultInfo.setGasUsed(resultMap.get("gasUsed") != null ? Long.parseLong(resultMap.get("gasUsed").toString()) : 0); - resultInfo.setGasLimit(resultMap.get("gasLimit") != null ? Long.parseLong(resultMap.get("gasLimit").toString()) : 0); - resultInfo.setPrice(resultMap.get("price") != null ? Long.parseLong(resultMap.get("price").toString()) : 0); - resultInfo.setTotalFee((String) resultMap.get("totalFee")); - resultInfo.setTxSizeFee((String) resultMap.get("txSizeFee")); - resultInfo.setActualContractFee((String) resultMap.get("actualContractFee")); - resultInfo.setRefundFee((String) resultMap.get("refundFee")); - resultInfo.setValue((String) resultMap.get("value")); - //resultInfo.setBalance((String) map.get("balance")); - resultInfo.setEvents((List) resultMap.get("events")); - resultInfo.setRemark((String) resultMap.get("remark")); - resultInfo.setContractTxList((List) resultMap.get("contractTxList")); - - List> transfers = (List>) resultMap.get("transfers"); - List transferList = new ArrayList<>(); - for (Map map1 : transfers) { - NulsTransfer nulsTransfer = new NulsTransfer(); - nulsTransfer.setTxHash((String) map1.get("txHash")); - nulsTransfer.setFrom((String) map1.get("from")); - nulsTransfer.setValue((String) map1.get("value")); - nulsTransfer.setOutputs((List>) map1.get("outputs")); - transferList.add(nulsTransfer); - } - resultInfo.setNulsTransfers(transferList); - - transfers = (List>) resultMap.get("tokenTransfers"); - List tokenTransferList = new ArrayList<>(); - for (Map map1 : transfers) { - TokenTransfer tokenTransfer = new TokenTransfer(); - tokenTransfer.setContractAddress((String) map1.get("contractAddress")); - tokenTransfer.setFromAddress((String) map1.get("from")); - tokenTransfer.setToAddress((String) map1.get("to")); - tokenTransfer.setValue((String) map1.get("value")); - tokenTransfer.setName((String) map1.get("name")); - tokenTransfer.setSymbol((String) map1.get("symbol")); - tokenTransfer.setDecimals((Integer) map1.get("decimals")); - tokenTransferList.add(tokenTransfer); - } - resultInfo.setTokenTransfers(tokenTransferList); - - return resultInfo; - } - - private static ContractTransferInfo toContractTransferInfo(Transaction tx) throws NulsException { - ContractTransferData data = new ContractTransferData(); - data.parse(new NulsByteBuffer(tx.getTxData())); - - ContractTransferInfo info = new ContractTransferInfo(); - info.setTxHash(tx.getHash().toHex()); - info.setContractAddress(AddressTool.getStringAddressByBytes(data.getContractAddress())); - info.setOrginTxHash(data.getOrginTxHash().toHex()); - return info; - } - - private static ChainInfo toChainInfo(Transaction tx, int version) throws NulsException { - ChainInfo chainInfo = new ChainInfo(); - if (version < 4) { - TxChain txChain = new TxChain(); - txChain.parse(new NulsByteBuffer(tx.getTxData())); - chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); - - AssetInfo assetInfo = new AssetInfo(); - TxAsset txAsset = txChain.getDefaultAsset(); - assetInfo.setAssetId(txAsset.getAssetId()); - assetInfo.setChainId(txAsset.getChainId()); - assetInfo.setSymbol(txAsset.getSymbol()); - assetInfo.setInitCoins(txAsset.getInitNumber()); - assetInfo.setDecimals(txAsset.getDecimalPlaces()); - chainInfo.setDefaultAsset(assetInfo); - chainInfo.getAssets().add(assetInfo); - } else if (version == 4) { - io.nuls.api.model.entity.v4.TxChain txChain = new io.nuls.api.model.entity.v4.TxChain(); - txChain.parse(new NulsByteBuffer(tx.getTxData())); - chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); - - AssetInfo assetInfo = new AssetInfo(); - io.nuls.api.model.entity.v4.TxAsset txAsset = txChain.getDefaultAsset(); - assetInfo.setAssetId(txAsset.getAssetId()); - assetInfo.setChainId(txAsset.getChainId()); - assetInfo.setSymbol(txAsset.getSymbol()); - assetInfo.setInitCoins(txAsset.getInitNumber()); - assetInfo.setDecimals(txAsset.getDecimalPlaces()); - chainInfo.setDefaultAsset(assetInfo); - chainInfo.getAssets().add(assetInfo); - } else { - io.nuls.api.model.entity.v5.TxChain txChain = new io.nuls.api.model.entity.v5.TxChain(); - txChain.parse(tx.getTxData(), 0); - chainInfo.setChainId(txChain.getDefaultAsset().getChainId()); - chainInfo.setChainName(txChain.getName()); - - AssetInfo assetInfo = new AssetInfo(); - io.nuls.api.model.entity.v5.TxAsset txAsset = txChain.getDefaultAsset(); - assetInfo.setAssetId(txAsset.getAssetId()); - assetInfo.setChainId(txAsset.getChainId()); - assetInfo.setSymbol(txAsset.getSymbol()); - assetInfo.setInitCoins(txAsset.getInitNumber()); - assetInfo.setDecimals(txAsset.getDecimalPlaces()); - chainInfo.setDefaultAsset(assetInfo); - chainInfo.getAssets().add(assetInfo); - } - return chainInfo; - } - - private static AssetInfo toAssetInfo(Transaction tx, int version) throws NulsException { - AssetInfo assetInfo = new AssetInfo(); - if (version >= 4) { - io.nuls.api.model.entity.v4.TxAsset txAsset = new io.nuls.api.model.entity.v4.TxAsset(); - txAsset.parse(new NulsByteBuffer(tx.getTxData())); - - assetInfo.setAssetId(txAsset.getAssetId()); - assetInfo.setChainId(txAsset.getChainId()); - assetInfo.setSymbol(txAsset.getSymbol()); - assetInfo.setInitCoins(txAsset.getInitNumber()); - assetInfo.setDecimals(txAsset.getDecimalPlaces()); - assetInfo.setAddress(""); - } else { - TxAsset txAsset = new TxAsset(); - txAsset.parse(new NulsByteBuffer(tx.getTxData())); - - assetInfo.setAssetId(txAsset.getAssetId()); - assetInfo.setChainId(txAsset.getChainId()); - assetInfo.setSymbol(txAsset.getSymbol()); - assetInfo.setInitCoins(txAsset.getInitNumber()); - assetInfo.setDecimals(txAsset.getDecimalPlaces()); - assetInfo.setAddress(AddressTool.getStringAddressByBytes(txAsset.getAddress())); - } - - return assetInfo; - } - - public static BigInteger calcCoinBaseReward(int chainId, TransactionInfo coinBaseTx) { - BigInteger reward = BigInteger.ZERO; - if (coinBaseTx.getCoinTos() == null) { - return reward; - } - //奖励只计算本链的共识资产 - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - for (CoinToInfo coinTo : coinBaseTx.getCoinTos()) { - if (coinTo.getChainId() == assetInfo.getChainId() || coinTo.getAssetsId() == assetInfo.getAssetId()) { - reward = reward.add(coinTo.getAmount()); - } - } - return reward; - } - - public static BigInteger calcFee(List txs, int chainId) { - BigInteger fee = BigInteger.ZERO; - //手续费只计算本链的共识资产 - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - for (int i = 1; i < txs.size(); i++) { - FeeInfo feeInfo = txs.get(i).getFee(); - if (feeInfo.getChainId() == assetInfo.getChainId() && feeInfo.getAssetId() == assetInfo.getAssetId()) { - fee = fee.add(feeInfo.getValue()); - } - } - return fee; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java deleted file mode 100644 index b8b0faf300..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/analysis/WalletRpcHandler.java +++ /dev/null @@ -1,717 +0,0 @@ -package io.nuls.api.analysis; - -import io.nuls.api.ApiContext; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.constant.ApiErrorCode; -import io.nuls.api.constant.CommandConstant; -import io.nuls.api.model.po.*; -import io.nuls.api.model.rpc.BalanceInfo; -import io.nuls.api.model.rpc.FreezeInfo; -import io.nuls.api.rpc.RpcCall; -import io.nuls.base.RPCUtil; -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.data.Transaction; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.constant.TxStatusEnum; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.model.StringUtils; -import io.nuls.core.rpc.info.Constants; -import io.nuls.core.rpc.model.ModuleE; -import io.nuls.core.rpc.model.message.Response; -import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.ApiConstant.*; - -public class WalletRpcHandler { - - - public static Result getBlockInfo(int chainID, long height) { - Map params = new HashMap<>(ApiConstant.INIT_CAPACITY_8); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainID); - params.put("height", height); - try { - Map map = (Map) RpcCall.request(ModuleE.BL.abbr, CommandConstant.GET_BLOCK_BY_HEIGHT, params); - if (null == map || map.isEmpty()) { - return Result.getSuccess(null); - } - - BlockInfo blockInfo = AnalysisHandler.toBlockInfo((String) map.get("value"), chainID); - return Result.getSuccess(null).setData(blockInfo); - } catch (Exception e) { - Log.error(e); - return Result.getFailed(ApiErrorCode.DATA_PARSE_ERROR); - } - } - - public static Result getBlockInfo(int chainID, String hash) { - Map params = new HashMap<>(ApiConstant.INIT_CAPACITY_8); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainID); - params.put("hash", hash); - try { - Map map = (Map) RpcCall.request(ModuleE.BL.abbr, CommandConstant.GET_BLOCK_BY_HASH, params); - if (null == map || map.isEmpty()) { - return Result.getSuccess(null); - } - BlockInfo blockInfo = AnalysisHandler.toBlockInfo((String) map.get("value"), chainID); - return Result.getSuccess(null).setData(blockInfo); - } catch (Exception e) { - Log.error(e); - } - return Result.getFailed(ApiErrorCode.DATA_PARSE_ERROR); - } - - public static Result> getBlockGlobalInfo(int chainId) { - Map params = new HashMap<>(ApiConstant.INIT_CAPACITY_8); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainId); - try { - Map map = (Map) RpcCall.request(ModuleE.BL.abbr, CommandConstant.INFO, params); - return Result.getSuccess(null).setData(map); - } catch (Exception e) { - Log.error(e); - } - return null; - } - - public static BalanceInfo getAccountBalance(int chainId, String address, int assetChainId, int assetId) { - Map params = new HashMap<>(ApiConstant.INIT_CAPACITY_8); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainId); - params.put("address", address); - params.put("assetChainId", assetChainId); - params.put("assetId", assetId); - try { - Map map = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.GET_BALANCE, params); - BalanceInfo balanceInfo = new BalanceInfo(); - balanceInfo.setBalance(new BigInteger(map.get("available").toString())); - balanceInfo.setTimeLock(new BigInteger(map.get("timeHeightLocked").toString())); - balanceInfo.setConsensusLock(new BigInteger(map.get("permanentLocked").toString())); - balanceInfo.setFreeze(new BigInteger(map.get("freeze").toString())); - balanceInfo.setNonce((String) map.get("nonce")); - balanceInfo.setTotalBalance(balanceInfo.getBalance().add(balanceInfo.getConsensusLock()).add(balanceInfo.getTimeLock())); - balanceInfo.setNonceType((Integer) map.get("nonceType")); - return balanceInfo; - } catch (Exception e) { - Log.error(e); - } - return null; - } - -// public static BalanceInfo getBalance(int chainId, String address, int assetChainId, int assetId) { -// Map params = new HashMap<>(ApiConstant.INIT_CAPACITY_8); -// params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); -// params.put(Constants.CHAIN_ID, chainId); -// params.put("address", address); -// params.put("assetChainId", assetChainId); -// params.put("assetId", assetId); -// try { -// Map map = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.GET_BALANCE, params); -// BalanceInfo balanceInfo = new BalanceInfo(); -// balanceInfo.setTotalBalance(new BigInteger(map.get("total").toString())); -// balanceInfo.setBalance(new BigInteger(map.get("available").toString())); -// balanceInfo.setTimeLock(new BigInteger(map.get("timeHeightLocked").toString())); -// balanceInfo.setConsensusLock(new BigInteger(map.get("permanentLocked").toString())); -// -// return balanceInfo; -// } catch (Exception e) { -// Log.error(e); -// } -// return null; -// } - - public static Result> getFreezeList(int chainId, int assetChainId, int assetId, String address, int pageIndex, int pageSize) { - Map params = new HashMap<>(); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainId); - params.put("pageNumber", pageIndex); - params.put("pageSize", pageSize); - params.put("address", address); - params.put("assetChainId", assetChainId); - params.put("assetId", assetId); - try { - Map map = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.GET_FREEZE, params); - PageInfo pageInfo = new PageInfo(pageIndex, pageSize); - pageInfo.setTotalCount((int) map.get("totalCount")); - List maps = (List) map.get("list"); - List freezeInfos = new ArrayList<>(); - for (Map map1 : maps) { - FreezeInfo freezeInfo = new FreezeInfo(); - freezeInfo.setAmount(map1.get("amount").toString()); - freezeInfo.setLockedValue(Long.parseLong(map1.get("lockedValue").toString())); - freezeInfo.setTime(Long.parseLong(map1.get("time").toString())); - freezeInfo.setTxHash((String) map1.get("txHash")); - Result result = getTx(chainId, freezeInfo.getTxHash()); - if (result.isSuccess()) { - TransactionInfo txInfo = result.getData(); - freezeInfo.setType(txInfo.getType()); - } - freezeInfos.add(freezeInfo); - } - pageInfo.setList(freezeInfos); - return Result.getSuccess(null).setData(pageInfo); - } catch (Exception e) { - e.printStackTrace(); - return Result.getFailed(ApiErrorCode.DATA_PARSE_ERROR); - } - } - - public static Result getTx(int chainId, String hash) { - Map params = new HashMap<>(); - params.put(Constants.VERSION_KEY_STR, ApiContext.VERSION); - params.put(Constants.CHAIN_ID, chainId); - params.put("txHash", hash); - try { - Map map = (Map) RpcCall.request(ModuleE.TX.abbr, CommandConstant.GET_TX, params); - if (map == null || map.isEmpty()) { - return null; - } - String txHex = (String) map.get("tx"); - if (null == txHex) { - return null; - } - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - long height = Long.parseLong(map.get("height").toString()); - int status = (int) map.get("status"); - if (status == 1) { - tx.setStatus(TxStatusEnum.CONFIRMED); - } - tx.setBlockHeight(height); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - - return Result.getSuccess(null).setData(txInfo); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } catch (Exception e) { - Log.error(e); - return Result.getFailed(ApiErrorCode.DATA_PARSE_ERROR); - } - } - - public static Result getAgentInfo(int chainId, String hash) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("agentHash", hash); - try { - Map map = (Map) RpcCall.request(ModuleE.CS.abbr, CommandConstant.GET_AGENT, params); - AgentInfo agentInfo = new AgentInfo(); - agentInfo.setCreditValue(Double.parseDouble(map.get("creditVal").toString())); - agentInfo.setDepositCount((Integer) map.get("memberCount")); - agentInfo.setStatus((Integer) map.get("status")); - - return Result.getSuccess(null).setData(agentInfo); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result getConsensusConfig(int chainId) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - try { - Map map = (Map) RpcCall.request(ModuleE.CS.abbr, CommandConstant.GET_CONSENSUS_CONFIG, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result getContractInfo(int chainId, ContractInfo contractInfo) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("contractAddress", contractInfo.getContractAddress()); - params.put("hash", contractInfo.getCreateTxHash()); - //查询智能合约详情之前,先查询创建智能合约的执行结果是否成功 - Result result = getContractResultInfo(params); - ContractResultInfo resultInfo = result.getData(); - contractInfo.setResultInfo(resultInfo); - if (!resultInfo.isSuccess()) { - contractInfo.setSuccess(false); - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_FAIL); - contractInfo.setErrorMsg(resultInfo.getErrorMessage()); - return Result.getSuccess(null).setData(contractInfo); - } - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_NORMAL); - contractInfo.setSuccess(true); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_INFO, params); - - contractInfo.setCreater(map.get("creater").toString()); - contractInfo.setNrc20((Boolean) map.get("nrc20")); - contractInfo.setTokenType((Integer) map.get("tokenType")); - contractInfo.setDirectPayable((Boolean) map.get("directPayable")); - if (contractInfo.isNrc20()) { - contractInfo.setTokenName(map.get("nrc20TokenName").toString()); - contractInfo.setSymbol(map.get("nrc20TokenSymbol").toString()); - contractInfo.setDecimals((Integer) map.get("decimals")); - contractInfo.setTotalSupply(map.get("totalSupply").toString()); - contractInfo.setOwners(new ArrayList<>()); - } - - List> methodMap = (List>) map.get("method"); - List methodList = new ArrayList<>(); - List> argsList; - List paramList; - for (Map map1 : methodMap) { - ContractMethod method = new ContractMethod(); - method.setName((String) map1.get("name")); - method.setDesc((String) map1.get("desc")); - method.setReturnType((String) map1.get("returnArg")); - method.setView((boolean) map1.get("view")); - method.setPayable((boolean) map1.get("payable")); - method.setEvent((boolean) map1.get("event")); - method.setJsonSerializable((boolean) map1.get("jsonSerializable")); - argsList = (List>) map1.get("args"); - paramList = new ArrayList<>(); - for (Map arg : argsList) { - paramList.add(makeContractMethodArg(arg)); - } - method.setParams(paramList); - methodList.add(method); - } - contractInfo.setMethods(methodList); - return Result.getSuccess(null).setData(contractInfo); - } - - private static ContractMethodArg makeContractMethodArg(Map arg) { - return new ContractMethodArg((String) arg.get("type"), (String) arg.get("name"), (boolean) arg.get("required")); - } - - public static Result getContractConstructor(int chainId, String contractCode) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("contractCode", contractCode); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONSTRUCTOR, params); - return Result.getSuccess(null).setData(map); - } - - private static String crossTokenSystemContract = null; - - public static String getCrossTokenSystemContract(int chainId) throws NulsException { - if (StringUtils.isBlank(crossTokenSystemContract)) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.GET_CROSS_TOKEN_SYSTEM_CONTRACT, params); - crossTokenSystemContract = (String) map.get("value"); - } - return crossTokenSystemContract; - } - - public static Result validateContractCreate(int chainId, Object sender, Object gasLimit, Object price, Object contractCode, Object args) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("gasLimit", gasLimit); - params.put("price", price); - params.put("contractCode", contractCode); - params.put("args", args); - Response response = RpcCall.requestAndResponse(ModuleE.SC.abbr, CommandConstant.VALIDATE_CREATE, params); - boolean bool = response.isSuccess(); - String msg = ""; - String code = ""; - if (!bool) { - msg = response.getResponseComment(); - code = response.getResponseErrorCode(); - } - Map map = new HashMap(8); - map.put("success", bool); - map.put("code", code); - map.put("msg", msg); - return Result.getSuccess(null).setData(map); - } - - public static Result validateContractCall(int chainId, Object sender, Object value, Object gasLimit, Object price, - Object contractAddress, Object methodName, Object methodDesc, Object args) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("value", value); - params.put("gasLimit", gasLimit); - params.put("price", price); - params.put("contractAddress", contractAddress); - params.put("methodName", methodName); - params.put("methodDesc", methodDesc); - params.put("args", args); - Response response = RpcCall.requestAndResponse(ModuleE.SC.abbr, CommandConstant.VALIDATE_CALL, params); - boolean bool = response.isSuccess(); - String msg = ""; - String code = ""; - if (!bool) { - msg = response.getResponseComment(); - code = response.getResponseErrorCode(); - } - Map map = new HashMap(8); - map.put("success", bool); - map.put("code", code); - map.put("msg", msg); - return Result.getSuccess(null).setData(map); - } - - public static Result validateContractDelete(int chainId, Object sender, Object contractAddress) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("contractAddress", contractAddress); - Response response = RpcCall.requestAndResponse(ModuleE.SC.abbr, CommandConstant.VALIDATE_DELETE, params); - boolean bool = response.isSuccess(); - String msg = ""; - String code = ""; - if (!bool) { - msg = response.getResponseComment(); - code = response.getResponseErrorCode(); - } - Map map = new HashMap(8); - map.put("success", bool); - map.put("code", code); - map.put("msg", msg); - return Result.getSuccess(null).setData(map); - } - - public static Result imputedContractCreateGas(int chainId, Object sender, Object contractCode, Object args) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("contractCode", contractCode); - params.put("args", args); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.IMPUTED_CREATE_GAS, params); - return Result.getSuccess(null).setData(map); - } - - public static Result uploadContractJar(int chainId, Object jarFileData) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("jarFileData", jarFileData); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.UPLOAD, params); - return Result.getSuccess(null).setData(map); - } - - public static Result imputedContractCallGas(int chainId, Object sender, Object value, - Object contractAddress, Object methodName, Object methodDesc, Object args) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("value", value); - params.put("contractAddress", contractAddress); - params.put("methodName", methodName); - params.put("methodDesc", methodDesc); - params.put("args", args); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.IMPUTED_CALL_GAS, params); - return Result.getSuccess(null).setData(map); - } - - public static Result invokeView(int chainId, Object contractAddress, Object methodName, Object methodDesc, Object args) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("contractAddress", contractAddress); - params.put("methodName", methodName); - params.put("methodDesc", methodDesc); - params.put("args", args); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.INVOKE_VIEW, params); - return Result.getSuccess(null).setData(map); - } - - public static Result tokenBalance(int chainid, Object contractAddress, Object address) { - try { - Result result = invokeView(chainid, contractAddress, "balanceOf", null, new Object[]{address}); - Map map = result.getData(); - if (map == null) { - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - Object balance = map.get("result"); - if (balance == null) { - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - return Result.getSuccess(null).setData(new BigInteger(balance.toString())); - } catch (NulsException e) { - Log.error(e.format()); - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - } - - public static Result tokenTotalSupply(int chainid, Object contractAddress) { - try { - Result result = invokeView(chainid, contractAddress, "totalSupply", null, null); - Map map = result.getData(); - if (map == null) { - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - Object totalSupply = map.get("result"); - if (totalSupply == null) { - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - return Result.getSuccess(null).setData(new BigInteger(totalSupply.toString())); - } catch (NulsException e) { - Log.error(e.format()); - return Result.getSuccess(null).setData(BigInteger.ZERO); - } - } - - public static Result getContractResultInfo(int chainId, String hash) throws NulsException { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("hash", hash); - return getContractResultInfo(params); - } - - private static Result getContractResultInfo(Map params) throws NulsException { - Map map = null; - try { - map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT, params); - } catch (NulsException e) { - return Result.getFailed(CommonCodeConstanst.DATA_NOT_FOUND); - } - map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT, params); - map = (Map) map.get("data"); - if (map == null || map.isEmpty()) { - return Result.getFailed(ApiErrorCode.DATA_NOT_FOUND); - } - - String hash = (String) params.get("hash"); - ContractResultInfo resultInfo = AnalysisHandler.toContractResultInfo(hash, map); - return Result.getSuccess(null).setData(resultInfo); - } - - public static Result validateTx(int chainId, String txHex) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("tx", txHex); - - try { - Map map = (Map) RpcCall.request(ModuleE.TX.abbr, CommandConstant.TX_VALIEDATE, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result broadcastTx(int chainId, String txHex) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("tx", txHex); - - try { - Map map = (Map) RpcCall.request(ModuleE.TX.abbr, CommandConstant.TX_NEWTX, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result broadcastTxWithoutAnyValidation(int chainId, String txHex) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("tx", txHex); - - try { - Map map = (Map) RpcCall.request(ModuleE.TX.abbr, CommandConstant.TX_BROADCAST, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result sendCrossTx(int chainId, String txHex) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("tx", txHex); - try { - Map map = (Map) RpcCall.request(ModuleE.CC.abbr, CommandConstant.SEND_CROSS_TX, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result isAliasUsable(int chainId, String alias) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("alias", alias); - try { - Map map = (Map) RpcCall.request(ModuleE.AC.abbr, CommandConstant.IS_ALAIS_USABLE, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result> getContractResults(int chainId, List hashList) { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("hashList", hashList); - - try { - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.CONTRACT_RESULT_LIST, params); - - Map resultInfoMap = new HashMap<>(); - for (Map.Entry entry : map.entrySet()) { - ContractResultInfo resultInfo = AnalysisHandler.toContractResultInfo(entry.getKey(), (Map) entry.getValue()); - resultInfoMap.put(resultInfo.getTxHash(), resultInfo); - } - return Result.getSuccess(null).setData(resultInfoMap); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result getRegisteredChainInfoList() { - try { - Map map = (Map) RpcCall.request(ModuleE.CC.abbr, CommandConstant.GET_REGISTERED_CHAIN, null); - List> resultList = (List>) map.get("list"); - - Map assetInfoMap = new HashMap<>(); - Map chainInfoMap = new HashMap<>(); - - for (Map resultMap : resultList) { - ChainInfo chainInfo = new ChainInfo(); - chainInfo.setChainId((Integer) resultMap.get("chainId")); - chainInfo.setChainName((String) resultMap.get("chainName")); - chainInfoMap.put(chainInfo.getChainId(), chainInfo); - - List> assetList = (List>) resultMap.get("assetInfoList"); - if (assetList != null) { - for (Map assetMap : assetList) { - AssetInfo assetInfo = new AssetInfo(); - assetInfo.setChainId((Integer) resultMap.get("chainId")); - assetInfo.setAssetId((Integer) assetMap.get("assetId")); - assetInfo.setSymbol((String) assetMap.get("symbol")); - assetInfo.setDecimals((Integer) assetMap.get("decimalPlaces")); - boolean usable = (boolean) assetMap.get("usable"); - if (usable) { - assetInfo.setStatus(ENABLE); - } else { - assetInfo.setStatus(DISABLE); - } - assetInfoMap.put(assetInfo.getKey(), assetInfo); - } - } - } - - if (assetInfoMap.isEmpty()) { - AssetInfo assetInfo = new AssetInfo(); - assetInfo.setChainId(ApiContext.defaultChainId); - assetInfo.setAssetId(ApiContext.defaultAssetId); - assetInfo.setSymbol(ApiContext.defaultSymbol); - assetInfo.setDecimals(ApiContext.defaultDecimals); - assetInfo.setStatus(ENABLE); - assetInfoMap.put(assetInfo.getKey(), assetInfo); - } - - map.clear(); - map.put("chainInfoMap", chainInfoMap); - map.put("assetInfoMap", assetInfoMap); - - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result getAllAddressPrefix() { - try { - List list = (List) RpcCall.request(ModuleE.AC.abbr, CommandConstant.GET_ALL_ADDRESS_PREFIX, null); - return Result.getSuccess(null).setData(list); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - - public static Result getByzantineCount(int chainId, String txHash) { - try { - Map params = new HashMap<>(); - params.put("chainId", chainId); - params.put("txHash", txHash); - Map map = (Map) RpcCall.request(ModuleE.CC.abbr, CommandConstant.GET_BYZANTINE_COUNT, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - public static Result getNetworkInfo(int chainId) { - try { - Map params = new HashMap<>(); - params.put("chainId", chainId); - Map map = (Map) RpcCall.request(ModuleE.NW.abbr, CommandConstant.GET_NETWORK_GROUP, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - - public static Result contractPreviewCall(int chainId, String sender, BigInteger value, long gasLimit, long price, String contractAddress, String methodName, String methodDesc, Object[] args) { - - try { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, chainId); - params.put("sender", sender); - params.put("value", value); - params.put("gasLimit", gasLimit); - params.put("price", price); - params.put("contractAddress", contractAddress); - params.put("methodName", methodName); - params.put("methodDesc", methodDesc); - params.put("args", args); - Map map = (Map) RpcCall.request(ModuleE.SC.abbr, CommandConstant.PREVIEW_CALL, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - - } - - public static Result getChainAssetInfo(int assetChainId, int assetId) { - try { - Map params = new HashMap<>(); - params.put(Constants.CHAIN_ID, ApiContext.defaultChainId); - params.put("assetChainId", assetChainId); - params.put("assetId", assetId); - Map map = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.CMD_GET_ASSET_BY_ID, params); - return Result.getSuccess(null).setData(map); - } catch (NulsException e) { - return Result.getFailed(e.getErrorCode()); - } - } - - /** - * 查询NRC20的资产ID - */ - public static Integer getAssetIdOfNRC20(String contractAddress) { - try { - Map parameters = new HashMap<>(); - parameters.put("contractAddress", contractAddress); - Map result = (Map) RpcCall.request(ModuleE.LG.abbr, CommandConstant.CMD_CHAIN_ASSET_CONTRACT_ASSETID, parameters); - Integer assetId = Integer.parseInt(result.get("assetId").toString()); - return assetId; - } catch (NulsException e) { - Log.warn("查询NRC20资产ID异常, msg: {}", e.format()); - return null; - } - } - - /** - * 查询是否为跨链资产 - */ - public static boolean isCrossAssets(int chainId, int assetId) { - Map params = new HashMap(4); - params.put(Constants.CHAIN_ID, chainId); - params.put("assetId", assetId); - try { - Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CM.abbr, CommandConstant.CMD_ASSET, params); - return callResp.isSuccess(); - } catch (Exception e) { - Log.warn("查询是否为跨链资产异常, msg: {}", e.getMessage()); - return false; - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/cache/ApiCache.java b/module/nuls-public-service/src/main/java/io/nuls/api/cache/ApiCache.java deleted file mode 100644 index 4df6290f48..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/cache/ApiCache.java +++ /dev/null @@ -1,151 +0,0 @@ -package io.nuls.api.cache; - -import io.nuls.api.model.po.*; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class ApiCache { - - private ChainInfo chainInfo; - - private ChainConfigInfo configInfo; - - private CoinContextInfo coinContextInfo; - - private BlockHeaderInfo bestHeader; - - private CurrentRound currentRound; - - private Map accountMap = new ConcurrentHashMap<>(); - - private Map ledgerMap = new ConcurrentHashMap<>(); - - private Map agentMap = new ConcurrentHashMap<>(); - - private Map aliasMap = new ConcurrentHashMap<>(); - - private List nrc20InfoList = new ArrayList<>(); - - public ApiCache() { - currentRound = new CurrentRound(); - } - - public void addAccountInfo(AccountInfo accountInfo) { - accountMap.put(accountInfo.getAddress(), accountInfo); - } - - public AccountInfo getAccountInfo(String address) { - return accountMap.get(address); - } - - public AccountLedgerInfo getAccountLedgerInfo(String key) { - return ledgerMap.get(key); - } - - public void addAccountLedgerInfo(AccountLedgerInfo ledgerInfo) { - ledgerMap.put(ledgerInfo.getKey(), ledgerInfo); - } - - public void addNrc20Info(Nrc20Info nrc20Info) { - nrc20InfoList.add(nrc20Info); - } - - public List getNrc20InfoList() { - return nrc20InfoList; - } - - public void addAgentInfo(AgentInfo agentInfo) { - agentMap.put(agentInfo.getTxHash(), agentInfo); - } - - public AgentInfo getAgentInfo(String agentHash) { - return agentMap.get(agentHash); - } - - public void addAlias(AliasInfo aliasInfo) { - aliasMap.put(aliasInfo.getAddress(), aliasInfo); - aliasMap.put(aliasInfo.getAlias(), aliasInfo); - } - - public AliasInfo getAlias(String key) { - return aliasMap.get(key); - } - - - public ChainInfo getChainInfo() { - return chainInfo; - } - - public void setChainInfo(ChainInfo chainInfo) { - this.chainInfo = chainInfo; - } - - - public BlockHeaderInfo getBestHeader() { - return bestHeader; - } - - public void setBestHeader(BlockHeaderInfo bestHeader) { - this.bestHeader = bestHeader; - } - - public CurrentRound getCurrentRound() { - return currentRound; - } - - public void setCurrentRound(CurrentRound currentRound) { - this.currentRound = currentRound; - } - - public Map getAccountMap() { - return accountMap; - } - - public void setAccountMap(Map accountMap) { - this.accountMap = accountMap; - } - - public Map getLedgerMap() { - return ledgerMap; - } - - public void setLedgerMap(Map ledgerMap) { - this.ledgerMap = ledgerMap; - } - - public Map getAgentMap() { - return agentMap; - } - - public void setAgentMap(Map agentMap) { - this.agentMap = agentMap; - } - - public Map getAliasMap() { - return aliasMap; - } - - public void setAliasMap(Map aliasMap) { - this.aliasMap = aliasMap; - } - - public CoinContextInfo getCoinContextInfo() { - return coinContextInfo; - } - - public void setCoinContextInfo(CoinContextInfo coinContextInfo) { - this.coinContextInfo = coinContextInfo; - } - - public ChainConfigInfo getConfigInfo() { - return configInfo; - } - - public void setConfigInfo(ChainConfigInfo configInfo) { - this.configInfo = configInfo; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/AddressType.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/AddressType.java deleted file mode 100644 index 3c0a3d2f9a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/AddressType.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.constant; - -/** - * @author Niels - */ -public class AddressType { - - - /** - * 多重签名地址 - * contract address type - */ - public static byte P2SH_ADDRESS_TYPE = 3; - - /** - * 默认的地址类型,一条链可以包含几种地址类型,地址类型包含在地址中 - * The default address type, a chain can contain several address types, and the address type is contained in the address. - */ - public static byte DEFAULT_ADDRESS_TYPE = 1; - - - /** - * 智能合约地址类型 - * contract address type - */ - public static byte CONTRACT_ADDRESS_TYPE = 2; -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiConstant.java deleted file mode 100644 index 7b42b6556c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiConstant.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.constant; - -import java.math.BigInteger; - -/** - * 常量 - * - * @author captain - * @version 1.0 - * @date 19-1-22 下午3:34 - */ -public interface ApiConstant { - - - /** - * 模块配置文件名称 - * Module configuration file name. - */ - String MODULES_CONFIG_FILE = "module.json"; - /** - * 链ID - */ - String CHAIN_ID = "chainId"; - - String ASSET_ID = "assetId"; - - int INIT_CAPACITY_8 = 8; - - String DB_MODULE_CONFIG = "api-config"; - - /** - * 默认扫描包路径 - */ - String DEFAULT_SCAN_PACKAGE = "io.nuls"; - - /** - * 日志级别 - */ - String LOG_LEVEL = "logLevel"; - - //黄牌惩罚 - int PUBLISH_YELLOW = 1; - //红牌惩罚 - int PUBLISH_RED = 2; - - //尝试分叉 - int TRY_FORK = 1; - //打包双花交易 - int DOUBLE_SPEND = 2; - //太多黄牌惩罚 - int TOO_MUCH_YELLOW_PUNISH = 3; - - //委托共识 - int JOIN_CONSENSUS = 0; - //取消委托共识 - int CANCEL_CONSENSUS = 1; - //删除共识节点 - int STOP_AGENT = 2; - - //创建合约成功 - int CONTRACT_STATUS_NORMAL = 0; - //创建合约失败 - int CONTRACT_STATUS_FAIL = -1; - - //合约代码正在审核中 - int CONTRACT_STATUS_APPROVING = 1; - //合约代码审核通过 - int CONTRACT_STATUS_PASSED = 2; - //合约已失效 - int CONTRACT_STATUS_DELETE = 3; - - //时间高度分界线 - long BlOCK_HEIGHT_TIME_DIVIDE = 1000000000000L; - //高度冻结类型 - int FREEZE_HEIGHT_LOCK_TYPE = 1; - //时间冻结类型 - int FREEZE_TIME_LOCK_TYPE = 2; - //共识锁定冻结类型 - int FREEZE_CONSENSUS_LOCK_TYPE = 3; - - //合约不存在错误码 - int CONTRACT_NOT_EXIST = 100002; - //资产转出类型 - int TRANSFER_FROM_TYPE = -1; - //资产转入类型 - int TRANSFER_TO_TYPE = 1; - - //未确认交易 - int TX_UNCONFIRM = 0; - //已确认交易 - int TX_CONFIRM = 1; - - int ENABLE = 1; - - int DISABLE = 0; - - //设置别名金额 - BigInteger ALIAS_AMOUNT = BigInteger.valueOf(100000000L); - - long CROSS_CHAIN_GASLIMIT = 300000; - long CONTRACT_MINIMUM_PRICE = 25; - String CROSS_CHAIN_SYSTEM_CONTRACT_TRANSFER_IN_METHOD_NAME = "crossChainTokenTransfer"; - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiErrorCode.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiErrorCode.java deleted file mode 100644 index 7cec99f13a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/ApiErrorCode.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.constant; - -import io.nuls.core.constant.CommonCodeConstanst; - -/** - * 协议升级模块的错误信息表 - * - * @author captain - * @version 1.0 - * @date 18-11-20 上午11:01 - */ -public interface ApiErrorCode extends CommonCodeConstanst { - -} \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java deleted file mode 100644 index 56b1ffd65f..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/CommandConstant.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.constant; - -/** - * 存储对外提供的接口命令 - * - * @author captain - * @version 1.0 - * @date 18-11-9 下午2:15 - */ -public interface CommandConstant { - - //根据区块高度获取区块 - String GET_BLOCK_BY_HEIGHT = "getBlockByHeight"; - //根据区块hash获取区块 - String GET_BLOCK_BY_HASH = "getBlockByHash"; - - String INFO = "info"; - //获取账户余额 - String GET_BALANCE = "getBalanceNonce"; - // - String IS_ALAIS_USABLE= "ac_isAliasUsable"; - //获取账户锁定列表 - String GET_FREEZE = "getFreezeList"; - - //查询交易详情 - String GET_TX = "tx_getTxClient"; - //交易验证 - String TX_VALIEDATE = "tx_verifyTx"; - //新交易确认并广播 - String TX_NEWTX = "tx_newTx"; - //直接广播新交易 - String TX_BROADCAST = "tx_broadcast"; - //发送跨链交易 - String SEND_CROSS_TX = "newApiModuleCrossTx"; - //查询节点详情 - String GET_AGENT = "cs_getAgentInfo"; - //获取共识配置 - String GET_CONSENSUS_CONFIG = "cs_getConsensusConfig"; - //查询智能合约详情 - String CONTRACT_INFO = "sc_contract_info"; - //查询智能合约执行结果 - String CONTRACT_RESULT = "sc_contract_result"; - //查询智能合约构造函数 - String CONSTRUCTOR = "sc_constructor"; - //代币跨链系统合约地址 - String GET_CROSS_TOKEN_SYSTEM_CONTRACT = "sc_get_cross_token_system_contract"; - //验证创建合约 - String VALIDATE_CREATE = "sc_validate_create"; - //验证调用合约 - String VALIDATE_CALL = "sc_validate_call"; - //验证删除合约 - String VALIDATE_DELETE = "sc_validate_delete"; - //预估创建合约的gas - String IMPUTED_CREATE_GAS = "sc_imputed_create_gas"; - //预估调用合约的gas - String IMPUTED_CALL_GAS = "sc_imputed_call_gas"; - //上传合约代码jar包 - String UPLOAD = "sc_upload"; - //获取智能合约结果集合 - String CONTRACT_RESULT_LIST = "sc_contract_result_list"; - //调用合约不上链方法 - String INVOKE_VIEW = "sc_invoke_view"; - //查询已注册的跨链信息 - String GET_REGISTERED_CHAIN = "getRegisteredChainInfoList"; - //获取地址前缀映射表 - String GET_ALL_ADDRESS_PREFIX = "ac_getAllAddressPrefix"; - - String GET_BYZANTINE_COUNT = "getByzantineCount"; - - String GET_NETWORK_GROUP = "nw_getGroupByChainId"; - - String PREVIEW_CALL = "sc_preview_call"; - - /** - * 获取资产信息 - */ - String CMD_GET_ASSET_BY_ID = "getAssetById"; - - /** - * 获取合约资产ID - */ - String CMD_CHAIN_ASSET_CONTRACT_ASSETID = "getAssetContractAssetId"; - - /** - * 获取跨链资产注册信息 - */ - String CMD_ASSET = "cm_asset"; -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java deleted file mode 100644 index fe115aa371..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/DBTableConstant.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.nuls.api.constant; - -public interface DBTableConstant { - - String DATABASE_NAME = "nuls-api"; - - String TEST_TABLE = "test-table"; - - String CHAIN_INFO_TABLE = "chain_info_table"; - - String CHAIN_CONFIG_TABLE = "chain_config_table"; - - String SYNC_INFO_TABLE = "sync_info_table"; - //区块信息表 - String BLOCK_HEADER_TABLE = "block_header_table_"; - - String BLOCK_HEX_TABLE = "block_hex_table_"; - //账户信息表 - String ACCOUNT_TABLE = "account_table_"; - //资产信息表 - String ACCOUNT_LEDGER_TABLE = "account_ledger_table_"; - //共识节点信息表 - String AGENT_TABLE = "agent_table_"; - //别名信息表 - String ALIAS_TABLE = "alias_table_"; - //委托记录表 - String DEPOSIT_TABLE = "deposit_table_"; - //交易表 - String TX_TABLE = "tx_table_"; - //交易关系记录表 - String TX_RELATION_TABLE = "tx_relation_table_"; - - String CROSS_TX_RELATION_TABLE = "cross_tx_relation_table_"; - //交易关系记录表 - String TX_UNCONFIRM_RELATION_TABLE = "tx_unconfirm_relation_table_"; - //交易表 - String TX_UNCONFIRM_TABLE = "tx_UNCONFIRM_table_"; - //coinData记录 - String COINDATA_TABLE = "coin_data_table_"; - //红黄牌记录表 - String PUNISH_TABLE = "punish_table_"; - - String ROUND_TABLE = "round_table_"; - - String ROUND_ITEM_TABLE = "round_item_table_"; - //账户token信息表 - String ACCOUNT_TOKEN_TABLE = "account_token_table_"; - //智能合约信息表 - String CONTRACT_TABLE = "contract_table_"; - //智能合约交易记录表 - String CONTRACT_TX_TABLE = "contract_tx_table_"; - //智能合约token转账记录表 - String TOKEN_TRANSFER_TABLE = "token_transfer_table_"; - //智能合约结果记录 - String CONTRACT_RESULT_TABLE = "contract_result_table_"; - //统计表 - String STATISTICAL_TABLE = "statistical_table_"; - - String CHAIN_STATISTICAL_TABLE = "chain_statistical_table"; - - - //---------------------------------字段(field)------------------------------ - //new_info表,最新统计的时间点 - String LAST_STATISTICAL_TIME = "last_statistical_time"; - - String TX_COUNT = "txCount"; - String ANNUALIZE_REWARD = "annualizedReward"; - String CONSENSUS_LOCKED = "consensusLocked"; - - //交易关系表分片数量 - int TX_RELATION_SHARDING_COUNT = 128; -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/RunningStatusEnum.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/RunningStatusEnum.java deleted file mode 100644 index 41ebab083a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/RunningStatusEnum.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.constant; - -/** - * 模块运行状态枚举 - * The module runs state enumeration. - * - * @author captain - * @version 1.0 - * @date 18-11-28 下午5:58 - */ -public enum RunningStatusEnum { - - /** - * 初始化完成 - * ready - */ - READY, - - /** - * 启动中 - * starting - */ - STARTING, - - /** - * 运行正常 - * running - */ - RUNNING, - - /** - * 运行异常 - * fail - */ - FAIL; - - @Override - public String toString() { - return name(); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java deleted file mode 100644 index 8324241f78..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ApiConfig.java +++ /dev/null @@ -1,302 +0,0 @@ -package io.nuls.api.constant.config; - -import io.nuls.core.basic.ModuleConfig; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.core.annotation.Configuration; -import io.nuls.core.rpc.model.ModuleE; - -@Component -@Configuration(domain = ModuleE.Constant.PUBLIC_SERVICE) -public class ApiConfig implements ModuleConfig { - - /** - * 编码方式 - */ - private String encoding; - /** - * 语言 - */ - private String language; - - /** - * 数据库Url地址 - */ - private String databaseUrl; - - /** - * 数据库端口号 - */ - private int databasePort; - - private int chainId; - - private int assetId; - - private int mainChainId; - - private int mainAssetId; - - private String mainSymbol; - - private String chainName; - - private String symbol; - - private int decimals; - - private String listenerIp; - - private int rpcPort; - - private String logLevel; - - private int maxAliveConnect; - - private int maxWaitTime; - - private int connectTimeOut; - - private int socketTimeout; - - private String developerNodeAddress; - - private String ambassadorNodeAddress; - - private String mappingAddress; - - private String businessAddress; - - private String teamAddress; - - private String communityAddress; - - private String blackHolePublicKey; - - private boolean syncCoinBase; - - private String syncAddress; - - public String getEncoding() { - return encoding; - } - - public void setEncoding(String encoding) { - this.encoding = encoding; - } - - public String getLanguage() { - return language; - } - - public void setLanguage(String language) { - this.language = language; - } - - public String getListenerIp() { - return listenerIp; - } - - public void setListenerIp(String listenerIp) { - this.listenerIp = listenerIp; - } - - public int getRpcPort() { - return rpcPort; - } - - public void setRpcPort(int rpcPort) { - this.rpcPort = rpcPort; - } - - public String getDatabaseUrl() { - return databaseUrl; - } - - public void setDatabaseUrl(String databaseUrl) { - this.databaseUrl = databaseUrl; - } - - public int getDatabasePort() { - return databasePort; - } - - public void setDatabasePort(int databasePort) { - this.databasePort = databasePort; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getLogLevel() { - return logLevel; - } - - public void setLogLevel(String logLevel) { - this.logLevel = logLevel; - } - - public int getMaxAliveConnect() { - return maxAliveConnect; - } - - public void setMaxAliveConnect(int maxAliveConnect) { - this.maxAliveConnect = maxAliveConnect; - } - - public int getMaxWaitTime() { - return maxWaitTime; - } - - public void setMaxWaitTime(int maxWaitTime) { - this.maxWaitTime = maxWaitTime; - } - - public int getConnectTimeOut() { - return connectTimeOut; - } - - public void setConnectTimeOut(int connectTimeOut) { - this.connectTimeOut = connectTimeOut; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getChainName() { - return chainName; - } - - public void setChainName(String chainName) { - this.chainName = chainName; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public int getMainChainId() { - return mainChainId; - } - - public void setMainChainId(int mainChainId) { - this.mainChainId = mainChainId; - } - - public int getMainAssetId() { - return mainAssetId; - } - - public void setMainAssetId(int mainAssetId) { - this.mainAssetId = mainAssetId; - } - - public String getMainSymbol() { - return mainSymbol; - } - - public void setMainSymbol(String mainSymbol) { - this.mainSymbol = mainSymbol; - } - - public String getDeveloperNodeAddress() { - return developerNodeAddress; - } - - public void setDeveloperNodeAddress(String developerNodeAddress) { - this.developerNodeAddress = developerNodeAddress; - } - - public String getAmbassadorNodeAddress() { - return ambassadorNodeAddress; - } - - public void setAmbassadorNodeAddress(String ambassadorNodeAddress) { - this.ambassadorNodeAddress = ambassadorNodeAddress; - } - - public String getMappingAddress() { - return mappingAddress; - } - - public void setMappingAddress(String mappingAddress) { - this.mappingAddress = mappingAddress; - } - - public String getBusinessAddress() { - return businessAddress; - } - - public void setBusinessAddress(String businessAddress) { - this.businessAddress = businessAddress; - } - - public String getTeamAddress() { - return teamAddress; - } - - public void setTeamAddress(String teamAddress) { - this.teamAddress = teamAddress; - } - - public String getCommunityAddress() { - return communityAddress; - } - - public void setCommunityAddress(String communityAddress) { - this.communityAddress = communityAddress; - } - - public String getBlackHolePublicKey() { - return blackHolePublicKey; - } - - public void setBlackHolePublicKey(String blackHolePublicKey) { - this.blackHolePublicKey = blackHolePublicKey; - } - - public int getSocketTimeout() { - return socketTimeout; - } - - public void setSocketTimeout(int socketTimeout) { - this.socketTimeout = socketTimeout; - } - - public boolean isSyncCoinBase() { - return syncCoinBase; - } - - public void setSyncCoinBase(boolean syncCoinBase) { - this.syncCoinBase = syncCoinBase; - } - - public String getSyncAddress() { - return syncAddress; - } - - public void setSyncAddress(String syncAddress) { - this.syncAddress = syncAddress; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigBean.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigBean.java deleted file mode 100644 index c95f81631f..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigBean.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -package io.nuls.api.constant.config; - -import java.io.Serializable; - -/** - * 模块配置类 - * Module Configuration Class - * - * @author vivi - * @date 2019/02/28 - */ -public class ConfigBean implements Serializable { - - private int chainId; - - private int assetId; - - private String dbIp; - - private int port; - - public ConfigBean() { - - } - - public ConfigBean(int chainId, int assetId, String dbIp, int port) { - this.chainId = chainId; - this.assetId = assetId; - this.dbIp = dbIp; - this.port = port; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getDbIp() { - return dbIp; - } - - public void setDbIp(String dbIp) { - this.dbIp = dbIp; - } - - public int getPort() { - return port; - } - - public void setPort(int port) { - this.port = port; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigItem.java b/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigItem.java deleted file mode 100644 index 9770a5e55a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/constant/config/ConfigItem.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -package io.nuls.api.constant.config; - -/** - * 配置信息类 - * Configuration information class - * - * @author qinyifeng - * @date 2018/11/11 - */ -public class ConfigItem { - private String key; - private Object value; - private boolean readOnly; - - public ConfigItem(){ - - } - public ConfigItem( Object value, boolean readOnly) { - this.value = value; - this.readOnly = readOnly; - } - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } - - public boolean isReadOnly() { - return readOnly; - } - - public void setReadOnly(boolean readOnly) { - this.readOnly = readOnly; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java deleted file mode 100644 index 487a2529b8..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountLedgerService.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.AccountLedgerInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.mini.MiniAccountInfo; - -import java.util.List; -import java.util.Map; - -public interface AccountLedgerService { - - void initCache(); - - AccountLedgerInfo getAccountLedgerInfo(int chainId, String key); - - void saveLedgerList(int chainId, Map accountLedgerInfoMap); - - PageInfo getAssetRanking(int chainId, int assetChainId, int assetId, int pageNumber, int pageSize); - - List getAccountLedgerInfoList(int chainId, String address); - - List getAccountCrossLedgerInfoList(int chainId, String address); - - List getAccountLedgerInfoList(int assetChainId, int assetId); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java deleted file mode 100644 index 777cf4c84c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AccountService.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.AccountInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.TxRelationInfo; -import io.nuls.api.model.po.mini.MiniAccountInfo; - -import java.math.BigInteger; -import java.util.Map; - -public interface AccountService { - - void initCache(); - - AccountInfo getAccountInfo(int chainId, String address); - - MiniAccountInfo getMiniAccountInfo(int chainId, String address); - - void saveAccounts(int chainId, Map accountInfoMap); - - PageInfo pageQuery(int chainId, int pageNumber, int pageSize); - - PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight, int assetChainId, int assetId); - - PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, int type, long startTime, long endTime, int pageIndex, int pageSize); - - PageInfo getCoinRanking(int pageIndex, int pageSize, int chainId); - - BigInteger getAllAccountBalance(int chainId); - - BigInteger getAccountTotalBalance(int chainId, String address); - - void testBalance(int chainId); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AgentService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AgentService.java deleted file mode 100644 index 88a0f49130..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AgentService.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.AgentInfo; -import io.nuls.api.model.po.PageInfo; - -import java.math.BigInteger; -import java.util.List; - -public interface AgentService { - - void initCache(); - - AgentInfo getAgentByHash(int chainID, String agentHash); - - PageInfo getAgentByHashList(int chainID, int pageNumber, int pageSize, List hashList); - - AgentInfo getAgentByPackingAddress(int chainID, String packingAddress); - - AgentInfo getAgentByAgentAddress(int chainID, String agentAddress); - - AgentInfo getAliveAgentByAgentAddress(int chainID, String agentAddress); - - void saveAgentList(int chainID, List agentInfoList); - - void rollbackAgentList(int chainId, List agentInfoList); - - List getAgentList(int chainId, long startHeight); - - PageInfo getAgentList(int chainId, int type, int pageNumber, int pageSize); - - PageInfo getAgentList(int chainId, int pageNumber, int pageSize); - - long agentsCount(int chainId, long startHeight); - - BigInteger getConsensusCoinTotal(int chainId); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/AliasService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/AliasService.java deleted file mode 100644 index 610e74531c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/AliasService.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.AliasInfo; - -import java.util.List; - -public interface AliasService { - - void initCache(); - - AliasInfo getAliasByAddress(int chainId, String address); - - AliasInfo getByAlias(int chainId, String alias); - - void saveAliasList(int chainId, List aliasInfoList) ; - - void rollbackAliasList(int chainId, List aliasInfoList); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/BlockService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/BlockService.java deleted file mode 100644 index fe3c45a24c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/BlockService.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.BlockHexInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.mini.MiniBlockHeaderInfo; - -import java.math.BigInteger; -import java.util.List; - -public interface BlockService { - - BlockHeaderInfo getBestBlockHeader(int chainId); - - BlockHeaderInfo getBlockHeader(int chainId, long height); - - BlockHeaderInfo getBlockHeaderByHash(int chainId, String hash); - - void saveBLockHeaderInfo(int chainId, BlockHeaderInfo blockHeaderInfo); - - PageInfo pageQuery(int chainId, int pageIndex, int pageSize, String packingAddress, boolean filterEmptyBlocks); - - List getBlockList(int chainId, long startTime, long endTime); - - int getBlockPackageTxCount(int chainId, long startHeight, long endHeight); - - long getMaxHeight(int chainId, long endTime); - - void deleteBlockHeader(int chainId, long height); - - void saveBlockHexInfo(int chainId, BlockHexInfo hexInfo); - - BlockHexInfo getBlockHexInfo(int chainId, long height); - - BlockHexInfo getBlockHexInfo(int chainId, String hash); - - BigInteger getLast24HourRewards(int chainId); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java deleted file mode 100644 index 1d50f13641..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/ChainService.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.ChainConfigInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.api.model.po.SyncInfo; - -import java.util.List; - -public interface ChainService { - - void initCache(); - - List getChainInfoList(); - - List getOtherChainInfoList(int chainId); - - SyncInfo getSyncInfo(int chainId); - - void addChainInfo(ChainInfo chainInfo); - - void addCacheChain(ChainInfo chainInfo, ChainConfigInfo configInfo); - - void saveChainList(List chainInfoList); - - void rollbackChainList(List chainInfoList); - - ChainInfo getChainInfo(int chainId); - - SyncInfo saveNewSyncInfo(int chainId, long newHeight, BlockHeaderInfo headerInfo); - - void updateStep(SyncInfo syncInfo); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/ContractService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/ContractService.java deleted file mode 100644 index 283440fcbf..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/ContractService.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.ContractInfo; -import io.nuls.api.model.po.ContractResultInfo; -import io.nuls.api.model.po.ContractTxInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.mini.MiniContractInfo; - -import java.util.List; -import java.util.Map; - -public interface ContractService { - - void initCache(); - - ContractInfo getContractInfo(int chainId, String contractAddress); - - ContractInfo getContractInfoByHash(int chainId, String txHash); - - void saveContractInfos(int chainId, Map contractInfoMap); - - void rollbackContractInfos(int chainId, Map contractInfoMap); - - void saveContractTxInfos(int chainId, List contractTxInfos); - - void rollbackContractTxInfos(int chainId, List contractTxHashList); - - void saveContractResults(int chainId, List contractResultInfos); - - void rollbackContractResults(int chainId, List contractTxHashList); - - PageInfo getContractTxList(int chainId, String contractAddress, int type, int pageNumber, int pageSize); - - PageInfo getContractList(int chainId, int pageNumber, int pageSize, int tokenType, boolean isHidden); - - PageInfo getContractList(int chainId, int pageNumber, int pageSize, String address, int tokenType, boolean isHidden); - - List getContractList(int chainId, List addressList); - - ContractResultInfo getContractResultInfo(int chainId, String txHash); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/DBTableService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/DBTableService.java deleted file mode 100644 index b43817bd00..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/DBTableService.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.ChainConfigInfo; -import io.nuls.api.model.po.ChainInfo; - -/** - * - */ -public interface DBTableService { - - void initCache(); - - void addDefaultChainCache(); - - void addChainCache(ChainInfo chainInfo, ChainConfigInfo configInfo); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/DepositService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/DepositService.java deleted file mode 100644 index 7243a57dd2..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/DepositService.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.DepositInfo; -import io.nuls.api.model.po.PageInfo; - -import java.math.BigInteger; -import java.util.List; - -public interface DepositService { - - DepositInfo getDepositInfoByKey(int chainId, String key); - - DepositInfo getDepositInfoByHash(int chainId, String hash); - - List getDepositListByAgentHash(int chainId, String hash); - - PageInfo getDepositListByAgentHash(int chainID, String hash, int pageIndex, int pageSize); - - List getDepositListByHash(int chainID, String hash); - - void rollbackDeposit(int chainId, List depositInfoList); - - void saveDepositList(int chainId, List depositInfoList); - - List getDepositList(int chainId, long startHeight); - - BigInteger getDepositAmount(int chainId, String address, String agentHash); - - PageInfo getCancelDepositListByAgentHash(int chainId, String hash, int type, int pageIndex, int pageSize); - - List getAgentHashList(int chainId, String address); - - PageInfo getDepositListByAddress(int chainId,String agentHash, String address, int pageIndex, int pageSize); - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/PunishService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/PunishService.java deleted file mode 100644 index 3f54656a5b..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/PunishService.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.PunishLogInfo; -import io.nuls.api.model.po.TxDataInfo; - -import java.util.List; - -public interface PunishService { - - void savePunishList(int chainId, List punishLogList); - - List getYellowPunishLog(int chainId, String txHash); - - PunishLogInfo getRedPunishLog(int chainId, String txHash); - - long getYellowCount(int chainId, String agentAddress); - - PageInfo getPunishLogList(int chainId, int type, String address, int pageIndex, int pageSize); - - void rollbackPunishLog(int chainID,List txHashs, long height); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundManager.java deleted file mode 100644 index efe1499360..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundManager.java +++ /dev/null @@ -1,325 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.ApiContext; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.db.mongo.MongoAgentServiceImpl; -import io.nuls.api.db.mongo.MongoBlockServiceImpl; -import io.nuls.api.db.mongo.MongoDepositServiceImpl; -import io.nuls.api.db.mongo.MongoRoundServiceImpl; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.utils.AgentSorter; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.constant.TxType; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.crypto.Sha256Hash; -import io.nuls.core.model.ArraysTool; -import io.nuls.core.model.DoubleUtils; -import io.nuls.core.parse.SerializeUtils; - -import java.math.BigInteger; -import java.util.*; - -@Component -public class RoundManager { - - @Autowired - private MongoAgentServiceImpl mongoAgentServiceImpl; - - @Autowired - private MongoDepositServiceImpl mongoDepositServiceImpl; - - @Autowired - private MongoRoundServiceImpl mongoRoundServiceImpl; - - @Autowired - private MongoBlockServiceImpl mongoBlockServiceImpl; - - public void process(int chainId, BlockInfo blockInfo) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - try { - if (null == currentRound.getItemList()) { - PocRound round = null; - long roundIndex = blockInfo.getHeader().getRoundIndex(); - while (round == null && blockInfo.getHeader().getHeight() > 1) { - round = mongoRoundServiceImpl.getRound(chainId, roundIndex--); - } - if (round != null) { - CurrentRound preRound = new CurrentRound(); - preRound.initByPocRound(round); - List list = mongoRoundServiceImpl.getRoundItemList(chainId, round.getIndex()); - preRound.setItemList(list); - preRound.setStartBlockHeader(mongoBlockServiceImpl.getBlockHeader(chainId, round.getStartHeight())); - preRound.setPackerOrder(round.getMemberCount()); - apiCache.setCurrentRound(preRound); - } - } - if (blockInfo.getHeader().getRoundIndex() == apiCache.getCurrentRound().getIndex()) { - processCurrentRound(chainId, blockInfo); - } else { - processNextRound(chainId, blockInfo); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - private void processCurrentRound(int chainId, BlockInfo blockInfo) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - int indexOfRound = blockInfo.getHeader().getPackingIndexOfRound(); - //下一个出块者 - currentRound.setPackerOrder(indexOfRound < currentRound.getMemberCount() ? indexOfRound + 1 : indexOfRound); - PocRoundItem item = currentRound.getItemList().get(indexOfRound - 1); - BlockHeaderInfo header = blockInfo.getHeader(); - item.setTime(header.getCreateTime()); - item.setBlockHeight(header.getHeight()); - item.setBlockHash(header.getHash()); - item.setTxCount(header.getTxCount()); - item.setReward(header.getReward()); - - currentRound.setProducedBlockCount(currentRound.getProducedBlockCount() + 1); - currentRound.setEndHeight(blockInfo.getHeader().getHeight()); - currentRound.setLostRate(DoubleUtils.div(header.getPackingIndexOfRound() - currentRound.getProducedBlockCount(), header.getPackingIndexOfRound())); - this.fillPunishCount(blockInfo.getTxList(), currentRound, true); - - apiCache.setCurrentRound(currentRound); - mongoRoundServiceImpl.updateRoundItem(chainId, item); - this.mongoRoundServiceImpl.updateRound(chainId, currentRound.toPocRound()); - } - - - private void fillPunishCount(List txs, CurrentRound round, boolean add) { - int redCount = 0; - int yellowCount = 0; - for (TransactionInfo tx : txs) { - if (tx.getType() == TxType.YELLOW_PUNISH) { - yellowCount += tx.getTxDataList() != null ? tx.getTxDataList().size() : 0; - } else if (tx.getType() == TxType.RED_PUNISH) { - redCount++; - } - } - if (add) { - round.setYellowCardCount(round.getYellowCardCount() + yellowCount); - round.setRedCardCount(round.getRedCardCount() + redCount); - } else { - round.setYellowCardCount(round.getYellowCardCount() - yellowCount); - round.setRedCardCount(round.getRedCardCount() - redCount); - } - } - - private void processNextRound(int chainId, BlockInfo blockInfo) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - long startHeight = currentRound.getStartHeight(); - if (null != currentRound.getStartBlockHeader() && currentRound.getStartBlockHeader().getPackingIndexOfRound() > 1) { - startHeight = startHeight - 1; - } - List agentList = mongoAgentServiceImpl.getAgentList(chainId, startHeight); - List depositList = mongoDepositServiceImpl.getDepositList(chainId, startHeight); - Map map = new HashMap<>(); - Map depositMap = new HashMap<>(); - for (AgentInfo agent : agentList) { - map.put(agent.getTxHash(), agent); - } - for (DepositInfo deposit : depositList) { - BigInteger agentDeposit = depositMap.get(deposit.getAgentHash()); - if (null == agentDeposit) { - agentDeposit = BigInteger.ZERO; - } - depositMap.put(deposit.getAgentHash(), agentDeposit.add(deposit.getAmount())); - } - List sorterList = new ArrayList<>(); - for (AgentInfo agent : map.values()) { - BigInteger totalDeposit = depositMap.get(agent.getTxHash()); - if (null == totalDeposit) { - totalDeposit = BigInteger.ZERO; - } - if (totalDeposit.compareTo(ApiContext.minDeposit) >= 0) { - AgentSorter sorter = new AgentSorter(); - sorter.setAgentId(agent.getTxHash()); - byte[] hash = ArraysTool.concatenate(AddressTool.getAddress(agent.getPackingAddress()), SerializeUtils.uint64ToByteArray(blockInfo.getHeader().getRoundStartTime())); - - sorter.setSorter(Sha256Hash.twiceOf(hash).toString()); - - sorterList.add(sorter); - } - } - - for (String address : apiCache.getChainInfo().getSeeds()) { - AgentSorter sorter = new AgentSorter(); - sorter.setSeedAddress(address); - byte[] hash = ArraysTool.concatenate(AddressTool.getAddress(address), SerializeUtils.uint64ToByteArray(blockInfo.getHeader().getRoundStartTime())); - sorter.setSorter(Sha256Hash.twiceOf(hash).toString()); - sorterList.add(sorter); - } - Collections.sort(sorterList); - - BlockHeaderInfo header = blockInfo.getHeader(); - //生成新的round - CurrentRound round = new CurrentRound(); - round.setIndex(header.getRoundIndex()); - round.setStartHeight(header.getHeight()); - round.setStartBlockHeader(header); - round.setStartTime(header.getRoundStartTime()); - round.setMemberCount(sorterList.size()); - round.setEndTime(round.getStartTime() + 10 * sorterList.size()); - round.setProducedBlockCount(1); - - List itemList = new ArrayList<>(); - int index = 1; - for (AgentSorter sorter : sorterList) { - PocRoundItem item = new PocRoundItem(); - item.setRoundIndex(header.getRoundIndex()); - item.setOrder(index++); - if (item.getOrder() == header.getPackingIndexOfRound()) { - item.setTime(header.getCreateTime()); - item.setBlockHeight(header.getHeight()); - item.setBlockHash(header.getHash()); - item.setTxCount(header.getTxCount()); - item.setReward(header.getReward()); - } - item.setId(item.getRoundIndex() + "_" + item.getOrder()); - if (null == sorter.getSeedAddress()) { - AgentInfo agentInfo = map.get(sorter.getAgentId()); - item.setAgentName(agentInfo.getAgentAlias() == null ? - agentInfo.getTxHash().substring(agentInfo.getTxHash().length() - 8) : agentInfo.getAgentAlias()); - item.setAgentHash(agentInfo.getTxHash()); - item.setPackingAddress(agentInfo.getPackingAddress()); - } else { - item.setSeedAddress(sorter.getSeedAddress()); - item.setPackingAddress(sorter.getSeedAddress()); - - } - item.setTime(round.getStartTime() + item.getOrder() * 10L); - itemList.add(item); - } - round.setItemList(itemList); - round.setMemberCount(itemList.size()); - round.setPackerOrder(header.getPackingIndexOfRound() + 1); - - round.setRedCardCount(0); - round.setYellowCardCount(0); - round.setLostRate(DoubleUtils.div(header.getPackingIndexOfRound() - round.getProducedBlockCount(), header.getPackingIndexOfRound())); - - fillPunishCount(blockInfo.getTxList(), round, true); - if (round.getIndex() == 1) { - CurrentRound round1 = new CurrentRound(); - round1.setStartTime(header.getRoundStartTime()); - round1.setStartHeight(0); - round1.setProducedBlockCount(1); - round1.setMemberCount(1); - round1.setIndex(1); - round1.setEndTime(header.getCreateTime()); - round1.setEndHeight(0); - List itemList1 = new ArrayList<>(); - PocRoundItem item = new PocRoundItem(); - itemList1.add(item); - item.setTime(header.getCreateTime()); - item.setTxCount(1); - item.setBlockHash(header.getHash()); - item.setBlockHeight(0); - item.setPackingAddress(header.getPackingAddress()); - item.setRoundIndex(1); - item.setOrder(1); - round1.setItemList(itemList); - round = round1; - } - apiCache.setCurrentRound(round); -// Log.warn("++++++++{}({})+++++++" + round.toString(), blockInfo.getBlockHeader().getHeight(), startHeight); - mongoRoundServiceImpl.saveRoundItemList(chainId, round.getItemList()); - mongoRoundServiceImpl.saveRound(chainId, round.toPocRound()); - - } - - - public void rollback(int chainId, BlockInfo blockInfo) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - if (null == currentRound.getItemList()) { - PocRound round = null; - long roundIndex = blockInfo.getHeader().getRoundIndex(); - while (round == null && blockInfo.getHeader().getHeight() > 0) { - if(roundIndex < 0) { - return; - } - round = mongoRoundServiceImpl.getRound(chainId, roundIndex--); - } - if (round != null) { - CurrentRound preRound = new CurrentRound(); - preRound.initByPocRound(round); - List list = mongoRoundServiceImpl.getRoundItemList(chainId, round.getIndex()); - preRound.setItemList(list); - preRound.setStartBlockHeader(mongoBlockServiceImpl.getBlockHeader(chainId, round.getStartHeight())); - preRound.setPackerOrder(round.getMemberCount()); - currentRound = preRound; - apiCache.setCurrentRound(currentRound); - } - } - if (blockInfo.getHeader().getHeight() == currentRound.getStartHeight()) { - rollbackPreRound(chainId); - } else { - rollbackCurrentRound(chainId, blockInfo); - } - } - - private void rollbackPreRound(int chainId) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - - mongoRoundServiceImpl.removeRound(chainId, currentRound.getIndex()); - PocRound round = null; - long roundIndex = currentRound.getIndex() - 1; - if(currentRound.getStartHeight() == 1) { - roundIndex = 1; - } - - while (round == null) { - if(roundIndex < 0) { - return; - } - round = mongoRoundServiceImpl.getRound(chainId, roundIndex--); - } - CurrentRound preRound = new CurrentRound(); - preRound.initByPocRound(round); - List list = mongoRoundServiceImpl.getRoundItemList(chainId, round.getIndex()); - preRound.setItemList(list); - preRound.setStartBlockHeader(mongoBlockServiceImpl.getBlockHeader(chainId, round.getStartHeight())); - preRound.setPackerOrder(round.getMemberCount()); - apiCache.setCurrentRound(preRound); - } - - private void rollbackCurrentRound(int chainId, BlockInfo blockInfo) { - ApiCache apiCache = CacheManager.getCache(chainId); - CurrentRound currentRound = apiCache.getCurrentRound(); - - int indexOfRound = blockInfo.getHeader().getPackingIndexOfRound() - 1; - if (currentRound.getItemList() == null) { - PocRound round = mongoRoundServiceImpl.getRound(chainId, blockInfo.getHeader().getRoundIndex()); - CurrentRound preRound = new CurrentRound(); - preRound.initByPocRound(round); - List list = mongoRoundServiceImpl.getRoundItemList(chainId, round.getIndex()); - preRound.setItemList(list); - preRound.setStartBlockHeader(mongoBlockServiceImpl.getBlockHeader(chainId, round.getStartHeight())); - preRound.setPackerOrder(round.getMemberCount()); - apiCache.setCurrentRound(preRound); - } - PocRoundItem item = currentRound.getItemList().get(indexOfRound); - item.setBlockHeight(0); - item.setReward(BigInteger.ZERO); - item.setTxCount(0); - - mongoRoundServiceImpl.updateRoundItem(chainId, item); - currentRound.setProducedBlockCount(currentRound.getProducedBlockCount() - 1); - currentRound.setEndHeight(blockInfo.getHeader().getHeight() - 1); - currentRound.setLostRate(DoubleUtils.div(currentRound.getMemberCount() - currentRound.getProducedBlockCount(), currentRound.getMemberCount())); - this.fillPunishCount(blockInfo.getTxList(), currentRound, false); - - this.mongoRoundServiceImpl.updateRound(chainId, currentRound.toPocRound()); - apiCache.setCurrentRound(currentRound); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundService.java deleted file mode 100644 index eda74e03eb..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/RoundService.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.PocRound; -import io.nuls.api.model.po.PocRoundItem; - -import java.util.List; - -public interface RoundService { - - PocRound getRound(int chainId, long roundIndex); - - List getRoundItemList(int chainId, long roundIndex); - - void saveRound(int chainId, PocRound round); - - long updateRound(int chainId, PocRound round); - - long updateRoundItem(int chainId, PocRoundItem item); - - void saveRoundItemList(int chainId, List itemList); - - void removeRound(int chainId, long roundIndex); - - long getTotalCount(int chainId); - - List getRoundList(int chainId, int pageIndex, int pageSize); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/StatisticalService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/StatisticalService.java deleted file mode 100644 index f9752353a5..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/StatisticalService.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.ChainStatisticalInfo; -import io.nuls.api.model.po.StatisticalInfo; - -import java.util.List; - -public interface StatisticalService { - - long getBestId(int chainId); - - void saveBestId(int chainId, long id); - - void updateBestId(int chainId, long id); - - void insert(int chainId, StatisticalInfo info); - - long calcTxCount(int chainId, long start, long end); - - List getStatisticalList(int chainId, int type, String field); - - ChainStatisticalInfo getChainStatisticalInfo(int chainId); - - void saveChainStatisticalInfo(ChainStatisticalInfo statisticalInfo); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TokenService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TokenService.java deleted file mode 100644 index 41a996035e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TokenService.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.AccountTokenInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.TokenTransfer; - -import java.util.List; -import java.util.Map; - -public interface TokenService { - - AccountTokenInfo getAccountTokenInfo(int chainId, String key); - - void saveAccountTokens(int chainId, Map accountTokenInfos); - - PageInfo getAccountTokens(int chainId, String address, int pageNumber, int pageSize); - - PageInfo getContractTokens(int chainId, String contractAddress, int pageNumber, int pageSize); - - void saveTokenTransfers(int chainId, List tokenTransfers); - - void rollbackTokenTransfers(int chainId, List tokenTxHashs, long height); - - PageInfo getTokenTransfers(int chainId, String address, String contractAddress, int pageIndex, int pageSize); - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java deleted file mode 100644 index e89549062d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/TransactionService.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.nuls.api.db; - -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniTransactionInfo; - -import java.util.List; -import java.util.Set; - -public interface TransactionService { - - void saveTxList(int chainId, List txList); - - void saveCoinDataList(int chainId, List coinDataList); - - void saveTxRelationList(int chainId, Set relationInfos); - - PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, boolean isHidden, long startTime, long endTime); - - PageInfo getCrossTxList(int chainId,int crossChainId, int pageIndex, int pageSize, long startTime, long endTime); - - void saveCrossTxRelationList(int chainId, Set relationInfos); - - List getUnConfirmList(int chainId); - - void deleteTxs(int chainId); - - List getBlockTxList(int chainId, long blockHeight, int type); - - TransactionInfo getTx(int chainId, String txHash); - - void rollbackTxRelationList(int chainId, Set relationInfos); - - void rollbackTx(int chainId, List txHashList); - - void saveUnConfirmTx(int chainId, TransactionInfo tx, String txHex); - - void deleteUnConfirmTx(int chainId, String txHash); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java deleted file mode 100644 index 6e527f2349..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountLedgerServiceImpl.java +++ /dev/null @@ -1,197 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.*; -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.DBTableConstant; -import io.nuls.api.db.AccountLedgerService; -import io.nuls.api.db.AccountService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniAccountInfo; -import io.nuls.api.model.rpc.BalanceInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.BigIntegerUtils; -import io.nuls.core.model.DoubleUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -@Component -public class MongoAccountLedgerServiceImpl implements AccountLedgerService { - - @Autowired - private MongoDBService mongoDBService; - @Autowired - private AccountService accountService; - - private List keyList = new LinkedList<>(); - - private static int cacheSize = 20000; - - public void initCache() { - for (ApiCache apiCache : CacheManager.getApiCaches().values()) { - List documentList = mongoDBService.pageQuery(DBTableConstant.ACCOUNT_LEDGER_TABLE + apiCache.getChainInfo().getChainId(), 0, cacheSize); - for (Document document : documentList) { - AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); - apiCache.addAccountLedgerInfo(ledgerInfo); - keyList.add(ledgerInfo.getKey()); - } - } - } - - public AccountLedgerInfo getAccountLedgerInfo(int chainId, String key) { - ApiCache apiCache = CacheManager.getCache(chainId); - AccountLedgerInfo accountLedgerInfo = apiCache.getAccountLedgerInfo(key); - if (accountLedgerInfo == null) { - Document document = mongoDBService.findOne(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, Filters.eq("_id", key)); - if (document == null) { - return null; - } - accountLedgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); - while (keyList.size() >= cacheSize) { - key = keyList.remove(0); - apiCache.getLedgerMap().remove(key); - } - apiCache.addAccountLedgerInfo(accountLedgerInfo); - keyList.add(accountLedgerInfo.getKey()); - } - return accountLedgerInfo.copy(); - } - - public void saveLedgerList(int chainId, Map accountLedgerInfoMap) { - if (accountLedgerInfoMap.isEmpty()) { - return; - } - - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - List> modelList = new ArrayList<>(); - int i = 0; - for (AccountLedgerInfo ledgerInfo : accountLedgerInfoMap.values()) { - Document document = DocumentTransferTool.toDocument(ledgerInfo, "key"); - document.put("totalBalance", BigIntegerUtils.bigIntegerToString(ledgerInfo.getTotalBalance(), 32)); - if (ledgerInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - ledgerInfo.setNew(false); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", ledgerInfo.getKey()), document)); - } - i++; - if (i == 1000) { - mongoDBService.bulkWrite(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, modelList, options); - modelList.clear(); - i = 0; - } - } - if (modelList.size() > 0) { - mongoDBService.bulkWrite(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, modelList, options); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - for (AccountLedgerInfo ledgerInfo : accountLedgerInfoMap.values()) { - if (apiCache.getLedgerMap().containsKey(ledgerInfo.getKey())) { - apiCache.addAccountLedgerInfo(ledgerInfo); - } - } - } - - @Override - public List getAccountLedgerInfoList(int chainId, String address) { - Bson filter = Filters.eq("address", address); - List documentList = mongoDBService.query(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter); - List accountLedgerInfoList = new ArrayList<>(); - - for (Document document : documentList) { - if (document.getInteger("chainId") != chainId) { - continue; - } - AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); - accountLedgerInfoList.add(ledgerInfo); - } - if (accountLedgerInfoList.isEmpty()) { - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - AccountLedgerInfo accountLedgerInfo = new AccountLedgerInfo(address, assetInfo.getChainId(), assetInfo.getAssetId()); - accountLedgerInfoList.add(accountLedgerInfo); - } - return accountLedgerInfoList; - } - - DecimalFormat format = new DecimalFormat("###.#####"); - - public PageInfo getAssetRanking(int chainId, int assetChainId, int assetId, int pageNumber, int pageSize) { - AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(assetChainId + "-" + assetId); - if (assetInfo == null) { - return new PageInfo<>(); - } else if (assetInfo.getChainId() == ApiContext.defaultChainId && assetInfo.getAssetId() == ApiContext.defaultAssetId) { - ApiCache apiCache = CacheManager.getCache(chainId); - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - assetInfo.setLocalTotalCoins(coinContextInfo.getCirculation()); - } - Bson filter = Filters.and(Filters.eq("chainId", assetChainId), Filters.eq("assetId", assetId)); - long totalCount = mongoDBService.getCount(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter); - Bson sort = Sorts.descending("totalBalance"); - List documentList = mongoDBService.pageQuery(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter, sort, pageNumber, pageSize); - List list = new ArrayList<>(); - for (int i = 0; i < documentList.size(); i++) { - AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(documentList.get(i), "key", AccountLedgerInfo.class); - MiniAccountInfo accountInfo = accountService.getMiniAccountInfo(chainId, ledgerInfo.getAddress()); - accountInfo.setTotalBalance(ledgerInfo.getTotalBalance()); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, accountInfo.getAddress(), ledgerInfo.getChainId(), ledgerInfo.getAssetId()); - accountInfo.setLocked(balanceInfo.getConsensusLock().add(balanceInfo.getTimeLock())); - accountInfo.setDecimal(assetInfo.getDecimals()); - - BigDecimal b1 = new BigDecimal(accountInfo.getTotalBalance()); - BigDecimal b2 = new BigDecimal(assetInfo.getLocalTotalCoins()); - double prop = 0; - if (b2.compareTo(BigDecimal.ZERO) > 0) { - prop = b1.divide(b2, 5, RoundingMode.HALF_UP).doubleValue() * 100; - } - accountInfo.setProportion(format.format(prop) + "%"); - list.add(accountInfo); - } - - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, list); - return pageInfo; - } - - @Override - public List getAccountCrossLedgerInfoList(int chainId, String address) { - Bson filter = Filters.eq("address", address); - List documentList = mongoDBService.query(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, filter); - List accountLedgerInfoList = new ArrayList<>(); - - for (Document document : documentList) { - if (document.getInteger("chainId") == chainId) { - continue; - } - AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); - accountLedgerInfoList.add(ledgerInfo); - } - return accountLedgerInfoList; - } - - @Override - public List getAccountLedgerInfoList(int assetChainId, int assetId) { - Bson filter = Filters.and(Filters.eq("chainId", assetChainId), Filters.eq("assetId", assetId)); - List documentList = mongoDBService.query(DBTableConstant.ACCOUNT_LEDGER_TABLE + ApiContext.defaultChainId, filter); - List accountLedgerInfoList = new ArrayList<>(); - - for (Document document : documentList) { - AccountLedgerInfo ledgerInfo = DocumentTransferTool.toInfo(document, "key", AccountLedgerInfo.class); - accountLedgerInfoList.add(ledgerInfo); - } - return accountLedgerInfoList; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java deleted file mode 100644 index 3c4f14f787..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAccountServiceImpl.java +++ /dev/null @@ -1,323 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.client.model.*; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.db.AccountService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AccountInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.TxRelationInfo; -import io.nuls.api.model.po.mini.MiniAccountInfo; -import io.nuls.api.utils.DBUtil; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.BigIntegerUtils; -import org.bson.Document; -import org.bson.conversions.Bson; -import org.checkerframework.checker.units.qual.A; - -import java.math.BigInteger; -import java.util.*; - -import static io.nuls.api.constant.DBTableConstant.*; - -@Component -public class MongoAccountServiceImpl implements AccountService { - - @Autowired - private MongoDBService mongoDBService; - - private static List addressList = Collections.synchronizedList(new ArrayList<>()); - - public static int cacheSize = 5000; - - public void initCache() { - for (ApiCache apiCache : CacheManager.getApiCaches().values()) { - List documentList = mongoDBService.pageQuery(ACCOUNT_TABLE + apiCache.getChainInfo().getChainId(), 0, cacheSize); - for (int i = 0; i < documentList.size(); i++) { - Document document = documentList.get(i); - AccountInfo accountInfo = DocumentTransferTool.toInfo(document, "address", AccountInfo.class); - apiCache.addAccountInfo(accountInfo); - addressList.add(accountInfo.getAddress()); - } - } - } - - public AccountInfo getAccountInfo(int chainId, String address) { - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return null; - } - AccountInfo accountInfo = apiCache.getAccountInfo(address); - if (accountInfo == null) { - Document document = mongoDBService.findOne(ACCOUNT_TABLE + chainId, Filters.eq("_id", address)); - if (document == null) { - return null; - } - accountInfo = DocumentTransferTool.toInfo(document, "address", AccountInfo.class); - while (addressList.size() >= cacheSize) { - address = addressList.remove(0); - apiCache.getAccountMap().remove(address); - } - apiCache.addAccountInfo(accountInfo); - addressList.add(accountInfo.getAddress()); - } - return accountInfo.copy(); - } - - public MiniAccountInfo getMiniAccountInfo(int chainId, String address) { - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return null; - } - AccountInfo accountInfo = apiCache.getAccountInfo(address); - if (accountInfo == null) { - Document document = mongoDBService.findOne(ACCOUNT_TABLE + chainId, Filters.eq("_id", address)); - if (document == null) { - return null; - } - accountInfo = DocumentTransferTool.toInfo(document, "address", AccountInfo.class); - while (addressList.size() >= cacheSize) { - address = addressList.remove(0); - apiCache.getAccountMap().remove(address); - } - apiCache.addAccountInfo(accountInfo); - addressList.add(accountInfo.getAddress()); - } - - return new MiniAccountInfo(accountInfo); - } - - - public void saveAccounts(int chainId, Map accountInfoMap) { - if (accountInfoMap.isEmpty()) { - return; - } - - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - List> modelList = new ArrayList<>(); - int i = 0; - for (AccountInfo accountInfo : accountInfoMap.values()) { - Document document = DocumentTransferTool.toDocument(accountInfo, "address"); - document.put("totalBalance", BigIntegerUtils.bigIntegerToString(accountInfo.getTotalBalance(), 32)); - - if (accountInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - accountInfo.setNew(false); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", accountInfo.getAddress()), document)); - } - i++; - if (i == 1000) { - mongoDBService.bulkWrite(ACCOUNT_TABLE + chainId, modelList, options); - modelList.clear(); - i = 0; - } - } - if (modelList.size() > 0) { - mongoDBService.bulkWrite(ACCOUNT_TABLE + chainId, modelList, options); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - for (AccountInfo accountInfo : accountInfoMap.values()) { - if (apiCache.getAccountMap().containsKey(accountInfo.getAddress())) { - apiCache.addAccountInfo(accountInfo); - } -// else { -// while (addressList.size() >= cacheSize) { -// String address = addressList.remove(0); -// apiCache.getAccountMap().remove(address); -// } -// apiCache.addAccountInfo(accountInfo); -// addressList.add(accountInfo.getAddress()); -// } - } - } - - public PageInfo pageQuery(int chainId, int pageNumber, int pageSize) { - List docsList = this.mongoDBService.pageQuery(ACCOUNT_TABLE + chainId, pageNumber, pageSize); - List accountInfoList = new ArrayList<>(); - long totalCount = mongoDBService.getEstimateCount(ACCOUNT_TABLE + chainId); - for (Document document : docsList) { - accountInfoList.add(DocumentTransferTool.toInfo(document, "address", AccountInfo.class)); - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, accountInfoList); - return pageInfo; - } - - public PageInfo getAccountTxs(int chainId, String address, int pageIndex, int pageSize, int type, long startHeight, long endHeight, int assetChainId, int assetId) { - List filters = new ArrayList<>(); - filters.add(Filters.eq("address", address)); - if (type > 0) { - filters.add(Filters.eq("type", type)); - } - if (assetChainId > 0 && assetId > 0) { - filters.add(Filters.eq("chainId", assetChainId)); - filters.add(Filters.eq("assetId", assetId)); - } - if (startHeight >= 0) { - filters.add(Filters.gte("height", startHeight)); - } - if (endHeight > 0) { - filters.add(Filters.lte("height", endHeight)); - } - - int start = (pageIndex - 1) * pageSize; - int end = pageIndex * pageSize; - int index = DBUtil.getShardNumber(address); - - Bson filter = Filters.and(filters); - long unConfirmCount = mongoDBService.getCount(TX_UNCONFIRM_RELATION_TABLE + chainId, filter); - long confirmCount = mongoDBService.getCount(TX_RELATION_TABLE + chainId + "_" + index, filter); - List txRelationInfoList; - if (end <= unConfirmCount) { - txRelationInfoList = unConfirmLimitQuery(chainId, filter, start, pageSize); - } else if (start > unConfirmCount || unConfirmCount == 0) { - start = (int) (start - unConfirmCount); - txRelationInfoList = confirmLimitQuery(chainId, index, filter, start, pageSize); - } else { - txRelationInfoList = relationLimitQuery(chainId, index, filter, filter, start, pageSize); - } - - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, unConfirmCount + confirmCount, txRelationInfoList); - return pageInfo; - } - - public PageInfo getAcctTxs(int chainId, int assetChainId, int assetId, String address, - int type, long startTime, long endTime, int pageIndex, int pageSize) { - - List filters = new ArrayList<>(); - Bson addressFilter = Filters.eq("address", address); - filters.add(addressFilter); - if (type > 0) { - filters.add(Filters.eq("type", type)); - } - if (assetChainId > 0 && assetId > 0) { - filters.add(Filters.eq("chainId", assetChainId)); - filters.add(Filters.eq("assetId", assetId)); - } - if (startTime > 0) { - filters.add(Filters.gte("createTime", startTime)); - } - if (endTime > 0) { - filters.add(Filters.lte("createTime", endTime)); - } - - Bson filter = Filters.and(filters); - int start = (pageIndex - 1) * pageSize; - int end = pageIndex * pageSize; - int index = DBUtil.getShardNumber(address); - - long unConfirmCount = mongoDBService.getCount(TX_UNCONFIRM_RELATION_TABLE + chainId, addressFilter); - long confirmCount = mongoDBService.getCount(TX_RELATION_TABLE + chainId + "_" + index, filter); - List txRelationInfoList; - if (end <= unConfirmCount) { - txRelationInfoList = unConfirmLimitQuery(chainId, filter, start, pageSize); - } else if (start - 1 > unConfirmCount) { - start = start - 1; - start = (int) (start - unConfirmCount); - txRelationInfoList = confirmLimitQuery(chainId, index, filter, start, pageSize); - } else { - txRelationInfoList = relationLimitQuery(chainId, index, addressFilter, filter, start, pageSize); - } - - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, unConfirmCount + confirmCount, txRelationInfoList); - return pageInfo; - } - - private List unConfirmLimitQuery(int chainId, Bson filter, int start, int pageSize) { - List docsList = this.mongoDBService.limitQuery(TX_UNCONFIRM_RELATION_TABLE + chainId, filter, Sorts.descending("createTime"), start, pageSize); - List txRelationInfoList = new ArrayList<>(); - for (Document document : docsList) { - TxRelationInfo txRelationInfo = TxRelationInfo.toInfo(document); - txRelationInfo.setStatus(0); - txRelationInfoList.add(txRelationInfo); - } - return txRelationInfoList; - } - - private List confirmLimitQuery(int chainId, int index, Bson filter, int start, int pageSize) { - List docsList = this.mongoDBService.limitQuery(TX_RELATION_TABLE + chainId + "_" + index, filter, Sorts.descending("createTime"), start, pageSize); - List txRelationInfoList = new ArrayList<>(); - for (Document document : docsList) { - TxRelationInfo txRelationInfo = TxRelationInfo.toInfo(document); - txRelationInfo.setStatus(1); - txRelationInfoList.add(txRelationInfo); - } - return txRelationInfoList; - } - - private List relationLimitQuery(int chainId, int index, Bson filter1, Bson filter2, int start, int pageSize) { - List docsList = this.mongoDBService.limitQuery(TX_UNCONFIRM_RELATION_TABLE + chainId, filter1, Sorts.descending("createTime"), start, pageSize); - List txRelationInfoList = new ArrayList<>(); - for (Document document : docsList) { - TxRelationInfo txRelationInfo = TxRelationInfo.toInfo(document); - txRelationInfo.setStatus(ApiConstant.TX_UNCONFIRM); - txRelationInfoList.add(txRelationInfo); - } - pageSize = pageSize - txRelationInfoList.size(); - docsList = this.mongoDBService.limitQuery(TX_RELATION_TABLE + chainId + "_" + index, filter2, Sorts.descending("createTime"), 0, pageSize); - for (Document document : docsList) { - TxRelationInfo txRelationInfo = TxRelationInfo.toInfo(document); - txRelationInfo.setStatus(ApiConstant.TX_CONFIRM); - txRelationInfoList.add(txRelationInfo); - } - return txRelationInfoList; - } - - public PageInfo getCoinRanking(int pageIndex, int pageSize, int chainId) { - Bson sort = Sorts.descending("totalBalance"); - List accountInfoList = new ArrayList<>(); - Bson filter = Filters.ne("totalBalance", 0); - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1).append("alias", 1).append("totalBalance", 1).append("totalOut", 1).append("totalIn", 1).append("type", 1); - - List docsList = this.mongoDBService.pageQuery(ACCOUNT_TABLE + chainId, filter, fields, sort, pageIndex, pageSize); - long totalCount = mongoDBService.getCount(ACCOUNT_TABLE + chainId, filter); - for (Document document : docsList) { - MiniAccountInfo accountInfo = DocumentTransferTool.toInfo(document, "address", MiniAccountInfo.class); -// List outputs = utxoService.getAccountUtxos(accountInfo.getAddress()); -// CalcUtil.calcBalance(accountInfo, outputs, blockHeaderService.getBestBlockHeight()); - accountInfoList.add(accountInfo); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, accountInfoList); - return pageInfo; - } - - public BigInteger getAllAccountBalance(int chainId) { - boolean query = true; - BigInteger totalBalance = BigInteger.ZERO; - List documentList; - int i = 1; - BasicDBObject fields = new BasicDBObject(); - fields.append("totalBalance", 1); - while (query) { - documentList = mongoDBService.pageQuery(ACCOUNT_TABLE + chainId, null, fields, Sorts.descending("totalBalance"), i, 1000); - for (Document document : documentList) { - totalBalance = totalBalance.add(new BigInteger(document.getString("totalBalance"))); - } - if (documentList.size() < 1000) { - query = false; - } - i++; - } - return totalBalance; - } - - public BigInteger getAccountTotalBalance(int chainId, String address) { - AccountInfo accountInfo = getAccountInfo(chainId, address); - if (accountInfo == null) { - return BigInteger.ZERO; - } - return accountInfo.getTotalBalance(); - } - - @Override - public void testBalance(int chainId) { - - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java deleted file mode 100644 index fdf140644d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAgentServiceImpl.java +++ /dev/null @@ -1,297 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.*; -import io.nuls.api.ApiContext; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.AgentService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AgentInfo; -import io.nuls.api.model.po.AliasInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static io.nuls.api.constant.DBTableConstant.AGENT_TABLE; - -@Component -public class MongoAgentServiceImpl implements AgentService { - - @Autowired - private MongoDBService mongoDBService; - @Autowired - private MongoAliasServiceImpl mongoAliasServiceImpl; - - public void initCache() { - for (ApiCache apiCache : CacheManager.getApiCaches().values()) { - List documentList = mongoDBService.query(AGENT_TABLE + apiCache.getChainInfo().getChainId()); - for (Document document : documentList) { - AgentInfo agentInfo = DocumentTransferTool.toInfo(document, "txHash", AgentInfo.class); - apiCache.addAgentInfo(agentInfo); - } - } - } - - public AgentInfo getAgentByHash(int chainID, String agentHash) { - AgentInfo agentInfo = CacheManager.getCache(chainID).getAgentInfo(agentHash); - if (agentInfo == null) { - Document document = mongoDBService.findOne(AGENT_TABLE + chainID, Filters.eq("_id", agentHash)); - agentInfo = DocumentTransferTool.toInfo(document, "txHash", AgentInfo.class); - CacheManager.getCache(chainID).addAgentInfo(agentInfo); - } - return agentInfo.copy(); - } - - @Override - public PageInfo getAgentByHashList(int chainID, int pageNumber, int pageSize, List hashList) { - PageInfo page = new PageInfo<>(pageNumber, pageSize); - page.setTotalCount(hashList.size()); - int start = (pageNumber - 1) * pageSize; - if (hashList.size() < start) { - return page; - } - int end = pageNumber * pageSize; - if (end > hashList.size()) { - end = hashList.size(); - } - hashList = hashList.subList(start, end); - List agentInfoList = new ArrayList<>(); - for (String agentHash : hashList) { - agentInfoList.add(getAgentByHash(chainID, agentHash)); - } - page.setList(agentInfoList); - return page; - } - - public AgentInfo getAgentByPackingAddress(int chainID, String packingAddress) { - Collection agentInfos = CacheManager.getCache(chainID).getAgentMap().values(); - AgentInfo agentInfo = null; - for (AgentInfo agent : agentInfos) { - if (!agent.getPackingAddress().equals(packingAddress)) { - continue; - } - if (null == agentInfo || agent.getCreateTime() > agentInfo.getCreateTime()) { - agentInfo = agent; - } - } - if (agentInfo == null) { - return null; - } - return agentInfo.copy(); - } - - public AgentInfo getAgentByAgentAddress(int chainID, String agentAddress) { - Collection agentInfos = CacheManager.getCache(chainID).getAgentMap().values(); - AgentInfo agentInfo = null; - for (AgentInfo agent : agentInfos) { - if (!agentAddress.equals(agent.getAgentAddress())) { - continue; - } - if (null == agentInfo || agent.getCreateTime() > agentInfo.getCreateTime()) { - agentInfo = agent; - } - } - if (agentInfo == null) { - return null; - } - return agentInfo.copy(); - } - - @Override - public AgentInfo getAliveAgentByAgentAddress(int chainID, String agentAddress) { - Collection agentInfos = CacheManager.getCache(chainID).getAgentMap().values(); - AgentInfo agentInfo = null; - for (AgentInfo agent : agentInfos) { - if (!agentAddress.equals(agent.getAgentAddress())) { - continue; - } - if (agent.getStatus() == 2) { - continue; - } - if (null == agentInfo || agent.getCreateTime() > agentInfo.getCreateTime()) { - agentInfo = agent; - } - } - if (agentInfo == null) { - return null; - } - return agentInfo.copy(); - } - - public void saveAgentList(int chainID, List agentInfoList) { - if (agentInfoList.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - for (AgentInfo agentInfo : agentInfoList) { - Document document = DocumentTransferTool.toDocument(agentInfo, "txHash"); - - if (agentInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - agentInfo.setNew(false); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", agentInfo.getTxHash()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(AGENT_TABLE + chainID, modelList, options); - ApiCache cache = CacheManager.getCache(chainID); - for (AgentInfo agentInfo : agentInfoList) { - cache.addAgentInfo(agentInfo); - } - } - - public void rollbackAgentList(int chainId, List agentInfoList) { - initCache(); - if (agentInfoList.isEmpty()) { - return; - } - ApiCache apiCache = CacheManager.getCache(chainId); - List> modelList = new ArrayList<>(); - for (AgentInfo agentInfo : agentInfoList) { - if (agentInfo.isNew()) { - modelList.add(new DeleteOneModel(Filters.eq("_id", agentInfo.getTxHash()))); - apiCache.getAgentMap().remove(agentInfo.getTxHash()); - } else { - Document document = DocumentTransferTool.toDocument(agentInfo, "txHash"); - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", agentInfo.getTxHash()), document)); - apiCache.addAgentInfo(agentInfo); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(AGENT_TABLE + chainId, modelList, options); - } - - public List getAgentList(int chainId, long startHeight) { - ApiCache apiCache = CacheManager.getCache(chainId); - Collection agentInfos = apiCache.getAgentMap().values(); - List resultList = new ArrayList<>(); - for (AgentInfo agent : agentInfos) { - if (agent.getDeleteHash() != null && agent.getDeleteHeight() <= startHeight) { - continue; - } - if (agent.getBlockHeight() > startHeight) { - continue; - } - resultList.add(agent); - } - -// Bson bson = Filters.and(Filters.lte("blockHeight", startHeight), Filters.or(Filters.eq("deleteHeight", 0), Filters.gt("deleteHeight", startHeight))); -// -// List list = this.mongoDBService.query(MongoTableName.AGENT_INFO, bson); - -// for (Document document : list) { -// AgentInfo agentInfo = DocumentTransferTool.toInfo(document, "txHash", AgentInfo.class); -// AliasInfo alias = mongoAliasServiceImpl.getAliasByAddress(agentInfo.getAgentAddress()); -// if (alias != null) { -// agentInfo.setAgentAlias(alias.getAlias()); -// } -// resultList.add(agentInfo); -// } - - return resultList; - } - - public PageInfo getAgentList(int chainId, int type, int pageNumber, int pageSize) { - Bson filter = null; - Bson deleteFilter = Filters.eq("deleteHeight", 0); - if (type == 1) { - List list = new ArrayList<>(ApiContext.DEVELOPER_NODE_ADDRESS); - list.addAll(ApiContext.AMBASSADOR_NODE_ADDRESS); - filter = Filters.and(Filters.nin("agentAddress", list.toArray()), deleteFilter); - } else if (type == 2) { - filter = Filters.and(Filters.in("agentAddress", ApiContext.DEVELOPER_NODE_ADDRESS.toArray()), deleteFilter); - } else if (type == 3) { - filter = Filters.and(Filters.in("agentAddress", ApiContext.AMBASSADOR_NODE_ADDRESS.toArray()), deleteFilter); - } else { - filter = deleteFilter; - } - long totalCount = this.mongoDBService.getCount(AGENT_TABLE + chainId, filter); - List docsList = this.mongoDBService.pageQuery(AGENT_TABLE + chainId, filter, Sorts.descending("createTime"), pageNumber, pageSize); - List agentInfoList = new ArrayList<>(); - for (Document document : docsList) { - AgentInfo agentInfo = DocumentTransferTool.toInfo(document, "txHash", AgentInfo.class); - AliasInfo alias = mongoAliasServiceImpl.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (alias != null) { - agentInfo.setAgentAlias(alias.getAlias()); - } - agentInfoList.add(agentInfo); - if (agentInfo.getType() == 0 && null != agentInfo.getAgentAddress()) { - if (ApiContext.DEVELOPER_NODE_ADDRESS.contains(agentInfo.getAgentAddress())) { - agentInfo.setType(2); - } else if (ApiContext.AMBASSADOR_NODE_ADDRESS.contains(agentInfo.getAgentAddress())) { - agentInfo.setType(3); - } else { - agentInfo.setType(1); - } - } - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, agentInfoList); - return pageInfo; - } - - @Override - public PageInfo getAgentList(int chainId, int pageNumber, int pageSize) { - long totalCount = this.mongoDBService.getEstimateCount(AGENT_TABLE + chainId); - List docsList = this.mongoDBService.pageQuery(AGENT_TABLE + chainId, Sorts.descending("createTime"), pageNumber, pageSize); - List agentInfoList = new ArrayList<>(); - for (Document document : docsList) { - AgentInfo agentInfo = DocumentTransferTool.toInfo(document, "txHash", AgentInfo.class); - AliasInfo alias = mongoAliasServiceImpl.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (alias != null) { - agentInfo.setAgentAlias(alias.getAlias()); - } - agentInfoList.add(agentInfo); - if (agentInfo.getType() == 0 && null != agentInfo.getAgentAddress()) { - if (ApiContext.DEVELOPER_NODE_ADDRESS.contains(agentInfo.getAgentAddress())) { - agentInfo.setType(2); - } else if (ApiContext.AMBASSADOR_NODE_ADDRESS.contains(agentInfo.getAgentAddress())) { - agentInfo.setType(3); - } else { - agentInfo.setType(1); - } - } - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, agentInfoList); - return pageInfo; - } - - public long agentsCount(int chainId, long startHeight) { - ApiCache apiCache = CacheManager.getCache(chainId); - Collection agentInfos = apiCache.getAgentMap().values(); - long count = 0; - for (AgentInfo agent : agentInfos) { - if (agent.getDeleteHash() != null && agent.getDeleteHeight() <= startHeight) { - continue; - } - if (agent.getBlockHeight() > startHeight) { - continue; - } - count++; - } - return count; -// Bson bson = Filters.and(Filters.lte("blockHeight", startHeight), Filters.or(Filters.eq("deleteHeight", 0), Filters.gt("deleteHeight", startHeight))); -// return this.mongoDBService.getCount(MongoTableName.AGENT_INFO, bson); - } - - public BigInteger getConsensusCoinTotal(int chainId) { - BigInteger total = BigInteger.ZERO; - - ApiCache apiCache = CacheManager.getCache(chainId); - for (AgentInfo agentInfo : apiCache.getAgentMap().values()) { - if (agentInfo.getDeleteHash() == null) { - total = total.add(agentInfo.getDeposit()).add(agentInfo.getTotalDeposit()); - } - } - return total; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAliasServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAliasServiceImpl.java deleted file mode 100644 index b561326a49..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoAliasServiceImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.InsertManyOptions; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.AliasService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AliasInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import org.bson.Document; - -import java.util.ArrayList; -import java.util.List; - -import static io.nuls.api.constant.DBTableConstant.ALIAS_TABLE; - - -@Component -public class MongoAliasServiceImpl implements AliasService { - - @Autowired - private MongoDBService mongoDBService; - - public void initCache() { - for (ApiCache apiCache : CacheManager.getApiCaches().values()) { - List documentList = mongoDBService.query(ALIAS_TABLE + apiCache.getChainInfo().getChainId()); - for (Document document : documentList) { - AliasInfo aliasInfo = DocumentTransferTool.toInfo(document, "address", AliasInfo.class); - apiCache.addAlias(aliasInfo); - } - } - } - - public AliasInfo getAliasByAddress(int chainId, String address) { - ApiCache apiCache = CacheManager.getCache(chainId); - AliasInfo aliasInfo = apiCache.getAlias(address); - if (aliasInfo == null) { - Document document = mongoDBService.findOne(ALIAS_TABLE + chainId, Filters.eq("_id", address)); - if (document == null) { - return null; - } - aliasInfo = DocumentTransferTool.toInfo(document, "address", AliasInfo.class); - - apiCache.addAlias(aliasInfo); - } - return aliasInfo; - } - - public AliasInfo getByAlias(int chainId, String alias) { - ApiCache apiCache = CacheManager.getCache(chainId); - AliasInfo aliasInfo = apiCache.getAlias(alias); - if (aliasInfo == null) { - Document document = mongoDBService.findOne(ALIAS_TABLE + chainId, Filters.eq("alias", alias)); - if (document == null) { - return null; - } - aliasInfo = DocumentTransferTool.toInfo(document, "address", AliasInfo.class); - - apiCache.addAlias(aliasInfo); - } - return aliasInfo; - } - - - public void saveAliasList(int chainId, List aliasInfoList) { - if (aliasInfoList.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (AliasInfo info : aliasInfoList) { - Document document = DocumentTransferTool.toDocument(info, "address"); - documentList.add(document); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(ALIAS_TABLE + chainId, documentList, options); - } - - - public void rollbackAliasList(int chainId, List aliasInfoList) { - if (aliasInfoList.isEmpty()) { - return; - } - ApiCache apiCache = CacheManager.getCache(chainId); - List list = new ArrayList<>(); - for (AliasInfo aliasInfo : aliasInfoList) { - list.add(aliasInfo.getAddress()); - apiCache.getAliasMap().remove(aliasInfo.getAddress()); - apiCache.getAliasMap().remove(aliasInfo.getAlias()); - } - mongoDBService.delete(ALIAS_TABLE + chainId, Filters.in("_id", list)); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java deleted file mode 100644 index 55ca52a6b0..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoBlockServiceImpl.java +++ /dev/null @@ -1,225 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.InsertOneModel; -import com.mongodb.client.model.Sorts; -import com.mongodb.client.model.WriteModel; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.AgentService; -import io.nuls.api.db.BlockService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniBlockHeaderInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.StringUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - -import static io.nuls.api.constant.DBTableConstant.BLOCK_HEADER_TABLE; -import static io.nuls.api.constant.DBTableConstant.BLOCK_HEX_TABLE; - -@Component -public class MongoBlockServiceImpl implements BlockService { - - @Autowired - private MongoDBService mongoDBService; - @Autowired - private MongoChainServiceImpl mongoChainServiceImpl; - @Autowired - AgentService agentService; - - public BlockHeaderInfo getBestBlockHeader(int chainId) { - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return null; - } - if (apiCache.getBestHeader() == null) { - SyncInfo syncInfo = mongoChainServiceImpl.getSyncInfo(chainId); - if (syncInfo == null) { - return null; - } - apiCache.setBestHeader(getBlockHeader(chainId, syncInfo.getBestHeight())); - } - return apiCache.getBestHeader(); - } - - public BlockHeaderInfo getBlockHeader(int chainId, long height) { - Document document = mongoDBService.findOne(BLOCK_HEADER_TABLE + chainId, Filters.eq("_id", height)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, "height", BlockHeaderInfo.class); - } - - public BlockHeaderInfo getBlockHeaderByHash(int chainId, String hash) { - Document document = mongoDBService.findOne(BLOCK_HEADER_TABLE + chainId, Filters.eq("hash", hash)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, "height", BlockHeaderInfo.class); - } - - public void saveBLockHeaderInfo(int chainId, BlockHeaderInfo blockHeaderInfo) { - Document document = DocumentTransferTool.toDocument(blockHeaderInfo, "height"); - document.remove("mainVersion"); - mongoDBService.insertOne(BLOCK_HEADER_TABLE + chainId, document); - } - - public void saveBlockHexInfo(int chainId, BlockHexInfo hexInfo) { - Document document = DocumentTransferTool.toDocument(hexInfo, "height"); - mongoDBService.insertOne(BLOCK_HEX_TABLE + chainId, document); - } - - public BlockHexInfo getBlockHexInfo(int chainId, long height) { - Document document = mongoDBService.findOne(BLOCK_HEX_TABLE + chainId, Filters.eq("_id", height)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, "height", BlockHexInfo.class); - } - - @Override - public BlockHexInfo getBlockHexInfo(int chainId, String hash) { - Document document = mongoDBService.findOne(BLOCK_HEADER_TABLE + chainId, Filters.eq("hash", hash)); - if (document == null) { - return null; - } - long height = document.getLong("_id"); - document = mongoDBService.findOne(BLOCK_HEX_TABLE + chainId, Filters.eq("_id", height)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, "height", BlockHexInfo.class); - } - - @Override - public BigInteger getLast24HourRewards(int chainId) { - long time = System.currentTimeMillis() / 1000; - time = time - 24 * 60 * 60; - Bson filter = Filters.gte("createTime", time); - BasicDBObject fields = new BasicDBObject(); - fields.append("reward", 1); - BigInteger reward = BigInteger.ZERO; - List docsList = this.mongoDBService.query(BLOCK_HEADER_TABLE + chainId, filter, fields); - for (Document document : docsList) { - reward = reward.add(new BigInteger(document.getString("reward"))); - } - return reward; - } - - public void saveList(int chainId, List blockHeaderInfos) { - List documentList = new ArrayList<>(); - for (BlockHeaderInfo headerInfo : blockHeaderInfos) { - Document document = DocumentTransferTool.toDocument(headerInfo); - documentList.add(document); - } - long time1 = System.currentTimeMillis(); - mongoDBService.insertMany(BLOCK_HEADER_TABLE + chainId, documentList); - long time2 = System.currentTimeMillis(); - System.out.println("---------------------use:" + (time2 - time1)); - } - - public void saveBulkList(int chainId, List blockHeaderInfos) { - List> modelList = new ArrayList<>(); - for (BlockHeaderInfo headerInfo : blockHeaderInfos) { - Document document = DocumentTransferTool.toDocument(headerInfo, "height"); - modelList.add(new InsertOneModel(document)); - } - long time1 = System.currentTimeMillis(); - mongoDBService.bulkWrite(BLOCK_HEADER_TABLE + chainId, modelList); - long time2 = System.currentTimeMillis(); - System.out.println("---------------------use:" + (time2 - time1)); - - } - - public PageInfo pageQuery(int chainId, int pageIndex, int pageSize, String packingAddress, boolean filterEmptyBlocks) { - if (!CacheManager.isChainExist(chainId)) { - return new PageInfo<>(pageIndex, pageSize); - } - Bson filter = null; - if (StringUtils.isNotBlank(packingAddress)) { - filter = Filters.eq("packingAddress", packingAddress); - } - if (filterEmptyBlocks) { - if (filter == null) { - filter = Filters.gt("txCount", 1); - } else { - filter = Filters.and(filter, Filters.gt("txCount", 1)); - } - } - long totalCount; - if(StringUtils.isNotBlank(packingAddress)){ - AgentInfo agentInfo = agentService.getAgentByPackingAddress(chainId,packingAddress); - if(agentInfo == null){ - totalCount = 0; - }else { - totalCount = agentInfo.getTotalPackingCount(); - } - }else{ - totalCount = mongoDBService.getEstimateCount(BLOCK_HEADER_TABLE + chainId); - } - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1).append("createTime", 1).append("txCount", 1).append("agentHash", 1). - append("agentId", 1).append("agentAlias", 1).append("size", 1).append("reward", 1); - - List docsList = this.mongoDBService.pageQuery(BLOCK_HEADER_TABLE + chainId, filter, fields, Sorts.descending("_id"), pageIndex, pageSize); - List list = new ArrayList<>(); - for (Document document : docsList) { - list.add(DocumentTransferTool.toInfo(document, "height", MiniBlockHeaderInfo.class)); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, list); - return pageInfo; - } - - @Override - public List getBlockList(int chainId, long startTime, long endTime) { - if (!CacheManager.isChainExist(chainId)) { - return new ArrayList<>(); - } - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1).append("createTime", 1).append("txCount", 1).append("agentHash", 1). - append("agentId", 1).append("agentAlias", 1).append("size", 1).append("reward", 1); - Bson filter = Filters.and(Filters.gt("createTime", startTime), Filters.lte("createTime", endTime)); - List docsList = this.mongoDBService.query(BLOCK_HEADER_TABLE + chainId, filter, fields, Sorts.descending("_id")); - List list = new ArrayList<>(); - for (Document document : docsList) { - list.add(DocumentTransferTool.toInfo(document, "height", MiniBlockHeaderInfo.class)); - } - return list; - } - - @Override - public int getBlockPackageTxCount(int chainId, long startHeight, long endHeight) { - if (!CacheManager.isChainExist(chainId)) { - return 0; - } - BasicDBObject fields = new BasicDBObject(); - fields.append("txCount", 1); - Bson filter = Filters.and(Filters.gt("_id", startHeight), Filters.lte("_id", endHeight)); - List docsList = this.mongoDBService.query(BLOCK_HEADER_TABLE + chainId, filter, fields, Sorts.descending("_id")); - int count = 0; - for (Document document : docsList) { - count += document.getInteger("txCount"); - } - return count; - } - - public long getMaxHeight(int chainId, long endTime) { - return this.mongoDBService.getMax(BLOCK_HEADER_TABLE + chainId, "_id", Filters.lte("createTime", endTime)); - } - - public void deleteBlockHeader(int chainId, long height) { - mongoDBService.delete(BLOCK_HEADER_TABLE + chainId, Filters.eq("_id", height)); - mongoDBService.delete(BLOCK_HEX_TABLE + chainId, Filters.eq("_id", height)); - ApiCache apiCache = CacheManager.getCache(chainId); - apiCache.setBestHeader(null); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java deleted file mode 100644 index 655e425f9c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoChainServiceImpl.java +++ /dev/null @@ -1,188 +0,0 @@ -package io.nuls.api.db.mongo; - - -import com.mongodb.client.model.Filters; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.ChainService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.ChainConfigInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.api.model.po.SyncInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - -import static io.nuls.api.constant.DBTableConstant.*; - -@Component -public class MongoChainServiceImpl implements ChainService { - - @Autowired - private MongoDBService mongoDBService; - - public void initCache() { - List documentList = mongoDBService.query(CHAIN_CONFIG_TABLE); - for (Document document : documentList) { - ChainConfigInfo configInfo = DocumentTransferTool.toInfo(document, "chainId", ChainConfigInfo.class); - Document chainDocument = mongoDBService.findOne(CHAIN_INFO_TABLE, Filters.eq("_id", configInfo.getChainId())); - ChainInfo chainInfo = ChainInfo.toInfo(chainDocument); - CacheManager.initCache(chainInfo, configInfo); - } - } - - public List getChainInfoList() { - List documentList = mongoDBService.query(CHAIN_INFO_TABLE); - if (documentList.isEmpty()) { - return null; - } - List chainList = new ArrayList<>(); - for (Document document : documentList) { - chainList.add(ChainInfo.toInfo(document)); - } - return chainList; - } - - public List getOtherChainInfoList(int chainId) { - Bson filter = Filters.ne("_id", chainId); - List documentList = mongoDBService.query(CHAIN_INFO_TABLE, filter); - if (documentList.isEmpty()) { - return null; - } - List chainList = new ArrayList<>(); - for (Document document : documentList) { - chainList.add(ChainInfo.toInfo(document)); - } - return chainList; - } - - public void addChainInfo(ChainInfo chainInfo) { - if (getChainInfo(chainInfo.getChainId()) == null) { - Document document = chainInfo.toDocument(); - mongoDBService.insertOne(CHAIN_INFO_TABLE, document); - chainInfo.setNew(false); - } - } - - @Override - public void addCacheChain(ChainInfo chainInfo, ChainConfigInfo configInfo) { - Document document = DocumentTransferTool.toDocument(configInfo, "chainId"); - mongoDBService.insertOne(CHAIN_CONFIG_TABLE, document); - - ApiCache apiCache = CacheManager.getCache(chainInfo.getChainId()); - if (apiCache == null) { - addChainInfo(chainInfo); - CacheManager.initCache(chainInfo, configInfo); - } else { - apiCache.setConfigInfo(configInfo); - } - } - - public void updateChainInfo(ChainInfo chainInfo) { - Bson filter = Filters.eq("_id", chainInfo.getChainId()); - Document document = chainInfo.toDocument(); - mongoDBService.updateOne(CHAIN_INFO_TABLE, filter, document); - } - - @Override - public void saveChainList(List chainInfoList) { - if (chainInfoList.isEmpty()) { - return; - } - for (ChainInfo chainInfo : chainInfoList) { - if (chainInfo.isNew()) { - //有可能新注册的链会占用已注销链的链ID,因此在这里需要重新查询一下 - ChainInfo chain = getChainInfo(chainInfo.getChainId()); - if (chain == null) { - addChainInfo(chainInfo); - } else { - updateChainInfo(chainInfo); - } - } else { - updateChainInfo(chainInfo); - } - } - } - - @Override - public void rollbackChainList(List chainInfoList) { - if (chainInfoList.isEmpty()) { - return; - } - for (ChainInfo chainInfo : chainInfoList) { - //缓存的链,数据不清空 - if (CacheManager.getCacheChain(chainInfo.getChainId()) != null) { - continue; - } - if (chainInfo.isNew()) { - Bson filter = Filters.eq("_id", chainInfo.getChainId()); - mongoDBService.delete(CHAIN_INFO_TABLE, filter); - CacheManager.removeApiCache(chainInfo.getChainId()); - } else { - updateChainInfo(chainInfo); - } - } - } - - public ChainInfo getChainInfo(int chainId) { - ChainInfo chainInfo = CacheManager.getCacheChain(chainId); - if (chainInfo == null) { - Document document = mongoDBService.findOne(CHAIN_INFO_TABLE, Filters.eq("_id", chainId)); - if (document != null) { - chainInfo = ChainInfo.toInfo(document); - } - } - return chainInfo; - } - - public SyncInfo getSyncInfo(int chainId) { - Document document = mongoDBService.findOne(SYNC_INFO_TABLE, Filters.eq("_id", chainId)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, "chainId", SyncInfo.class); - } - - public SyncInfo saveNewSyncInfo(int chainId, long newHeight, BlockHeaderInfo headerInfo) { - Bson query = Filters.eq("_id", chainId); - Document document = mongoDBService.findOne(SYNC_INFO_TABLE, query); - SyncInfo syncInfo; - boolean isNew = false; - if (document == null) { - isNew = true; - syncInfo = new SyncInfo(chainId, newHeight, headerInfo); - } else { - syncInfo = DocumentTransferTool.toInfo(document, "chainId", SyncInfo.class); - syncInfo.setVersion(headerInfo.getMainVersion()); - syncInfo.setBestHeight(headerInfo.getHeight()); - BigInteger reward = headerInfo.getReward() == null ? BigInteger.ZERO : headerInfo.getReward(); - BigInteger totalFee = headerInfo.getTotalFee() == null ? BigInteger.ZERO : headerInfo.getTotalFee(); - syncInfo.setTotalSupply(syncInfo.getTotalSupply().add(reward).subtract(totalFee)); - } - document = DocumentTransferTool.toDocument(syncInfo, "chainId"); - if (isNew) { - mongoDBService.insertOne(SYNC_INFO_TABLE, document); - - } else { - mongoDBService.updateOne(SYNC_INFO_TABLE, query, document); - } - return syncInfo; - } - - public void updateStep(SyncInfo syncInfo) { - if (syncInfo.getBestHeight() >= 0) { - Document document = DocumentTransferTool.toDocument(syncInfo, "chainId"); - Bson query = Filters.eq("_id", syncInfo.getChainId()); - mongoDBService.updateOne(SYNC_INFO_TABLE, query, document); - } else { - Bson query = Filters.eq("_id", syncInfo.getChainId()); - mongoDBService.delete(SYNC_INFO_TABLE, query); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java deleted file mode 100644 index 3ca17d7821..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoContractServiceImpl.java +++ /dev/null @@ -1,244 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.client.model.*; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.DBTableConstant; -import io.nuls.api.db.ContractService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniContractInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.DBTableConstant.*; - -@Component -public class MongoContractServiceImpl implements ContractService { - - @Autowired - private MongoDBService mongoDBService; - @Autowired - private MongoAccountServiceImpl mongoAccountServiceImpl; - - - @Override - public void initCache() { - //缓存NRC20 token信息 - for (ApiCache apiCache : CacheManager.getApiCaches().values()) { - List documentList = mongoDBService.query(DBTableConstant.CONTRACT_TABLE + apiCache.getChainInfo().getChainId()); - for (Document document : documentList) { - if (document.getBoolean("isNrc20")) { - Nrc20Info nrc20Info = new Nrc20Info(); - nrc20Info.setContractAddress(document.getString("_id")); - nrc20Info.setTotalSupply(document.getString("totalSupply")); - nrc20Info.setSymbol(document.getString("symbol")); - nrc20Info.setDecimal(document.getInteger("decimals")); - apiCache.addNrc20Info(nrc20Info); - } - } - } - } - - public ContractInfo getContractInfo(int chainId, String contractAddress) { - Document document = mongoDBService.findOne(CONTRACT_TABLE + chainId, Filters.eq("_id", contractAddress)); - if (document == null) { - return null; - } - ContractInfo contractInfo = ContractInfo.toInfo(document); - return contractInfo; - } - - public ContractInfo getContractInfoByHash(int chainId, String txHash) { - Document document = mongoDBService.findOne(CONTRACT_TABLE + chainId, Filters.eq("createTxHash", txHash)); - if (document == null) { - return null; - } - ContractInfo tokenInfo = DocumentTransferTool.toInfo(document, "contractAddress", ContractInfo.class); - return tokenInfo; - } - - public void saveContractInfos(int chainId, Map contractInfoMap) { - if (contractInfoMap.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - for (ContractInfo contractInfo : contractInfoMap.values()) { - Document document = contractInfo.toDocument(); - if (contractInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", contractInfo.getContractAddress()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(CONTRACT_TABLE + chainId, modelList, options); - } - - public void rollbackContractInfos(int chainId, Map contractInfoMap) { - if (contractInfoMap.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - for (ContractInfo contractInfo : contractInfoMap.values()) { - Document document = contractInfo.toDocument(); - - if (contractInfo.isNew()) { - modelList.add(new DeleteOneModel<>(Filters.eq("_id", contractInfo.getContractAddress()))); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", contractInfo.getContractAddress()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(CONTRACT_TABLE + chainId, modelList, options); - } - - public void saveContractTxInfos(int chainId, List contractTxInfos) { - if (contractTxInfos.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (ContractTxInfo txInfo : contractTxInfos) { - documentList.add(txInfo.toDocument()); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(CONTRACT_TX_TABLE + chainId, documentList, options); - } - - public void rollbackContractTxInfos(int chainId, List contractTxHashList) { - if (contractTxHashList.isEmpty()) { - return; - } - mongoDBService.delete(CONTRACT_TX_TABLE + chainId, Filters.in("txHash", contractTxHashList)); - } - - - public void saveContractResults(int chainId, List contractResultInfos) { - if (contractResultInfos.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (ContractResultInfo resultInfo : contractResultInfos) { - Document document = resultInfo.toDocument(); - documentList.add(document); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(CONTRACT_RESULT_TABLE + chainId, documentList, options); - } - - public void rollbackContractResults(int chainId, List contractTxHashList) { - if (contractTxHashList.isEmpty()) { - return; - } - mongoDBService.delete(CONTRACT_RESULT_TABLE + chainId, Filters.in("_id", contractTxHashList)); - } - - public PageInfo getContractTxList(int chainId, String contractAddress, int type, int pageNumber, int pageSize) { - Bson filter; - if (type == 0) { - filter = Filters.eq("contractAddress", contractAddress); - } else { - filter = Filters.and(Filters.eq("contractAddress", contractAddress), Filters.eq("type", type)); - } - Bson sort = Sorts.descending("time"); - List docsList = this.mongoDBService.pageQuery(CONTRACT_TX_TABLE + chainId, filter, sort, pageNumber, pageSize); - List contractTxInfos = new ArrayList<>(); - long totalCount = mongoDBService.getCount(CONTRACT_TX_TABLE + chainId, filter); - for (Document document : docsList) { - contractTxInfos.add(ContractTxInfo.toInfo(document)); - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, contractTxInfos); - return pageInfo; - } - - public PageInfo getContractList(int chainId, int pageNumber, int pageSize, int tokenType, boolean isHidden) { - Bson filter = null; - if (isHidden) { - filter = Filters.eq("tokenType", 0); - } else if (tokenType > -1) { - filter = Filters.eq("tokenType", tokenType); - } - Bson sort = Sorts.descending("createTime"); - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1).append("remark", 1).append("txCount", 1).append("status", 1) - .append("createTime", 1).append("balance", 1).append("tokenName", 1).append("symbol", 1) - .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1).append("tokenType", 1); - - List docsList = this.mongoDBService.pageQuery(CONTRACT_TABLE + chainId, filter, fields, sort, pageNumber, pageSize); - List contractInfos = new ArrayList<>(); - long totalCount = mongoDBService.getCount(CONTRACT_TABLE + chainId, filter); - - for (Document document : docsList) { - MiniContractInfo contractInfo = DocumentTransferTool.toInfo(document, "contractAddress", MiniContractInfo.class); - contractInfos.add(contractInfo); - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, contractInfos); - return pageInfo; - } - - @Override - public PageInfo getContractList(int chainId, int pageNumber, int pageSize, String address, int tokenType, boolean isHidden) { - Bson filter = null; - if (isHidden) { - filter = Filters.and(Filters.eq("tokenType", 0), Filters.eq("creater", address)); - } else if (tokenType > -1) { - filter = Filters.and(Filters.eq("tokenType", tokenType), Filters.eq("creater", address)); - } else { - filter = Filters.eq("creater", address); - } - Bson sort = Sorts.descending("createTime"); - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1).append("remark", 1).append("txCount", 1).append("status", 1) - .append("createTime", 1).append("balance", 1).append("tokenName", 1).append("symbol", 1) - .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1).append("tokenType", 1); - - List docsList = this.mongoDBService.pageQuery(CONTRACT_TABLE + chainId, filter, fields, sort, pageNumber, pageSize); - List contractInfos = new ArrayList<>(); - long totalCount = mongoDBService.getCount(CONTRACT_TABLE + chainId, filter); - - for (Document document : docsList) { - MiniContractInfo contractInfo = DocumentTransferTool.toInfo(document, "contractAddress", MiniContractInfo.class); - contractInfos.add(contractInfo); - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, contractInfos); - return pageInfo; - } - - @Override - public List getContractList(int chainId, List addressList) { - Bson filter = Filters.in("_id", addressList); - Bson sort = Sorts.descending("createTime"); - BasicDBObject fields = new BasicDBObject(); - - fields.append("_id", 1).append("remark", 1).append("txCount", 1).append("status", 1) - .append("createTime", 1).append("balance", 1).append("tokenName", 1).append("symbol", 1) - .append("decimals", 1).append("totalSupply", 1).append("creater", 1).append("alias", 1).append("tokenType", 1); - List docsList = this.mongoDBService.pageQuery(CONTRACT_TABLE + chainId, filter, fields, sort, 1, addressList.size()); - List contractInfos = new ArrayList<>(); - for (Document document : docsList) { - MiniContractInfo contractInfo = DocumentTransferTool.toInfo(document, "contractAddress", MiniContractInfo.class); - contractInfos.add(contractInfo); - } - return contractInfos; - } - - public ContractResultInfo getContractResultInfo(int chainId, String txHash) { - Document document = mongoDBService.findOne(CONTRACT_RESULT_TABLE + chainId, Filters.eq("_id", txHash)); - if (document == null) { - return null; - } - ContractResultInfo contractResultInfo = ContractResultInfo.toInfo(document); - return contractResultInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java deleted file mode 100644 index 701380954a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBService.java +++ /dev/null @@ -1,400 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.MongoClient; -import com.mongodb.MongoClientOptions; -import com.mongodb.ServerAddress; -import com.mongodb.bulk.BulkWriteResult; -import com.mongodb.client.*; -import com.mongodb.client.model.*; -import io.nuls.api.ApiContext; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.basic.InitializingBean; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.core.annotation.Order; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import static io.nuls.api.constant.DBTableConstant.DATABASE_NAME; -import static io.nuls.api.constant.DBTableConstant.TEST_TABLE; - -/** - * @author Niels - */ -@Component -@Order(0) -public class MongoDBService implements InitializingBean { - - private MongoClient client; - private MongoDatabase db; - - public MongoDBService() { - } - - public MongoDBService(MongoClient mongoClient, MongoDatabase mongoDatabase) { - this.client = mongoClient; - this.db = mongoDatabase; - } - - @Override - public void afterPropertiesSet() { - try { - long time1, time2; - time1 = System.currentTimeMillis(); - MongoClientOptions options = MongoClientOptions.builder() - .connectionsPerHost(ApiContext.maxAliveConnect) - .threadsAllowedToBlockForConnectionMultiplier(ApiContext.maxAliveConnect) - .socketTimeout(ApiContext.socketTimeout) - .maxWaitTime(ApiContext.maxWaitTime) - .connectTimeout(ApiContext.connectTimeOut) - .build(); - ServerAddress serverAddress = new ServerAddress(ApiContext.databaseUrl, ApiContext.databasePort); - MongoClient mongoClient = new MongoClient(serverAddress, options); - MongoDatabase mongoDatabase = mongoClient.getDatabase(DATABASE_NAME); - - mongoDatabase.getCollection(TEST_TABLE).drop(); - time2 = System.currentTimeMillis(); - LoggerUtil.commonLog.info("------connect mongodb use time:" + (time2 - time1)); - this.client = mongoClient; - this.db = mongoDatabase; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - System.exit(-1); - } - } - - public void createCollection(String collName) { - try { - db.createCollection(collName); - } catch (Exception e) { -// Log.warn(e.getMessage()); - } - } - - public MongoCollection getCollection(String collName) { - MongoCollection collection = db.getCollection(collName); - return collection; - } - - public void insertOne(String collName, Document document) { - MongoCollection collection = getCollection(collName); - collection.insertOne(document); - } - - public void insertOne(String collName, Map map) { - Document doc = new Document(); - doc.putAll(map); - this.insertOne(collName, doc); - } - - public void insertMany(String collName, List docList) { - if (null == docList || docList.isEmpty()) { - return; - } - MongoCollection collection = getCollection(collName); - collection.insertMany(docList); - } - - public void insertMany(String collName, List docList, InsertManyOptions options) { - if (null == docList || docList.isEmpty()) { - return; - } - MongoCollection collection = getCollection(collName); - collection.insertMany(docList, options); - } - - public List getDocumentListOfCollection(String collName) { - MongoCollection collection = getCollection(collName); - //检索所有文档 - /** - * 1. 获取迭代器FindIterable - * 2. 获取游标MongoCursor - * 3. 通过游标遍历检索出的文档集合 - * */ - FindIterable findIterable = collection.find(); - MongoCursor mongoCursor = findIterable.iterator(); - List docList = new ArrayList<>(); - while (mongoCursor.hasNext()) { - docList.add(mongoCursor.next()); - } - return docList; - } - - /** - * for example (var1): eq("a",1) - * - * @param collName - * @param var1 - * @return - */ - public Document findOne(String collName, Bson var1) { - MongoCollection collection = getCollection(collName); -// collection.up - return collection.find(var1).first(); - } - - public List query(String collName) { - MongoCollection collection = getCollection(collName); - FindIterable iterable = collection.find(); - List list = new ArrayList<>(); - MongoCursor documentMongoCursor = iterable.iterator(); - while (documentMongoCursor.hasNext()) { - list.add(documentMongoCursor.next()); - } - return list; - } - - public List query(String collName, Bson var1) { - MongoCollection collection = getCollection(collName); - FindIterable iterable = collection.find(var1); - List list = new ArrayList<>(); - MongoCursor documentMongoCursor = iterable.iterator(); - while (documentMongoCursor.hasNext()) { - list.add(documentMongoCursor.next()); - } - return list; - } - - public List query(String collName, Bson var1, Bson sort) { - MongoCollection collection = getCollection(collName); - - FindIterable iterable = collection.find(var1).sort(sort); - List list = new ArrayList<>(); - MongoCursor documentMongoCursor = iterable.iterator(); - while (documentMongoCursor.hasNext()) { - list.add(documentMongoCursor.next()); - } - return list; - } - - public List query(String collName, Bson var1, BasicDBObject fields) { - MongoCollection collection = getCollection(collName); - - FindIterable iterable = collection.find(var1).projection(fields); - List list = new ArrayList<>(); - MongoCursor documentMongoCursor = iterable.iterator(); - while (documentMongoCursor.hasNext()) { - list.add(documentMongoCursor.next()); - } - return list; - } - - - public List query(String collName, Bson var1, BasicDBObject fields, Bson sort) { - MongoCollection collection = getCollection(collName); - - FindIterable iterable = collection.find(var1).projection(fields).sort(sort); - List list = new ArrayList<>(); - MongoCursor documentMongoCursor = iterable.iterator(); - while (documentMongoCursor.hasNext()) { - list.add(documentMongoCursor.next()); - } - return list; - } - - - public long updateOne(String collName, Bson var1, Document docs) { - return this.updateOne(collName, var1, "$set", docs); - } - - public long updateOne(String collName, Bson var1, String op, Document docs) { - MongoCollection collection = getCollection(collName); - return collection.updateOne(var1, new Document(op, docs)).getModifiedCount(); - - } - - public long update(String collName, Bson var1, Document docs) { - return this.update(collName, var1, "$set", docs); - } - - public long update(String collName, Bson var1, String op, Document docs) { - MongoCollection collection = getCollection(collName); - return collection.updateMany(var1, new Document(op, docs)).getModifiedCount(); - } - - public long delete(String collName, Bson var1) { - MongoCollection collection = getCollection(collName); - return collection.deleteMany(var1).getDeletedCount(); - } - - public String createIndex(String collName, Bson index) { - MongoCollection collection = getCollection(collName); - return collection.createIndex(index); - } - - public List createIndexes(String collName, List indexModels) { - MongoCollection collection = getCollection(collName); - return collection.createIndexes(indexModels); - } - - public void dropIndexes(String collName) { - MongoCollection collection = getCollection(collName); - collection.dropIndexes(); - } - - public void dropTable(String collName) { - MongoCollection collection = getCollection(collName); - collection.drop(); - } - - public ListIndexesIterable getIndexes(String collName) { - MongoCollection collection = getCollection(collName); - return collection.listIndexes(); - } - - - public List pageQuery(String collName, int pageNumber, int pageSize) { - return pageQuery(collName, null, null, pageNumber, pageSize); - } - - public List pageQuery(String collName, Bson sort, int pageNumber, int pageSize) { - return pageQuery(collName, null, sort, pageNumber, pageSize); - } - - public List pageQuery(String collName, Bson var1, Bson sort, int pageNumber, int pageSize) { - MongoCollection collection = getCollection(collName); - List list = new ArrayList<>(); - Consumer listBlocker = new Consumer<>() { - @Override - public void accept(final Document document) { - list.add(document); - } - }; - - if (var1 == null && sort == null) { - collection.find().skip((pageNumber - 1) * pageSize).limit(pageSize).forEach(listBlocker); - } else if (var1 == null && sort != null) { - collection.find().sort(sort).skip((pageNumber - 1) * pageSize).limit(pageSize).forEach(listBlocker); - } else if (var1 != null && sort == null) { - collection.find(var1).skip((pageNumber - 1) * pageSize).limit(pageSize).forEach(listBlocker); - } else { - collection.find(var1).sort(sort).skip((pageNumber - 1) * pageSize).limit(pageSize).forEach(listBlocker); - } - return list; - } - - public List pageQuery(String collName, Bson var1, BasicDBObject fields, Bson sort, int pageNumber, int pageSize) { - MongoCollection collection = getCollection(collName); - List list = new ArrayList<>(); - Consumer listBlocker = new Consumer<>() { - @Override - public void accept(final Document document) { - list.add(document); - } - }; - - if (var1 == null && sort == null) { - collection.find().skip((pageNumber - 1) * pageSize).limit(pageSize).projection(fields).forEach(listBlocker); - } else if (var1 == null && sort != null) { - collection.find().sort(sort).skip((pageNumber - 1) * pageSize).limit(pageSize).projection(fields).forEach(listBlocker); - } else if (var1 != null && sort == null) { - collection.find(var1).skip((pageNumber - 1) * pageSize).limit(pageSize).projection(fields).forEach(listBlocker); - } else { - collection.find(var1).sort(sort).skip((pageNumber - 1) * pageSize).limit(pageSize).projection(fields).forEach(listBlocker); - } - return list; - } - - public List limitQuery(String collName, Bson var1, BasicDBObject fields, Bson sort, int start, int pageSize) { - MongoCollection collection = getCollection(collName); - List list = new ArrayList<>(); - Consumer listBlocker = new Consumer<>() { - @Override - public void accept(final Document document) { - list.add(document); - } - }; - if (start < 0) { - start = 0; - } - collection.find(var1).sort(sort).skip(start).limit(pageSize).projection(fields).forEach(listBlocker); - return list; - } - - public List limitQuery(String collName, Bson var1, Bson sort, int start, int pageSize) { - MongoCollection collection = getCollection(collName); - List list = new ArrayList<>(); - Consumer listBlocker = new Consumer<>() { - @Override - public void accept(final Document document) { - list.add(document); - } - }; - if (start < 0) { - start = 0; - } - collection.find(var1).sort(sort).skip(start).limit(pageSize).forEach(listBlocker); - return list; - } - - public long getCount(String collName, Bson var1) { - MongoCollection collection = getCollection(collName); - if (var1 == null) { - return collection.countDocuments(); - } - - return collection.countDocuments(var1); - } - - public long getCount(String collName) { - return getCount(collName, null); - } - - public long getEstimateCount(String collName) { - return getCollection(collName).estimatedDocumentCount(); - } - - public BulkWriteResult bulkWrite(String collName, List> modelList) { - MongoCollection collection = getCollection(collName); - return collection.bulkWrite(modelList); - } - - public BulkWriteResult bulkWrite(String collName, List> modelList, BulkWriteOptions options) { - MongoCollection collection = getCollection(collName); - return collection.bulkWrite(modelList, options); - } - - public ClientSession startSession() { - return client.startSession(); - } - - public Long getMax(String collName, String field, Bson filter) { - MongoCollection collection = getCollection(collName); - MongoCursor documentMongoCursor = collection.find(filter).sort(Sorts.descending(field)).limit(1).iterator(); - if (documentMongoCursor.hasNext()) { - Document document = documentMongoCursor.next(); - if (null == document) { - return null; - } - return Long.parseLong(document.get(field) + ""); - } - - return null; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java deleted file mode 100644 index 8577447253..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDBTableServiceImpl.java +++ /dev/null @@ -1,146 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.Indexes; -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.constant.DBTableConstant; -import io.nuls.api.db.*; -import io.nuls.api.model.po.AssetInfo; -import io.nuls.api.model.po.ChainConfigInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.core.basic.Result; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.DBTableConstant.TX_RELATION_SHARDING_COUNT; - -@Component -public class MongoDBTableServiceImpl implements DBTableService { - - @Autowired - private MongoDBService mongoDBService; - @Autowired - private ChainService chainService; - @Autowired - private AccountService accountService; - @Autowired - private AccountLedgerService ledgerService; - @Autowired - private AliasService aliasService; - @Autowired - private AgentService agentService; - @Autowired - private TransactionService transactionService; - @Autowired - private ContractService contractService; - - public List getChainList() { - return chainService.getChainInfoList(); - } - - public void initCache() { - chainService.initCache(); - accountService.initCache(); - ledgerService.initCache(); - aliasService.initCache(); - agentService.initCache(); -// transactionService.initCache(); - contractService.initCache(); - } - - public void addDefaultChainCache() { - ChainInfo chainInfo = new ChainInfo(); - chainInfo.setChainId(ApiContext.defaultChainId); - chainInfo.setChainName(ApiContext.defaultChainName); - AssetInfo assetInfo = new AssetInfo(ApiContext.defaultChainId, ApiContext.defaultAssetId, ApiContext.defaultSymbol, ApiContext.defaultDecimals); - chainInfo.setDefaultAsset(assetInfo); - chainInfo.getAssets().add(assetInfo); - - ChainConfigInfo configInfo = new ChainConfigInfo(chainInfo.getChainId(), ApiContext.agentChainId, ApiContext.agentAssetId, ApiContext.awardAssetId); - addChainCache(chainInfo, configInfo); - } - - public void addChainCache(ChainInfo chainInfo, ChainConfigInfo configInfo) { - Result result = WalletRpcHandler.getConsensusConfig(chainInfo.getChainId()); - if (result.isFailed()) { - throw new RuntimeException("find consensus config error"); - } - Map map = result.getData(); - String seeds = (String) map.get("seedNodes"); - List seedNodes = new ArrayList<>(); - for (String seed : seeds.split(",")) { - seedNodes.add(seed); - } - - initTables(chainInfo.getChainId()); - initTablesIndex(chainInfo.getChainId()); - - chainInfo.setSeeds(seedNodes); - chainService.addCacheChain(chainInfo, configInfo); -// transactionService.addCache(chainInfo.getChainId()); - } - - public void initTables(int chainId) { - //mongoDBService.createCollection(DBTableConstant.CHAIN_INFO_TABLE + chainId); - - mongoDBService.createCollection(DBTableConstant.SYNC_INFO_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.BLOCK_HEADER_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.BLOCK_HEX_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ACCOUNT_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.AGENT_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ALIAS_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.DEPOSIT_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.TX_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.COINDATA_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.PUNISH_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ROUND_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ROUND_ITEM_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.ACCOUNT_TOKEN_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.CONTRACT_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.CONTRACT_TX_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.CONTRACT_RESULT_TABLE + chainId); - mongoDBService.createCollection(DBTableConstant.STATISTICAL_TABLE + chainId); - - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - mongoDBService.createCollection(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i); - } - } - - private void initTablesIndex(int chainId) { - //交易关系表 - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - mongoDBService.createIndex(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i, Indexes.ascending("address")); - mongoDBService.createIndex(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i, Indexes.ascending("address", "type")); - mongoDBService.createIndex(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i, Indexes.ascending("txHash")); - mongoDBService.createIndex(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i, Indexes.descending("createTime")); - } - //账户信息表 - mongoDBService.createIndex(DBTableConstant.ACCOUNT_TABLE + chainId, Indexes.descending("totalBalance")); - mongoDBService.createIndex(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId, Indexes.descending("address")); - //交易表 - mongoDBService.createIndex(DBTableConstant.TX_TABLE + chainId, Indexes.descending("height")); - //block 表 - mongoDBService.createIndex(DBTableConstant.BLOCK_HEADER_TABLE + chainId, Indexes.ascending("hash")); - //委托记录表 - mongoDBService.createIndex(DBTableConstant.DEPOSIT_TABLE + chainId, Indexes.descending("createTime")); - //智能合约表 - mongoDBService.createIndex(DBTableConstant.CONTRACT_TABLE + chainId, Indexes.descending("createTime")); - //账户token表 - mongoDBService.createIndex(DBTableConstant.ACCOUNT_TOKEN_TABLE + chainId, Indexes.descending("balance")); - mongoDBService.createIndex(DBTableConstant.ACCOUNT_TOKEN_TABLE + chainId, Indexes.ascending("address")); - mongoDBService.createIndex(DBTableConstant.ACCOUNT_TOKEN_TABLE + chainId, Indexes.ascending("contractAddress")); - //token交易记录表 - mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("time")); - mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","fromAddress")); - mongoDBService.createIndex(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId, Indexes.descending("contractAddress","toAddress")); - //跨链交易表索引 - mongoDBService.createIndex(DBTableConstant.CROSS_TX_RELATION_TABLE + chainId, Indexes.ascending("address")); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDepositServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDepositServiceImpl.java deleted file mode 100644 index 9862f4b718..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoDepositServiceImpl.java +++ /dev/null @@ -1,209 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.client.DistinctIterable; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoCursor; -import com.mongodb.client.model.*; -import io.nuls.api.db.DepositService; -import io.nuls.api.model.po.DepositInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.StringUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import static io.nuls.api.constant.DBTableConstant.DEPOSIT_TABLE; - -@Component -public class MongoDepositServiceImpl implements DepositService { - - @Autowired - private MongoDBService mongoDBService; - - public DepositInfo getDepositInfoByKey(int chainId, String key) { - Document document = mongoDBService.findOne(DEPOSIT_TABLE + chainId, Filters.eq("_id", key)); - if (document == null) { - return null; - } - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - return depositInfo; - } - - public DepositInfo getDepositInfoByHash(int chainId, String hash) { - Document document = mongoDBService.findOne(DEPOSIT_TABLE + chainId, Filters.eq("txHash", hash)); - if (document == null) { - return null; - } - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - return depositInfo; - } - - public List getDepositListByAgentHash(int chainId, String hash) { - List depositInfos = new ArrayList<>(); - Bson bson = Filters.and(Filters.eq("agentHash", hash), Filters.eq("deleteKey", null)); - List documentList = mongoDBService.query(DEPOSIT_TABLE + chainId, bson); - if (documentList == null && documentList.isEmpty()) { - return depositInfos; - } - for (Document document : documentList) { - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - depositInfos.add(depositInfo); - } - return depositInfos; - } - - public PageInfo getDepositListByAgentHash(int chainID, String hash, int pageIndex, int pageSize) { - Bson bson = Filters.and(Filters.eq("agentHash", hash), Filters.eq("deleteKey", null)); - List documentList = mongoDBService.pageQuery(DEPOSIT_TABLE + chainID, bson, Sorts.descending("createTime"), pageIndex, pageSize); - long totalCount = mongoDBService.getCount(DEPOSIT_TABLE + chainID, bson); - - List depositInfos = new ArrayList<>(); - for (Document document : documentList) { - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - depositInfos.add(depositInfo); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, depositInfos); - return pageInfo; - } - - public List getDepositListByHash(int chainID, String hash) { - Bson bson = Filters.and(Filters.eq("txHash", hash)); - List documentList = mongoDBService.query(DEPOSIT_TABLE + chainID, bson); - - List depositInfos = new ArrayList<>(); - for (Document document : documentList) { - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - depositInfos.add(depositInfo); - } - return depositInfos; - } - - public void rollbackDeposit(int chainId, List depositInfoList) { - if (depositInfoList.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - for (DepositInfo depositInfo : depositInfoList) { - - if (depositInfo.isNew()) { - modelList.add(new DeleteOneModel<>(Filters.eq("_id", depositInfo.getKey()))); - } else { - Document document = DocumentTransferTool.toDocument(depositInfo); - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", depositInfo.getKey()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(DEPOSIT_TABLE + chainId, modelList, options); - } - - - public void saveDepositList(int chainId, List depositInfoList) { - if (depositInfoList.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - - for (DepositInfo depositInfo : depositInfoList) { - Document document = DocumentTransferTool.toDocument(depositInfo, "key"); - if (depositInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", depositInfo.getKey()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(DEPOSIT_TABLE + chainId, modelList, options); - } - - public List getDepositList(int chainId, long startHeight) { - Bson bson = Filters.and(Filters.lte("blockHeight", startHeight), Filters.eq("type", 0), Filters.or(Filters.eq("deleteHeight", 0), Filters.gt("deleteHeight", startHeight))); - - List list = this.mongoDBService.query(DEPOSIT_TABLE + chainId, bson); - List resultList = new ArrayList<>(); - for (Document document : list) { - resultList.add(DocumentTransferTool.toInfo(document, "key", DepositInfo.class)); - } - - return resultList; - } - - @Override - public BigInteger getDepositAmount(int chainId, String address, String agentHash) { - Bson filter; - if (StringUtils.isBlank(agentHash)) { - filter = Filters.eq("address", address); - } else { - filter = Filters.and(Filters.eq("address", address), Filters.eq("agentHash", agentHash)); - } - final BigInteger[] total = {BigInteger.ZERO}; - Consumer listBlocker = new Consumer<>() { - @Override - public void accept(final Document document) { - BigInteger value = new BigInteger(document.getString("amount")); - total[0] = total[0].add(value); - } - }; - MongoCollection collection = mongoDBService.getCollection(DEPOSIT_TABLE + chainId); - collection.find(filter).projection(new BasicDBObject().append("amount", 1)).forEach(listBlocker); - - return total[0]; - } - - public PageInfo getCancelDepositListByAgentHash(int chainId, String hash, int type, int pageIndex, int pageSize) { - Bson bson; - if (type != 2) { - bson = Filters.and(Filters.eq("agentHash", hash), Filters.eq("type", type)); - } else { - bson = Filters.eq("agentHash", hash); - } - List documentList = mongoDBService.pageQuery(DEPOSIT_TABLE + chainId, bson, Sorts.descending("createTime"), pageIndex, pageSize); - long totalCount = mongoDBService.getCount(DEPOSIT_TABLE + chainId, bson); - - List depositInfos = new ArrayList<>(); - for (Document document : documentList) { - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - depositInfos.add(depositInfo); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, depositInfos); - return pageInfo; - } - - public List getAgentHashList(int chainId, String address) { - Bson bson = Filters.and(Filters.eq("address", address), Filters.eq("type", 0), Filters.eq("deleteHeight", 0)); - DistinctIterable iterable = mongoDBService.getCollection(DEPOSIT_TABLE + chainId).distinct("agentHash", bson, String.class); - List list = new ArrayList<>(); - MongoCursor mongoCursor = iterable.iterator(); - while (mongoCursor.hasNext()) { - list.add(mongoCursor.next()); - } - return list; - } - - public PageInfo getDepositListByAddress(int chainId, String agentHash, String address, int pageIndex, int pageSize) { - Bson bson; - if (StringUtils.isBlank(agentHash)) { - bson = Filters.and(Filters.eq("address", address), Filters.eq("type", 0), Filters.eq("deleteHeight", 0)); - } else { - bson = Filters.and(Filters.eq("address", address), Filters.eq("agentHash", agentHash), Filters.eq("type", 0), Filters.eq("deleteHeight", 0)); - } - long totalCount = mongoDBService.getCount(DEPOSIT_TABLE + chainId, bson); - List documentList = mongoDBService.pageQuery(DEPOSIT_TABLE + chainId, bson, Sorts.descending("createTime"), pageIndex, pageSize); - List depositInfos = new ArrayList<>(); - for (Document document : documentList) { - DepositInfo depositInfo = DocumentTransferTool.toInfo(document, "key", DepositInfo.class); - depositInfos.add(depositInfo); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, depositInfos); - return pageInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoPunishServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoPunishServiceImpl.java deleted file mode 100644 index e871a281a8..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoPunishServiceImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.InsertManyOptions; -import com.mongodb.client.model.Sorts; -import io.nuls.api.db.PunishService; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.PunishLogInfo; -import io.nuls.api.model.po.TxDataInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.StringUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.util.ArrayList; -import java.util.List; - -import static com.mongodb.client.model.Filters.and; -import static com.mongodb.client.model.Filters.eq; -import static io.nuls.api.constant.DBTableConstant.PUNISH_TABLE; - -@Component -public class MongoPunishServiceImpl implements PunishService { - - @Autowired - private MongoDBService mongoDBService; - - public void savePunishList(int chainId, List punishLogList) { - if (punishLogList.isEmpty()) { - return; - } - - List documentList = new ArrayList<>(); - for (PunishLogInfo punishLog : punishLogList) { - documentList.add(DocumentTransferTool.toDocument(punishLog)); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(PUNISH_TABLE + chainId, documentList, options); - } - - public List getYellowPunishLog(int chainId, String txHash) { - List documentList = mongoDBService.query(PUNISH_TABLE + chainId, Filters.eq("txHash", txHash)); - List punishLogs = new ArrayList<>(); - for (Document document : documentList) { - PunishLogInfo punishLog = DocumentTransferTool.toInfo(document, PunishLogInfo.class); - punishLogs.add(punishLog); - } - return punishLogs; - } - - - public PunishLogInfo getRedPunishLog(int chainId, String txHash) { - Document document = mongoDBService.findOne(PUNISH_TABLE + chainId, Filters.eq("txHash", txHash)); - if (document == null) { - return null; - } - PunishLogInfo punishLog = DocumentTransferTool.toInfo(document, PunishLogInfo.class); - return punishLog; - } - - public long getYellowCount(int chainId, String agentAddress) { - Bson filter = and(eq("type", 1), eq("address", agentAddress)); - long count = mongoDBService.getCount(PUNISH_TABLE + chainId, filter); - return count; - } - - public PageInfo getPunishLogList(int chainId, int type, String address, int pageIndex, int pageSize) { - Bson filter = null; - - if (type == 0 && !StringUtils.isBlank(address)) { - filter = Filters.eq("address", address); - } else if (type > 0 && StringUtils.isBlank(address)) { - filter = Filters.eq("type", type); - } else if (type > 0 && !StringUtils.isBlank(address)) { - filter = Filters.and(eq("type", type), eq("address", address)); - } - - long totalCount = mongoDBService.getCount(PUNISH_TABLE + chainId, filter); - List documentList = mongoDBService.pageQuery(PUNISH_TABLE + chainId, filter, Sorts.descending("time"), pageIndex, pageSize); - List punishLogList = new ArrayList<>(); - for (Document document : documentList) { - punishLogList.add(DocumentTransferTool.toInfo(document, PunishLogInfo.class)); - } - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, punishLogList); - return pageInfo; - } - - - public void rollbackPunishLog(int chainID, List txHashs, long height) { - if (txHashs.isEmpty()) { - return; - } - mongoDBService.delete(PUNISH_TABLE + chainID, Filters.eq("blockHeight", height)); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java deleted file mode 100644 index 71355e6d60..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoRoundServiceImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.Sorts; -import io.nuls.api.db.RoundService; -import io.nuls.api.model.po.PocRound; -import io.nuls.api.model.po.PocRoundItem; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import org.bson.Document; - -import java.util.ArrayList; -import java.util.List; - -import static com.mongodb.client.model.Filters.eq; -import static io.nuls.api.constant.DBTableConstant.ROUND_ITEM_TABLE; -import static io.nuls.api.constant.DBTableConstant.ROUND_TABLE; - -@Component -public class MongoRoundServiceImpl implements RoundService { - - @Autowired - private MongoDBService mongoDBService; - - public PocRound getRound(int chainId, long roundIndex) { - Document document = this.mongoDBService.findOne(ROUND_TABLE + chainId, eq("_id", roundIndex)); - if (null == document) { - return null; - } - return DocumentTransferTool.toInfo(document, "index", PocRound.class); - } - - public List getRoundItemList(int chainId, long roundIndex) { - List list = this.mongoDBService.query(ROUND_ITEM_TABLE + chainId, eq("roundIndex", roundIndex), Sorts.ascending("order")); - List itemList = new ArrayList<>(); - for (Document document : list) { - itemList.add(DocumentTransferTool.toInfo(document, "id", PocRoundItem.class)); - } - return itemList; - } - - public void saveRound(int chainId, PocRound round) { - Document document = DocumentTransferTool.toDocument(round, "index"); - this.mongoDBService.insertOne(ROUND_TABLE + chainId, document); - } - - public long updateRound(int chainId, PocRound round) { - Document document = DocumentTransferTool.toDocument(round, "index"); - return this.mongoDBService.updateOne(ROUND_TABLE + chainId, eq("_id", round.getIndex()), document); - } - - public long updateRoundItem(int chainId, PocRoundItem item) { - Document document = DocumentTransferTool.toDocument(item, "id"); - return this.mongoDBService.updateOne(ROUND_ITEM_TABLE + chainId, eq("_id", item.getId()), document); - } - - public void saveRoundItemList(int chainId, List itemList) { - List docsList = new ArrayList<>(); - for (PocRoundItem item : itemList) { - Document document = DocumentTransferTool.toDocument(item, "id"); - docsList.add(document); - } - try { - this.mongoDBService.insertMany(ROUND_ITEM_TABLE + chainId, docsList); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - public void removeRound(int chainId, long roundIndex) { - this.mongoDBService.delete(ROUND_TABLE + chainId, eq("_id", roundIndex)); - this.mongoDBService.delete(ROUND_ITEM_TABLE + chainId, eq("roundIndex", roundIndex)); - } - - public long getTotalCount(int chainId) { - return this.mongoDBService.getEstimateCount(ROUND_TABLE + chainId); - } - - public List getRoundList(int chainId, int pageIndex, int pageSize) { - List list = this.mongoDBService.pageQuery(ROUND_TABLE + chainId, Sorts.descending("_id"), pageIndex, pageSize); - List roundList = new ArrayList<>(); - for (Document document : list) { - roundList.add(DocumentTransferTool.toInfo(document, "index", PocRound.class)); - } - return roundList; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoStatisticalServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoStatisticalServiceImpl.java deleted file mode 100644 index d84c91818c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoStatisticalServiceImpl.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.Sorts; -import io.nuls.api.db.StatisticalService; -import io.nuls.api.model.po.ChainStatisticalInfo; -import io.nuls.api.model.po.KeyValue; -import io.nuls.api.model.po.StatisticalInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.DoubleUtils; -import org.bson.Document; - -import java.math.BigInteger; -import java.util.*; - -import static com.mongodb.client.model.Filters.*; -import static io.nuls.api.constant.DBTableConstant.*; - -/** - * @author Niels - */ -@Component -public class MongoStatisticalServiceImpl implements StatisticalService { - @Autowired - private MongoDBService mongoDBService; - - public long getBestId(int chainId) { - Document document = mongoDBService.findOne(STATISTICAL_TABLE + chainId, Filters.eq("_id", LAST_STATISTICAL_TIME)); - if (null == document) { - return -1; - } - return document.getLong("value"); - } - - public void saveBestId(int chainId, long id) { - Document document = new Document(); - document.put("_id", LAST_STATISTICAL_TIME); - document.put("value", id); - mongoDBService.insertOne(STATISTICAL_TABLE + chainId, document); - } - - public void updateBestId(int chainId, long id) { - Document document = new Document(); - document.put("_id", LAST_STATISTICAL_TIME); - document.put("value", id); - mongoDBService.updateOne(STATISTICAL_TABLE + chainId, Filters.eq("_id", LAST_STATISTICAL_TIME), document); - } - - public void insert(int chainId, StatisticalInfo info) { - Document document = DocumentTransferTool.toDocument(info, "time"); - mongoDBService.insertOne(STATISTICAL_TABLE + chainId, document); - } - - public long calcTxCount(int chainId, long start, long end) { - long count = this.mongoDBService.getCount(TX_TABLE + chainId, and(gte("createTime", start), lte("createTime", end))); - return count; - } - - /** - * @param type 0:14天,1:周,2:月,3:年,4:全部 - * @return - */ - public List getStatisticalList(int chainId, int type, String field) { - List list = new ArrayList<>(); - long startTime = getStartTime(type); - List documentList = mongoDBService.query(STATISTICAL_TABLE + chainId, gte("_id", startTime), Sorts.ascending("_id")); - if (documentList.size() < 32) { - for (Document document : documentList) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(document.get("month") + "/" + document.get("date")); - if (ANNUALIZE_REWARD.equals(field)) { - keyValue.setValue(document.getDouble(field)); - } else if (CONSENSUS_LOCKED.equals(field)) { - keyValue.setValue(new BigInteger(document.getString(field))); - } else { - keyValue.setValue(document.getLong(field)); - } - list.add(keyValue); - } - } else { - if (TX_COUNT.equals(field)) { - summaryLong(list, documentList, field); - } else if (ANNUALIZE_REWARD.equals(field)) { - avgDouble(list, documentList, field); - } else if (CONSENSUS_LOCKED.equals(field)) { - avgBigInteger(list, documentList, field); - } else { - avgLong(list, documentList, field); - } - } - return list; - } - - @Override - public ChainStatisticalInfo getChainStatisticalInfo(int chainId) { - Document document = mongoDBService.findOne(CHAIN_STATISTICAL_TABLE, Filters.eq("chainId", chainId)); - if (document == null) { - return null; - } - return DocumentTransferTool.toInfo(document, ChainStatisticalInfo.class); - } - - @Override - public void saveChainStatisticalInfo(ChainStatisticalInfo statisticalInfo) { - Document document = DocumentTransferTool.toDocument(statisticalInfo); - mongoDBService.insertOne(CHAIN_STATISTICAL_TABLE, document); - } - - private void summaryLong(List list, List documentList, String field) { - List keyList = new ArrayList<>(); - Map map = new HashMap<>(); - - for (Document document : documentList) { - String key = document.get("year") + "/" + document.get("month"); - Long value = map.get(key); - if (null == value) { - value = 0L; - keyList.add(key); - } - value += document.getLong(field); - map.put(key, value); - } - for (String key : keyList) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(key); - keyValue.setValue(map.get(key)); - list.add(keyValue); - } - } - - private void avgBigInteger(List list, List documentList, String field) { - List keyList = new ArrayList<>(); - Map> map = new HashMap<>(); - for (Document document : documentList) { - String key = document.get("year") + "/" + document.get("month"); - List value = map.get(key); - if (null == value) { - value = new ArrayList<>(); - keyList.add(key); - map.put(key, value); - } - value.add(new BigInteger(document.get(field).toString())); - } - for (String key : keyList) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(key); - BigInteger value = BigInteger.ZERO; - List valueList = map.get(key); - for (BigInteger val : valueList) { - value = value.add(val); - } - - keyValue.setValue(value.divide(new BigInteger(valueList.size() + ""))); - list.add(keyValue); - } - - } - - private void avgLong(List list, List documentList, String field) { - List keyList = new ArrayList<>(); - Map> map = new HashMap<>(); - - for (Document document : documentList) { - String key = document.get("year") + "/" + document.get("month"); - List value = map.get(key); - if (null == value) { - value = new ArrayList<>(); - keyList.add(key); - map.put(key, value); - } - value.add(Long.parseLong(document.get(field) + "")); - } - for (String key : keyList) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(key); - long value = 0; - List valueList = map.get(key); - for (long val : valueList) { - value += val; - } - keyValue.setValue(value / valueList.size()); - list.add(keyValue); - } - } - - private void avgDouble(List list, List documentList, String field) { - List keyList = new ArrayList<>(); - Map> map = new HashMap<>(); - - for (Document document : documentList) { - String key = document.get("year") + "/" + document.get("month"); - List value = map.get(key); - if (null == value) { - value = new ArrayList<>(); - keyList.add(key); - map.put(key, value); - } - value.add(document.getDouble(field)); - } - for (String key : keyList) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(key); - double value = 0; - List valueList = map.get(key); - for (double val : valueList) { - value += val; - } - keyValue.setValue(DoubleUtils.div(value, valueList.size(), 2)); - list.add(keyValue); - } - } - - private long getStartTime(int type) { - if (4 == type) { - return 0; - } - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - switch (type) { - case 0: - calendar.add(Calendar.DATE, -14); - break; - case 1: - calendar.add(Calendar.DATE, -7); - break; - case 2: - calendar.add(Calendar.MONTH, -1); - break; - case 3: - calendar.add(Calendar.YEAR, -1); - break; - default: - } - return calendar.getTime().getTime(); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java deleted file mode 100644 index c7e81ee25f..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTokenServiceImpl.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.client.model.*; -import io.nuls.api.db.TokenService; -import io.nuls.api.model.po.AccountTokenInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.TokenTransfer; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.model.BigIntegerUtils; -import io.nuls.core.model.StringUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.DBTableConstant.*; - -@Component -public class MongoTokenServiceImpl implements TokenService { - - @Autowired - private MongoDBService mongoDBService; - - public AccountTokenInfo getAccountTokenInfo(int chainId, String key) { - Bson query = Filters.eq("_id", key); - - Document document = mongoDBService.findOne(ACCOUNT_TOKEN_TABLE + chainId, query); - if (document == null) { - return null; - } - AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); - return tokenInfo; - } - - public void saveAccountTokens(int chainId, Map accountTokenInfos) { - if (accountTokenInfos.isEmpty()) { - return; - } - List> modelList = new ArrayList<>(); - for (AccountTokenInfo tokenInfo : accountTokenInfos.values()) { - Document document = DocumentTransferTool.toDocument(tokenInfo, "key"); - document.put("balance", BigIntegerUtils.bigIntegerToString(tokenInfo.getBalance(), 32)); - if (tokenInfo.isNew()) { - modelList.add(new InsertOneModel(document)); - } else { - modelList.add(new ReplaceOneModel<>(Filters.eq("_id", tokenInfo.getKey()), document)); - } - } - BulkWriteOptions options = new BulkWriteOptions(); - options.ordered(false); - mongoDBService.bulkWrite(ACCOUNT_TOKEN_TABLE + chainId, modelList, options); - } - - public PageInfo getAccountTokens(int chainId, String address, int pageNumber, int pageSize) { - Bson query = Filters.eq("address", address); - Bson sort = Sorts.descending("balance"); - List docsList = this.mongoDBService.pageQuery(ACCOUNT_TOKEN_TABLE + chainId, query, sort, pageNumber, pageSize); - List accountTokenList = new ArrayList<>(); - long totalCount = mongoDBService.getCount(ACCOUNT_TOKEN_TABLE + chainId, query); - - for (Document document : docsList) { - AccountTokenInfo tokenInfo = DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class); - accountTokenList.add(tokenInfo); - document = mongoDBService.findOne(CONTRACT_TABLE + chainId, Filters.eq("_id", tokenInfo.getContractAddress())); - tokenInfo.setStatus(document.getInteger("status")); - } - - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, accountTokenList); - return pageInfo; - } - - public PageInfo getContractTokens(int chainId, String contractAddress, int pageNumber, int pageSize) { - Bson query = Filters.eq("contractAddress", contractAddress); - Bson sort = Sorts.descending("balance"); - List docsList = this.mongoDBService.pageQuery(ACCOUNT_TOKEN_TABLE + chainId, query, sort, pageNumber, pageSize); - List accountTokenList = new ArrayList<>(); - long totalCount = mongoDBService.getCount(ACCOUNT_TOKEN_TABLE + chainId, query); - for (Document document : docsList) { - accountTokenList.add(DocumentTransferTool.toInfo(document, "key", AccountTokenInfo.class)); - } - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize, totalCount, accountTokenList); - return pageInfo; - } - - - public void saveTokenTransfers(int chainId, List tokenTransfers) { - if (tokenTransfers.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (TokenTransfer tokenTransfer : tokenTransfers) { - Document document = DocumentTransferTool.toDocument(tokenTransfer); - documentList.add(document); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(TOKEN_TRANSFER_TABLE + chainId, documentList, options); - } - - public void rollbackTokenTransfers(int chainId, List tokenTxHashs, long height) { - if (tokenTxHashs.isEmpty()) { - return; - } - mongoDBService.delete(TOKEN_TRANSFER_TABLE + chainId, Filters.eq("height", height)); - } - - public PageInfo getTokenTransfers(int chainId, String address, String contractAddress, int pageIndex, int pageSize) { - Bson filter; - if (StringUtils.isNotBlank(address) && StringUtils.isNotBlank(contractAddress)) { - Bson addressFilter = Filters.or(Filters.eq("fromAddress", address), Filters.eq("toAddress", address)); - filter = Filters.and(Filters.eq("contractAddress", contractAddress), addressFilter); - } else if (StringUtils.isNotBlank(contractAddress)) { - filter = Filters.eq("contractAddress", contractAddress); - } else { - filter = Filters.or(Filters.eq("fromAddress", address), Filters.eq("toAddress", address)); - } - Bson sort = Sorts.descending("time"); - List docsList = this.mongoDBService.pageQuery(TOKEN_TRANSFER_TABLE + chainId, filter, sort, pageIndex, pageSize); - List tokenTransfers = new ArrayList<>(); - long totalCount = mongoDBService.getCount(TOKEN_TRANSFER_TABLE + chainId, filter); - for (Document document : docsList) { - tokenTransfers.add(DocumentTransferTool.toInfo(document, TokenTransfer.class)); - } - - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, tokenTransfers); - return pageInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java deleted file mode 100644 index e659c114ba..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/db/mongo/MongoTransactionServiceImpl.java +++ /dev/null @@ -1,609 +0,0 @@ -package io.nuls.api.db.mongo; - -import com.mongodb.BasicDBObject; -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.InsertManyOptions; -import com.mongodb.client.model.Sorts; -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.AnalysisHandler; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.constant.DBTableConstant; -import io.nuls.api.db.TransactionService; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniTransactionInfo; -import io.nuls.api.model.rpc.BalanceInfo; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.InitializingBean; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.TxType; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.rpc.util.NulsDateUtils; -import org.bson.Document; -import org.bson.conversions.Bson; - -import java.math.BigInteger; -import java.util.*; - -import static com.mongodb.client.model.Filters.*; -import static io.nuls.api.constant.DBTableConstant.*; - -@Component -public class MongoTransactionServiceImpl implements TransactionService, InitializingBean { - - @Autowired - private MongoDBService mongoDBService; - - @Autowired - private MongoBlockServiceImpl mongoBlockServiceImpl; - - Map> relationMap; - Map> deleteRelationMap; - Set txUnConfirmHashSet; - - // Map>> deleteRelationMap; -// - @Override - public void afterPropertiesSet() { - relationMap = new HashMap<>(); - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - List documentList = new ArrayList<>(); - relationMap.put("relation_" + i, documentList); - } - - deleteRelationMap = new HashMap<>(); - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - List modelList = new ArrayList<>(); - deleteRelationMap.put("relation_" + i, modelList); - } - txUnConfirmHashSet = new HashSet<>(); -// deleteRelationMap = new HashMap<>(); -// for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { -// List> modelList = new ArrayList<>(); -// deleteRelationMap.put("relation_" + i, modelList); -// } - } - - public void initCache() { -// txCountMap = new HashMap<>(); -// for (ApiCache apiCache : CacheManager.getApiCaches().values()) { -// long totalCount = mongoDBService.getCount(TX_TABLE + apiCache.getChainInfo().getChainId()); -// txCountMap.put(apiCache.getChainInfo().getChainId(), totalCount); -// } - } - - - public void deleteTxs(int chainId) { - long totalCount = mongoDBService.getEstimateCount(TX_TABLE + chainId); - if (totalCount > 1000000) { - int deleteCount = (int) (totalCount - 1000000); - BasicDBObject fields = new BasicDBObject(); - fields.append("_id", 1); - List docList = this.mongoDBService.pageQuery(TX_TABLE + chainId, null, fields, Sorts.ascending("createTime"), 1, deleteCount); - List hashList = new ArrayList<>(); - for (Document document : docList) { - hashList.add(document.getString("_id")); - } - mongoDBService.delete(TX_TABLE + chainId, Filters.in("_id", hashList)); - } - } - - //tx_table只存储最近100万条数据 - public void saveTxList(int chainId, List txList) { - if (txList.isEmpty()) { - return; - } - long time1, time2; - time1 = System.currentTimeMillis(); -// //当交易记录表超过100万条时,首先删除要最开始保存的记录 -// totalCount += txList.size(); -// if (totalCount > 1000000) { -// int deleteCount = (int) (totalCount - 1000000); -// BasicDBObject fields = new BasicDBObject(); -// fields.append("_id", 1); -// List docList = this.mongoDBService.pageQuery(TX_TABLE + chainId, null, fields, Sorts.ascending("createTime"), 1, deleteCount); -// List hashList = new ArrayList<>(); -// for (Document document : docList) { -// hashList.add(document.getString("_id")); -// } -// mongoDBService.delete(TX_TABLE + chainId, Filters.in("_id", hashList)); -//// time2 = System.currentTimeMillis(); -//// System.out.println("-----------delete, use: " + (time2 - time1)); -//// time1 = System.currentTimeMillis(); -// totalCount = 1000000; -// } - - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - - List documentList = new ArrayList<>(); - - int i = 0; - for (TransactionInfo txInfo : txList) { - if (txUnConfirmHashSet.contains(txInfo.getHash())) { - deleteUnConfirmTx(chainId, txInfo.getHash()); - } - documentList.add(txInfo.toDocument()); - i++; - if (i == 1000) { - mongoDBService.insertMany(TX_TABLE + chainId, documentList, options); - documentList.clear(); - i = 0; - } - } - if (documentList.size() != 0) { - mongoDBService.insertMany(TX_TABLE + chainId, documentList, options); - } -// time2 = System.currentTimeMillis(); -// System.out.println("-----------insertMany, use: " + (time2 - time1)); - } - - public void saveCoinDataList(int chainId, List coinDataList) { - if (coinDataList.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (CoinDataInfo info : coinDataList) { - documentList.add(info.toDocument()); - } - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(COINDATA_TABLE + chainId, documentList, options); - } - - public void saveTxRelationList(int chainId, Set relationInfos) { - if (relationInfos.isEmpty()) { - return; - } - relationMapClear(); - - for (TxRelationInfo relationInfo : relationInfos) { - Document document = relationInfo.toDocument(); - int i = Math.abs(relationInfo.getAddress().hashCode()) % TX_RELATION_SHARDING_COUNT; - List documentList = relationMap.get("relation_" + i); - documentList.add(document); - } - - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - - List saveList = new ArrayList(); - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - saveList.clear(); - List documentList = relationMap.get("relation_" + i); - if (documentList.size() == 0) { - continue; - } - for (Document document : documentList) { - saveList.add(document); - if (saveList.size() == 1000) { - mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); - saveList.clear(); - } - } - if (saveList.size() != 0) { - mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); - } - } - } - - public PageInfo getTxList(int chainId, int pageIndex, int pageSize, int type, - boolean isHidden, long startTime, long endTime) { - Bson filter = null; - if (type > 0 && startTime > 0 && endTime > 0) { - filter = Filters.and(Filters.eq("type", type), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (type > 0 && startTime > 0) { - filter = Filters.and(Filters.eq("type", type), Filters.gte("createTime", startTime)); - } else if (type > 0 && endTime > 0) { - filter = Filters.and(Filters.eq("type", type), Filters.lte("createTime", endTime)); - } else if (type > 0) { - filter = Filters.eq("type", type); - } else if (isHidden && startTime > 0 && endTime > 0) { - filter = Filters.and(ne("type", 1), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (isHidden && startTime > 0) { - filter = Filters.and(ne("type", 1), Filters.gte("createTime", startTime)); - } else if (isHidden && endTime > 0) { - filter = Filters.and(ne("type", 1), Filters.lte("createTime", endTime)); - } else if (isHidden) { - filter = ne("type", 1); - } else if (startTime > 0 && endTime > 0) { - filter = Filters.and(Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (startTime > 0) { - filter = Filters.gte("createTime", startTime); - } else if (endTime > 0) { - filter = Filters.lte("createTime", endTime); - } - long totalCount = mongoDBService.getCount(TX_TABLE + chainId, filter); - List docList = this.mongoDBService.pageQuery(TX_TABLE + chainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); - List txList = new ArrayList<>(); - for (Document document : docList) { - txList.add(MiniTransactionInfo.toInfo(document)); - } - - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, txList); - return pageInfo; - } - - @Override - public PageInfo getCrossTxList(int chainId, int crossChainId, int pageIndex, int pageSize, long startTime, long endTime) { - Bson filter = null; - if (startTime > 0 && endTime > 0) { - filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.gte("createTime", startTime), Filters.lte("createTime", endTime)); - } else if (startTime > 0) { - filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.gte("createTime", startTime)); - } else if (endTime > 0) { - filter = Filters.and(Filters.eq("chainId", crossChainId), Filters.lte("createTime", endTime)); - } else { - filter = Filters.eq("chainId", crossChainId); - } - long totalCount = mongoDBService.getCount(CROSS_TX_RELATION_TABLE + chainId, filter); - List docList = this.mongoDBService.pageQuery(CROSS_TX_RELATION_TABLE + chainId, filter, Sorts.descending("createTime"), pageIndex, pageSize); - List txList = new ArrayList<>(); - for (Document document : docList) { - txList.add(CrossTxRelationInfo.toInfo(document)); - } - - PageInfo pageInfo = new PageInfo<>(pageIndex, pageSize, totalCount, txList); - return pageInfo; - } - - - public void saveCrossTxRelationList(int chainId, Set relationInfos) { - if (relationInfos.isEmpty()) { - return; - } - List documentList = new ArrayList<>(); - for (CrossTxRelationInfo relationInfo : relationInfos) { - Document document = relationInfo.toDocument(); - documentList.add(document); - } - - InsertManyOptions options = new InsertManyOptions(); - options.ordered(false); - mongoDBService.insertMany(CROSS_TX_RELATION_TABLE + chainId, documentList, options); -// List saveList = new ArrayList(); -// for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { -// saveList.clear(); -// List documentList = relationMap.get("relation_" + i); -// if (documentList.size() == 0) { -// continue; -// } -// for (Document document : documentList) { -// saveList.add(document); -// if (saveList.size() == 1000) { -// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); -// saveList.clear(); -// } -// } -// if (saveList.size() != 0) { -// mongoDBService.insertMany(TX_RELATION_TABLE + chainId + "_" + i, saveList, options); -// } -// } - } - - - @Override - public List getUnConfirmList(int chainId) { - List docList = mongoDBService.query(TX_UNCONFIRM_TABLE + chainId); - List txHexInfoList = new ArrayList<>(); - for (Document document : docList) { - TxHexInfo txHexInfo = DocumentTransferTool.toInfo(document, "txHash", TxHexInfo.class); - txHexInfoList.add(txHexInfo); - txUnConfirmHashSet.add(txHexInfo.getTxHash()); - } - return txHexInfoList; - } - - public List getBlockTxList(int chainId, long blockHeight, int type) { - List txList = new ArrayList<>(); - BlockHeaderInfo blockInfo = mongoBlockServiceImpl.getBlockHeader(chainId, blockHeight); - if (blockInfo == null) { - return txList; - } - Result result = WalletRpcHandler.getBlockInfo(chainId, blockHeight); - if (result.isFailed()) { - return txList; - } - for (TransactionInfo tx : result.getData().getTxList()) { - if (type == 0) { - txList.add(new MiniTransactionInfo(tx)); - } else if (tx.getType() == type) { - txList.add(new MiniTransactionInfo(tx)); - } - } - return txList; - } - - public TransactionInfo getTx(int chainId, String txHash) { - Document document = mongoDBService.findOne(TX_TABLE + chainId, eq("_id", txHash)); - if (null == document) { - return null; - } - TransactionInfo txInfo = TransactionInfo.fromDocument(document); - document = mongoDBService.findOne(COINDATA_TABLE + chainId, eq("_id", txHash)); - CoinDataInfo coinDataInfo = CoinDataInfo.toInfo(document); - txInfo.setCoinTos(coinDataInfo.getToList()); - txInfo.setCoinFroms(coinDataInfo.getFromList()); - return txInfo; - } - -// public void rollbackTxRelationList(int chainId, Set relationInfos) { -// if (relationInfos.isEmpty()) { -// return; -// } -// -// long time1, time2; -// time1 = System.currentTimeMillis(); -// rollbackClear(); -// -// for (TxRelationInfo relationInfo : relationInfos) { -// DeleteManyModel model = new DeleteManyModel(Filters.eq("txHash", relationInfo.getTxHash())); -// int i = Math.abs(relationInfo.getAddress().hashCode()) % TX_RELATION_SHARDING_COUNT; -// List> list = deleteRelationMap.get("relation_" + i); -// list.add(model); -// } -// -// BulkWriteOptions options = new BulkWriteOptions(); -// options.ordered(false); -// for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { -// List> list = deleteRelationMap.get("relation_" + i); -// if (list.size() == 0) { -// continue; -// } -// mongoDBService.bulkWrite(TX_RELATION_TABLE + chainId + "_" + i, list, options); -// } -// -// time2 = System.currentTimeMillis(); -// System.out.println("----------rollbackTxRelationList, count:" + relationInfos.size() + "-----------use:" + (time2 - time1)); -// } - - - public void rollbackTxRelationList(int chainId, Set relationInfos) { - if (relationInfos.isEmpty()) { - return; - } - relationRollbackClear(); - - for (TxRelationInfo relationInfo : relationInfos) { - int i = Math.abs(relationInfo.getAddress().hashCode()) % TX_RELATION_SHARDING_COUNT; - List list = deleteRelationMap.get("relation_" + i); - list.add(relationInfo.getTxHash()); - } - - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - List list = deleteRelationMap.get("relation_" + i); - if (list.size() == 0) { - continue; - } - mongoDBService.delete(TX_RELATION_TABLE + chainId + "_" + i, Filters.in("txHash", list)); - } - } - - - /** - * 这种实现方式,效率低些 - * @param chainId - * @param txHashList - */ -// public void rollbackTx(int chainId, List txHashList) { -// if (txHashList.isEmpty()) { -// return; -// } -// List> list = new ArrayList<>(); -// for (String hash : txHashList) { -// DeleteOneModel model = new DeleteOneModel(Filters.eq("_id", hash)); -// list.add(model); -// } -// BulkWriteOptions options = new BulkWriteOptions(); -// options.ordered(false); -// -// long time1, time2; -// time1 = System.currentTimeMillis(); -// mongoDBService.bulkWrite(COINDATA_TABLE + chainId, list, options); -// mongoDBService.bulkWrite(TX_TABLE + chainId, list, options); -// time2 = System.currentTimeMillis(); -// -// System.out.println("---------rollbackTx count:" + list.size() + ",----use:" + (time2 - time1)); -// } - - /** - * 这种实现方式,效率高些 - * - * @param chainId - * @param txHashList - */ - public void rollbackTx(int chainId, List txHashList) { - if (txHashList.isEmpty()) { - return; - } - // mongoDBService.delete(COINDATA_TABLE + chainId, Filters.in("_id", txHashList)); - mongoDBService.delete(TX_TABLE + chainId, Filters.in("_id", txHashList)); - } - - @Override - public void saveUnConfirmTx(int chainId, TransactionInfo tx, String txHex) { - Set txRelationInfoSet = new HashSet<>(); - if (tx.getType() == TxType.COIN_BASE) { - processCoinBaseTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.TRANSFER) { - processTransferTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.ACCOUNT_ALIAS) { - processAliasTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.REGISTER_AGENT) { - processCreateAgentTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.DEPOSIT) { - processDepositTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CANCEL_DEPOSIT) { - processCancelDepositTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.STOP_AGENT) { - processStopAgentTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CROSS_CHAIN) { - processCrossTransferTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CREATE_CONTRACT) { - processCreateContract(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CALL_CONTRACT) { - processCallContract(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.DELETE_CONTRACT) { - processDeleteContract(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CONTRACT_TRANSFER) { - processTransferTx(chainId, tx, txRelationInfoSet); - } else if (tx.getType() == TxType.CONTRACT_RETURN_GAS) { - processCoinBaseTx(chainId, tx, txRelationInfoSet); - } - - List documentList = new ArrayList<>(); - for (TxRelationInfo relationInfo : txRelationInfoSet) { - documentList.add(relationInfo.toDocument()); - } - mongoDBService.insertMany(TX_UNCONFIRM_RELATION_TABLE + chainId, documentList); - TxHexInfo hexInfo = new TxHexInfo(); - hexInfo.setTxHash(tx.getHash()); - hexInfo.setTxHex(txHex); - hexInfo.setTime(NulsDateUtils.getCurrentTimeMillis()); - - Document document = DocumentTransferTool.toDocument(hexInfo, "txHash"); - mongoDBService.insertOne(TX_UNCONFIRM_TABLE + chainId, document); - txUnConfirmHashSet.add(hexInfo.getTxHash()); - } - - @Override - public void deleteUnConfirmTx(int chainId, String txHash) { - Bson filter1 = Filters.eq("_id", txHash); - Bson filter2 = Filters.eq("txHash", txHash); - mongoDBService.delete(TX_UNCONFIRM_TABLE + chainId, filter1); - mongoDBService.delete(TX_UNCONFIRM_RELATION_TABLE + chainId, filter2); - txUnConfirmHashSet.remove(txHash); - } - - private void processCoinBaseTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - if (tx.getCoinTos() == null || tx.getCoinTos().isEmpty()) { - return; - } - for (CoinToInfo output : tx.getCoinTos()) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, balanceInfo.getTotalBalance())); - } - } - - private void processTransferTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, balanceInfo.getTotalBalance())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, balanceInfo.getTotalBalance())); - } - } - } - - private void processCrossTransferTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - if (chainId != AddressTool.getChainIdByAddress(input.getAddress())) { - continue; - } - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, balanceInfo.getTotalBalance())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - if (chainId != AddressTool.getChainIdByAddress(output.getAddress())) { - continue; - } - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, balanceInfo.getTotalBalance())); - } - } - } - - private void processAliasTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, balanceInfo.getTotalBalance())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, balanceInfo.getTotalBalance())); - } - } - } - - private void processCreateAgentTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinFromInfo input = tx.getCoinFroms().get(0); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - } - - private void processDepositTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinFromInfo input = tx.getCoinFroms().get(0); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - } - - private void processCancelDepositTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinFromInfo input = tx.getCoinFroms().get(0); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - } - - private void processStopAgentTx(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinToInfo agentOutput = null; - //处理代理节点地址相关数据 - for (CoinToInfo output : tx.getCoinTos()) { - if (output.getLockTime() > 0) { - agentOutput = output; - break; - } - } - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, agentOutput.getAddress(), agentOutput.getChainId(), agentOutput.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(agentOutput, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - //处理其他委托的地址相关数据 - for (int i = 0; i < tx.getCoinTos().size(); i++) { - CoinToInfo output = tx.getCoinTos().get(i); - if (!output.getAddress().equals(agentOutput.getAddress())) { - balanceInfo = WalletRpcHandler.getAccountBalance(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO, balanceInfo.getTotalBalance())); - } - } - } - - private void processCreateContract(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinFromInfo input = tx.getCoinFroms().get(0); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - } - - private void processCallContract(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - processTransferTx(chainId, tx, txRelationInfoSet); - } - - private void processDeleteContract(int chainId, TransactionInfo tx, Set txRelationInfoSet) { - CoinFromInfo input = tx.getCoinFroms().get(0); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), balanceInfo.getTotalBalance())); - } - - private void relationMapClear() { - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - List list = relationMap.get("relation_" + i); - list.clear(); - } - } - - private void relationRollbackClear() { - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - List list = deleteRelationMap.get("relation_" + i); - list.clear(); - } - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/exception/DbRuntimeException.java b/module/nuls-public-service/src/main/java/io/nuls/api/exception/DbRuntimeException.java deleted file mode 100644 index 6ae2bd7067..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/exception/DbRuntimeException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * - * * MIT License - * * Copyright (c) 2017-2019 nuls.io - * * Permission is hereby granted, free of charge, to any person obtaining a copy - * * of this software and associated documentation files (the "Software"), to deal - * * in the Software without restriction, including without limitation the rights - * * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * * copies of the Software, and to permit persons to whom the Software is - * * furnished to do so, subject to the following conditions: - * * The above copyright notice and this permission notice shall be included in all - * * copies or substantial portions of the Software. - * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * * SOFTWARE. - * - */ - -package io.nuls.api.exception; - -/** - * 数据库操作异常 - * - * @author captain - * @version 1.0 - * @date 18-12-12 下午12:40 - */ -public class DbRuntimeException extends RuntimeException { - - public DbRuntimeException(String message) { - super(message); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/exception/JsonRpcException.java b/module/nuls-public-service/src/main/java/io/nuls/api/exception/JsonRpcException.java deleted file mode 100644 index 8e76636862..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/exception/JsonRpcException.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.exception; - - -import io.nuls.api.model.rpc.RpcResultError; -import io.nuls.core.constant.ErrorCode; - -/** - * @author Niels - */ -public class JsonRpcException extends RuntimeException { - private RpcResultError error; - - public JsonRpcException() { - } - - public JsonRpcException(ErrorCode errorCode) { - RpcResultError error = new RpcResultError(); - error.setCode(errorCode.getCode()); - error.setMessage(errorCode.getMsg()); - this.error = error; - } - - public JsonRpcException(RpcResultError error) { - this.error = error; - } - - public RpcResultError getError() { - return error; - } - - public void setError(RpcResultError error) { - this.error = error; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/exception/NotFoundException.java b/module/nuls-public-service/src/main/java/io/nuls/api/exception/NotFoundException.java deleted file mode 100644 index dc74107d80..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/exception/NotFoundException.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.exception; - - -import io.nuls.api.model.rpc.RpcErrorCode; -import io.nuls.api.model.rpc.RpcResultError; - -/** - * @author Niels - */ -public class NotFoundException extends JsonRpcException { - - public NotFoundException() { - super(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS.getCode(), RpcErrorCode.DATA_NOT_EXISTS.getMessage(), null)); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java deleted file mode 100644 index bfa5afc610..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/CacheManager.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.nuls.api.manager; - -import io.nuls.api.cache.ApiCache; -import io.nuls.api.model.po.AssetInfo; -import io.nuls.api.model.po.ChainConfigInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.api.model.po.CoinContextInfo; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class CacheManager { - - /** - * 缓存每条当前节点运行链的数据 - */ - private static Map apiCacheMap = new ConcurrentHashMap<>(); - /** - * 缓存所有已注册跨链的链信息 - */ - private static Map chainInfoMap = new ConcurrentHashMap<>(); - /** - * 缓存所有已注册跨链的资产信息 - */ - private static Map assetInfoMap = new ConcurrentHashMap<>(); - - - public static void addApiCache(int chainID, ApiCache apiCache) { - apiCacheMap.put(chainID, apiCache); - } - - public static ApiCache getCache(int chainID) { - return apiCacheMap.get(chainID); - } - - public static void initCache(ChainInfo chainInfo, ChainConfigInfo configInfo) { - ApiCache apiCache = new ApiCache(); - apiCache.setChainInfo(chainInfo); - apiCache.setConfigInfo(configInfo); - chainInfoMap.put(chainInfo.getChainId(), chainInfo); - assetInfoMap.put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); - - CoinContextInfo contextInfo = new CoinContextInfo(); - apiCache.setCoinContextInfo(contextInfo); - apiCacheMap.put(chainInfo.getChainId(), apiCache); - } - - public static void removeApiCache(int chainId) { - apiCacheMap.remove(chainId); - } - - public static ChainInfo getCacheChain(int chainId) { - ApiCache apiCache = apiCacheMap.get(chainId); - if (apiCache == null) { - return null; - } - return apiCacheMap.get(chainId).getChainInfo(); - } - - public static Map getApiCaches() { - return apiCacheMap; - } - - public static boolean isChainExist(int chainId) { - ApiCache cache = apiCacheMap.get(chainId); - return cache != null; - } - - public static Map getAssetInfoMap() { - return assetInfoMap; - } - - public static void setAssetInfoMap(Map assetInfoMap) { - CacheManager.assetInfoMap = assetInfoMap; - } - - public static AssetInfo getRegisteredAsset(String key) { - return assetInfoMap.get(key); - } - - public static Map getChainInfoMap() { - return chainInfoMap; - } - - public static void setChainInfoMap(Map chainInfoMap) { - CacheManager.chainInfoMap = chainInfoMap; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ChainManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ChainManager.java deleted file mode 100644 index 2754e2ade8..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ChainManager.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.nuls.api.manager; - -import java.util.Map; - -/** - * @author captain - * @version 1.0 - * @date 19-2-26 下午1:43 - */ -public class ChainManager { - - private static ThreadLocal> sessionHolder = new ThreadLocal<>(); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/MessageManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/MessageManager.java deleted file mode 100644 index 793df3b7d1..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/MessageManager.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.manager; - -import io.nuls.api.model.entity.Message; -import io.nuls.core.model.DateUtils; -import io.nuls.core.model.StringUtils; -import io.nuls.core.rpc.util.NulsDateUtils; -import io.nuls.core.thread.ThreadUtils; -import io.nuls.core.thread.commom.NulsThreadFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * @author Niels - */ -public class MessageManager { - - private static final Map messageMap = new HashMap<>(); - - static { - ScheduledThreadPoolExecutor executorService = ThreadUtils.createScheduledThreadPool(1, new NulsThreadFactory("clear-message")); - executorService.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - //以防万一 - if (messageMap.size() > 1000) { - messageMap.clear(); - } - for (Map.Entry entry : messageMap.entrySet()) { - if (entry.getValue().getTime() < NulsDateUtils.getCurrentTimeSeconds() - 120) { - messageMap.remove(entry.getKey()); - } - } - } - }, 120, 30, TimeUnit.SECONDS); - } - - public static void putMessage(String key, Message message) { - if (StringUtils.isBlank(key) || null == message) { - return; - } - if (messageMap.size() > 5000) { - messageMap.clear(); - } - messageMap.put(key, message); - - } - - public static Message getMessage(String key) { - if (StringUtils.isBlank(key)) { - return null; - } - return messageMap.get(key); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java b/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java deleted file mode 100644 index 455f345dfe..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/manager/ScheduleManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.nuls.api.manager; - -import io.nuls.api.ApiContext; -import io.nuls.api.task.*; -import io.nuls.core.core.annotation.Component; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -@Component -public class ScheduleManager { - - public void start() { -// int corePoolSize = ChainManager.getConfigBeanMap().size(); -// ScheduledExecutorService executorService = Executors.newScheduledThreadPool(corePoolSize); -// for (ConfigBean bean : ChainManager.getConfigBeanMap().values()) { -// executorService.scheduleAtFixedRate(new SyncBlockTask(bean.getChainId()), 1, 10, TimeUnit.SECONDS); -// } - -// int corePoolSize = CacheManager.getApiCaches().size(); -// ScheduledExecutorService executorService = Executors.newScheduledThreadPool( corePoolSize * 4); -// for (ApiCache apiCache : CacheManager.getApiCaches().values()) { -// executorService.scheduleAtFixedRate(new SyncBlockTask(apiCache.getChainInfo().getChainId()), 1, 10, TimeUnit.SECONDS); -// executorService.scheduleAtFixedRate(new StatisticalNulsTask(apiCache.getChainInfo().getChainId()), 1, 20, TimeUnit.MINUTES); -// executorService.scheduleAtFixedRate(new StatisticalTask(apiCache.getChainInfo().getChainId()), 1, 60, TimeUnit.MINUTES); -// executorService.scheduleAtFixedRate(new UnConfirmTxTask(apiCache.getChainInfo().getChainId()), 1, 10, TimeUnit.MINUTES); -// } - - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(7); - executorService.scheduleAtFixedRate(new DeleteTxsTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new QueryChainInfoTask(ApiContext.defaultChainId), 2, 60, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new SyncBlockTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); - executorService.scheduleAtFixedRate(new StatisticalNulsTask(ApiContext.defaultChainId), 1, 10, TimeUnit.MINUTES); - executorService.scheduleAtFixedRate(new StatisticalTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); - executorService.scheduleAtFixedRate(new UnConfirmTxTask(ApiContext.defaultChainId), 1, 2, TimeUnit.MINUTES); - executorService.scheduleAtFixedRate(new StatisticalRewardTask(ApiContext.defaultChainId), 1, 60, TimeUnit.MINUTES); - executorService.scheduleAtFixedRate(new GetGlobalInfoTask(ApiContext.defaultChainId), 5, 10, TimeUnit.SECONDS); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Agent.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Agent.java deleted file mode 100644 index a5eff4fb41..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Agent.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * * - * * MIT License - * * - * * Copyright (c) 2017-2019 nuls.io - * * - * * Permission is hereby granted, free of charge, to any person obtaining a copy - * * of this software and associated documentation files (the "Software"), to deal - * * in the Software without restriction, including without limitation the rights - * * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * * copies of the Software, and to permit persons to whom the Software is - * * furnished to do so, subject to the following conditions: - * * - * * The above copyright notice and this permission notice shall be included in all - * * copies or substantial portions of the Software. - * * - * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * * SOFTWARE. - * - */ -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; -import java.util.HashSet; -import java.util.Set; - -/** - * 节点信息类 - * Node information class - * - * @author tag - * 2018/11/6 - */ -public class Agent extends BaseNulsData { - - /** - * 节点地址 - * agent address - **/ - private byte[] agentAddress; - - /** - * 打包地址 - * packing address - **/ - private byte[] packingAddress; - - /** - * 奖励地址 - * reward address - */ - private byte[] rewardAddress; - - /** - * 保证金 - * deposit - */ - private BigInteger deposit; - - /** - * 佣金比例 - * commission rate - */ - private byte commissionRate; - - /** - * 创建时间 - * create time - **/ - private transient long time; - - /** - * 所在区块高度 - * block height - */ - private transient long blockHeight = -1L; - - /** - * 该节点注销所在区块高度 - * Block height where the node logs out - */ - private transient long delHeight = -1L; - - /** - * 0:待共识 unConsensus, 1:共识中 consensus - */ - private transient int status; - - /** - * 信誉值 - * credit value - */ - private transient double creditVal; - - /** - * 总委托金额 - * Total amount entrusted - */ - private transient BigInteger totalDeposit = BigInteger.ZERO; - - /** - * 交易HASH - * transaction hash - */ - private transient NulsHash txHash; - - /** - * 参与共识人数 - * Participation in consensus - */ - private transient int memberCount; - - /** - * 别名不序列化 - * Aliases not serialized - */ - private transient String alais; - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfBigInteger(); - size += this.agentAddress.length; - size += this.rewardAddress.length; - size += this.packingAddress.length; - size += 1; - return size; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeBigInteger(deposit); - stream.write(agentAddress); - stream.write(packingAddress); - stream.write(rewardAddress); - stream.write(this.commissionRate); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.deposit = byteBuffer.readBigInteger(); - this.agentAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.packingAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.rewardAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.commissionRate = byteBuffer.readByte(); - } - - - public byte[] getPackingAddress() { - return packingAddress; - } - - public void setPackingAddress(byte[] packingAddress) { - this.packingAddress = packingAddress; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public byte getCommissionRate() { - return commissionRate; - } - - public void setCommissionRate(byte commissionRate) { - this.commissionRate = commissionRate; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public void setCreditVal(double creditVal) { - this.creditVal = creditVal; - } - - public double getCreditVal() { - return creditVal < 0d ? 0D : this.creditVal; - } - - public double getRealCreditVal() { - return this.creditVal; - } - - public void setTxHash(NulsHash txHash) { - this.txHash = txHash; - } - - public NulsHash getTxHash() { - return txHash; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getDelHeight() { - return delHeight; - } - - public void setDelHeight(long delHeight) { - this.delHeight = delHeight; - } - - public byte[] getAgentAddress() { - return agentAddress; - } - - public void setAgentAddress(byte[] agentAddress) { - this.agentAddress = agentAddress; - } - - public byte[] getRewardAddress() { - return rewardAddress; - } - - public void setRewardAddress(byte[] rewardAddress) { - this.rewardAddress = rewardAddress; - } - - public int getMemberCount() { - return memberCount; - } - - public void setMemberCount(int memberCount) { - this.memberCount = memberCount; - } - - public BigInteger getDeposit() { - return deposit; - } - - public void setDeposit(BigInteger deposit) { - this.deposit = deposit; - } - - public BigInteger getTotalDeposit() { - return totalDeposit; - } - - public void setTotalDeposit(BigInteger totalDeposit) { - this.totalDeposit = totalDeposit; - } - - @Override - public Agent clone() throws CloneNotSupportedException { - return (Agent) super.clone(); - } - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - addressSet.add(this.agentAddress); - return addressSet; - } - - public String getAlais() { - return alais; - } - - public void setAlais(String alais) { - this.alais = alais; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Alias.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Alias.java deleted file mode 100644 index da7177dfaa..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Alias.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -package io.nuls.api.model.entity; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; - -/** - * @author: qinyifeng - */ -public class Alias extends BaseNulsData { - - private byte[] address; - - - private String alias; - - - public Alias() { - } - - public Alias(byte[] address, String alias) { - this.address = address; - this.alias = alias; - } - - public byte[] getAddress() { - return address; - } - - public void setAddress(byte[] address) { - this.address = address; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - addressSet.add(this.address); - return addressSet; - } - - @Override - public int size() { - int s = 0; - s += SerializeUtils.sizeOfBytes(address); - s += SerializeUtils.sizeOfString(alias); - return s; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeBytesWithLength(address); - stream.writeString(alias); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.address = byteBuffer.readByLengthByte(); - this.alias = byteBuffer.readString(); - - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CallContractData.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CallContractData.java deleted file mode 100644 index c30d502ef4..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CallContractData.java +++ /dev/null @@ -1,216 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.model.entity; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; - -/** - * @Author: PierreLuo - */ -public class CallContractData extends BaseNulsData implements ContractData { - - private byte[] sender; - private byte[] contractAddress; - private BigInteger value; - private long gasLimit; - private long price; - private String methodName; - private String methodDesc; - private short argsCount; - private String[][] args; - - - @Override - public int size() { - int size = 0; - size += Address.ADDRESS_LENGTH; - size += Address.ADDRESS_LENGTH; - size += SerializeUtils.sizeOfBigInteger(); - size += SerializeUtils.sizeOfInt64(); - size += SerializeUtils.sizeOfInt64(); - - size += SerializeUtils.sizeOfString(methodName); - size += SerializeUtils.sizeOfString(methodDesc); - size += 1; - if (args != null) { - for (String[] arg : args) { - if (arg == null) { - size += 1; - } else { - size += 1; - for (String str : arg) { - size += SerializeUtils.sizeOfString(str); - } - } - } - } - return size; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(sender); - stream.write(contractAddress); - stream.writeBigInteger(value); - stream.writeInt64(gasLimit); - stream.writeInt64(price); - - stream.writeString(methodName); - stream.writeString(methodDesc); - stream.writeUint8(argsCount); - if (args != null) { - for (String[] arg : args) { - if (arg == null) { - stream.writeUint8((short) 0); - } else { - stream.writeUint8((short) arg.length); - for (String str : arg) { - stream.writeString(str); - } - } - } - } - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.sender = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.contractAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.value = byteBuffer.readBigInteger(); - this.gasLimit = byteBuffer.readInt64(); - this.price = byteBuffer.readInt64(); - - this.methodName = byteBuffer.readString(); - this.methodDesc = byteBuffer.readString(); - this.argsCount = byteBuffer.readUint8(); - short length = this.argsCount; - this.args = new String[length][]; - for (short i = 0; i < length; i++) { - short argCount = byteBuffer.readUint8(); - if (argCount == 0) { - args[i] = new String[0]; - } else { - String[] arg = new String[argCount]; - for (short k = 0; k < argCount; k++) { - arg[k] = byteBuffer.readString(); - } - args[i] = arg; - } - } - } - - @Override - public byte[] getSender() { - return sender; - } - - @Override - public byte[] getCode() { - return null; - } - - public void setSender(byte[] sender) { - this.sender = sender; - } - - @Override - public byte[] getContractAddress() { - return contractAddress; - } - - public void setContractAddress(byte[] contractAddress) { - this.contractAddress = contractAddress; - } - - @Override - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } - - @Override - public long getGasLimit() { - return gasLimit; - } - - public void setGasLimit(long gasLimit) { - this.gasLimit = gasLimit; - } - - @Override - public long getPrice() { - return price; - } - - public void setPrice(long price) { - this.price = price; - } - - @Override - public String getMethodName() { - return methodName; - } - - public void setMethodName(String methodName) { - this.methodName = methodName; - } - - @Override - public String getMethodDesc() { - return methodDesc; - } - - public void setMethodDesc(String methodDesc) { - this.methodDesc = methodDesc; - } - - public short getArgsCount() { - return argsCount; - } - - public void setArgsCount(short argsCount) { - this.argsCount = argsCount; - } - - @Override - public String[][] getArgs() { - return args; - } - - public void setArgs(String[][] args) { - this.args = args; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CancelDeposit.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CancelDeposit.java deleted file mode 100644 index 138533bdf4..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CancelDeposit.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; -import io.nuls.core.exception.NulsException; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; - -/** - * 退出委托信息类(交易中的txData) - * Withdrawal from the delegated information class - * - * @author: tag - * 2018/11/28 - */ -public class CancelDeposit extends BaseNulsData { - - private byte[] address; - - private NulsHash joinTxHash; - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - if (null != address) { - addressSet.add(this.address); - } - return addressSet; - } - - public byte[] getAddress() { - return address; - } - - public void setAddress(byte[] address) { - this.address = address; - } - - public NulsHash getJoinTxHash() { - return joinTxHash; - } - - public void setJoinTxHash(NulsHash joinTxHash) { - this.joinTxHash = joinTxHash; - } - - /** - * serialize important field - */ - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(this.joinTxHash.getBytes()); - - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.joinTxHash = byteBuffer.readHash(); - } - - @Override - public int size() { - return this.joinTxHash.getBytes().length; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractData.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractData.java deleted file mode 100644 index 80ba9b6fe9..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractData.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.model.entity; - -import java.math.BigInteger; - -/** - * @desription: - * @author: PierreLuo - * @date: 2018/7/19 - */ -public interface ContractData { - - byte[] getContractAddress(); - - byte[] getSender(); - - byte[] getCode(); - - long getGasLimit(); - - long getPrice(); - - BigInteger getValue(); - - String getMethodName(); - - String getMethodDesc(); - - String[][] getArgs(); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractTransferData.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractTransferData.java deleted file mode 100644 index 653566a0b2..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/ContractTransferData.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; -import io.nuls.core.exception.NulsException; - -import java.io.IOException; -import java.math.BigInteger; -import java.util.HashSet; -import java.util.Set; - -/** - * @Author: PierreLuo - */ -public class ContractTransferData extends BaseNulsData implements ContractData { - - private NulsHash orginTxHash; - private byte[] contractAddress; - - public ContractTransferData() { - } - - public ContractTransferData(NulsHash orginTxHash, byte[] contractAddress) { - this.orginTxHash = orginTxHash; - this.contractAddress = contractAddress; - } - - @Override - public int size() { - int size = 0; - size += NulsHash.HASH_LENGTH; - size += Address.ADDRESS_LENGTH; - return size; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(orginTxHash.getBytes()); - stream.write(contractAddress); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.orginTxHash = byteBuffer.readHash(); - this.contractAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - } - - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - addressSet.add(contractAddress); - return addressSet; - } - - @Override - public byte[] getContractAddress() { - return contractAddress; - } - - public void setContractAddress(byte[] contractAddress) { - this.contractAddress = contractAddress; - } - - public NulsHash getOrginTxHash() { - return orginTxHash; - } - - public void setOrginTxHash(NulsHash orginTxHash) { - this.orginTxHash = orginTxHash; - } - - @Override - public long getGasLimit() { - return 0L; - } - - @Override - public byte[] getSender() { - return null; - } - - @Override - public byte[] getCode() { - return null; - } - - @Override - public long getPrice() { - return 0L; - } - - @Override - public BigInteger getValue() { - return BigInteger.ZERO; - } - - @Override - public String getMethodName() { - return null; - } - - @Override - public String getMethodDesc() { - return null; - } - - @Override - public String[][] getArgs() { - return new String[0][]; - } - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CreateContractData.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CreateContractData.java deleted file mode 100644 index c620ce0b4a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/CreateContractData.java +++ /dev/null @@ -1,209 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.model.entity; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; - -/** - * @Author: PierreLuo - */ - -public class CreateContractData extends BaseNulsData implements ContractData { - - private byte[] sender; - private byte[] contractAddress; - private byte[] code; - private String alias; - private long gasLimit; - private long price; - private short argsCount; - private String[][] args; - - @Override - public int size() { - int size = 0; - size += Address.ADDRESS_LENGTH; - size += Address.ADDRESS_LENGTH; - size += SerializeUtils.sizeOfBytes(code); - size += SerializeUtils.sizeOfString(alias); - size += SerializeUtils.sizeOfInt64(); - size += SerializeUtils.sizeOfInt64(); - size += 1; - if (args != null) { - for (String[] arg : args) { - if (arg == null) { - size += 1; - } else { - size += 1; - for (String str : arg) { - size += SerializeUtils.sizeOfString(str); - } - } - } - } - return size; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(sender); - stream.write(contractAddress); - stream.writeBytesWithLength(code); - stream.writeString(alias); - stream.writeInt64(gasLimit); - stream.writeInt64(price); - stream.writeUint8(argsCount); - if (args != null) { - for (String[] arg : args) { - if (arg == null) { - stream.writeUint8((short) 0); - } else { - stream.writeUint8((short) arg.length); - for (String str : arg) { - stream.writeString(str); - } - } - } - } - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.sender = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.contractAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.code = byteBuffer.readByLengthByte(); - this.alias = byteBuffer.readString(); - this.gasLimit = byteBuffer.readInt64(); - this.price = byteBuffer.readInt64(); - this.argsCount = byteBuffer.readUint8(); - short length = this.argsCount; - this.args = new String[length][]; - for (short i = 0; i < length; i++) { - short argCount = byteBuffer.readUint8(); - if (argCount == 0) { - args[i] = new String[0]; - } else { - String[] arg = new String[argCount]; - for (short k = 0; k < argCount; k++) { - arg[k] = byteBuffer.readString(); - } - args[i] = arg; - } - } - } - - @Override - public BigInteger getValue() { - return BigInteger.ZERO; - } - - @Override - public String getMethodName() { - return null; - } - - @Override - public String getMethodDesc() { - return null; - } - - @Override - public byte[] getSender() { - return sender; - } - - public void setSender(byte[] sender) { - this.sender = sender; - } - - @Override - public byte[] getContractAddress() { - return contractAddress; - } - - public void setContractAddress(byte[] contractAddress) { - this.contractAddress = contractAddress; - } - - @Override - public byte[] getCode() { - return code; - } - - public void setCode(byte[] code) { - this.code = code; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - @Override - public long getGasLimit() { - return gasLimit; - } - - public void setGasLimit(long gasLimit) { - this.gasLimit = gasLimit; - } - - @Override - public long getPrice() { - return price; - } - - public void setPrice(long price) { - this.price = price; - } - - public short getArgsCount() { - return argsCount; - } - - public void setArgsCount(short argsCount) { - this.argsCount = argsCount; - } - - @Override - public String[][] getArgs() { - return args; - } - - public void setArgs(String[][] args) { - this.args = args; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/DeleteContractData.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/DeleteContractData.java deleted file mode 100644 index 97beb3668e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/DeleteContractData.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; - -import java.io.IOException; -import java.math.BigInteger; -import java.util.HashSet; -import java.util.Set; - -/** - * @Author: PierreLuo - */ -public class DeleteContractData extends BaseNulsData implements ContractData { - - private byte[] sender; - private byte[] contractAddress; - - @Override - public int size() { - int size = 0; - size += Address.ADDRESS_LENGTH; - size += Address.ADDRESS_LENGTH; - return size; - } - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(sender); - stream.write(contractAddress); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.sender = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.contractAddress = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - } - - @Override - public long getGasLimit() { - return 0L; - } - - @Override - public byte[] getSender() { - return sender; - } - - @Override - public byte[] getCode() { - return new byte[0]; - } - - @Override - public long getPrice() { - return 0L; - } - - @Override - public BigInteger getValue() { - return BigInteger.ZERO; - } - - @Override - public String getMethodName() { - return null; - } - - @Override - public String getMethodDesc() { - return null; - } - - @Override - public String[][] getArgs() { - return new String[0][]; - } - - public void setSender(byte[] sender) { - this.sender = sender; - } - - @Override - public byte[] getContractAddress() { - return contractAddress; - } - - public void setContractAddress(byte[] contractAddress) { - this.contractAddress = contractAddress; - } - - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - addressSet.add(contractAddress); - return addressSet; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Deposit.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Deposit.java deleted file mode 100644 index 1f5db0c38d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Deposit.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * * - * * MIT License - * * - * * Copyright (c) 2017-2019 nuls.io - * * - * * Permission is hereby granted, free of charge, to any person obtaining a copy - * * of this software and associated documentation files (the "Software"), to deal - * * in the Software without restriction, including without limitation the rights - * * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * * copies of the Software, and to permit persons to whom the Software is - * * furnished to do so, subject to the following conditions: - * * - * * The above copyright notice and this permission notice shall be included in all - * * copies or substantial portions of the Software. - * * - * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * * SOFTWARE. - * - */ -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.Address; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; -import java.util.HashSet; -import java.util.Set; - -/** - * 委托信息类 - * Delegated information class - * - * @author tag - * 2018/11/28 - */ -public class Deposit extends BaseNulsData { - private BigInteger deposit; - private NulsHash agentHash; - private byte[] address; - private transient long time; - private transient int status; - private transient NulsHash txHash; - private transient long blockHeight = -1L; - private transient long delHeight = -1L; - - /** - * serialize important field - */ - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeBigInteger(deposit); - stream.write(address); - stream.write(agentHash.getBytes()); - - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.deposit = byteBuffer.readBigInteger(); - this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); - this.agentHash = byteBuffer.readHash(); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfBigInteger(); - size += Address.ADDRESS_LENGTH; - size += NulsHash.HASH_LENGTH; - return size; - } - - public BigInteger getDeposit() { - return deposit; - } - - public void setDeposit(BigInteger deposit) { - this.deposit = deposit; - } - - public NulsHash getAgentHash() { - return agentHash; - } - - public void setAgentHash(NulsHash agentHash) { - this.agentHash = agentHash; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public NulsHash getTxHash() { - return txHash; - } - - public void setTxHash(NulsHash txHash) { - this.txHash = txHash; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public long getDelHeight() { - return delHeight; - } - - public void setDelHeight(long delHeight) { - this.delHeight = delHeight; - } - - public byte[] getAddress() { - return address; - } - - public void setAddress(byte[] address) { - this.address = address; - } - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - addressSet.add(this.address); - return addressSet; - } - - @Override - public Deposit clone() throws CloneNotSupportedException { - return (Deposit) super.clone(); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Message.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Message.java deleted file mode 100644 index 5487f2f926..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/Message.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.entity; - -/** - * @author Niels - */ -public class Message { - - private String key; - - private long time; - - private Object value; - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/StopAgent.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/StopAgent.java deleted file mode 100644 index 8ee17af7fd..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/StopAgent.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -package io.nuls.api.model.entity; - - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.base.data.NulsHash; -import io.nuls.core.exception.NulsException; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; - -/** - * 停止节点信息类 - * Stop Node Information Class - * - * @author tag - * 2018/11/20 - */ -public class StopAgent extends BaseNulsData { - - private byte[] address; - - private NulsHash createTxHash; - /** - * serialize important field - */ - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.write(this.createTxHash.getBytes()); - - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.createTxHash = byteBuffer.readHash(); - } - - @Override - public int size() { - return this.createTxHash.getBytes().length; - } - - public Set getAddresses() { - Set addressSet = new HashSet<>(); - if(null!=address){ - addressSet.add(this.address); - } - return addressSet; - } - - public byte[] getAddress() { - return address; - } - - public void setAddress(byte[] address) { - this.address = address; - } - - public NulsHash getCreateTxHash() { - return createTxHash; - } - - public void setCreateTxHash(NulsHash createTxHash) { - this.createTxHash = createTxHash; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxAsset.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxAsset.java deleted file mode 100644 index 625c00ba6f..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxAsset.java +++ /dev/null @@ -1,149 +0,0 @@ -package io.nuls.api.model.entity; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; - -/** - * @author tangyi - * @date 2018/11/6 - * @description - */ - -public class TxAsset extends BaseNulsData { - private int chainId; - private int assetId; - private String symbol; - private String name; - private BigInteger depositNuls; - private BigInteger destroyNuls; - private BigInteger initNumber; - private short decimalPlaces; - private byte[] address; - - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeUint16(chainId); - stream.writeUint16(assetId); - stream.writeString(symbol); - stream.writeString(name); - stream.writeBigInteger(depositNuls); - stream.writeBigInteger(destroyNuls); - stream.writeBigInteger(initNumber); - stream.writeShort(decimalPlaces); - stream.writeBytesWithLength(address); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.chainId = byteBuffer.readUint16(); - this.assetId = byteBuffer.readUint16(); - this.symbol = byteBuffer.readString(); - this.name = byteBuffer.readString(); - this.depositNuls = byteBuffer.readBigInteger(); - this.destroyNuls = byteBuffer.readBigInteger(); - this.initNumber = byteBuffer.readBigInteger(); - this.decimalPlaces = byteBuffer.readShort(); - this.address = byteBuffer.readByLengthByte(); - } - - @Override - public int size() { - int size = 0; - // chainId - size += SerializeUtils.sizeOfUint16(); - // assetId - size += SerializeUtils.sizeOfUint16(); - size += SerializeUtils.sizeOfString(symbol); - size += SerializeUtils.sizeOfString(name); - // depositNuls - size += SerializeUtils.sizeOfBigInteger(); - // destroyNuls - size += SerializeUtils.sizeOfBigInteger(); - // initNumber - size += SerializeUtils.sizeOfBigInteger(); - // decimalPlaces - size += SerializeUtils.sizeOfInt16(); - size += SerializeUtils.sizeOfBytes(address); - - return size; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public BigInteger getDepositNuls() { - return depositNuls; - } - - public void setDepositNuls(BigInteger depositNuls) { - this.depositNuls = depositNuls; - } - - public BigInteger getInitNumber() { - return initNumber; - } - - public void setInitNumber(BigInteger initNumber) { - this.initNumber = initNumber; - } - - public short getDecimalPlaces() { - return decimalPlaces; - } - - public void setDecimalPlaces(short decimalPlaces) { - this.decimalPlaces = decimalPlaces; - } - - public byte[] getAddress() { - return address; - } - - public void setAddress(byte[] address) { - this.address = address; - } - - public BigInteger getDestroyNuls() { - return destroyNuls; - } - - public void setDestroyNuls(BigInteger destroyNuls) { - this.destroyNuls = destroyNuls; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxChain.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxChain.java deleted file mode 100644 index 7cabdf9f7d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/TxChain.java +++ /dev/null @@ -1,185 +0,0 @@ -package io.nuls.api.model.entity; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author tangyi - * @date 2018/11/7 - * @description - */ -public class TxChain extends BaseNulsData { - private String name; - private String addressType; - private String addressPrefix; - private long magicNumber; - private boolean supportInflowAsset = true; - private int minAvailableNodeNum = 1; - /** - * 初始化验证人信息 - */ - List verifierList = new ArrayList(); - /** - * 按100来计算拜占庭比例 - */ - int signatureByzantineRatio = 0; - /** - * 最大签名数量 - */ - int maxSignatureCount = 0; - - /** - * 下面这些是创建链的时候,必须携带的资产信息 - */ - private TxAsset defaultAsset = new TxAsset(); - - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeString(name); - stream.writeString(addressType); - stream.writeString(addressPrefix); - stream.writeUint32(magicNumber); - stream.writeBoolean(supportInflowAsset); - stream.writeUint32(minAvailableNodeNum); - stream.writeUint16(verifierList.size()); - for (String verifier : verifierList) { - stream.writeString(verifier); - } - stream.writeUint16(signatureByzantineRatio); - stream.writeUint16(maxSignatureCount); - stream.writeNulsData(defaultAsset); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.name = byteBuffer.readString(); - this.addressType = byteBuffer.readString(); - this.addressPrefix = byteBuffer.readString(); - this.magicNumber = byteBuffer.readUint32(); - this.supportInflowAsset = byteBuffer.readBoolean(); - this.minAvailableNodeNum = byteBuffer.readInt32(); - int verifierCount = byteBuffer.readUint16(); - for (int i = 0; i < verifierCount; i++) { - String verifier = byteBuffer.readString(); - this.verifierList.add(verifier); - } - this.signatureByzantineRatio = byteBuffer.readUint16(); - this.maxSignatureCount = byteBuffer.readUint16(); - this.defaultAsset = byteBuffer.readNulsData(new TxAsset()); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfString(name); - size += SerializeUtils.sizeOfString(addressType); - size += SerializeUtils.sizeOfString(addressPrefix); - // magicNumber; - size += SerializeUtils.sizeOfUint32(); - // supportInflowAsset; - size += SerializeUtils.sizeOfBoolean(); - // minAvailableNodeNum; - size += SerializeUtils.sizeOfInt32(); - //verifierList - size += SerializeUtils.sizeOfUint16(); - for (String verifier : verifierList) { - size += SerializeUtils.sizeOfString(verifier); - } - //signatureByzantineRatio - size += SerializeUtils.sizeOfUint16(); - //maxSignatureCount - size += SerializeUtils.sizeOfUint16(); - //assetTx - size += SerializeUtils.sizeOfNulsData(defaultAsset); - return size; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddressType() { - return addressType; - } - - public void setAddressType(String addressType) { - this.addressType = addressType; - } - - public long getMagicNumber() { - return magicNumber; - } - - public void setMagicNumber(long magicNumber) { - this.magicNumber = magicNumber; - } - - public boolean isSupportInflowAsset() { - return supportInflowAsset; - } - - public void setSupportInflowAsset(boolean supportInflowAsset) { - this.supportInflowAsset = supportInflowAsset; - } - - public int getMinAvailableNodeNum() { - return minAvailableNodeNum; - } - - public void setMinAvailableNodeNum(int minAvailableNodeNum) { - this.minAvailableNodeNum = minAvailableNodeNum; - } - - public TxAsset getDefaultAsset() { - return defaultAsset; - } - - public void setDefaultAsset(TxAsset defaultAsset) { - this.defaultAsset = defaultAsset; - } - - public List getVerifierList() { - return verifierList; - } - - public void setVerifierList(List verifierList) { - this.verifierList = verifierList; - } - - public int getSignatureByzantineRatio() { - return signatureByzantineRatio; - } - - public void setSignatureByzantineRatio(int signatureByzantineRatio) { - this.signatureByzantineRatio = signatureByzantineRatio; - } - - public String getAddressPrefix() { - return addressPrefix; - } - - public void setAddressPrefix(String addressPrefix) { - this.addressPrefix = addressPrefix; - } - - public int getMaxSignatureCount() { - return maxSignatureCount; - } - - public void setMaxSignatureCount(int maxSignatureCount) { - this.maxSignatureCount = maxSignatureCount; - } - - } diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxAsset.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxAsset.java deleted file mode 100644 index e29ff9b8d3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxAsset.java +++ /dev/null @@ -1,111 +0,0 @@ -package io.nuls.api.model.entity.v4; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; - -/** - * @author tangyi - * @date 2018/11/6 - * @description - */ - -public class TxAsset extends BaseNulsData { - private int chainId; - private int assetId; - private String symbol; - private String name; - private BigInteger initNumber; - private short decimalPlaces; - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeUint16(chainId); - stream.writeUint16(assetId); - stream.writeString(symbol); - stream.writeString(name); - stream.writeBigInteger(initNumber); - stream.writeUint8(decimalPlaces); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.chainId = byteBuffer.readUint16(); - this.assetId = byteBuffer.readUint16(); - this.symbol = byteBuffer.readString(); - this.name = byteBuffer.readString(); - this.initNumber = byteBuffer.readBigInteger(); - this.decimalPlaces = byteBuffer.readUint8(); - } - - @Override - public int size() { - int size = 0; - // chainId - size += SerializeUtils.sizeOfUint16(); - // assetId - size += SerializeUtils.sizeOfUint16(); - size += SerializeUtils.sizeOfString(symbol); - size += SerializeUtils.sizeOfString(name); - // initNumber - size += SerializeUtils.sizeOfBigInteger(); - // decimalPlaces - size += SerializeUtils.sizeOfUint8(); - return size; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public BigInteger getInitNumber() { - return initNumber; - } - - public void setInitNumber(BigInteger initNumber) { - this.initNumber = initNumber; - } - - public short getDecimalPlaces() { - return decimalPlaces; - } - - public void setDecimalPlaces(short decimalPlaces) { - this.decimalPlaces = decimalPlaces; - } - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxChain.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxChain.java deleted file mode 100644 index 2c63de5510..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v4/TxChain.java +++ /dev/null @@ -1,184 +0,0 @@ -package io.nuls.api.model.entity.v4; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author tangyi - * @date 2018/11/7 - * @description - */ -public class TxChain extends BaseNulsData { - private String name; - private short addressType; - private String addressPrefix; - private long magicNumber; - private boolean supportInflowAsset = true; - private int minAvailableNodeNum = 1; - /** - * 初始化验证人信息 - */ - List verifierList = new ArrayList(); - /** - * 按100来计算拜占庭比例 - */ - int signatureByzantineRatio = 0; - /** - * 最大签名数量 - */ - int maxSignatureCount = 0; - - /** - * 下面这些是创建链的时候,必须携带的资产信息 - */ - private TxAsset defaultAsset = new TxAsset(); - - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeString(name); - stream.writeUint8(addressType); - stream.writeString(addressPrefix); - stream.writeUint32(magicNumber); - stream.writeBoolean(supportInflowAsset); - stream.writeUint32(minAvailableNodeNum); - stream.writeUint16(verifierList.size()); - for (String verifier : verifierList) { - stream.writeString(verifier); - } - stream.writeUint16(signatureByzantineRatio); - stream.writeUint16(maxSignatureCount); - stream.writeNulsData(defaultAsset); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.name = byteBuffer.readString(); - this.addressType = byteBuffer.readUint8(); - this.addressPrefix = byteBuffer.readString(); - this.magicNumber = byteBuffer.readUint32(); - this.supportInflowAsset = byteBuffer.readBoolean(); - this.minAvailableNodeNum = byteBuffer.readInt32(); - int verifierCount = byteBuffer.readUint16(); - for (int i = 0; i < verifierCount; i++) { - String verifier = byteBuffer.readString(); - this.verifierList.add(verifier); - } - this.signatureByzantineRatio = byteBuffer.readUint16(); - this.maxSignatureCount = byteBuffer.readUint16(); - this.defaultAsset = byteBuffer.readNulsData(new TxAsset()); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfString(name); - size += SerializeUtils.sizeOfUint8(); - size += SerializeUtils.sizeOfString(addressPrefix); - // magicNumber; - size += SerializeUtils.sizeOfUint32(); - // supportInflowAsset; - size += SerializeUtils.sizeOfBoolean(); - // minAvailableNodeNum; - size += SerializeUtils.sizeOfInt32(); - //verifierList - size += SerializeUtils.sizeOfUint16(); - for (String verifier : verifierList) { - size += SerializeUtils.sizeOfString(verifier); - } - //signatureByzantineRatio - size += SerializeUtils.sizeOfUint16(); - //maxSignatureCount - size += SerializeUtils.sizeOfUint16(); - //assetTx - size += SerializeUtils.sizeOfNulsData(defaultAsset); - return size; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public short getAddressType() { - return addressType; - } - - public void setAddressType(short addressType) { - this.addressType = addressType; - } - - public long getMagicNumber() { - return magicNumber; - } - - public void setMagicNumber(long magicNumber) { - this.magicNumber = magicNumber; - } - - public boolean isSupportInflowAsset() { - return supportInflowAsset; - } - - public void setSupportInflowAsset(boolean supportInflowAsset) { - this.supportInflowAsset = supportInflowAsset; - } - - public int getMinAvailableNodeNum() { - return minAvailableNodeNum; - } - - public void setMinAvailableNodeNum(int minAvailableNodeNum) { - this.minAvailableNodeNum = minAvailableNodeNum; - } - - public TxAsset getDefaultAsset() { - return defaultAsset; - } - - public void setDefaultAsset(TxAsset defaultAsset) { - this.defaultAsset = defaultAsset; - } - - public List getVerifierList() { - return verifierList; - } - - public void setVerifierList(List verifierList) { - this.verifierList = verifierList; - } - - public int getSignatureByzantineRatio() { - return signatureByzantineRatio; - } - - public void setSignatureByzantineRatio(int signatureByzantineRatio) { - this.signatureByzantineRatio = signatureByzantineRatio; - } - - public String getAddressPrefix() { - return addressPrefix; - } - - public void setAddressPrefix(String addressPrefix) { - this.addressPrefix = addressPrefix; - } - - public int getMaxSignatureCount() { - return maxSignatureCount; - } - - public void setMaxSignatureCount(int maxSignatureCount) { - this.maxSignatureCount = maxSignatureCount; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxAsset.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxAsset.java deleted file mode 100644 index 3aae446718..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxAsset.java +++ /dev/null @@ -1,111 +0,0 @@ -package io.nuls.api.model.entity.v5; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.math.BigInteger; - -/** - * @author tangyi - * @date 2018/11/6 - * @description - */ - -public class TxAsset extends BaseNulsData { - private int chainId; - private int assetId; - private String symbol; - private String name; - private BigInteger initNumber; - private short decimalPlaces; - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeUint16(chainId); - stream.writeUint16(assetId); - stream.writeString(symbol); - stream.writeString(name); - stream.writeBigInteger(initNumber); - stream.writeUint8(decimalPlaces); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.chainId = byteBuffer.readUint16(); - this.assetId = byteBuffer.readUint16(); - this.symbol = byteBuffer.readString(); - this.name = byteBuffer.readString(); - this.initNumber = byteBuffer.readBigInteger(); - this.decimalPlaces = byteBuffer.readUint8(); - } - - @Override - public int size() { - int size = 0; - // chainId - size += SerializeUtils.sizeOfUint16(); - // assetId - size += SerializeUtils.sizeOfUint16(); - size += SerializeUtils.sizeOfString(symbol); - size += SerializeUtils.sizeOfString(name); - // initNumber - size += SerializeUtils.sizeOfBigInteger(); - // decimalPlaces - size += SerializeUtils.sizeOfUint8(); - return size; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public BigInteger getInitNumber() { - return initNumber; - } - - public void setInitNumber(BigInteger initNumber) { - this.initNumber = initNumber; - } - - public short getDecimalPlaces() { - return decimalPlaces; - } - - public void setDecimalPlaces(short decimalPlaces) { - this.decimalPlaces = decimalPlaces; - } - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxChain.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxChain.java deleted file mode 100644 index b3622f993e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/entity/v5/TxChain.java +++ /dev/null @@ -1,184 +0,0 @@ -package io.nuls.api.model.entity.v5; - -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.basic.NulsOutputStreamBuffer; -import io.nuls.base.data.BaseNulsData; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.SerializeUtils; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author tangyi - * @date 2018/11/7 - * @description - */ -public class TxChain extends BaseNulsData { - private String name; - private short addressType; - private String addressPrefix; - private long magicNumber; - private boolean supportInflowAsset = true; - private int minAvailableNodeNum = 1; - /** - * 初始化验证人信息 - */ - List verifierList = new ArrayList(); - /** - * 按100来计算拜占庭比例 - */ - int signatureByzantineRatio = 0; - /** - * 最大签名数量 - */ - int maxSignatureCount = 0; - - /** - * 下面这些是创建链的时候,必须携带的资产信息 - */ - private TxAsset defaultAsset = new TxAsset(); - - - @Override - protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { - stream.writeString(name); - stream.writeUint8(addressType); - stream.writeString(addressPrefix); - stream.writeUint32(magicNumber); - stream.writeBoolean(supportInflowAsset); - stream.writeUint32(minAvailableNodeNum); - stream.writeUint16(verifierList.size()); - for (String verifier : verifierList) { - stream.writeString(verifier); - } - stream.writeUint16(signatureByzantineRatio); - stream.writeUint16(maxSignatureCount); - stream.writeNulsData(defaultAsset); - } - - @Override - public void parse(NulsByteBuffer byteBuffer) throws NulsException { - this.name = byteBuffer.readString(); - this.addressType = byteBuffer.readUint8(); - this.addressPrefix = byteBuffer.readString(); - this.magicNumber = byteBuffer.readUint32(); - this.supportInflowAsset = byteBuffer.readBoolean(); - this.minAvailableNodeNum = byteBuffer.readInt32(); - int verifierCount = byteBuffer.readUint16(); - for (int i = 0; i < verifierCount; i++) { - String verifier = byteBuffer.readString(); - this.verifierList.add(verifier); - } - this.signatureByzantineRatio = byteBuffer.readUint16(); - this.maxSignatureCount = byteBuffer.readUint16(); - this.defaultAsset = byteBuffer.readNulsData(new TxAsset()); - } - - @Override - public int size() { - int size = 0; - size += SerializeUtils.sizeOfString(name); - size += SerializeUtils.sizeOfUint8(); - size += SerializeUtils.sizeOfString(addressPrefix); - // magicNumber; - size += SerializeUtils.sizeOfUint32(); - // supportInflowAsset; - size += SerializeUtils.sizeOfBoolean(); - // minAvailableNodeNum; - size += SerializeUtils.sizeOfInt32(); - //verifierList - size += SerializeUtils.sizeOfUint16(); - for (String verifier : verifierList) { - size += SerializeUtils.sizeOfString(verifier); - } - //signatureByzantineRatio - size += SerializeUtils.sizeOfUint16(); - //maxSignatureCount - size += SerializeUtils.sizeOfUint16(); - //assetTx - size += SerializeUtils.sizeOfNulsData(defaultAsset); - return size; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public short getAddressType() { - return addressType; - } - - public void setAddressType(short addressType) { - this.addressType = addressType; - } - - public long getMagicNumber() { - return magicNumber; - } - - public void setMagicNumber(long magicNumber) { - this.magicNumber = magicNumber; - } - - public boolean isSupportInflowAsset() { - return supportInflowAsset; - } - - public void setSupportInflowAsset(boolean supportInflowAsset) { - this.supportInflowAsset = supportInflowAsset; - } - - public int getMinAvailableNodeNum() { - return minAvailableNodeNum; - } - - public void setMinAvailableNodeNum(int minAvailableNodeNum) { - this.minAvailableNodeNum = minAvailableNodeNum; - } - - public TxAsset getDefaultAsset() { - return defaultAsset; - } - - public void setDefaultAsset(TxAsset defaultAsset) { - this.defaultAsset = defaultAsset; - } - - public List getVerifierList() { - return verifierList; - } - - public void setVerifierList(List verifierList) { - this.verifierList = verifierList; - } - - public int getSignatureByzantineRatio() { - return signatureByzantineRatio; - } - - public void setSignatureByzantineRatio(int signatureByzantineRatio) { - this.signatureByzantineRatio = signatureByzantineRatio; - } - - public String getAddressPrefix() { - return addressPrefix; - } - - public void setAddressPrefix(String addressPrefix) { - this.addressPrefix = addressPrefix; - } - - public int getMaxSignatureCount() { - return maxSignatureCount; - } - - public void setMaxSignatureCount(int maxSignatureCount) { - this.maxSignatureCount = maxSignatureCount; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountInfo.java deleted file mode 100644 index d012db39e9..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountInfo.java +++ /dev/null @@ -1,202 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.nuls.base.data.Address; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - - -public class AccountInfo { - - private String address; - - private String alias; - - private int type; - - private int txCount; - - private BigInteger totalOut; - - private BigInteger totalIn; - - private BigInteger consensusLock; - - private BigInteger timeLock; - - private BigInteger balance; - - private BigInteger totalBalance; - - private BigInteger totalReward; - - private BigInteger lastReward; - - private String symbol; - - private List tokens; - - //是否是根据最新区块的交易新创建的账户,只为业务使用,不存储该字段 - @JsonIgnore - private boolean isNew; - - public AccountInfo() { - } - - public AccountInfo(String address) { - this.address = address; - Address address1 = new Address(address); - this.type = address1.getAddressType(); - this.tokens = new ArrayList<>(); - this.isNew = true; - this.totalOut = BigInteger.ZERO; - this.totalIn = BigInteger.ZERO; - this.consensusLock = BigInteger.ZERO; - this.timeLock = BigInteger.ZERO; - this.balance = BigInteger.ZERO; - this.totalBalance = BigInteger.ZERO; - this.totalReward = BigInteger.ZERO; - this.lastReward = BigInteger.ZERO; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public BigInteger getTotalOut() { - return totalOut; - } - - public void setTotalOut(BigInteger totalOut) { - this.totalOut = totalOut; - } - - public BigInteger getTotalIn() { - return totalIn; - } - - public void setTotalIn(BigInteger totalIn) { - this.totalIn = totalIn; - } - - public BigInteger getConsensusLock() { - return consensusLock; - } - - public void setConsensusLock(BigInteger consensusLock) { - this.consensusLock = consensusLock; - } - - public BigInteger getTimeLock() { - return timeLock; - } - - public void setTimeLock(BigInteger timeLock) { - this.timeLock = timeLock; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public BigInteger getTotalBalance() { - return totalBalance; - } - - public void setTotalBalance(BigInteger totalBalance) { - this.totalBalance = totalBalance; - } - - public List getTokens() { - return tokens; - } - - public void setTokens(List tokens) { - this.tokens = tokens; - } - - @JsonIgnore - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public BigInteger getTotalReward() { - return totalReward; - } - - public void setTotalReward(BigInteger totalReward) { - this.totalReward = totalReward; - } - - public AccountInfo copy() { - AccountInfo accountInfo = new AccountInfo(); - accountInfo.address = this.address; - accountInfo.alias = this.alias; - accountInfo.type = this.type; - accountInfo.txCount = this.txCount; - accountInfo.totalOut = new BigInteger(this.totalOut.toString()); - accountInfo.totalIn = new BigInteger(this.totalIn.toString()); - accountInfo.consensusLock = new BigInteger(this.consensusLock.toString()); - accountInfo.timeLock = new BigInteger(this.timeLock.toString()); - accountInfo.balance = new BigInteger(this.balance.toString()); - accountInfo.totalBalance = new BigInteger(this.totalBalance.toString()); - accountInfo.totalReward = new BigInteger(this.totalReward.toString()); - accountInfo.tokens = new ArrayList<>(this.tokens); - accountInfo.lastReward =new BigInteger(this.lastReward.toString()); - return accountInfo; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public BigInteger getLastReward() { - return lastReward; - } - - public void setLastReward(BigInteger lastReward) { - this.lastReward = lastReward; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountLedgerInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountLedgerInfo.java deleted file mode 100644 index abc96fbe92..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountLedgerInfo.java +++ /dev/null @@ -1,153 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.nuls.api.utils.DBUtil; - -import java.math.BigInteger; - -public class AccountLedgerInfo { - - private String key; - - private String address; - - private int chainId; - - private int assetId; - - private String symbol; - - private int decimals; - - private BigInteger totalBalance; - - private BigInteger balance; - - private BigInteger timeLock; - - private BigInteger consensusLock; - - @JsonIgnore - private boolean isNew; - - public AccountLedgerInfo() { - } - - public AccountLedgerInfo(String address, int chainId, int assetId) { - this.key = DBUtil.getAccountAssetKey(address, chainId, assetId); - this.address = address; - this.chainId = chainId; - this.assetId = assetId; - this.totalBalance = BigInteger.ZERO; - isNew = true; - } - - public String getKey() { - if (key == null) { - this.key = DBUtil.getAccountAssetKey(address, chainId, assetId); - } - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public BigInteger getTotalBalance() { - return totalBalance; - } - - public void setTotalBalance(BigInteger totalBalance) { - this.totalBalance = totalBalance; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public BigInteger getTimeLock() { - return timeLock; - } - - public void setTimeLock(BigInteger timeLock) { - this.timeLock = timeLock; - } - - public BigInteger getConsensusLock() { - return consensusLock; - } - - public void setConsensusLock(BigInteger consensusLock) { - this.consensusLock = consensusLock; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public AccountLedgerInfo copy() { - AccountLedgerInfo ledgerInfo = new AccountLedgerInfo(); - ledgerInfo.key = this.key; - ledgerInfo.address = this.address; - ledgerInfo.chainId = this.chainId; - ledgerInfo.assetId = this.assetId; - ledgerInfo.symbol = this.symbol; - ledgerInfo.balance = this.balance; - ledgerInfo.timeLock = this.timeLock; - ledgerInfo.consensusLock = this.consensusLock; - ledgerInfo.totalBalance = new BigInteger(this.totalBalance.toString()); - return ledgerInfo; - } - - public String getAssetKey() { - return chainId + "-" + assetId; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java deleted file mode 100644 index e90935b4b6..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AccountTokenInfo.java +++ /dev/null @@ -1,123 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import java.math.BigInteger; - -public class AccountTokenInfo { - - private String key; - - private String address; - - private String tokenName; - - private String tokenSymbol; - - private String contractAddress; - - private BigInteger balance; - - private BigInteger lockedBalance; - - private int status; - - private int decimals; - @JsonIgnore - private boolean isNew; - - public AccountTokenInfo() { - - } - - public AccountTokenInfo(String address, String contractAddress, String tokenName, String tokenSymbol, int decimals) { - this.key = address + contractAddress; - this.address = address; - this.tokenName = tokenName; - this.tokenSymbol = tokenSymbol; - this.contractAddress = contractAddress; - this.balance = BigInteger.ZERO; - this.decimals = decimals; - this.isNew = true; - } - - public BigInteger getLockedBalance() { - return lockedBalance; - } - - public void setLockedBalance(BigInteger lockedBalance) { - this.lockedBalance = lockedBalance; - } - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getTokenName() { - return tokenName; - } - - public void setTokenName(String tokenName) { - this.tokenName = tokenName; - } - - public String getTokenSymbol() { - return tokenSymbol; - } - - public void setTokenSymbol(String tokenSymbol) { - this.tokenSymbol = tokenSymbol; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AgentInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AgentInfo.java deleted file mode 100644 index 63d8a83fbb..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AgentInfo.java +++ /dev/null @@ -1,321 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import java.math.BigInteger; - -public class AgentInfo extends TxDataInfo { - - private String txHash; - - private String agentId; - - private String agentAddress; - - private String packingAddress; - - private String rewardAddress; - - private String agentAlias; - - private BigInteger deposit; - - private double commissionRate; - - private long createTime; - // 0:待共识,1:共识中,2:退出共识 - private int status; - - private BigInteger totalDeposit; - - private int depositCount; - - private double creditValue; - - private long totalPackingCount; - - private double lostRate; - - private long lastRewardHeight; - - private String deleteHash; - - private long blockHeight; - - private long deleteHeight; - - private BigInteger totalReward; - - private BigInteger commissionReward; - - private BigInteger agentReward; - - private long roundPackingTime; - - private int yellowCardCount; - - private int version; - - private int type; - - @JsonIgnore - private boolean isNew; - - public AgentInfo() { - - } - - public void init() { - totalReward = BigInteger.ZERO; - commissionReward = BigInteger.ZERO; - agentReward = BigInteger.ZERO; - totalDeposit = BigInteger.ZERO; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getAgentId() { - return agentId; - } - - public void setAgentId(String agentId) { - this.agentId = agentId; - } - - public String getAgentAddress() { - return agentAddress; - } - - public void setAgentAddress(String agentAddress) { - this.agentAddress = agentAddress; - } - - public String getPackingAddress() { - return packingAddress; - } - - public void setPackingAddress(String packingAddress) { - this.packingAddress = packingAddress; - } - - public String getRewardAddress() { - return rewardAddress; - } - - public void setRewardAddress(String rewardAddress) { - this.rewardAddress = rewardAddress; - } - - public String getAgentAlias() { - return agentAlias; - } - - public void setAgentAlias(String agentAlias) { - this.agentAlias = agentAlias; - } - - public BigInteger getDeposit() { - return deposit; - } - - public void setDeposit(BigInteger deposit) { - this.deposit = deposit; - } - - public double getCommissionRate() { - return commissionRate; - } - - public void setCommissionRate(double commissionRate) { - this.commissionRate = commissionRate; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public BigInteger getTotalDeposit() { - return totalDeposit; - } - - public void setTotalDeposit(BigInteger totalDeposit) { - this.totalDeposit = totalDeposit; - } - - public int getDepositCount() { - return depositCount; - } - - public void setDepositCount(int depositCount) { - this.depositCount = depositCount; - } - - public double getCreditValue() { - return creditValue; - } - - public void setCreditValue(double creditValue) { - this.creditValue = creditValue; - } - - public long getTotalPackingCount() { - return totalPackingCount; - } - - public void setTotalPackingCount(long totalPackingCount) { - this.totalPackingCount = totalPackingCount; - } - - public double getLostRate() { - return lostRate; - } - - public void setLostRate(double lostRate) { - this.lostRate = lostRate; - } - - public long getLastRewardHeight() { - return lastRewardHeight; - } - - public void setLastRewardHeight(long lastRewardHeight) { - this.lastRewardHeight = lastRewardHeight; - } - - public String getDeleteHash() { - return deleteHash; - } - - public void setDeleteHash(String deleteHash) { - this.deleteHash = deleteHash; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public long getDeleteHeight() { - return deleteHeight; - } - - public void setDeleteHeight(long deleteHeight) { - this.deleteHeight = deleteHeight; - } - - public BigInteger getTotalReward() { - return totalReward; - } - - public void setTotalReward(BigInteger totalReward) { - this.totalReward = totalReward; - } - - public BigInteger getCommissionReward() { - return commissionReward; - } - - public void setCommissionReward(BigInteger commissionReward) { - this.commissionReward = commissionReward; - } - - public BigInteger getAgentReward() { - return agentReward; - } - - public void setAgentReward(BigInteger agentReward) { - this.agentReward = agentReward; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public long getRoundPackingTime() { - return roundPackingTime; - } - - public void setRoundPackingTime(long roundPackingTime) { - this.roundPackingTime = roundPackingTime; - } - - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public int getYellowCardCount() { - return yellowCardCount; - } - - public void setYellowCardCount(int yellowCardCount) { - this.yellowCardCount = yellowCardCount; - } - - public AgentInfo copy() { - AgentInfo agentInfo = new AgentInfo(); - agentInfo.txHash = this.txHash; - agentInfo.agentId = this.agentId; - agentInfo.agentAddress = this.agentAddress; - agentInfo.packingAddress = this.packingAddress; - agentInfo.rewardAddress = this.rewardAddress; - agentInfo.agentAlias = this.agentAlias; - agentInfo.deposit = new BigInteger(this.deposit.toString()); - agentInfo.commissionRate = this.commissionRate; - agentInfo.createTime = this.createTime; - agentInfo.status = this.status; - agentInfo.totalDeposit = new BigInteger(this.totalDeposit.toString()); - agentInfo.depositCount = this.depositCount; - agentInfo.creditValue = this.creditValue; - agentInfo.totalPackingCount = this.totalPackingCount; - agentInfo.lostRate = this.lostRate; - agentInfo.lastRewardHeight = this.lastRewardHeight; - agentInfo.deleteHash = this.deleteHash; - agentInfo.blockHeight = this.blockHeight; - agentInfo.deleteHeight = this.deleteHeight; - agentInfo.totalReward = new BigInteger(this.totalReward.toString()); - agentInfo.commissionReward = new BigInteger(this.commissionReward.toString()); - agentInfo.agentReward = new BigInteger(this.agentReward.toString()); - agentInfo.roundPackingTime = this.roundPackingTime; - agentInfo.yellowCardCount = this.yellowCardCount; - agentInfo.version = this.version; - agentInfo.type = this.type; - return agentInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AliasInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AliasInfo.java deleted file mode 100644 index e01bdb1664..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AliasInfo.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.nuls.api.model.po; - -public class AliasInfo extends TxDataInfo { - - private String address; - - private String alias; - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java deleted file mode 100644 index 64872e7d10..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/AssetInfo.java +++ /dev/null @@ -1,116 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.utils.DBUtil; -import org.bson.codecs.pojo.annotations.BsonIgnore; - -import java.math.BigInteger; - -public class AssetInfo extends TxDataInfo { - - private String key; - - private int chainId; - - private int assetId; - - private String symbol; - - private int decimals; - - private BigInteger initCoins; - - private String address; - - private int status; - //该资产在当前链的总量 - private BigInteger localTotalCoins; - - public AssetInfo() { - this.status = ApiConstant.ENABLE; - } - - public AssetInfo(int chainId, int assetId, String symbol, int decimals) { - this.key = DBUtil.getAssetKey(chainId, assetId); - this.chainId = chainId; - this.assetId = assetId; - this.symbol = symbol; - this.decimals = decimals; - this.status = ApiConstant.ENABLE; - } - - public String getKey() { - if (key == null) { - key = DBUtil.getAssetKey(chainId, assetId); - } - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public BigInteger getInitCoins() { - return initCoins; - } - - public void setInitCoins(BigInteger initCoins) { - this.initCoins = initCoins; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public BigInteger getLocalTotalCoins() { - return localTotalCoins; - } - - public void setLocalTotalCoins(BigInteger localTotalCoins) { - this.localTotalCoins = localTotalCoins; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java deleted file mode 100644 index 8592d54339..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHeaderInfo.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * - */ -package io.nuls.api.model.po; - -import java.math.BigInteger; -import java.util.List; - -public class BlockHeaderInfo { - - private String hash; - - private long height; - - private String preHash; - - private String merkleHash; - - private long createTime; - - private String agentHash; - - private String agentId; - - private String packingAddress; - - private String agentAlias; - - private int txCount; - - private long roundIndex; - - private BigInteger totalFee; - - private BigInteger reward; - - private int size; - - private int packingIndexOfRound; - - private String scriptSign; - - private List txHashList; - - private boolean isSeedPacked; - - private long roundStartTime; - - private int agentVersion; - - private int mainVersion; - - public void setByAgentInfo(AgentInfo agentInfo) { - this.agentHash = agentInfo.getTxHash(); - this.agentId = agentInfo.getAgentId(); - this.agentAlias = agentInfo.getAgentAlias(); - } - - public String getHash() { - return hash; - } - - public void setHash(String hash) { - this.hash = hash; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public String getPreHash() { - return preHash; - } - - public void setPreHash(String preHash) { - this.preHash = preHash; - } - - public String getMerkleHash() { - return merkleHash; - } - - public void setMerkleHash(String merkleHash) { - this.merkleHash = merkleHash; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public String getAgentHash() { - return agentHash; - } - - public void setAgentHash(String agentHash) { - this.agentHash = agentHash; - } - - public String getAgentId() { - return agentId; - } - - public void setAgentId(String agentId) { - this.agentId = agentId; - } - - public String getPackingAddress() { - return packingAddress; - } - - public void setPackingAddress(String packingAddress) { - this.packingAddress = packingAddress; - } - - public String getAgentAlias() { - return agentAlias; - } - - public void setAgentAlias(String agentAlias) { - this.agentAlias = agentAlias; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public long getRoundIndex() { - return roundIndex; - } - - public void setRoundIndex(long roundIndex) { - this.roundIndex = roundIndex; - } - - public BigInteger getTotalFee() { - return totalFee; - } - - public void setTotalFee(BigInteger totalFee) { - this.totalFee = totalFee; - } - - public BigInteger getReward() { - return reward; - } - - public void setReward(BigInteger reward) { - this.reward = reward; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getPackingIndexOfRound() { - return packingIndexOfRound; - } - - public void setPackingIndexOfRound(int packingIndexOfRound) { - this.packingIndexOfRound = packingIndexOfRound; - } - - public String getScriptSign() { - return scriptSign; - } - - public void setScriptSign(String scriptSign) { - this.scriptSign = scriptSign; - } - - public List getTxHashList() { - return txHashList; - } - - public void setTxHashList(List txHashList) { - this.txHashList = txHashList; - } - - public boolean isSeedPacked() { - return isSeedPacked; - } - - public void setSeedPacked(boolean seedPacked) { - isSeedPacked = seedPacked; - } - - public long getRoundStartTime() { - return roundStartTime; - } - - public void setRoundStartTime(long roundStartTime) { - this.roundStartTime = roundStartTime; - } - - public int getAgentVersion() { - return agentVersion; - } - - public void setAgentVersion(int agentVersion) { - this.agentVersion = agentVersion; - } - - public int getMainVersion() { - return mainVersion; - } - - public void setMainVersion(int mainVersion) { - this.mainVersion = mainVersion; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHexInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHexInfo.java deleted file mode 100644 index db28271010..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockHexInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.nuls.api.model.po; - -import java.util.List; - -public class BlockHexInfo { - - private long height; - - private String blockHex; - - private List contractHashList; - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public String getBlockHex() { - return blockHex; - } - - public void setBlockHex(String blockHex) { - this.blockHex = blockHex; - } - - public List getContractHashList() { - return contractHashList; - } - - public void setContractHashList(List contractHashList) { - this.contractHashList = contractHashList; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockInfo.java deleted file mode 100644 index a6d457fe7a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/BlockInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.nuls.api.model.po; - -import java.util.List; - -public class BlockInfo { - - private BlockHeaderInfo header; - - private List txList; - - private BlockHexInfo blockHexInfo; - - public BlockHeaderInfo getHeader() { - return header; - } - - public void setHeader(BlockHeaderInfo header) { - this.header = header; - } - - public List getTxList() { - return txList; - } - - public void setTxList(List txList) { - this.txList = txList; - } - - public BlockHexInfo getBlockHexInfo() { - return blockHexInfo; - } - - public void setBlockHexInfo(BlockHexInfo blockHexInfo) { - this.blockHexInfo = blockHexInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainConfigInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainConfigInfo.java deleted file mode 100644 index 71d9822d91..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainConfigInfo.java +++ /dev/null @@ -1,54 +0,0 @@ -package io.nuls.api.model.po; - -public class ChainConfigInfo extends TxDataInfo { - - private int chainId; - - private int agentChainId; - - private int agentAssetId; - - private int awardAssetId; - - public ChainConfigInfo() { - } - - public ChainConfigInfo(int chainId, int agentChainId, int agentAssetId, int awardAssetId) { - this.chainId = chainId; - this.agentChainId = agentChainId; - this.agentAssetId = agentAssetId; - this.awardAssetId = awardAssetId; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAgentChainId() { - return agentChainId; - } - - public void setAgentChainId(int agentChainId) { - this.agentChainId = agentChainId; - } - - public int getAgentAssetId() { - return agentAssetId; - } - - public void setAgentAssetId(int agentAssetId) { - this.agentAssetId = agentAssetId; - } - - public int getAwardAssetId() { - return awardAssetId; - } - - public void setAwardAssetId(int awardAssetId) { - this.awardAssetId = awardAssetId; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainInfo.java deleted file mode 100644 index fff13385f3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainInfo.java +++ /dev/null @@ -1,135 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.util.ArrayList; -import java.util.List; - -public class ChainInfo extends TxDataInfo { - - private int chainId; - - private String chainName; - - private AssetInfo defaultAsset; - - private List assets; - - private List seeds; - - private int status; - - @JsonIgnore - private boolean isNew; - - public ChainInfo() { - assets = new ArrayList<>(); - seeds = new ArrayList<>(); - status = ApiConstant.ENABLE; - } - - public Document toDocument() { - Document document = new Document(); - document.put("_id", chainId); - document.put("chainName", chainName); - Document defaultAssetDoc = DocumentTransferTool.toDocument(defaultAsset); - document.put("defaultAsset", defaultAssetDoc); - - document.put("assets", DocumentTransferTool.toDocumentList(assets)); - document.put("seeds", seeds); - return document; - } - - public static ChainInfo toInfo(Document document) { - ChainInfo chainInfo = new ChainInfo(); - chainInfo.setChainId(document.getInteger("_id")); - chainInfo.setChainName(document.getString("chainName")); - AssetInfo defaultAsset = DocumentTransferTool.toInfo((Document) document.get("defaultAsset"), AssetInfo.class); - chainInfo.setDefaultAsset(defaultAsset); - - List list = DocumentTransferTool.toInfoList((List) document.get("assets"), AssetInfo.class); - chainInfo.getAssets().addAll(list); - - List seeds = (List) document.get("seeds"); - chainInfo.setSeeds(seeds); - return chainInfo; - } - - public AssetInfo getAsset(int assetId) { - for (AssetInfo assetInfo : assets) { - if (assetInfo.getAssetId() == assetId) { - return assetInfo; - } - } - return null; - } - - public AssetInfo removeAsset(int assetId) { - for (int i = 0; i < assets.size(); i++) { - AssetInfo assetInfo = assets.get(i); - if (assetInfo.getAssetId() == assetId) { - return assets.remove(i); - } - } - return null; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public AssetInfo getDefaultAsset() { - return defaultAsset; - } - - public void setDefaultAsset(AssetInfo defaultAsset) { - this.defaultAsset = defaultAsset; - } - - public List getAssets() { - return assets; - } - - public void setAssets(List assets) { - this.assets = assets; - } - - public List getSeeds() { - return seeds; - } - - public void setSeeds(List seeds) { - this.seeds = seeds; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public String getChainName() { - return chainName; - } - - public void setChainName(String chainName) { - this.chainName = chainName; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainStatisticalInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainStatisticalInfo.java deleted file mode 100644 index ccb7b7e6fe..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ChainStatisticalInfo.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.nuls.api.model.po; - -public class ChainStatisticalInfo { - - private int chainId; - - private long txCount; - - private long lastStatisticalHeight; - - public long getTxCount() { - return txCount; - } - - public void setTxCount(long txCount) { - this.txCount = txCount; - } - - public long getLastStatisticalHeight() { - return lastStatisticalHeight; - } - - public void setLastStatisticalHeight(long lastStatisticalHeight) { - this.lastStatisticalHeight = lastStatisticalHeight; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinContextInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinContextInfo.java deleted file mode 100644 index ce1cf72209..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinContextInfo.java +++ /dev/null @@ -1,129 +0,0 @@ -package io.nuls.api.model.po; - -import java.math.BigInteger; -import java.util.List; - -public class CoinContextInfo { - - private BigInteger total; - - private BigInteger consensusTotal; - - private BigInteger circulation; - - private BigInteger dailyReward; - - private BigInteger business; - - private BigInteger team; - - private BigInteger community; - - private BigInteger unmapped; - - private BigInteger destroy; - - private long txCount; - - private List destroyInfoList; - - public CoinContextInfo() { - total = BigInteger.ZERO; - consensusTotal = BigInteger.ZERO; - circulation = BigInteger.ZERO; - dailyReward = BigInteger.ZERO; - business = BigInteger.ZERO; - team = BigInteger.ZERO; - community = BigInteger.ZERO; - unmapped = BigInteger.ZERO; - } - - public BigInteger getTotal() { - return total; - } - - public void setTotal(BigInteger total) { - this.total = total; - } - - public BigInteger getConsensusTotal() { - return consensusTotal; - } - - public void setConsensusTotal(BigInteger consensusTotal) { - this.consensusTotal = consensusTotal; - } - - public BigInteger getCirculation() { - return circulation; - } - - public void setCirculation(BigInteger circulation) { - this.circulation = circulation; - } - - public BigInteger getDailyReward() { - return dailyReward; - } - - public void setDailyReward(BigInteger dailyReward) { - this.dailyReward = dailyReward; - } - - public long getTxCount() { - return txCount; - } - - public void setTxCount(long txCount) { - this.txCount = txCount; - } - - public BigInteger getBusiness() { - return business; - } - - public void setBusiness(BigInteger business) { - this.business = business; - } - - public BigInteger getTeam() { - return team; - } - - public void setTeam(BigInteger team) { - this.team = team; - } - - public BigInteger getCommunity() { - return community; - } - - public void setCommunity(BigInteger community) { - this.community = community; - } - - public BigInteger getUnmapped() { - return unmapped; - } - - public void setUnmapped(BigInteger unmapped) { - this.unmapped = unmapped; - } - - - public BigInteger getDestroy() { - return destroy; - } - - public void setDestroy(BigInteger destroy) { - this.destroy = destroy; - } - - public List getDestroyInfoList() { - return destroyInfoList; - } - - public void setDestroyInfoList(List destroyInfoList) { - this.destroyInfoList = destroyInfoList; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinDataInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinDataInfo.java deleted file mode 100644 index f4b03ae0c9..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinDataInfo.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.util.List; - -public class CoinDataInfo { - - private String txHash; - - private List fromList; - - private List toList; - - public CoinDataInfo() { - } - - public CoinDataInfo(String txHash, List fromList, List toList) { - this.txHash = txHash; - this.fromList = fromList; - this.toList = toList; - } - - public Document toDocument() { - Document document = new Document(); - document.put("_id", txHash); - document.put("fromList", DocumentTransferTool.toDocumentList(fromList)); - document.put("toList", DocumentTransferTool.toDocumentList(toList)); - return document; - } - - public static CoinDataInfo toInfo(Document document) { - CoinDataInfo info = new CoinDataInfo(); - info.setTxHash(document.getString("_id")); - info.setFromList(DocumentTransferTool.toInfoList((List) document.get("fromList"), CoinFromInfo.class)); - info.setToList(DocumentTransferTool.toInfoList((List) document.get("toList"), CoinToInfo.class)); - return info; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public List getFromList() { - return fromList; - } - - public void setFromList(List fromList) { - this.fromList = fromList; - } - - public List getToList() { - return toList; - } - - public void setToList(List toList) { - this.toList = toList; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java deleted file mode 100644 index 9a99b28a2a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinFromInfo.java +++ /dev/null @@ -1,90 +0,0 @@ -package io.nuls.api.model.po; - -import java.math.BigInteger; - -public class CoinFromInfo { - - private String address; - - private int chainId; - - private int assetsId; - - private BigInteger amount; - - private int locked; - - private String nonce; - - private String symbol; - - private int decimal; - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetsId() { - return assetsId; - } - - public void setAssetsId(int assetsId) { - this.assetsId = assetsId; - } - - public BigInteger getAmount() { - return amount; - } - - public void setAmount(BigInteger amount) { - this.amount = amount; - } - - public int getLocked() { - return locked; - } - - public void setLocked(int locked) { - this.locked = locked; - } - - public String getNonce() { - return nonce; - } - - public void setNonce(String nonce) { - this.nonce = nonce; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getAssetKey() { - return chainId + "-" + assetsId; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java deleted file mode 100644 index 901f51190a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CoinToInfo.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.nuls.api.model.po; - -import java.math.BigInteger; - -public class CoinToInfo { - - private String address; - - private int chainId; - - private int assetsId; - - private BigInteger amount; - - private long lockTime; - - private String symbol; - - private int decimal; - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetsId() { - return assetsId; - } - - public void setAssetsId(int assetsId) { - this.assetsId = assetsId; - } - - public BigInteger getAmount() { - return amount; - } - - public void setAmount(BigInteger amount) { - this.amount = amount; - } - - public long getLockTime() { - return lockTime; - } - - public void setLockTime(long lockTime) { - this.lockTime = lockTime; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public String getAssetKey() { - return chainId + "-" + assetsId; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractCallInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractCallInfo.java deleted file mode 100644 index ccac82eb7e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractCallInfo.java +++ /dev/null @@ -1,107 +0,0 @@ -package io.nuls.api.model.po; - - -import java.math.BigInteger; - -public class ContractCallInfo extends TxDataInfo { - - private String contractAddress; - - private String createTxHash; - - private String creater; - - private Long gasLimit; - - private Long price; - - private String methodName; - - private String methodDesc; - - private String args; - - private BigInteger value; - - private ContractResultInfo resultInfo; - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getCreateTxHash() { - return createTxHash; - } - - public void setCreateTxHash(String createTxHash) { - this.createTxHash = createTxHash; - } - - public String getCreater() { - return creater; - } - - public void setCreater(String creater) { - this.creater = creater; - } - - public Long getGasLimit() { - return gasLimit; - } - - public void setGasLimit(Long gasLimit) { - this.gasLimit = gasLimit; - } - - public Long getPrice() { - return price; - } - - public void setPrice(Long price) { - this.price = price; - } - - public String getMethodName() { - return methodName; - } - - public void setMethodName(String methodName) { - this.methodName = methodName; - } - - public String getMethodDesc() { - return methodDesc; - } - - public void setMethodDesc(String methodDesc) { - this.methodDesc = methodDesc; - } - - public String getArgs() { - return args; - } - - public void setArgs(String args) { - this.args = args; - } - - public ContractResultInfo getResultInfo() { - return resultInfo; - } - - public void setResultInfo(ContractResultInfo resultInfo) { - this.resultInfo = resultInfo; - } - - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractDeleteInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractDeleteInfo.java deleted file mode 100644 index c70df6fabe..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractDeleteInfo.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.nuls.api.model.po; - -public class ContractDeleteInfo extends TxDataInfo { - - private String txHash; - - private String contractAddress; - - private String creater; - - private ContractResultInfo resultInfo; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getCreater() { - return creater; - } - - public void setCreater(String creater) { - this.creater = creater; - } - - public ContractResultInfo getResultInfo() { - return resultInfo; - } - - public void setResultInfo(ContractResultInfo resultInfo) { - this.resultInfo = resultInfo; - } -} \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java deleted file mode 100644 index 38ad54cb8a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractInfo.java +++ /dev/null @@ -1,350 +0,0 @@ -package io.nuls.api.model.po; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - -public class ContractInfo extends TxDataInfo { - - private String contractAddress; - - private String creater; - - private String createTxHash; - - private String alias; - - private long blockHeight; - - private boolean success; - - private BigInteger balance; - private BigInteger totalBalance; - - private String errorMsg; - - //token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 - private int tokenType; - - private boolean isNrc20;//是否支持NRC20协议(0-否、1-是) - - private boolean isDirectPayable; - - private int status; // -1,执行失败,0未认证 1正在审核 2通过验证 3 已删除 - - private long certificationTime; - - private long createTime; - - private String remark; - - private int txCount; - - private String deleteHash; - - private List methods; - - //以下字段,为NRC20合约特有 - private String tokenName; - - private String symbol; - - private int decimals; - - private String totalSupply; - - private int transferCount; - - private List owners; - - private ContractResultInfo resultInfo; - - private String args; - private boolean crossAsset; - @JsonIgnore - private boolean isNew; - - - public Document toDocument() { - Document document = DocumentTransferTool.toDocument(this, "contractAddress"); - List methodsList = new ArrayList<>(); - List paramsList; - if (methods != null) { - for (ContractMethod method : methods) { - List params = method.getParams(); - paramsList = new ArrayList<>(); - for (ContractMethodArg param : params) { - Document paramDoc = DocumentTransferTool.toDocument(param); - paramsList.add(paramDoc); - } - Document doc = DocumentTransferTool.toDocument(method); - doc.put("params", paramsList); - methodsList.add(doc); - } - } - document.put("methods", methodsList); - - //document.put("resultInfo", resultInfo.toDocument()); - document.remove("resultInfo"); - return document; - } - - public static ContractInfo toInfo(Document document) { - List methods = new ArrayList<>(); - List methodsList = (List) document.get("methods"); - for (Document doc : methodsList) { - ContractMethod method = DocumentTransferTool.toInfo(doc, ContractMethod.class); - List params = new ArrayList<>(); - List paramsList = (List) doc.get("params"); - for (Document paramDoc : paramsList) { - ContractMethodArg param = DocumentTransferTool.toInfo(paramDoc, ContractMethodArg.class); - params.add(param); - } - doc.remove("params"); - method.setParams(params); - methods.add(method); - } - document.remove("methods"); - ContractInfo info = DocumentTransferTool.toInfo(document, "contractAddress", ContractInfo.class); - - info.setMethods(methods); - return info; - - } - - public BigInteger getTotalBalance() { - return totalBalance; - } - - public void setTotalBalance(BigInteger totalBalance) { - this.totalBalance = totalBalance; - } - - public int getTokenType() { - return tokenType; - } - - public void setTokenType(int tokenType) { - this.tokenType = tokenType; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getCreater() { - return creater; - } - - public void setCreater(String creater) { - this.creater = creater; - } - - public String getCreateTxHash() { - return createTxHash; - } - - public void setCreateTxHash(String createTxHash) { - this.createTxHash = createTxHash; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - public boolean isNrc20() { - return isNrc20; - } - - public void setNrc20(boolean nrc20) { - isNrc20 = nrc20; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public long getCertificationTime() { - return certificationTime; - } - - public void setCertificationTime(long certificationTime) { - this.certificationTime = certificationTime; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public String getDeleteHash() { - return deleteHash; - } - - public void setDeleteHash(String deleteHash) { - this.deleteHash = deleteHash; - } - - public List getMethods() { - return methods; - } - - public void setMethods(List methods) { - this.methods = methods; - } - - public String getTokenName() { - return tokenName; - } - - public void setTokenName(String tokenName) { - this.tokenName = tokenName; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public String getTotalSupply() { - return totalSupply; - } - - public void setTotalSupply(String totalSupply) { - this.totalSupply = totalSupply; - } - - public int getTransferCount() { - return transferCount; - } - - public void setTransferCount(int transferCount) { - this.transferCount = transferCount; - } - - public List getOwners() { - return owners; - } - - public void setOwners(List owners) { - this.owners = owners; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public ContractResultInfo getResultInfo() { - return resultInfo; - } - - public void setResultInfo(ContractResultInfo resultInfo) { - this.resultInfo = resultInfo; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - public boolean isDirectPayable() { - return isDirectPayable; - } - - public void setDirectPayable(boolean directPayable) { - isDirectPayable = directPayable; - } - - public String getArgs() { - return args; - } - - public void setArgs(String args) { - this.args = args; - } - - public boolean isCrossAsset() { - return crossAsset; - } - - public void setCrossAsset(boolean crossAsset) { - this.crossAsset = crossAsset; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethod.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethod.java deleted file mode 100644 index 3911a4e323..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethod.java +++ /dev/null @@ -1,79 +0,0 @@ -package io.nuls.api.model.po; - -import java.util.List; - -public class ContractMethod { - - private String name; - private String desc; - private String returnType; - private boolean view; - private boolean payable; - private boolean event; - private boolean jsonSerializable; - private List params; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getReturnType() { - return returnType; - } - - public void setReturnType(String returnType) { - this.returnType = returnType; - } - - public boolean isView() { - return view; - } - - public void setView(boolean view) { - this.view = view; - } - - public boolean isPayable() { - return payable; - } - - public void setPayable(boolean payable) { - this.payable = payable; - } - - public boolean isEvent() { - return event; - } - - public void setEvent(boolean event) { - this.event = event; - } - - public boolean isJsonSerializable() { - return jsonSerializable; - } - - public void setJsonSerializable(boolean jsonSerializable) { - this.jsonSerializable = jsonSerializable; - } - - public List getParams() { - return params; - } - - public void setParams(List params) { - this.params = params; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethodArg.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethodArg.java deleted file mode 100644 index 287bb52d4a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractMethodArg.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -package io.nuls.api.model.po; - -public class ContractMethodArg { - - private String type; - - private String name; - - private boolean required; - - public ContractMethodArg() { - } - - public ContractMethodArg(String type, String name, boolean required) { - this.type = type; - this.name = name; - this.required = required; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isRequired() { - return required; - } - - public void setRequired(boolean required) { - this.required = required; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractResultInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractResultInfo.java deleted file mode 100644 index 4d5a245b34..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractResultInfo.java +++ /dev/null @@ -1,235 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.util.ArrayList; -import java.util.List; - -public class ContractResultInfo { - - private String txHash; - - private String contractAddress; - - private boolean success; - - private String errorMessage; - - private String result; - - private long gasLimit; - - private long gasUsed; - - private long price; - - private String totalFee; - - private String txSizeFee; - - private String actualContractFee; - - private String refundFee; - - private String value; - - //private String balance; - - private List nulsTransfers; - - private List tokenTransfers; - - private String remark; - - private List contractTxList; - - private List events; - - public Document toDocument() { - Document document = DocumentTransferTool.toDocument(this, "txHash"); - List nulsTransferList = new ArrayList<>(); - for (NulsTransfer transfer : nulsTransfers) { - Document doc = DocumentTransferTool.toDocument(transfer); - nulsTransferList.add(doc); - } - - List tokenTransferList = new ArrayList<>(); - for (TokenTransfer transfer : tokenTransfers) { - Document doc = DocumentTransferTool.toDocument(transfer); - tokenTransferList.add(doc); - } - - document.put("nulsTransfers", nulsTransferList); - document.put("tokenTransfers", tokenTransferList); - return document; - } - - public static ContractResultInfo toInfo(Document document) { - List documentList = (List) document.get("nulsTransfers"); - List nulsTransferList = new ArrayList<>(); - for (Document doc : documentList) { - NulsTransfer nulsTransfer = DocumentTransferTool.toInfo(doc, NulsTransfer.class); - nulsTransferList.add(nulsTransfer); - } - - documentList = (List) document.get("tokenTransfers"); - List tokenTransferList = new ArrayList<>(); - for (Document doc : documentList) { - TokenTransfer tokenTransfer = DocumentTransferTool.toInfo(doc, TokenTransfer.class); - tokenTransferList.add(tokenTransfer); - } - - document.remove("nulsTransfers"); - document.remove("tokenTransfers"); - - ContractResultInfo resultInfo = DocumentTransferTool.toInfo(document, "txHash", ContractResultInfo.class); - resultInfo.setNulsTransfers(nulsTransferList); - resultInfo.setTokenTransfers(tokenTransferList); - return resultInfo; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - - public String getResult() { - return result; - } - - public void setResult(String result) { - this.result = result; - } - - public long getGasLimit() { - return gasLimit; - } - - public void setGasLimit(long gasLimit) { - this.gasLimit = gasLimit; - } - - public long getGasUsed() { - return gasUsed; - } - - public void setGasUsed(long gasUsed) { - this.gasUsed = gasUsed; - } - - public long getPrice() { - return price; - } - - public void setPrice(long price) { - this.price = price; - } - - public String getTotalFee() { - return totalFee; - } - - public void setTotalFee(String totalFee) { - this.totalFee = totalFee; - } - - public String getTxSizeFee() { - return txSizeFee; - } - - public void setTxSizeFee(String txSizeFee) { - this.txSizeFee = txSizeFee; - } - - public String getActualContractFee() { - return actualContractFee; - } - - public void setActualContractFee(String actualContractFee) { - this.actualContractFee = actualContractFee; - } - - public String getRefundFee() { - return refundFee; - } - - public void setRefundFee(String refundFee) { - this.refundFee = refundFee; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public List getNulsTransfers() { - return nulsTransfers; - } - - public void setNulsTransfers(List nulsTransfers) { - this.nulsTransfers = nulsTransfers; - } - - public List getTokenTransfers() { - return tokenTransfers; - } - - public void setTokenTransfers(List tokenTransfers) { - this.tokenTransfers = tokenTransfers; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public List getContractTxList() { - return contractTxList; - } - - public void setContractTxList(List contractTxList) { - this.contractTxList = contractTxList; - } - - public List getEvents() { - return events; - } - - public void setEvents(List events) { - this.events = events; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTransferInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTransferInfo.java deleted file mode 100644 index 2ce682a6fc..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTransferInfo.java +++ /dev/null @@ -1,74 +0,0 @@ -package io.nuls.api.model.po; - -public class ContractTransferInfo extends TxDataInfo { - - private String txHash; - - private String contractAddress; - - private String orginTxHash; - - private String fromAddress; - - private String toAddress; - - private Long txValue; - - private Long createTime; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getOrginTxHash() { - return orginTxHash; - } - - public void setOrginTxHash(String orginTxHash) { - this.orginTxHash = orginTxHash; - } - - public String getFromAddress() { - return fromAddress; - } - - public void setFromAddress(String fromAddress) { - this.fromAddress = fromAddress; - } - - public String getToAddress() { - return toAddress; - } - - public void setToAddress(String toAddress) { - this.toAddress = toAddress; - } - - public Long getTxValue() { - return txValue; - } - - public void setTxValue(Long txValue) { - this.txValue = txValue; - } - - public Long getCreateTime() { - return createTime; - } - - public void setCreateTime(Long createTime) { - this.createTime = createTime; - } -} \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTxInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTxInfo.java deleted file mode 100644 index 0c80dab867..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/ContractTxInfo.java +++ /dev/null @@ -1,96 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -public class ContractTxInfo { - - private String contractAddress; - - private String txHash; - - private long blockHeight; - - private long time; - - private int type; - - private String contractMethod; - - private FeeInfo fee; - - public Document toDocument() { - Document document = new Document(); - document.append("contractAddress", contractAddress).append("txHash", txHash).append("time", time).append("type", type) - .append("blockHeight", blockHeight).append("fee", DocumentTransferTool.toDocument(fee)).append("contractMethod", contractMethod); - return document; - } - - public static ContractTxInfo toInfo(Document document) { - ContractTxInfo info = new ContractTxInfo(); - info.setContractAddress(document.getString("contractAddress")); - info.setTxHash(document.getString("txHash")); - info.setBlockHeight(document.getLong("blockHeight")); - info.setTime(document.getLong("time")); - info.setType(document.getInteger("type")); - info.setFee(DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class)); - info.setContractMethod(document.getString("contractMethod")); - return info; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public FeeInfo getFee() { - return fee; - } - - public void setFee(FeeInfo fee) { - this.fee = fee; - } - - public String getContractMethod() { - return contractMethod; - } - - public void setContractMethod(String contractMethod) { - this.contractMethod = contractMethod; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java deleted file mode 100644 index 304ed553fe..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CrossTxRelationInfo.java +++ /dev/null @@ -1,182 +0,0 @@ -package io.nuls.api.model.po; - -import org.bson.Document; - -import java.math.BigInteger; - -import static io.nuls.api.constant.ApiConstant.TRANSFER_FROM_TYPE; -import static io.nuls.api.constant.ApiConstant.TRANSFER_TO_TYPE; - - -public class CrossTxRelationInfo { - - private String txHash; - - private String address; - - private long createTime; - - private long height; - - private int chainId; - - private int assetId; - - private int decimal; - - private String symbol; - - private BigInteger values; - - // -1 : from , 1: to - private int transferType; - - private int status; - - public CrossTxRelationInfo() { - - } - - public CrossTxRelationInfo(CoinToInfo output, TransactionInfo tx, int decimal) { - this.address = output.getAddress(); - this.chainId = output.getChainId(); - this.assetId = output.getAssetsId(); - this.height = tx.getHeight(); - this.symbol = output.getSymbol(); - this.values = output.getAmount(); - this.txHash = tx.getHash(); - this.createTime = tx.getCreateTime(); - this.transferType = TRANSFER_TO_TYPE; - this.decimal = decimal; - } - - public CrossTxRelationInfo(CoinFromInfo input, TransactionInfo tx, int decimal) { - this.address = input.getAddress(); - this.chainId = input.getChainId(); - this.assetId = input.getAssetsId(); - this.height = tx.getHeight(); - this.symbol = input.getSymbol(); - this.values = input.getAmount(); - this.txHash = tx.getHash(); - this.createTime = tx.getCreateTime(); - this.transferType = TRANSFER_FROM_TYPE; - this.decimal = decimal; - } - - public Document toDocument() { - Document document = new Document(); - document.append("address", address).append("txHash", txHash).append("createTime", createTime) - .append("chainId", chainId).append("assetId", assetId).append("symbol", symbol).append("height", height) - .append("values", values.toString()).append("transferType", transferType); - return document; - } - - public static CrossTxRelationInfo toInfo(Document document) { - try { - CrossTxRelationInfo relationInfo = new CrossTxRelationInfo(); - relationInfo.setAddress(document.getString("address")); - relationInfo.setTxHash(document.getString("txHash")); - relationInfo.setCreateTime(document.getLong("createTime")); - relationInfo.setChainId(document.getInteger("chainId")); - relationInfo.setAssetId(document.getInteger("assetId")); - relationInfo.setSymbol(document.getString("symbol")); - relationInfo.setTransferType(document.getInteger("transferType")); - relationInfo.setValues(new BigInteger(document.getString("values"))); - relationInfo.setHeight(document.getLong("height")); - return relationInfo; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public BigInteger getValues() { - return values; - } - - public void setValues(BigInteger values) { - this.values = values; - } - - public int getTransferType() { - return transferType; - } - - public void setTransferType(int transferType) { - this.transferType = transferType; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CurrentRound.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CurrentRound.java deleted file mode 100644 index 162edfb531..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/CurrentRound.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.po; - -import io.nuls.core.model.DateUtils; - -import java.util.Date; -import java.util.List; - -/** - * @author Niels - */ -public class CurrentRound extends PocRound { - - public CurrentRound() { - this.setIndex(-1); - } - - private int packerOrder; - - private BlockHeaderInfo startBlockHeader; - - private List itemList; - - public int getPackerOrder() { - return packerOrder; - } - - public void setPackerOrder(int packerOrder) { - this.packerOrder = packerOrder; - } - - public List getItemList() { - return itemList; - } - - public void setItemList(List itemList) { - this.itemList = itemList; - } - - public PocRound toPocRound() { - PocRound round = new PocRound(); - round.setEndHeight(this.getEndHeight()); - round.setEndTime(this.getEndTime()); - round.setIndex(this.getIndex()); - round.setMemberCount(this.getMemberCount()); - round.setProducedBlockCount(this.getProducedBlockCount()); - round.setRedCardCount(this.getRedCardCount()); - round.setStartHeight(this.getStartHeight()); - round.setStartTime(this.getStartTime()); - round.setYellowCardCount(this.getYellowCardCount()); - round.setLostRate(this.getLostRate()); - return round; - } - - - @Override - public String toString() { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("index:" + this.getIndex()); - stringBuilder.append(", startHeight:"); - stringBuilder.append(this.getStartHeight()); - stringBuilder.append(", startTime:" + DateUtils.convertDate(new Date(this.getStartTime()), "YYYY-mm-DD HH:MM:SS")); - stringBuilder.append("\n"); - int index = 1; - if (null != this.getItemList()) { - for (PocRoundItem item : this.getItemList()) { - stringBuilder.append(index++); - stringBuilder.append(" , "); - stringBuilder.append(item.getSeedAddress() == null ? item.getPackingAddress() : item.getSeedAddress()); - stringBuilder.append("\n"); - } - } - return stringBuilder.toString(); - } - - public BlockHeaderInfo getStartBlockHeader() { - return startBlockHeader; - } - - public void setStartBlockHeader(BlockHeaderInfo startBlockHeader) { - this.startBlockHeader = startBlockHeader; - } - - public void initByPocRound(PocRound round) { - this.setEndHeight(round.getEndHeight()); - this.setEndTime(round.getEndTime()); - this.setProducedBlockCount(round.getProducedBlockCount()); - this.setRedCardCount(round.getRedCardCount()); - this.setYellowCardCount(round.getYellowCardCount()); - this.setStartTime(round.getStartTime()); - this.setMemberCount(round.getMemberCount()); - this.setStartHeight(round.getStartHeight()); - this.setIndex(round.getIndex()); - this.setLostRate(round.getLostRate()); - } - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DepositInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DepositInfo.java deleted file mode 100644 index f94f2e3c75..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DepositInfo.java +++ /dev/null @@ -1,140 +0,0 @@ -package io.nuls.api.model.po; - - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import java.math.BigInteger; - -public class DepositInfo extends TxDataInfo { - - private String key; - - private String txHash; - - private BigInteger amount; - - private String agentHash; - - private String address; - - private long createTime; - - private String deleteKey; - - private long blockHeight; - - private long deleteHeight; - - private BigInteger fee; - - @JsonIgnore - private boolean isNew; - // 0 加入共识,1 退出共识 - private int type; - - public void copyInfoWithDeposit() { - } - - public void copyInfoWithDeposit(DepositInfo depositInfo) { - this.amount = depositInfo.amount; - this.address = depositInfo.address; - this.agentHash = depositInfo.getAgentHash(); - } - - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public BigInteger getAmount() { - return amount; - } - - public void setAmount(BigInteger amount) { - this.amount = amount; - } - - public String getAgentHash() { - return agentHash; - } - - public void setAgentHash(String agentHash) { - this.agentHash = agentHash; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public String getDeleteKey() { - return deleteKey; - } - - public void setDeleteKey(String deleteKey) { - this.deleteKey = deleteKey; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public long getDeleteHeight() { - return deleteHeight; - } - - public void setDeleteHeight(long deleteHeight) { - this.deleteHeight = deleteHeight; - } - - public BigInteger getFee() { - return fee; - } - - public void setFee(BigInteger fee) { - this.fee = fee; - } - - public boolean isNew() { - return isNew; - } - - public void setNew(boolean aNew) { - isNew = aNew; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DestroyInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DestroyInfo.java deleted file mode 100644 index 3c0a65fb31..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/DestroyInfo.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.nuls.api.model.po; - -public class DestroyInfo { - - private String address; - - private String reason; - - private String value; - - public DestroyInfo() { - } - - public DestroyInfo(String address, String reason, String value) { - this.address = address; - this.reason = reason; - this.value = value; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getReason() { - return reason; - } - - public void setReason(String reason) { - this.reason = reason; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/FeeInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/FeeInfo.java deleted file mode 100644 index 29c1b17aa7..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/FeeInfo.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.nuls.api.model.po; - -import java.math.BigInteger; - -public class FeeInfo { - - private int chainId; - - private int assetId; - - private String symbol; - - private BigInteger value; - - public FeeInfo() { - - } - - public FeeInfo(int chainId, int assetId, String symbol) { - this.chainId = chainId; - this.assetId = assetId; - this.symbol = symbol; - this.value = BigInteger.ZERO; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/KeyValue.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/KeyValue.java deleted file mode 100644 index e24d7fbac6..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/KeyValue.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.po; - -/** - * @author Niels - */ -public class KeyValue { - private String key; - - private Object value; - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/Nrc20Info.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/Nrc20Info.java deleted file mode 100644 index 26b984b0a7..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/Nrc20Info.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.nuls.api.model.po; - -public class Nrc20Info { - - private String contractAddress; - - private String symbol; - - private int decimal; - - private String totalSupply; - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } - - public String getTotalSupply() { - return totalSupply; - } - - public void setTotalSupply(String totalSupply) { - this.totalSupply = totalSupply; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/NulsTransfer.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/NulsTransfer.java deleted file mode 100644 index 1de4f0ca4c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/NulsTransfer.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.nuls.api.model.po; - -import java.util.List; -import java.util.Map; - -public class NulsTransfer { - - private String txHash; - - private String from; - - private String value; - - private List> outputs; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - this.from = from; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public List> getOutputs() { - return outputs; - } - - public void setOutputs(List> outputs) { - this.outputs = outputs; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PageInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PageInfo.java deleted file mode 100644 index 251988684b..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PageInfo.java +++ /dev/null @@ -1,65 +0,0 @@ -package io.nuls.api.model.po; - -import java.util.ArrayList; -import java.util.List; - -public class PageInfo { - - private int pageNumber; - - private int pageSize; - - private long totalCount; - - private List list; - - public PageInfo() { - - } - - public PageInfo(int pageNumber, int pageSize, long totalCount, List list) { - this.pageNumber = pageNumber; - this.pageSize = pageSize; - this.totalCount = totalCount; - this.list = list; - } - - public PageInfo(int pageNumber, int pageSize) { - this.pageNumber = pageNumber; - this.pageSize = pageSize; - - this.list = new ArrayList<>(); - } - - public int getPageNumber() { - return pageNumber; - } - - public void setPageNumber(int pageNumber) { - this.pageNumber = pageNumber; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public long getTotalCount() { - return totalCount; - } - - public void setTotalCount(long totalCount) { - this.totalCount = totalCount; - } - - public List getList() { - return list; - } - - public void setList(List list) { - this.list = list; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRound.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRound.java deleted file mode 100644 index d981979f9a..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRound.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.po; - -/** - * @author Niels - */ -public class PocRound { - - private long index; - - private long startTime; - - private int memberCount; - - private long endTime; - - private int redCardCount; - - private int yellowCardCount; - - private int producedBlockCount; - - private long startHeight; - - private long endHeight; - - private double lostRate; - - public long getIndex() { - return index; - } - - public void setIndex(long index) { - this.index = index; - } - - public long getStartTime() { - return startTime; - } - - public void setStartTime(long startTime) { - this.startTime = startTime; - } - - public int getMemberCount() { - return memberCount; - } - - public void setMemberCount(int memberCount) { - this.memberCount = memberCount; - } - - public long getEndTime() { - return endTime; - } - - public void setEndTime(long endTime) { - this.endTime = endTime; - } - - public int getRedCardCount() { - return redCardCount; - } - - public void setRedCardCount(int redCardCount) { - this.redCardCount = redCardCount; - } - - public int getYellowCardCount() { - return yellowCardCount; - } - - public void setYellowCardCount(int yellowCardCount) { - this.yellowCardCount = yellowCardCount; - } - - public int getProducedBlockCount() { - return producedBlockCount; - } - - public void setProducedBlockCount(int producedBlockCount) { - this.producedBlockCount = producedBlockCount; - } - - public long getStartHeight() { - return startHeight; - } - - public void setStartHeight(long startHeight) { - this.startHeight = startHeight; - } - - public long getEndHeight() { - return endHeight; - } - - public void setEndHeight(long endHeight) { - this.endHeight = endHeight; - } - - public double getLostRate() { - return lostRate; - } - - public void setLostRate(double lostRate) { - this.lostRate = lostRate; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRoundItem.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRoundItem.java deleted file mode 100644 index e73ef0f257..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PocRoundItem.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.po; - -import io.nuls.core.rpc.util.NulsDateUtils; - -import java.math.BigInteger; - -/** - * @author Niels - */ -public class PocRoundItem { - - private String id; - - private String agentHash; - - private long roundIndex; - - private int order; - - private String agentName; - - private String seedAddress; - - private long blockHeight; - - private int txCount; - - private BigInteger reward; - - private String packingAddress; - - private long time; - - private String blockHash; - - private Boolean yellow = false; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public long getRoundIndex() { - return roundIndex; - } - - public void setRoundIndex(long roundIndex) { - this.roundIndex = roundIndex; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public String getAgentName() { - return agentName; - } - - public void setAgentName(String agentName) { - this.agentName = agentName; - } - - public String getSeedAddress() { - return seedAddress; - } - - public void setSeedAddress(String seedAddress) { - this.seedAddress = seedAddress; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public BigInteger getReward() { - return reward; - } - - public void setReward(BigInteger reward) { - this.reward = reward; - } - - public String getPackingAddress() { - return packingAddress; - } - - public void setPackingAddress(String packingAddress) { - this.packingAddress = packingAddress; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public String getBlockHash() { - return blockHash; - } - - public void setBlockHash(String blockHash) { - this.blockHash = blockHash; - } - - public String getAgentHash() { - return agentHash; - } - - public void setAgentHash(String agentHash) { - this.agentHash = agentHash; - } - - public boolean isYellow() { - if (time < NulsDateUtils.getCurrentTimeMillis() && null == blockHash) { - this.yellow = true; - } else { - yellow = false; - } - return yellow; - } - - public void setYellow(Boolean yellow) { - this.yellow = yellow; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PunishLogInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PunishLogInfo.java deleted file mode 100644 index 7c2f64a217..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/PunishLogInfo.java +++ /dev/null @@ -1,84 +0,0 @@ -package io.nuls.api.model.po; - -public class PunishLogInfo extends TxDataInfo { - - private String txHash; - - private int type; - - private String address; - - private long time; - - private long blockHeight; - - private long roundIndex; - - private int packageIndex; - - private String reason; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlockHeight() { - return blockHeight; - } - - public void setBlockHeight(long blockHeight) { - this.blockHeight = blockHeight; - } - - public long getRoundIndex() { - return roundIndex; - } - - public void setRoundIndex(long roundIndex) { - this.roundIndex = roundIndex; - } - - public String getReason() { - return reason; - } - - public void setReason(String reason) { - this.reason = reason; - } - - public int getPackageIndex() { - return packageIndex; - } - - public void setPackageIndex(int packageIndex) { - this.packageIndex = packageIndex; - } -} \ No newline at end of file diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/StatisticalInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/StatisticalInfo.java deleted file mode 100644 index 6002b8fa85..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/StatisticalInfo.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.po; - -import java.math.BigInteger; - -/** - * @author Niels - */ -public class StatisticalInfo { - - private long time; - - private int date; - - private int month; - - private int year; - - private long txCount; - - private BigInteger consensusLocked; - - private int nodeCount; - - private double annualizedReward; - - public int getDate() { - return date; - } - - public void setDate(int date) { - this.date = date; - } - - public int getMonth() { - return month; - } - - public void setMonth(int month) { - this.month = month; - } - - public int getYear() { - return year; - } - - public void setYear(int year) { - this.year = year; - } - - public long getTxCount() { - return txCount; - } - - public void setTxCount(long txCount) { - this.txCount = txCount; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public BigInteger getConsensusLocked() { - return consensusLocked; - } - - public void setConsensusLocked(BigInteger consensusLocked) { - this.consensusLocked = consensusLocked; - } - - public int getNodeCount() { - return nodeCount; - } - - public void setNodeCount(int nodeCount) { - this.nodeCount = nodeCount; - } - - public double getAnnualizedReward() { - return annualizedReward; - } - - public void setAnnualizedReward(double annualizedReward) { - this.annualizedReward = annualizedReward; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java deleted file mode 100644 index 3a6dc5977c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/SyncInfo.java +++ /dev/null @@ -1,71 +0,0 @@ -package io.nuls.api.model.po; - -import java.math.BigInteger; - -public class SyncInfo { - - private int chainId; - - private long bestHeight; - - private int version; - - private BigInteger totalSupply = BigInteger.ZERO; - - private int step; - - public SyncInfo() { - } - - public SyncInfo(int chainId, long bestHeight, BlockHeaderInfo headerInfo) { - this.chainId = chainId; - this.bestHeight = bestHeight; - this.version = headerInfo.getMainVersion(); - this.totalSupply = headerInfo.getReward(); - this.step = 0; - } - - public boolean isFinish() { - return this.step == 100; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public long getBestHeight() { - return bestHeight; - } - - public void setBestHeight(long bestHeight) { - this.bestHeight = bestHeight; - } - - public int getStep() { - return step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; - } - - public BigInteger getTotalSupply() { - return totalSupply; - } - - public void setTotalSupply(BigInteger totalSupply) { - this.totalSupply = totalSupply; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TokenTransfer.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TokenTransfer.java deleted file mode 100644 index f20c4fff83..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TokenTransfer.java +++ /dev/null @@ -1,124 +0,0 @@ -package io.nuls.api.model.po; - -public class TokenTransfer extends TxDataInfo { - - private String txHash; - - private long height; - - private String contractAddress; - - private String name; - - private String symbol; - - private int decimals; - - private String fromAddress; - - private String toAddress; - - private String value; - - private Long time; - - private String fromBalance; - - private String toBalance; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public String getFromAddress() { - return fromAddress; - } - - public void setFromAddress(String fromAddress) { - this.fromAddress = fromAddress; - } - - public String getToAddress() { - return toAddress; - } - - public void setToAddress(String toAddress) { - this.toAddress = toAddress; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public Long getTime() { - return time; - } - - public void setTime(Long time) { - this.time = time; - } - - public String getFromBalance() { - return fromBalance; - } - - public void setFromBalance(String fromBalance) { - this.fromBalance = fromBalance; - } - - public String getToBalance() { - return toBalance; - } - - public void setToBalance(String toBalance) { - this.toBalance = toBalance; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java deleted file mode 100644 index 6bfa0353bb..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TransactionInfo.java +++ /dev/null @@ -1,337 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.manager.CacheManager; -import io.nuls.api.utils.DBUtil; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.constant.TxType; -import org.bson.Document; - -import java.math.BigInteger; -import java.util.List; - -public class TransactionInfo { - - private String hash; - - private int type; - - private long height; - - private int size; - - private FeeInfo fee; - - private long createTime; - - private String remark; - - private String txDataHex; - - private TxDataInfo txData; - - private List txDataList; - - private List coinFroms; - - private List coinTos; - - private BigInteger value; - - private int status; - - private String symbol; - - private int decimal; - - public void calcValue() { - BigInteger value = BigInteger.ZERO; - if (coinTos != null && !coinTos.isEmpty()) { - for (CoinToInfo output : coinTos) { - value = value.add(output.getAmount()); - } - } - if (coinFroms != null && !coinFroms.isEmpty()) { - CoinFromInfo input = coinFroms.get(coinFroms.size() -1); - this.symbol = input.getSymbol(); - this.decimal = input.getDecimal(); - } - this.value = value; -// if (type == TxType.COIN_BASE || -// type == TxType.STOP_AGENT || -// type == TxType.CANCEL_DEPOSIT || -// type == TxType.CONTRACT_RETURN_GAS || -// type == TxType.CONTRACT_STOP_AGENT || -// type == TxType.CONTRACT_CANCEL_DEPOSIT) { -// if (coinTos != null) { -// for (CoinToInfo output : coinTos) { -// value = value.add(output.getAmount()); -// } -// } -// } else if (type == TxType.TRANSFER || -// type == TxType.CALL_CONTRACT || -// type == TxType.CONTRACT_TRANSFER -// // type == TxType.TX_TYPE_DATA -// ) { -// Set addressSet = new HashSet<>(); -// for (CoinFromInfo input : coinFroms) { -// addressSet.add(input.getAddress()); -// } -// for (CoinToInfo output : coinTos) { -// if (!addressSet.contains(output.getAddress())) { -// value = value.add(output.getAmount()); -// } -// } -// } else if (type == TxType.REGISTER_AGENT || -// type == TxType.DEPOSIT || -// type == TxType.CONTRACT_CREATE_AGENT || -// type == TxType.CONTRACT_DEPOSIT) { -// for (CoinToInfo output : coinTos) { -// if (output.getLockTime() == -1) { -// value = value.add(output.getAmount()); -// } -// } -// } else if (type == TxType.ACCOUNT_ALIAS) { -// value = ApiConstant.ALIAS_AMOUNT; -// } else { -// value = this.fee; -// } -// this.value = value.abs(); - } - - public FeeInfo calcFee(int chainId) { - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - ChainConfigInfo configInfo = CacheManager.getCache(chainId).getConfigInfo(); - FeeInfo feeInfo; - if (type == TxType.COIN_BASE || type == TxType.YELLOW_PUNISH || type == TxType.RED_PUNISH || - type == TxType.CONTRACT_RETURN_GAS || type == TxType.CONTRACT_STOP_AGENT || type == TxType.CONTRACT_CANCEL_DEPOSIT || - type == TxType.CONTRACT_CREATE_AGENT || type == TxType.CONTRACT_DEPOSIT) { - //系统交易没有手续费 - feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); -// } else if (type == TxType.CROSS_CHAIN) { -// //取出转出链和接收链的id -// int fromChainId = AddressTool.getChainIdByAddress(coinFroms.get(0).getAddress()); -// int toChainId = AddressTool.getChainIdByAddress(coinTos.get(0).getAddress()); -// -// //如果当前链是NULS主链,手续费是收取主网主资产NULS -// if (chainId == ApiContext.mainChainId) { -// feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); -// if (toChainId == ApiContext.mainChainId) { -// //如果接收地址是主链,则收取NULS的100%作为手续费 -// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); -// feeInfo.setValue(feeValue); -// } else { -// //其他情况,主链收取NULS的60%作为手续费 -// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); -// feeValue = feeValue.multiply(new BigInteger("60")).divide(new BigInteger("100")); -// feeInfo.setValue(feeValue); -// } -// } else { //如果当前链不是NULS主链 -// //如果资产是从本链发起的,则收取本链的默认资产作为手续费 -// if (fromChainId == chainId) { -// feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); -// feeInfo.setValue(calcFeeValue(assetInfo.getChainId(), assetInfo.getAssetId())); -// } else { -// //如果本链是接收转账交易的目标链,则收取主网NULS资产的40%作为手续费 -// feeInfo = new FeeInfo(ApiContext.mainChainId, ApiContext.mainAssetId, ApiContext.mainSymbol); -// BigInteger feeValue = calcFeeValue(ApiContext.mainChainId, ApiContext.mainAssetId); -// feeValue = feeValue.multiply(new BigInteger("40")).divide(new BigInteger("100")); -// feeInfo.setValue(feeValue); -// } -// } - } else if (type == TxType.REGISTER_AGENT || type == TxType.DEPOSIT || type == TxType.CANCEL_DEPOSIT || type == TxType.STOP_AGENT) { - //如果是共识相关的交易,收取共识配置的手续费 - assetInfo = CacheManager.getRegisteredAsset(DBUtil.getAssetKey(configInfo.getChainId(), configInfo.getAwardAssetId())); - feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - BigInteger feeValue = calcFeeValue(assetInfo.getChainId(), assetInfo.getAssetId()); - feeInfo.setValue(feeValue); - } else if (type == TxType.CREATE_CONTRACT || type == TxType.CALL_CONTRACT) { - ContractResultInfo resultInfo; - if (type == TxType.CREATE_CONTRACT) { - ContractInfo contractInfo = (ContractInfo) this.txData; - resultInfo = contractInfo.getResultInfo(); - } else { - ContractCallInfo callInfo = (ContractCallInfo) this.txData; - resultInfo = callInfo.getResultInfo(); - } - feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - if (resultInfo != null) { - BigInteger feeValue = new BigInteger(resultInfo.getActualContractFee()).add(new BigInteger(resultInfo.getTxSizeFee())); - feeInfo.setValue(feeValue); - } - } else { - //其他类型的交易,去本链默认资产手续费 - feeInfo = new FeeInfo(assetInfo.getChainId(), assetInfo.getAssetId(), assetInfo.getSymbol()); - feeInfo.setValue(calcFeeValue(assetInfo.getChainId(), assetInfo.getAssetId())); - } - this.fee = feeInfo; - return feeInfo; - } - - private BigInteger calcFeeValue(int chainId, int assetId) { - BigInteger feeValue = BigInteger.ZERO; - if (coinFroms != null && !coinFroms.isEmpty()) { - for (CoinFromInfo fromInfo : coinFroms) { - if (fromInfo.getChainId() == chainId && fromInfo.getAssetsId() == assetId) { - feeValue = feeValue.add(fromInfo.getAmount()); - } - } - } - if (coinTos != null && !coinTos.isEmpty()) { - for (CoinToInfo toInfo : coinTos) { - if (toInfo.getChainId() == chainId && toInfo.getAssetsId() == assetId) { - feeValue = feeValue.subtract(toInfo.getAmount()); - } - } - } - return feeValue; - } - - public Document toDocument() { - Document document = new Document(); - document.append("_id", hash).append("height", height).append("createTime", createTime).append("type", type).append("decimal", decimal) - .append("value", value.toString()).append("fee", DocumentTransferTool.toDocument(fee)).append("status", status).append("symbol", symbol); - return document; - } - - public static TransactionInfo fromDocument(Document document) { - TransactionInfo info = new TransactionInfo(); - info.setHash(document.getString("_id")); - info.setHeight(document.getLong("height")); - info.setCreateTime(document.getLong("createTime")); - info.setType(document.getInteger("type")); - info.setFee(DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class)); - info.setValue(new BigInteger(document.getString("value"))); - info.setStatus(document.getInteger("status")); - info.setSymbol(document.getString("symbol")); - info.setDecimal(document.getInteger("decimal")); - return info; - } - - public String getHash() { - return hash; - } - - public void setHash(String hash) { - this.hash = hash; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public FeeInfo getFee() { - return fee; - } - - public void setFee(FeeInfo fee) { - this.fee = fee; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getTxDataHex() { - return txDataHex; - } - - public void setTxDataHex(String txDataHex) { - this.txDataHex = txDataHex; - } - - public TxDataInfo getTxData() { - return txData; - } - - public void setTxData(TxDataInfo txData) { - this.txData = txData; - } - - public List getTxDataList() { - return txDataList; - } - - public void setTxDataList(List txDataList) { - this.txDataList = txDataList; - } - - public List getCoinFroms() { - return coinFroms; - } - - public void setCoinFroms(List coinFroms) { - this.coinFroms = coinFroms; - } - - public List getCoinTos() { - return coinTos; - } - - public void setCoinTos(List coinTos) { - this.coinTos = coinTos; - } - - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxDataInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxDataInfo.java deleted file mode 100644 index dade1dcc1e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxDataInfo.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.nuls.api.model.po; - -public class TxDataInfo { -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxHexInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxHexInfo.java deleted file mode 100644 index 024abd6a09..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxHexInfo.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.nuls.api.model.po; - -public class TxHexInfo { - - private String txHash; - - private long time; - - private String txHex; - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public String getTxHex() { - return txHex; - } - - public void setTxHex(String txHex) { - this.txHex = txHex; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxRelationInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxRelationInfo.java deleted file mode 100644 index ff70c5c933..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/TxRelationInfo.java +++ /dev/null @@ -1,260 +0,0 @@ -package io.nuls.api.model.po; - -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.math.BigInteger; - -import static io.nuls.api.constant.ApiConstant.TRANSFER_FROM_TYPE; -import static io.nuls.api.constant.ApiConstant.TRANSFER_TO_TYPE; - - -public class TxRelationInfo { - - private String txHash; - - private String address; - - private int type; - - private long createTime; - - private long height; - - private int chainId; - - private int assetId; - - private String symbol; - - private BigInteger values; - - private FeeInfo fee; - - private BigInteger balance; - - // -1 : from , 1: to - private int transferType; - - private int status; - - public TxRelationInfo() { - - } - - public TxRelationInfo(String address, String txHash) { - this.address = address; - this.txHash = txHash; - } - - public TxRelationInfo(CoinToInfo output, TransactionInfo tx, BigInteger balance) { - this.address = output.getAddress(); - this.chainId = output.getChainId(); - this.assetId = output.getAssetsId(); - this.symbol = output.getSymbol(); - this.values = output.getAmount(); - this.txHash = tx.getHash(); - this.type = tx.getType(); - this.createTime = tx.getCreateTime(); - this.height = tx.getHeight(); - this.fee = tx.getFee(); - this.balance = balance; - this.transferType = TRANSFER_TO_TYPE; - } - - public TxRelationInfo(CoinToInfo output, TransactionInfo tx, BigInteger values, BigInteger balance) { - this.address = output.getAddress(); - this.chainId = output.getChainId(); - this.assetId = output.getAssetsId(); - this.symbol = output.getSymbol(); - this.values = values; - this.txHash = tx.getHash(); - this.type = tx.getType(); - this.createTime = tx.getCreateTime(); - this.height = tx.getHeight(); - this.fee = tx.getFee(); - this.balance = balance; - this.transferType = TRANSFER_TO_TYPE; - } - - public TxRelationInfo(CoinFromInfo input, TransactionInfo tx, BigInteger balance) { - this.address = input.getAddress(); - this.chainId = input.getChainId(); - this.assetId = input.getAssetsId(); - this.symbol = input.getSymbol(); - this.values = input.getAmount(); - this.txHash = tx.getHash(); - this.type = tx.getType(); - this.createTime = tx.getCreateTime(); - this.height = tx.getHeight(); - this.fee = tx.getFee(); - this.balance = balance; - this.transferType = TRANSFER_FROM_TYPE; - } - - public TxRelationInfo(CoinFromInfo input, TransactionInfo tx, BigInteger values, BigInteger balance) { - this.address = input.getAddress(); - this.chainId = input.getChainId(); - this.assetId = input.getAssetsId(); - this.symbol = input.getSymbol(); - this.values = values; - this.txHash = tx.getHash(); - this.type = tx.getType(); - this.createTime = tx.getCreateTime(); - this.height = tx.getHeight(); - this.fee = tx.getFee(); - this.balance = balance; - this.transferType = TRANSFER_FROM_TYPE; - } - - public TxRelationInfo(String address, TransactionInfo tx, AssetInfo assetInfo, BigInteger values, int transferType, BigInteger balance) { - this.address = address; - this.txHash = tx.getHash(); - this.type = tx.getType(); - this.createTime = tx.getCreateTime(); - this.height = tx.getHeight(); - this.fee = tx.getFee(); - this.chainId = assetInfo.getChainId(); - this.assetId = assetInfo.getAssetId(); - this.symbol = assetInfo.getSymbol(); - this.values = values; - this.transferType = transferType; - this.balance = balance; - } - - - public Document toDocument() { - Document document = new Document(); - document.append("address", address).append("txHash", txHash).append("createTime", createTime).append("type", type) - .append("height", height).append("chainId", chainId).append("assetId", assetId).append("symbol", symbol) - .append("values", values.toString()).append("transferType", transferType).append("balance", balance.toString()).append("fee", DocumentTransferTool.toDocument(fee)); - return document; - } - - public static TxRelationInfo toInfo(Document document) { - try { - TxRelationInfo relationInfo = new TxRelationInfo(); - relationInfo.setAddress(document.getString("address")); - relationInfo.setTxHash(document.getString("txHash")); - relationInfo.setCreateTime(document.getLong("createTime")); - relationInfo.setType(document.getInteger("type")); - relationInfo.setHeight(document.getLong("height")); - relationInfo.setChainId(document.getInteger("chainId")); - relationInfo.setAssetId(document.getInteger("assetId")); - relationInfo.setSymbol(document.getString("symbol")); - relationInfo.setTransferType(document.getInteger("transferType")); - relationInfo.setBalance(new BigInteger(document.getString("balance"))); - relationInfo.setValues(new BigInteger(document.getString("values"))); - relationInfo.setFee(DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class)); - return relationInfo; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public BigInteger getValues() { - return values; - } - - public void setValues(BigInteger values) { - this.values = values; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public int getTransferType() { - return transferType; - } - - public void setTransferType(int transferType) { - this.transferType = transferType; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public FeeInfo getFee() { - return fee; - } - - public void setFee(FeeInfo feeInfo) { - this.fee = feeInfo; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java deleted file mode 100644 index be05b239f3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniAccountInfo.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.nuls.api.model.po.mini; - -import io.nuls.api.model.po.AccountInfo; - -import java.math.BigInteger; - -public class MiniAccountInfo { - - private String address; - - private String alias; - - private int type; - - private BigInteger totalBalance; - - private BigInteger locked; - - private String proportion; - - private int decimal; - - public MiniAccountInfo() { - - } - - public MiniAccountInfo(AccountInfo accountInfo) { - this.address = accountInfo.getAddress(); - this.alias = accountInfo.getAlias(); - this.type = accountInfo.getType(); - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - public BigInteger getTotalBalance() { - return totalBalance; - } - - public void setTotalBalance(BigInteger totalBalance) { - this.totalBalance = totalBalance; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } - - public BigInteger getLocked() { - return locked; - } - - public void setLocked(BigInteger locked) { - this.locked = locked; - } - - public String getProportion() { - return proportion; - } - - public void setProportion(String proportion) { - this.proportion = proportion; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniBlockHeaderInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniBlockHeaderInfo.java deleted file mode 100644 index 26f16babe3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniBlockHeaderInfo.java +++ /dev/null @@ -1,86 +0,0 @@ -package io.nuls.api.model.po.mini; - -import java.math.BigInteger; - -public class MiniBlockHeaderInfo { - - private long height; - - private long createTime; - - private int txCount; - - private String agentHash; - - private String agentId; - - private String agentAlias; - - private int size; - - private BigInteger reward; - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public String getAgentId() { - return agentId; - } - - public void setAgentId(String agentId) { - this.agentId = agentId; - } - - public String getAgentAlias() { - return agentAlias; - } - - public void setAgentAlias(String agentAlias) { - this.agentAlias = agentAlias; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public BigInteger getReward() { - return reward; - } - - public void setReward(BigInteger reward) { - this.reward = reward; - } - - public String getAgentHash() { - return agentHash; - } - - public void setAgentHash(String agentHash) { - this.agentHash = agentHash; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniCoinBaseInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniCoinBaseInfo.java deleted file mode 100644 index c769c4dc6b..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniCoinBaseInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.nuls.api.model.po.mini; - -import io.nuls.api.model.po.TxDataInfo; - -public class MiniCoinBaseInfo extends TxDataInfo { - - private long roundIndex; - - private long packageIndex; - - private String agentId; - - public MiniCoinBaseInfo() { - } - - public MiniCoinBaseInfo(long roundIndex, long packageIndex, String txHash) { - this.roundIndex = roundIndex; - this.packageIndex = packageIndex; - this.agentId = txHash.substring(txHash.length() - 8, txHash.length()); - } - - public long getPackageIndex() { - return packageIndex; - } - - public void setPackageIndex(long packageIndex) { - this.packageIndex = packageIndex; - } - - public String getAgentId() { - return agentId; - } - - public void setAgentId(String agentId) { - this.agentId = agentId; - } - - public long getRoundIndex() { - return roundIndex; - } - - public void setRoundIndex(long roundIndex) { - this.roundIndex = roundIndex; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniContractInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniContractInfo.java deleted file mode 100644 index 6d8415e060..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniContractInfo.java +++ /dev/null @@ -1,136 +0,0 @@ -package io.nuls.api.model.po.mini; - -import java.math.BigInteger; - -public class MiniContractInfo { - - private String contractAddress; - - private String creater; - - private String alias; - - private String remark; - - private int txCount; - - private int status; // -1,执行失败,0未认证 1正在审核 2通过验证 3 已删除 - - //token类型, 0 - 非token, 1 - NRC20, 2 - NRC721" - private int tokenType; - private long createTime; - - private BigInteger balance; - - //以下字段,为NRC20合约特有 - private String tokenName; - - private String symbol; - - private int decimals; - - private String totalSupply; - - public int getTokenType() { - return tokenType; - } - - public void setTokenType(int tokenType) { - this.tokenType = tokenType; - } - public String getContractAddress() { - return contractAddress; - } - - public void setContractAddress(String contractAddress) { - this.contractAddress = contractAddress; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public int getTxCount() { - return txCount; - } - - public void setTxCount(int txCount) { - this.txCount = txCount; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public String getTokenName() { - return tokenName; - } - - public void setTokenName(String tokenName) { - this.tokenName = tokenName; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } - - public String getTotalSupply() { - return totalSupply; - } - - public void setTotalSupply(String totalSupply) { - this.totalSupply = totalSupply; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public String getCreater() { - return creater; - } - - public void setCreater(String creater) { - this.creater = creater; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java deleted file mode 100644 index 2bbe078008..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/po/mini/MiniTransactionInfo.java +++ /dev/null @@ -1,135 +0,0 @@ -package io.nuls.api.model.po.mini; - -import io.nuls.api.model.po.FeeInfo; -import io.nuls.api.model.po.TransactionInfo; -import io.nuls.api.utils.DocumentTransferTool; -import org.bson.Document; - -import java.math.BigInteger; - -public class MiniTransactionInfo { - - private String hash; - - private int type; - - private long height; - - private long createTime; - - private FeeInfo fee; - - private BigInteger value; - - private int status; - - private String symbol; - - private int decimal; - - public static MiniTransactionInfo toInfo(Document document) { - MiniTransactionInfo info = new MiniTransactionInfo(); - info.hash = document.getString("_id"); - info.type = document.getInteger("type"); - info.height = document.getLong("height"); - info.createTime = document.getLong("createTime"); - info.value = new BigInteger(document.getString("value")); - info.status = document.getInteger("status"); - info.fee = DocumentTransferTool.toInfo((Document) document.get("fee"), FeeInfo.class); - info.symbol = document.getString("symbol"); - try { - info.decimal = document.getInteger("decimal"); - } catch (Exception e) { - info.decimal = 8; - } - return info; - } - - public MiniTransactionInfo() { - - } - - public MiniTransactionInfo(TransactionInfo tx) { - this.hash = tx.getHash(); - this.type = tx.getType(); - this.height = tx.getHeight(); - this.createTime = tx.getCreateTime(); - this.value = tx.getValue(); - this.status = tx.getStatus(); - this.fee = tx.getFee(); - this.symbol = tx.getSymbol(); - this.decimal = tx.getDecimal(); - } - - public String getHash() { - return hash; - } - - public void setHash(String hash) { - this.hash = hash; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public FeeInfo getFee() { - return fee; - } - - public void setFee(FeeInfo fee) { - this.fee = fee; - } - - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - public int getDecimal() { - return decimal; - } - - public void setDecimal(int decimal) { - this.decimal = decimal; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/AccountTxInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/AccountTxInfo.java deleted file mode 100644 index 2676e8669d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/AccountTxInfo.java +++ /dev/null @@ -1,160 +0,0 @@ -package io.nuls.api.model.rpc; - -import io.nuls.api.model.po.FeeInfo; -import io.nuls.api.model.po.TxRelationInfo; - -import java.math.BigInteger; - -public class AccountTxInfo { - - private String txHash; - - private String address; - - private int type; - - private long createTime; - - private long height; - - private int chainId; - - private int assetId; - - private BigInteger values; - - private FeeInfo fee; - - private BigInteger balance; - - // -1 : from , 1: to - private int transferType; - - private int status; - - private String symbol; - - public AccountTxInfo() { - - } - - public AccountTxInfo(TxRelationInfo relationInfo, int status, String symbol) { - this.txHash = relationInfo.getTxHash(); - this.address = relationInfo.getAddress(); - this.type = relationInfo.getType(); - this.createTime = relationInfo.getCreateTime(); - this.height = relationInfo.getHeight(); - this.chainId = relationInfo.getChainId(); - this.assetId = relationInfo.getAssetId(); - // this.fee = relationInfo.getFee(); - this.values = relationInfo.getValues(); - this.balance = relationInfo.getBalance(); - this.transferType = relationInfo.getTransferType(); - this.status = status; - this.symbol = symbol; - } - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } - - public long getHeight() { - return height; - } - - public void setHeight(long height) { - this.height = height; - } - - public int getChainId() { - return chainId; - } - - public void setChainId(int chainId) { - this.chainId = chainId; - } - - public int getAssetId() { - return assetId; - } - - public void setAssetId(int assetId) { - this.assetId = assetId; - } - - public BigInteger getValues() { - return values; - } - - public void setValues(BigInteger values) { - this.values = values; - } - - public FeeInfo getFee() { - return fee; - } - - public void setFee(FeeInfo fee) { - this.fee = fee; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public int getTransferType() { - return transferType; - } - - public void setTransferType(int transferType) { - this.transferType = transferType; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/BalanceInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/BalanceInfo.java deleted file mode 100644 index bbda4afbed..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/BalanceInfo.java +++ /dev/null @@ -1,76 +0,0 @@ -package io.nuls.api.model.rpc; - -import java.math.BigInteger; - -public class BalanceInfo { - - private BigInteger totalBalance; - - private BigInteger balance; - - private BigInteger timeLock; - - private BigInteger consensusLock; - - private BigInteger freeze; - - private String nonce; - - private int nonceType; - - public BigInteger getTotalBalance() { - return totalBalance; - } - - public void setTotalBalance(BigInteger totalBalance) { - this.totalBalance = totalBalance; - } - - public BigInteger getBalance() { - return balance; - } - - public void setBalance(BigInteger balance) { - this.balance = balance; - } - - public BigInteger getTimeLock() { - return timeLock; - } - - public void setTimeLock(BigInteger timeLock) { - this.timeLock = timeLock; - } - - public BigInteger getConsensusLock() { - return consensusLock; - } - - public void setConsensusLock(BigInteger consensusLock) { - this.consensusLock = consensusLock; - } - - public BigInteger getFreeze() { - return freeze; - } - - public void setFreeze(BigInteger freeze) { - this.freeze = freeze; - } - - public String getNonce() { - return nonce; - } - - public void setNonce(String nonce) { - this.nonce = nonce; - } - - public int getNonceType() { - return nonceType; - } - - public void setNonceType(int nonceType) { - this.nonceType = nonceType; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/FreezeInfo.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/FreezeInfo.java deleted file mode 100644 index b7535ab2ee..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/FreezeInfo.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.nuls.api.model.rpc; - -public class FreezeInfo { - - private String txHash; - - private int type; - - private long time; - - private long lockedValue; - - private String amount; - - private String reason; - - public String getTxHash() { - return txHash; - } - - public void setTxHash(String txHash) { - this.txHash = txHash; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getLockedValue() { - return lockedValue; - } - - public void setLockedValue(long lockedValue) { - this.lockedValue = lockedValue; - } - - public String getAmount() { - return amount; - } - - public void setAmount(String amount) { - this.amount = amount; - } - - public String getReason() { - return reason; - } - - public void setReason(String reason) { - this.reason = reason; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcErrorCode.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcErrorCode.java deleted file mode 100644 index 0ac934172d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcErrorCode.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.rpc; - -/** - * @author Niels - */ -public enum RpcErrorCode { - // 参数不对 - PARAMS_ERROR("1000", "Parameters is wrong!"), - - // 合约未验证 - CONTRACT_NOT_VALIDATION_ERROR("100", "Contract code not certified!"), - - // 合约已验证 - CONTRACT_VALIDATION_ERROR("101", "The contract code has been certified!"), - - // 合约验证失败 - CONTRACT_VALIDATION_FAILED("102", "Contract verification failed."), - - //数据未找到 - DATA_NOT_EXISTS("404", "Data not found!"), - - //交易解析错误 - TX_PARSE_ERROR("999", "Transaction parse error!"), - - //脚本执行错误 - TX_SHELL_ERROR("755", "Shell execute error!"), - - //系统未知错误 - CHAIN_NOT_READY("10001", "chain not ready!"), - //系统未知错误 - SYS_UNKNOWN_EXCEPTION("10002", "System unknown error!"); - - private String code; - - private String message; - - RpcErrorCode(String code, String message) { - this.code = code; - this.message = message; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - }} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResult.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResult.java deleted file mode 100644 index 0a8999de74..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResult.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.rpc; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.ErrorCode; - -/** - * @author Niels - */ -@JsonInclude(JsonInclude.Include.NON_NULL) -public class RpcResult { - - private String jsonrpc = "2.0"; - - private String id; - - private T result; - - private RpcResultError error; - - public String getJsonrpc() { - return jsonrpc; - } - - public void setJsonrpc(String jsonrpc) { - this.jsonrpc = jsonrpc; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public T getResult() { - return result; - } - - public RpcResult setResult(T result) { - this.result = result; - return this; - } - - public RpcResultError getError() { - return error; - } - - public RpcResult setError(RpcResultError error) { - this.error = error; - return this; - } - - public static RpcResult success(T t) { - RpcResult rpcResult = new RpcResult(); - rpcResult.setResult(t); - return rpcResult; - } - - public static RpcResult failed(RpcErrorCode errorCode) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(errorCode); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult failed(RpcErrorCode errorCode, String data) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(errorCode); - error.setData(data); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult failed(Result result) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(result.getErrorCode().getCode(), result.getMsg(), null); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult failed(ErrorCode errorCode) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(errorCode.getCode(), errorCode.getMsg(), null); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult failed(ErrorCode errorCode, String data) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(errorCode.getCode(), errorCode.getMsg(), data); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult dataNotFound() { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS.getCode(), RpcErrorCode.DATA_NOT_EXISTS.getMessage(), null); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult chainNotReady() { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(RpcErrorCode.CHAIN_NOT_READY.getCode(), RpcErrorCode.CHAIN_NOT_READY.getMessage(), null); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult paramError() { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(RpcErrorCode.PARAMS_ERROR.getCode(), RpcErrorCode.PARAMS_ERROR.getMessage(), null); - rpcResult.setError(error); - return rpcResult; - } - - public static RpcResult paramError(String data) { - RpcResult rpcResult = new RpcResult(); - RpcResultError error = new RpcResultError(RpcErrorCode.PARAMS_ERROR.getCode(), RpcErrorCode.PARAMS_ERROR.getMessage(), data); - rpcResult.setError(error); - return rpcResult; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"jsonrpc\":") - .append('\"').append(jsonrpc).append('\"'); - sb.append(",\"id\":") - .append(id); - sb.append(",\"result\":") - .append('\"').append(result).append('\"'); - sb.append(",\"error\":") - .append(error); - sb.append('}'); - return sb.toString(); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResultError.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResultError.java deleted file mode 100644 index de5c6382c7..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/RpcResultError.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.rpc; - -import io.nuls.core.constant.ErrorCode; - -/** - * @author Niels - */ -public class RpcResultError { - - private String code; - - private String message; - - private Object data; - - public RpcResultError() { - - } - - public RpcResultError(String code, String message, Object data) { - this.code = code; - this.message = message; - this.data = data; - } - - public RpcResultError(ErrorCode errorCode) { - this.code = errorCode.getCode(); - this.message = errorCode.getMsg(); - } - public RpcResultError(RpcErrorCode rpcErrorCode) { - this.code = rpcErrorCode.getCode(); - this.message = rpcErrorCode.getMessage(); - } - - public RpcResultError(RpcErrorCode rpcErrorCode, Object data) { - this.code = rpcErrorCode.getCode(); - this.message = rpcErrorCode.getMessage(); - this.data = data; - } - - public String getCode() { - return code; - } - - public RpcResultError setCode(String code) { - this.code = code; - return this; - } - - public String getMessage() { - return message; - } - - public RpcResultError setMessage(String message) { - this.message = message; - return this; - } - - public Object getData() { - return data; - } - - public RpcResultError setData(Object data) { - this.data = data; - return this; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"code\":") - .append(code); - sb.append(",\"message\":") - .append('\"').append(message).append('\"'); - sb.append(",\"entity\":") - .append('\"').append(data).append('\"'); - sb.append('}'); - return sb.toString(); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/SearchResultDTO.java b/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/SearchResultDTO.java deleted file mode 100644 index f8365d8626..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/model/rpc/SearchResultDTO.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.model.rpc; - -/** - * @author Niels - */ -public class SearchResultDTO { - - private String type; - - private Object data; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public Object getData() { - return data; - } - - public void setData(Object data) { - this.data = data; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java deleted file mode 100644 index 0c98a2f41c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/RpcCall.java +++ /dev/null @@ -1,94 +0,0 @@ -package io.nuls.api.rpc; - -import io.nuls.api.constant.ApiErrorCode; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.exception.NulsRuntimeException; -import io.nuls.core.model.StringUtils; -import io.nuls.core.rpc.model.message.Response; -import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; -import io.nuls.core.constant.ErrorCode; -import io.nuls.core.exception.NulsException; - -import java.util.Map; - -/** - * 调用其他模块跟交易相关的接口 - * - * @author: qinyifeng - * @date: 2018/12/05 - */ -public class RpcCall { - - public static Object request(String moduleCode, String cmd, Map params) throws NulsException { - return request(moduleCode, cmd, params, null); - } - /** - * 调用其他模块接口 - * Call other module interfaces - */ - public static Object request(String moduleCode, String cmd, Map params, Long timeout) throws NulsException { - try { -// params.put(Constants.VERSION_KEY_STR, "1.0"); - Response response; - try { - if(null == timeout) { - response = ResponseMessageProcessor.requestAndResponse(moduleCode, cmd, params); - }else{ - response = ResponseMessageProcessor.requestAndResponse(moduleCode, cmd, params, timeout); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - throw new NulsException(ApiErrorCode.SYS_UNKOWN_EXCEPTION, e.getMessage()); - } - if (!response.isSuccess()) { - String comment = response.getResponseComment(); - if(StringUtils.isBlank(comment)) { - comment = ""; - } - - String errorCode = response.getResponseErrorCode(); - // LoggerUtil.commonLog.error("Call interface [{}] error, ErrorCode is {}, ResponseComment:{}", cmd, errorCode, response.getResponseComment()); - if(response.getResponseStatus() == Response.FAIL){ - //business error - if(StringUtils.isBlank(errorCode)){ - throw new NulsException(CommonCodeConstanst.SYS_UNKOWN_EXCEPTION, comment); - } - throw new NulsException(ErrorCode.init(errorCode), comment); - }else{ - if(StringUtils.isNotBlank(comment)) { - throw new NulsException(CommonCodeConstanst.FAILED, comment); - } - throw new NulsException(CommonCodeConstanst.SYS_UNKOWN_EXCEPTION, "unknown error"); - } - } - Map data = (Map)response.getResponseData(); - return data.get(cmd); - } catch (Exception e) { - if(e instanceof NulsException) { - throw (NulsException) e; - } - throw new NulsException(ApiErrorCode.SYS_UNKOWN_EXCEPTION, e.getMessage()); - } - } - - public static Response requestAndResponse(String moduleCode, String cmd, Map params) throws NulsException { - try { - Response response; - try { - response = ResponseMessageProcessor.requestAndResponse(moduleCode, cmd, params); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - throw new NulsException(ApiErrorCode.SYS_UNKOWN_EXCEPTION); - } - if (!response.isSuccess()) { - String errorCode = response.getResponseErrorCode(); - LoggerUtil.commonLog.error("Call interface [{}] error, ErrorCode is {}, ResponseComment:{}", cmd, errorCode, response.getResponseComment()); - } - return response; - } catch (RuntimeException e) { - LoggerUtil.commonLog.error(e); - throw new NulsException(ApiErrorCode.SYS_UNKOWN_EXCEPTION); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java deleted file mode 100644 index e406d9ca74..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/AccountController.java +++ /dev/null @@ -1,731 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.controller; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.*; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniAccountInfo; -import io.nuls.api.model.rpc.*; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.Result; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.model.StringUtils; -import io.nuls.core.parse.MapUtils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author Niels - */ -@Controller -public class AccountController { - - @Autowired - private AccountService accountService; - @Autowired - private BlockService blockHeaderService; - @Autowired - private ChainService chainService; - @Autowired - private AccountLedgerService accountLedgerService; - @Autowired - private AliasService aliasService; - - @Autowired - TokenService tokenService; - - @RpcMethod("getAccountList") - public RpcResult getAccountList(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, pageNumber, pageSize; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - RpcResult result = new RpcResult(); - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.pageQuery(chainId, pageNumber, pageSize); - } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } - result.setResult(pageInfo); - return result; - - } - - @RpcMethod("getAccountTxs") - public RpcResult getAccountTxs(List params) { - VerifyUtils.verifyParams(params, 7); - int chainId, assetChainId, assetId, pageNumber, pageSize, type; - String address; - long startHeight, endHeight; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - try { - type = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - try { - startHeight = Long.parseLong("" + params.get(5)); - } catch (Exception e) { - return RpcResult.paramError("[startHeight] is invalid"); - } - try { - endHeight = Long.parseLong("" + params.get(6)); - } catch (Exception e) { - return RpcResult.paramError("[endHeight] is invalid"); - } - try { - assetChainId = (int) params.get(7); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is invalid"); - } - try { - assetId = (int) params.get(8); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is invalid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - RpcResult result = new RpcResult(); - try { - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAccountTxs(chainId, address, pageNumber, pageSize, type, startHeight, endHeight, assetChainId, assetId); - result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { - Map res = MapUtils.beanToMap(d); - AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); - if (assetInfo != null) { - res.put("symbol", assetInfo.getSymbol()); - res.put("decimals", assetInfo.getDecimals()); - } - return res; - }).collect(Collectors.toList()))); - } else { - result.setResult(new PageInfo<>(pageNumber, pageSize)); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - return result; - } - - @RpcMethod("getAcctTxs") - public RpcResult getAcctTxs(List params) { - VerifyUtils.verifyParams(params, 7); - int chainId, assetChainId, assetId, pageNumber, pageSize, type; - String address; - long startTime, endTime; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - try { - type = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - try { - assetChainId = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is inValid"); - } - try { - startTime = Long.parseLong("" + params.get(5)); - } catch (Exception e) { - return RpcResult.paramError("[startTime] is invalid"); - } - try { - endTime = Long.parseLong("" + params.get(6)); - } catch (Exception e) { - return RpcResult.paramError("[endTime] is invalid"); - } - - try { - pageNumber = (int) params.get(7); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(8); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - RpcResult result = new RpcResult(); - try { - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getAcctTxs(chainId, assetChainId, assetId, address, type, startTime, endTime, pageNumber, pageSize); - result.setResult(new PageInfo<>(pageNumber, pageSize, pageInfo.getTotalCount(), pageInfo.getList().stream().map(d -> { - Map res = MapUtils.beanToMap(d); - AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(d.getChainId() + "-" + d.getAssetId()); - if (assetInfo != null) { - res.put("symbol", assetInfo.getSymbol()); - res.put("decimals", assetInfo.getDecimals()); - } - return res; - }).collect(Collectors.toList()))); - } else { - result.setResult(new PageInfo<>(pageNumber, pageSize)); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - return result; - } - - @RpcMethod("getAccount") - public RpcResult getAccount(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - - RpcResult result = new RpcResult(); - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo == null) { - accountInfo = new AccountInfo(address); - } else { - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, defaultAsset.getChainId(), defaultAsset.getAssetId()); - accountInfo.setBalance(balanceInfo.getBalance()); - // accountInfo.setConsensusLock(balanceInfo.getConsensusLock()); - accountInfo.setTimeLock(balanceInfo.getTimeLock()); - } - accountInfo.setSymbol(ApiContext.defaultSymbol); - return result.setResult(accountInfo); - } - - @RpcMethod("getAccountByAlias") - public RpcResult getAccountByAlias(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String alias; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - alias = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[alias] is inValid"); - } - RpcResult result = new RpcResult(); - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - AliasInfo aliasInfo = aliasService.getByAlias(chainId, alias); - if (aliasInfo == null) { - return RpcResult.dataNotFound(); - } - AccountInfo accountInfo = accountService.getAccountInfo(chainId, aliasInfo.getAddress()); - if (accountInfo == null) { - return RpcResult.dataNotFound(); - } else { - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, aliasInfo.getAddress(), defaultAsset.getChainId(), defaultAsset.getAssetId()); - accountInfo.setBalance(balanceInfo.getBalance()); -// accountInfo.setConsensusLock(balanceInfo.getConsensusLock()); - accountInfo.setTimeLock(balanceInfo.getTimeLock()); - } - accountInfo.setSymbol(ApiContext.defaultSymbol); - return result.setResult(accountInfo); - - } - - @RpcMethod("getCoinRanking") - public RpcResult getCoinRanking(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, pageNumber, pageSize; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountService.getCoinRanking(pageNumber, pageSize, chainId); - } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } - return new RpcResult().setResult(pageInfo); - } - - - @RpcMethod("getAssetRanking") - public RpcResult getAssetRanking(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, assetChainId, assetId, pageNumber, pageSize; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - assetChainId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is inValid"); - } - - try { - pageNumber = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - pageInfo = accountLedgerService.getAssetRanking(chainId, assetChainId, assetId, pageNumber, pageSize); - } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } - return new RpcResult().setResult(pageInfo); - } - - - @RpcMethod("getAccountFreezes") - public RpcResult getAccountFreezes(List params) { - VerifyUtils.verifyParams(params, 6); - int chainId, assetChainId, assetId, pageNumber, pageSize; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - assetChainId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - try { - pageNumber = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(5); - } catch (Exception e) { - return RpcResult.paramError("[sortType] is inValid"); - } - - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (CacheManager.isChainExist(chainId)) { - Result> result = WalletRpcHandler.getFreezeList(chainId, assetChainId, assetId, address, pageNumber, pageSize); - if (result.isFailed()) { - return RpcResult.failed(result); - } - pageInfo = result.getData(); - return RpcResult.success(pageInfo); - } else { - pageInfo = new PageInfo<>(pageNumber, pageSize); - return RpcResult.success(pageInfo); - } - } - - @RpcMethod("getAccountBalance") - public RpcResult getAccountBalance(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, assetChainId, assetId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - assetChainId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - if (assetId <= 0) { - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - assetId = defaultAsset.getAssetId(); - } - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, assetChainId, assetId); - if (assetChainId == ApiContext.defaultChainId && assetId == ApiContext.defaultAssetId) { - AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo != null) { - balanceInfo.setConsensusLock(accountInfo.getConsensusLock()); - } - } - - return RpcResult.success(balanceInfo); - - } - - @RpcMethod("getAccountsBalance") - public RpcResult getAccountsBalance(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, assetChainId, assetId; - String address; - - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - assetChainId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - if (assetId <= 0) { - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - assetId = defaultAsset.getAssetId(); - } - - String[] addressList = address.split(","); - Map balanceInfoList = new HashMap<>(); - for (int i = 0; i < addressList.length; i++) { - address = addressList[i]; - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, assetChainId, assetId); - AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo != null) { - balanceInfo.setConsensusLock(accountInfo.getConsensusLock()); - } - balanceInfoList.put(address, balanceInfo); - } - return RpcResult.success(balanceInfoList); - } - - - @RpcMethod("isAliasUsable") - public RpcResult isAliasUsable(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String alias; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - alias = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[alias] is inValid"); - } - if (StringUtils.isBlank(alias)) { - return RpcResult.paramError("[alias] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - - Result result = WalletRpcHandler.isAliasUsable(chainId, alias); - return RpcResult.success(result.getData()); - } - - @RpcMethod("getAccountLedgerList") - public RpcResult getAccountLedgerList(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - List list = accountLedgerService.getAccountLedgerInfoList(chainId, address); - for (AccountLedgerInfo ledgerInfo : list) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); - ledgerInfo.setBalance(balanceInfo.getBalance()); - ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); - ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); - AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(ledgerInfo.getAssetKey()); - if (assetInfo != null) { - ledgerInfo.setSymbol(assetInfo.getSymbol()); - ledgerInfo.setDecimals(assetInfo.getDecimals()); - } - } - return RpcResult.success(list); - } - - - @RpcMethod("getAccountCrossLedgerList") - public RpcResult getAccountCrossLedgerList(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - List list = accountLedgerService.getAccountCrossLedgerInfoList(chainId, address); - for (AccountLedgerInfo ledgerInfo : list) { - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, address, ledgerInfo.getChainId(), ledgerInfo.getAssetId()); - ledgerInfo.setBalance(balanceInfo.getBalance()); - ledgerInfo.setTimeLock(balanceInfo.getTimeLock()); - ledgerInfo.setConsensusLock(balanceInfo.getConsensusLock()); - AssetInfo assetInfo = CacheManager.getAssetInfoMap().get(ledgerInfo.getAssetKey()); - if (assetInfo != null) { - ledgerInfo.setSymbol(assetInfo.getSymbol()); - ledgerInfo.setDecimals(assetInfo.getDecimals()); - } - } - return RpcResult.success(list); - - } - - @RpcMethod("getAllAddressPrefix") - public RpcResult getAllAddressPrefix(List params) { - Result result = WalletRpcHandler.getAllAddressPrefix(); - return RpcResult.success(result.getData()); - } - - @RpcMethod("getNRC20Snapshot") - public RpcResult getNRC20Snapshot(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is inValid"); - } - PageInfo pageInfo = tokenService.getContractTokens(chainId, address, 1, Integer.MAX_VALUE); - return RpcResult.success(pageInfo.getList().stream().map(d -> Map.of("address", d.getAddress(), "balance", d.getBalance())).collect(Collectors.toList())); - } - - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/BlockController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/BlockController.java deleted file mode 100644 index 33dd3758e8..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/BlockController.java +++ /dev/null @@ -1,305 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.controller; - -import io.nuls.api.analysis.AnalysisHandler; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.db.BlockService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.BlockHexInfo; -import io.nuls.api.model.po.BlockInfo; -import io.nuls.api.model.po.PageInfo; -import io.nuls.api.model.po.mini.MiniBlockHeaderInfo; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.constant.ErrorCode; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.model.StringUtils; - -import java.util.List; - -/** - * @author Niels - */ -@Controller -public class BlockController { - - @Autowired - private BlockService blockService; - - @RpcMethod("getBestBlockHeader") - public RpcResult getBestInfo(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - BlockHeaderInfo localBestBlockHeader = blockService.getBestBlockHeader(chainId); - if (localBestBlockHeader == null) { - return RpcResult.dataNotFound(); - } - return RpcResult.success(localBestBlockHeader); - - } - - @RpcMethod("getHeaderByHeight") - public RpcResult getHeaderByHeight(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - long height; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - height = Long.parseLong("" + params.get(1)); - } catch (Exception e) { - return RpcResult.paramError("[height] is invalid"); - } - - if (height < 0) { - return RpcResult.paramError("[height] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - BlockHeaderInfo header = blockService.getBlockHeader(chainId, height); - if (header == null) { - return RpcResult.dataNotFound(); - } - return RpcResult.success(header); - } - - @RpcMethod("getHeaderByHash") - public RpcResult getHeaderByHash(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String hash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - hash = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[hash] is invalid"); - } - if (StringUtils.isBlank(hash)) { - return RpcResult.paramError("[hash] is required"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - BlockHeaderInfo header = blockService.getBlockHeaderByHash(chainId, hash); - if (header == null) { - return RpcResult.dataNotFound(); - } - return RpcResult.success(header); - } - - @RpcMethod("getBlockByHash") - public RpcResult getBlockByHash(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String hash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - hash = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[hash] is invalid"); - } - if (StringUtils.isBlank(hash)) { - return RpcResult.paramError("[hash] is required"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - - BlockHeaderInfo blockHeaderInfo = blockService.getBlockHeaderByHash(chainId, hash); - if (blockHeaderInfo == null) { - return RpcResult.dataNotFound(); - } - BlockHexInfo hexInfo = blockService.getBlockHexInfo(chainId, blockHeaderInfo.getHeight()); - if (hexInfo == null) { - return RpcResult.dataNotFound(); - } - try { - BlockInfo blockInfo = AnalysisHandler.toBlockInfo(hexInfo.getBlockHex(), chainId); - blockInfo.setHeader(blockHeaderInfo); - return RpcResult.success(blockInfo); - } catch (Exception e) { - return RpcResult.failed(CommonCodeConstanst.DATA_PARSE_ERROR); - } - } - - @RpcMethod("getBlockByHeight") - public RpcResult getBlockByHeight(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - long height; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - height = Long.parseLong("" + params.get(1)); - } catch (Exception e) { - return RpcResult.paramError("[height] is invalid"); - } - if (height < 0) { - return RpcResult.paramError("[height] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - - BlockHeaderInfo blockHeaderInfo = blockService.getBlockHeader(chainId, height); - if (blockHeaderInfo == null) { - return RpcResult.dataNotFound(); - } - BlockHexInfo hexInfo = blockService.getBlockHexInfo(chainId, blockHeaderInfo.getHeight()); - if (hexInfo == null) { - return RpcResult.dataNotFound(); - } - try { - BlockInfo blockInfo = AnalysisHandler.toBlockInfo(hexInfo.getBlockHex(), chainId); - blockInfo.setHeader(blockHeaderInfo); - return RpcResult.success(blockInfo); - } catch (Exception e) { - return RpcResult.failed(CommonCodeConstanst.DATA_PARSE_ERROR); - } - } - - @RpcMethod("getBlockHeaderList") - public RpcResult getBlockHeaderList(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, pageNumber, pageSize; - boolean filterEmptyBlocks; - String packingAddress = null; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - filterEmptyBlocks = (boolean) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[filterEmptyBlocks] is invalid"); - } - try { - if (params.size() > 4) { - packingAddress = (String) params.get(4); - } - } catch (Exception e) { - return RpcResult.paramError("[packingAddress] is invalid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = blockService.pageQuery(chainId, pageNumber, pageSize, packingAddress, filterEmptyBlocks); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } -// -// @RpcMethod("rollbackBestBlocks") -// public RpcResult rollbackBestBlocks(List params) { -// VerifyUtils.verifyParams(params, 1); -// int count = (int) params.get(0); -// BlockHeaderInfo localBestBlockHeader; -// long useNanoTime = 0; -// for (; count > 0; count--) { -// localBestBlockHeader = blockHeaderService.getBestBlockHeader(); -// if (null != localBestBlockHeader && localBestBlockHeader.getHeight() >= 0L) { -// try { -// long start = System.nanoTime(); -// rollbackBlock.rollbackBlock(localBestBlockHeader.getHeight()); -// useNanoTime += System.nanoTime() - start; -// } catch (Exception e) { -// Log.error(e); -// throw new JsonRpcException(new RpcResultError(RpcErrorCode.SYS_UNKNOWN_EXCEPTION, "Rollback is failed")); -// } -// } -// } -// Log.info("rollback " + count + " use:" + useNanoTime/1000000 + "ms."); -// -// RpcResult rpcResult = new RpcResult(); -// rpcResult.setResult(true); -// return rpcResult; -// } -// -// @RpcMethod("stopSync") -// public RpcResult stopSync(List params) { -// ApiContext.doSync = false; -// RpcResult result = new RpcResult(); -// result.setResult(true); -// return result; -// } -// -// @RpcMethod("recoverySync") -// public RpcResult recoverySync(List params) { -// ApiContext.doSync = true; -// RpcResult result = new RpcResult(); -// result.setResult(true); -// return result; -// } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java deleted file mode 100644 index cb3deca775..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ChainController.java +++ /dev/null @@ -1,407 +0,0 @@ -package io.nuls.api.rpc.controller; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.AddressType; -import io.nuls.api.db.*; -import io.nuls.api.exception.JsonRpcException; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.rpc.RpcErrorCode; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.model.rpc.RpcResultError; -import io.nuls.api.model.rpc.SearchResultDTO; -import io.nuls.api.utils.AssetTool; -import io.nuls.api.utils.DBUtil; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.Result; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Controller -public class ChainController { - - @Autowired - private BlockService blockService; - @Autowired - private TransactionService transactionService; - @Autowired - private AccountService accountService; - @Autowired - private AccountLedgerService ledgerService; - @Autowired - private ContractService contractService; - @Autowired - private StatisticalService statisticalService; - @Autowired - private AgentService agentService; - @Autowired - private ChainService chainService; - - @RpcMethod("getChainInfo") - public RpcResult getChainInfo(List params) { - return RpcResult.success(CacheManager.getCache(ApiContext.defaultChainId).getChainInfo()); - } - - @RpcMethod("getOtherChainList") - public RpcResult getOtherChainList(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - - List chainInfoList = chainService.getOtherChainInfoList(chainId); -// -// -// List> chainInfoList = new ArrayList<>(); -// for (ChainInfo chainInfo : CacheManager.getChainInfoMap().values()) { -// if (chainInfo.getChainId() != chainId) { -// Map map = new HashMap<>(); -// map.put("chainId", chainInfo.getChainId()); -// map.put("chainName", chainInfo.getChainName()); -// chainInfoList.add(map); -// } -// } - ; - return RpcResult.success(chainInfoList.stream().map(d->{ - if(d.getChainId() == 9){ - d.setChainName("NerveNetwork"); - } - return d; - }).collect(Collectors.toList())); - } - - @RpcMethod("getOtherChainInfo") - public RpcResult getOtherChainInfo(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - - ChainInfo chainInfo = chainService.getChainInfo(chainId); - if (chainInfo != null) { - if (chainInfo.getChainId() == 9) { - chainInfo.setChainName("NerveNetwork"); - } - } - - return RpcResult.success(chainInfo); - } - - - @RpcMethod("getInfo") - public RpcResult getInfo(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - - Map map = new HashMap<>(); - map.put("chainId", chainId); - map.put("networkHeight", ApiContext.networkHeight); - map.put("localHeight", ApiContext.localHeight); - - ApiCache apiCache = CacheManager.getCache(chainId); - AssetInfo assetInfo = apiCache.getChainInfo().getDefaultAsset(); - Map assetMap = new HashMap<>(); - assetMap.put("chainId", assetInfo.getChainId()); - assetMap.put("assetId", assetInfo.getAssetId()); - assetMap.put("symbol", assetInfo.getSymbol()); - assetMap.put("decimals", assetInfo.getDecimals()); - map.put("defaultAsset", assetMap); - //agentAsset - assetInfo = CacheManager.getRegisteredAsset(DBUtil.getAssetKey(apiCache.getConfigInfo().getAgentChainId(), apiCache.getConfigInfo().getAgentAssetId())); - if (assetInfo != null) { - assetMap = new HashMap<>(); - assetMap.put("chainId", assetInfo.getChainId()); - assetMap.put("assetId", assetInfo.getAssetId()); - assetMap.put("symbol", assetInfo.getSymbol()); - assetMap.put("decimals", assetInfo.getDecimals()); - map.put("agentAsset", assetMap); - } else { - map.put("agentAsset", null); - } - map.put("magicNumber", ApiContext.magicNumber); - map.put("isRunCrossChain", ApiContext.isRunCrossChain); - map.put("isRunSmartContract", ApiContext.isRunSmartContract); - return RpcResult.success(map); - } - - @RpcMethod("getCoinInfo") - public RpcResult getCoinInfo(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - ApiCache apiCache = CacheManager.getCache(chainId); - return RpcResult.success(apiCache.getCoinContextInfo()); - } - - @RpcMethod("search") - public RpcResult search(List params) { - VerifyUtils.verifyParams(params, 2); - - int chainId; - String text; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - text = params.get(1).toString().trim(); - } catch (Exception e) { - return RpcResult.paramError("[text] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - int length = text.length(); - SearchResultDTO result = null; - if (length < 20) { - result = getBlockByHeight(chainId, text); - } else if (length < 40) { - boolean isAddress = AddressTool.validAddress(chainId, text); - if (isAddress) { - byte[] address = AddressTool.getAddress(text); - if (address[2] == AddressType.CONTRACT_ADDRESS_TYPE) { - result = getContractByAddress(chainId, text); - } else { - result = getAccountByAddress(chainId, text); - } - } - } else { - result = getResultByHash(chainId, text); - } - if (null == result) { - return RpcResult.dataNotFound(); - } - return new RpcResult().setResult(result); - } - - private SearchResultDTO getContractByAddress(int chainId, String text) { - ContractInfo contractInfo; - contractInfo = contractService.getContractInfo(chainId, text); - SearchResultDTO dto = new SearchResultDTO(); - dto.setData(contractInfo); - dto.setType("contract"); - return dto; - } - - private SearchResultDTO getResultByHash(int chainId, String hash) { - - BlockHeaderInfo blockHeaderInfo = blockService.getBlockHeaderByHash(chainId, hash); - if (blockHeaderInfo != null) { - return getBlockInfo(chainId, blockHeaderInfo); - } - - Result result = WalletRpcHandler.getTx(chainId, hash); - if (result == null) { - throw new JsonRpcException(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - } - if (result.isFailed()) { - throw new JsonRpcException(result.getErrorCode()); - } - TransactionInfo tx = result.getData(); - SearchResultDTO dto = new SearchResultDTO(); - dto.setData(tx); - dto.setType("tx"); - return dto; - } - - private SearchResultDTO getAccountByAddress(int chainId, String address) { - if (!AddressTool.validAddress(chainId, address)) { - throw new JsonRpcException(new RpcResultError(RpcErrorCode.PARAMS_ERROR, "[address] is inValid")); - } - - AccountInfo accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo == null) { - accountInfo = new AccountInfo(address); - - } - SearchResultDTO dto = new SearchResultDTO(); - dto.setData(accountInfo); - dto.setType("account"); - return dto; - } - - private SearchResultDTO getBlockByHeight(int chainId, String text) { - Long height; - try { - height = Long.parseLong(text); - } catch (Exception e) { - return null; - } - BlockHeaderInfo blockHeaderInfo = blockService.getBlockHeader(chainId, height); - if (blockHeaderInfo == null) { - return null; - } - return getBlockInfo(chainId, blockHeaderInfo); - } - - private SearchResultDTO getBlockInfo(int chainId, BlockHeaderInfo blockHeaderInfo) { - Result result = WalletRpcHandler.getBlockInfo(chainId, blockHeaderInfo.getHash()); - if (result.isFailed()) { - throw new JsonRpcException(result.getErrorCode()); - } - BlockInfo block = result.getData(); - if (null == block) { - return null; - } else { - SearchResultDTO dto = new SearchResultDTO(); - dto.setData(block); - dto.setType("block"); - return dto; - } - } - - @RpcMethod("getByzantineCount") - public RpcResult getByzantineCount(List params) { - int chainId; - String txHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHash = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHash] is inValid"); - } - - Result result = WalletRpcHandler.getByzantineCount(chainId, txHash); - if (result.isFailed()) { - throw new JsonRpcException(result.getErrorCode()); - } - Map map = (Map) result.getData(); - return RpcResult.success(map); - } - - @RpcMethod("assetGet") - public RpcResult assetGet(List params) { - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.paramError("[chainId] is inValid"); - } - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - map.put("trades", coinContextInfo.getTxCount()); - map.put("totalAssets", AssetTool.toCoinString(coinContextInfo.getTotal())); - map.put("circulation", AssetTool.toCoinString(coinContextInfo.getCirculation())); - map.put("deposit", AssetTool.toCoinString(coinContextInfo.getConsensusTotal())); - map.put("business", AssetTool.toCoinString(coinContextInfo.getBusiness())); - map.put("team", AssetTool.toCoinString(coinContextInfo.getTeam())); - map.put("community", AssetTool.toCoinString(coinContextInfo.getCommunity())); - map.put("unmapped", AssetTool.toCoinString(coinContextInfo.getUnmapped())); - map.put("destroy", AssetTool.toCoinString(coinContextInfo.getDestroy())); - int consensusCount = apiCache.getCurrentRound().getMemberCount() - apiCache.getChainInfo().getSeeds().size(); - if (consensusCount < 0) { - consensusCount = 0; - } - map.put("consensusNodes", consensusCount); - long count = 0; - if (apiCache.getBestHeader() != null) { - count = agentService.agentsCount(chainId, apiCache.getBestHeader().getHeight()); - } - map.put("totalNodes", count); - - return RpcResult.success(map); - } - - @RpcMethod("getTotalSupply") - public RpcResult getTotalSupply(List params) { - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.paramError("[chainId] is inValid"); - } - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - BigInteger supply = coinContextInfo.getTotal().subtract(coinContextInfo.getDestroy()); - map.put("supplyCoin", AssetTool.toCoinString(supply) + ""); - return RpcResult.success(map); - } - - - @RpcMethod("getCirculation") - public RpcResult getCirculation(List params) { - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.paramError("[chainId] is inValid"); - } - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - map.put("circulation", AssetTool.toCoinString(coinContextInfo.getCirculation()) + ""); - return RpcResult.success(map); - } - - @RpcMethod("getDestroy") - public RpcResult getDestroy(List params) { - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.paramError("[chainId] is inValid"); - } - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - map.put("destroy", AssetTool.toCoinString(coinContextInfo.getDestroy()) + ""); - map.put("list", coinContextInfo.getDestroyInfoList()); - return RpcResult.success(map); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java deleted file mode 100644 index 9487f6e197..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/ContractController.java +++ /dev/null @@ -1,1167 +0,0 @@ -package io.nuls.api.rpc.controller; - -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.ContractService; -import io.nuls.api.db.TokenService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniContractInfo; -import io.nuls.api.model.rpc.BalanceInfo; -import io.nuls.api.model.rpc.RpcErrorCode; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.model.rpc.RpcResultError; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.model.StringUtils; -import io.nuls.core.parse.JSONUtils; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -@Controller -public class ContractController { - - @Autowired - private ContractService contractService; - @Autowired - private TokenService tokenService; - - @RpcMethod("getContract") - public RpcResult getContract(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String contractAddress; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractAddress = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - - if (!AddressTool.validAddress(chainId, contractAddress)) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - ContractInfo contractInfo = contractService.getContractInfo(chainId, contractAddress); - if (contractInfo == null) { - rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - } else { - Integer assetIdOfNRC20 = WalletRpcHandler.getAssetIdOfNRC20(contractAddress); - if (assetIdOfNRC20 != null) { - boolean crossAssets = WalletRpcHandler.isCrossAssets(chainId, assetIdOfNRC20); - contractInfo.setCrossAsset(crossAssets); - Result result = WalletRpcHandler.tokenTotalSupply(chainId, contractAddress); - if (result.isSuccess()) { - BigInteger totalSupply = result.getData(); - contractInfo.setTotalSupply(totalSupply.toString()); - } - } - ApiCache apiCache = CacheManager.getCache(chainId); - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - BalanceInfo balanceInfo = WalletRpcHandler.getAccountBalance(chainId, contractAddress, defaultAsset.getChainId(), defaultAsset.getAssetId()); - contractInfo.setTotalBalance(balanceInfo.getTotalBalance()); - contractInfo.setBalance(balanceInfo.getBalance()); - rpcResult.setResult(contractInfo); - } - return rpcResult; - } - - @RpcMethod("getContractTxResult") - public RpcResult getContractTxResult(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - txHash = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHash] is invalid"); - } - - try { - Result result = WalletRpcHandler.getContractResultInfo(chainId, txHash); - if (result.isSuccess()) { - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result.getErrorCode()); - } - } catch (NulsException e) { - return RpcResult.failed(e.getErrorCode()); - } - } - - @RpcMethod("getNrc20List") - public RpcResult getNrc20List(List params) { - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - return RpcResult.success(CacheManager.getCache(chainId).getNrc20InfoList()); - } - - @RpcMethod("getAccountTokens") - public RpcResult getAccountTokens(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageIndex] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is invalid"); - } - - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = tokenService.getAccountTokens(chainId, address, pageNumber, pageSize); - } - if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) { - List list = pageInfo.getList(); - for (AccountTokenInfo tokenInfo : list) { - BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); - BigInteger total = tokenInfo.getBalance(); - BigInteger locked = total.subtract(available); - tokenInfo.setLockedBalance(locked); - } - } - - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } - - @RpcMethod("getAccountToken") - public RpcResult getAccountToken(List params) { - RpcResult result = new RpcResult(); - VerifyUtils.verifyParams(params, 3); - int chainId; - String address, contract; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is invalid"); - } - try { - contract = (String) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[contract] is invalid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (!AddressTool.validContractAddress(AddressTool.getAddress(contract), chainId)) { - return RpcResult.paramError("[contract] is invalid"); - } - AccountTokenInfo tokenInfo = tokenService.getAccountTokenInfo(chainId, address + contract); - if (tokenInfo == null) { - result.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - return result; - } - BigInteger available = WalletRpcHandler.tokenBalance(chainId, tokenInfo.getContractAddress(), tokenInfo.getAddress()).getData(); - BigInteger total = tokenInfo.getBalance(); - BigInteger locked = total.subtract(available); - tokenInfo.setLockedBalance(locked); - result.setResult(tokenInfo); - return result; - } - - @RpcMethod("getContractTokens") - public RpcResult getContractTokens(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize; - String contractAddress; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - contractAddress = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - if (!AddressTool.validAddress(chainId, contractAddress)) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - try { - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = tokenService.getContractTokens(chainId, contractAddress, pageNumber, pageSize); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.SYS_UNKNOWN_EXCEPTION); - } - } - - @RpcMethod("getTokenTransfers") - public RpcResult getTokenTransfers(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize; - String address, contractAddress; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is invalid"); - } - try { - contractAddress = (String) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - - if (!StringUtils.isBlank(address) && !AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (!StringUtils.isBlank(contractAddress) && !AddressTool.validAddress(chainId, contractAddress)) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - try { - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = tokenService.getTokenTransfers(chainId, address, contractAddress, pageNumber, pageSize); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.SYS_UNKNOWN_EXCEPTION); - } - } - - @RpcMethod("getContractTxList") - public RpcResult getContractTxList(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, type; - String contractAddress; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - type = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[type] is invalid"); - } - try { - contractAddress = (String) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - - if (!AddressTool.validAddress(chainId, contractAddress)) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - try { - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = contractService.getContractTxList(chainId, contractAddress, type, pageNumber, pageSize); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.SYS_UNKNOWN_EXCEPTION); - } - } - - @RpcMethod("getContractList") - public RpcResult getContractList(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, tokenType; - boolean isHidden; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - tokenType = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[tokenType] is invalid"); - } - try { - isHidden = (boolean) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[isHidden] is invalid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = contractService.getContractList(chainId, pageNumber, pageSize, tokenType, isHidden); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } - - @RpcMethod("getAccountContractList") - public RpcResult getAccountContractList(List params) { - VerifyUtils.verifyParams(params, 6); - int chainId, pageNumber, pageSize, tokenType; - boolean isHidden; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is invalid"); - } - - try { - tokenType = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[tokenType] is invalid"); - } - try { - isHidden = (boolean) params.get(5); - } catch (Exception e) { - return RpcResult.paramError("[isHidden] is invalid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = contractService.getContractList(chainId, pageNumber, pageSize, address, tokenType, isHidden); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } - - - @RpcMethod("getContractListById") - public RpcResult getContractListById(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, totalCount; - List contractAddressList; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is invalid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is invalid"); - } - try { - totalCount = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[totalCount] is invalid"); - } - try { - contractAddressList = (List) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[contractAddressArrays] is invalid"); - } - - PageInfo pageInfo = new PageInfo<>(pageNumber, pageSize); - if (CacheManager.isChainExist(chainId)) { - pageInfo.setTotalCount(totalCount); - pageInfo.setList(contractService.getContractList(chainId, contractAddressList)); - } - RpcResult result = new RpcResult(); - result.setResult(pageInfo); - return result; - } - - /** - * 上传合约代码jar包 - */ - @RpcMethod("uploadContractJar") - public RpcResult upload(List params) throws NulsException { - VerifyUtils.verifyParams(params, 2); - int chainId; - String jarFileData; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - jarFileData = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[jarFileData] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.uploadContractJar(chainId, jarFileData); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 获取合约代码构造函数 - */ - @RpcMethod("getContractConstructor") - public RpcResult getContractConstructor(List params) throws NulsException { - VerifyUtils.verifyParams(params, 2); - int chainId; - String contractCode; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractCode = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[contractCode] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.getContractConstructor(chainId, contractCode); - Map resultData = mapResult.getData(); - if (resultData == null) { - rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - } else { - rpcResult.setResult(resultData); - } - return rpcResult; - } - - - /** - * 获取合约方法信息 - * - * @param params - * @return - */ - @RpcMethod("getContractMethod") - public RpcResult getContractMethod(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId; - String contractAddress; - String methodName; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractAddress = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - try { - methodName = (String) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[methodName] is invalid"); - } - String methodDesc = null; - if (params.size() > 3) { - methodDesc = (String) params.get(3); - } - - if (!AddressTool.validAddress(chainId, contractAddress)) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - if (StringUtils.isBlank(methodName)) { - return RpcResult.paramError("[methodName] is invalid"); - } - RpcResult rpcResult = new RpcResult(); - ContractInfo contractInfo = contractService.getContractInfo(chainId, contractAddress); - if (contractInfo == null) { - return rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - } - List methods = contractInfo.getMethods(); - ContractMethod resultMethod = null; - boolean isEmptyMethodDesc = StringUtils.isBlank(methodDesc); - for (ContractMethod method : methods) { - if (method.getName().equals(methodName)) { - if (isEmptyMethodDesc) { - resultMethod = method; - break; - } else if (methodDesc.equals(method.getDesc())) { - resultMethod = method; - break; - } - } - } - if (resultMethod == null) { - return RpcResult.dataNotFound(); - } - rpcResult.setResult(resultMethod); - return rpcResult; - } - - - /** - * 获取合约方法参数类型 - */ - @RpcMethod("getContractMethodArgsTypes") - public RpcResult getContractMethodArgsTypes(List params) { - RpcResult result = this.getContractMethod(params); - if (result.getError() != null) { - return result; - } - ContractMethod resultMethod = (ContractMethod) result.getResult(); - if (resultMethod == null) { - return RpcResult.dataNotFound(); - } - List argsTypes; - List args = resultMethod.getParams(); - argsTypes = new ArrayList<>(); - for (ContractMethodArg arg : args) { - argsTypes.add(arg.getType()); - } - RpcResult rpcResult = new RpcResult(); - rpcResult.setResult(argsTypes); - return rpcResult; - } - - /** - * 验证创建合约 - * - * @param params - * @return - */ - @RpcMethod("validateContractCreate") - public RpcResult validateContractCreate(List params) throws NulsException { - VerifyUtils.verifyParams(params, 6); - int chainId; - String contractCode; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractCode = params.get(4).toString(); - } catch (Exception e) { - return RpcResult.paramError("[contractCode] is invalid"); - } - try { - List argsList = (List) params.get(5); - args = argsList != null ? argsList.toArray() : null; - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result constructorResult = WalletRpcHandler.getContractConstructor(chainId, contractCode); - Map constructorData = constructorResult.getData(); - if (constructorData == null) { - rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - return rpcResult; - } - Map constructor = (Map) constructorData.get("constructor"); - ContractProgramMethod constructorMethod = new ContractProgramMethod(constructor); - String[] types = constructorMethod.argsType2Array(); - convertArgsToObjectArray(args, types); - - Result mapResult = WalletRpcHandler.validateContractCreate(chainId, - params.get(1), - params.get(2), - params.get(3), - contractCode, - args - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 验证调用合约 - * - * @param params - * @return - */ - @RpcMethod("validateContractCall") - public RpcResult validateContractCall(List params) throws NulsException { - VerifyUtils.verifyParams(params, 9); - int chainId; - String contractAddress, methodName, methodDesc; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractAddress = params.get(5).toString(); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - try { - methodName = params.get(6).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodName] is invalid"); - } - try { - methodDesc = params.get(7).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodDesc] is invalid"); - } - try { - List argsList = (List) params.get(8); - args = argsList != null ? argsList.toArray() : null; - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if (contractMethodArgsTypesResult.getError() != null) { - return contractMethodArgsTypesResult; - } - List typeList = (List) contractMethodArgsTypesResult.getResult(); - String[] types = new String[typeList.size()]; - types = typeList.toArray(types); - convertArgsToObjectArray(args, types); - - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.validateContractCall(chainId, - params.get(1), - params.get(2), - params.get(3), - params.get(4), - contractAddress, - methodName, - methodDesc, - args - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 验证删除合约 - * - * @param params - * @return - */ - @RpcMethod("validateContractDelete") - public RpcResult validateContractDelete(List params) throws NulsException { - VerifyUtils.verifyParams(params, 3); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.validateContractDelete(chainId, - params.get(1), - params.get(2) - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 预估创建合约交易的gas - * - * @param params - * @return - */ - @RpcMethod("imputedContractCreateGas") - public RpcResult imputedContractCreateGas(List params) throws NulsException { - VerifyUtils.verifyParams(params, 4); - int chainId; - String contractCode; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractCode = params.get(2).toString(); - } catch (Exception e) { - return RpcResult.paramError("[contractCode] is invalid"); - } - try { - List argsList = (List) params.get(3); - args = argsList != null ? argsList.toArray() : null; - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result constructorResult = WalletRpcHandler.getContractConstructor(chainId, contractCode); - Map constructorData = constructorResult.getData(); - if (constructorData == null) { - rpcResult.setError(new RpcResultError(RpcErrorCode.DATA_NOT_EXISTS)); - return rpcResult; - } - Map constructor = (Map) constructorData.get("constructor"); - ContractProgramMethod constructorMethod = new ContractProgramMethod(constructor); - String[] types = constructorMethod.argsType2Array(); - convertArgsToObjectArray(args, types); - - Result mapResult = WalletRpcHandler.imputedContractCreateGas(chainId, - params.get(1), - contractCode, - args - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 预估调用合约交易的gas - * - * @param params - * @return - */ - @RpcMethod("imputedContractCallGas") - public RpcResult imputedContractCallGas(List params) throws NulsException { - VerifyUtils.verifyParams(params, 7); - int chainId; - String contractAddress, methodName, methodDesc; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractAddress = params.get(3).toString(); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - try { - methodName = params.get(4).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodName] is invalid"); - } - try { - methodDesc = params.get(5).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodDesc] is invalid"); - } - try { - List argsList = (List) params.get(6); - args = argsList != null ? argsList.toArray() : null; - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if (contractMethodArgsTypesResult.getError() != null) { - return contractMethodArgsTypesResult; - } - List typeList = (List) contractMethodArgsTypesResult.getResult(); - String[] types = new String[typeList.size()]; - types = typeList.toArray(types); - convertArgsToObjectArray(args, types); - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.imputedContractCallGas(chainId, - params.get(1), - params.get(2), - contractAddress, - methodName, - methodDesc, - args - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - /** - * 调用合约不上链方法 - * - * @param params - * @return - */ - @RpcMethod("invokeView") - public RpcResult invokeView(List params) throws NulsException { - VerifyUtils.verifyParams(params, 5); - int chainId; - String contractAddress, methodName, methodDesc; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - try { - contractAddress = params.get(1).toString(); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - try { - methodName = params.get(2).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodName] is invalid"); - } - try { - methodDesc = params.get(3).toString(); - } catch (Exception e) { - return RpcResult.paramError("[methodDesc] is invalid"); - } - try { - List argsList = (List) params.get(4); - args = argsList != null ? argsList.toArray() : null; - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if (contractMethodArgsTypesResult.getError() != null) { - return contractMethodArgsTypesResult; - } - List typeList = (List) contractMethodArgsTypesResult.getResult(); - String[] types = new String[typeList.size()]; - types = typeList.toArray(types); - convertArgsToObjectArray(args, types); - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.invokeView(chainId, - contractAddress, - methodName, - methodDesc, - args - ); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - - @RpcMethod("previewCall") - public RpcResult previewCall(List params) throws NulsException { - VerifyUtils.verifyParams(params, 9); - int chainId; - String sender, contractAddress, methodName, methodDesc, value; - BigInteger valueBigInteger = BigInteger.ZERO; - long gasLimit, price; - Object[] args; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - try { - sender = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[sender] is invalid"); - } - try { - contractAddress = (String) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[contractAddress] is invalid"); - } - try { - methodName = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[methodName] is invalid"); - } - try { - methodDesc = (String) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[methodDesc] is invalid"); - } - try { - value = (String) params.get(5); - if (StringUtils.isNotBlank(value)) { - valueBigInteger = new BigInteger(value); - } - } catch (Exception e) { - return RpcResult.paramError("[value] is invalid"); - } - try { - gasLimit = Long.parseLong(params.get(6).toString()); - } catch (Exception e) { - return RpcResult.paramError("[gasLimit] is invalid"); - } - try { - price = Long.parseLong(params.get(7).toString()); - } catch (Exception e) { - return RpcResult.paramError("[price] is invalid"); - } - try { - List list = (List) params.get(8); - args = new Object[list.size()]; - for (int i = 0; i < list.size(); i++) { - args[i] = list.get(i); - } - } catch (Exception e) { - return RpcResult.paramError("[args] is invalid"); - } - RpcResult contractMethodArgsTypesResult = this.getContractMethodArgsTypes(List.of(chainId, contractAddress, methodName, methodDesc)); - if (contractMethodArgsTypesResult.getError() != null) { - return contractMethodArgsTypesResult; - } - List typeList = (List) contractMethodArgsTypesResult.getResult(); - String[] types = new String[typeList.size()]; - types = typeList.toArray(types); - convertArgsToObjectArray(args, types); - - RpcResult rpcResult = new RpcResult(); - Result mapResult = WalletRpcHandler.contractPreviewCall(chainId, sender, valueBigInteger, gasLimit, price, contractAddress, methodName, methodDesc, args); - rpcResult.setResult(mapResult.getData()); - return rpcResult; - } - - static void convertArgsToObjectArray(Object[] args, String[] types) throws NulsException { - if (args == null || args.length == 0) { - return; - } - try { - Object temp; - for (int i = 0, length = types.length; i < length; i++) { - temp = args[i]; - if (temp == null) { - continue; - } - if (types[i].contains("[]") && temp instanceof String && StringUtils.isNotBlank((String) temp)) { - args[i] = JSONUtils.json2pojo((String) temp, ArrayList.class); - } - } - } catch (Exception e) { - Log.error("parse args error.", e); - throw new NulsException(CommonCodeConstanst.PARSE_JSON_FAILD, "parse contract args error."); - } - } - - static class ContractProgramMethod { - private List args; - - public ContractProgramMethod(Map result) { - List args = (List) result.get("args"); - this.args = new LinkedList<>(); - if (args == null || args.isEmpty()) { - return; - } - for (Map arg : args) { - this.args.add(new ContractProgramMethodArg(arg)); - } - } - - public String[] argsType2Array() { - if (args != null && args.size() > 0) { - int size = args.size(); - String[] result = new String[size]; - for (int i = 0; i < size; i++) { - result[i] = args.get(i).getType(); - } - return result; - } else { - return null; - } - } - } - - static class ContractProgramMethodArg { - private String type; - - public ContractProgramMethodArg(Map result) { - this.type = (String) result.get("type"); - } - - public String getType() { - return type; - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/MessageController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/MessageController.java deleted file mode 100644 index b3010791bb..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/MessageController.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.controller; - -import io.nuls.api.manager.MessageManager; -import io.nuls.api.model.entity.Message; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.model.StringUtils; -import io.nuls.core.rpc.util.NulsDateUtils; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 消息中转工具(临时实现) - * - * @author Niels - */ -@Controller -public class MessageController { - /** - * 提交一个消息,供其他应用查询 - * - * @param paramsMap - * @return - */ - @RpcMethod("commitData") - public RpcResult commit(Map paramsMap) { - String key = (String) paramsMap.get("key"); - Object value = paramsMap.get("value"); - if (StringUtils.isBlank(key) || null == value) { - return RpcResult.paramError("Params is inValid"); - } - Message message = new Message(); - message.setKey(key); - message.setValue(value); - message.setTime(NulsDateUtils.getCurrentTimeSeconds()); - MessageManager.putMessage(key, message); - return RpcResult.success(key); - } - - /** - * 查询一个中转消息,如果查询不到,则返回失败 - * - * @param paramsMap - * @return - */ - @RpcMethod("getData") - public RpcResult query(Map paramsMap) { - String key = (String) paramsMap.get("key"); - if (StringUtils.isBlank(key)) { - return RpcResult.dataNotFound(); - } - Message message = MessageManager.getMessage(key); - if (null == message) { - return RpcResult.dataNotFound(); - } - return RpcResult.success(message.getValue()); - } - - /** - * 提交一个消息,供其他应用查询 - * - * @param params - * @return - */ - @RpcMethod("commitMsg") - public RpcResult commitMsg(List params) { - if (params.size() < 2) { - return RpcResult.paramError("Params is inValid"); - } - Map map = new HashMap<>(); - map.put("key", params.get(0)); - map.put("value", params.get(1)); - return this.commit(map); - } - - /** - * 查询一个中转消息,如果查询不到,则返回失败 - * - * @param params - * @return - */ - @RpcMethod("getMsg") - public RpcResult queryMsg(List params) { - if (params.size() < 1) { - return RpcResult.paramError("Params is inValid"); - } - Map map = new HashMap<>(); - map.put("key", params.get(0)); - return this.query(map); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/PocConsensusController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/PocConsensusController.java deleted file mode 100644 index 2cc625bad0..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/PocConsensusController.java +++ /dev/null @@ -1,831 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.controller; - -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.db.*; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.utils.AgentComparator; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.basic.Result; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.model.DoubleUtils; -import io.nuls.core.model.StringUtils; - -import java.math.BigInteger; -import java.util.*; - -import static io.nuls.api.constant.DBTableConstant.CONSENSUS_LOCKED; - -/** - * @author Niels - */ -@Controller -public class PocConsensusController { - - @Autowired - private RoundManager roundManager; - @Autowired - private AgentService agentService; - @Autowired - private PunishService punishService; - @Autowired - private DepositService depositService; - @Autowired - private RoundService roundService; - @Autowired - private StatisticalService statisticalService; - - @Autowired - private BlockService headerService; - - @Autowired - private AliasService aliasService; - - @RpcMethod("getBestRoundItemList") - public RpcResult getBestRoundItemList(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - ApiCache apiCache = CacheManager.getCache(chainId); - List itemList = apiCache.getCurrentRound().getItemList(); - RpcResult rpcResult = new RpcResult(); - itemList.addAll(itemList); - rpcResult.setResult(itemList); - return rpcResult; - } - - @RpcMethod("getConsensusNodeCount") - public RpcResult getConsensusNodeCount(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - Map resultMap = new HashMap<>(); - resultMap.put("seedsCount", (long) apiCache.getChainInfo().getSeeds().size()); - int consensusCount = apiCache.getCurrentRound().getMemberCount() - apiCache.getChainInfo().getSeeds().size(); - if (consensusCount < 0) { - consensusCount = 0; - } - resultMap.put("consensusCount", (long) consensusCount); - long count = 0; - if (apiCache.getBestHeader() != null) { - count = agentService.agentsCount(chainId, apiCache.getBestHeader().getHeight()); - } - resultMap.put("agentCount", count); - resultMap.put("totalCount", count + apiCache.getChainInfo().getSeeds().size()); - RpcResult result = new RpcResult(); - result.setResult(resultMap); - return result; - } - - @RpcMethod("getConsensusNodes") - public RpcResult getConsensusNodes(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize, type; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - type = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - if (type < 0 || type > 3) { - return RpcResult.paramError("[type] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - return new RpcResult().setResult(pageInfo); - } - - pageInfo = agentService.getAgentList(chainId, type, pageNumber, pageSize); - for (AgentInfo agentInfo : pageInfo.getList()) { - long count = punishService.getYellowCount(chainId, agentInfo.getAgentAddress()); - if (agentInfo.getTotalPackingCount() != 0 || count != 0) { - agentInfo.setLostRate(DoubleUtils.div(count, count + agentInfo.getTotalPackingCount())); - } - agentInfo.setYellowCardCount((int) count); - Result clientResult = WalletRpcHandler.getAgentInfo(chainId, agentInfo.getTxHash()); - if (clientResult.isSuccess()) { - agentInfo.setCreditValue(clientResult.getData().getCreditValue()); - agentInfo.setDepositCount(clientResult.getData().getDepositCount()); - agentInfo.setStatus(clientResult.getData().getStatus()); - if (agentInfo.getAgentAlias() == null) { - AliasInfo info = aliasService.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (null != info) { - agentInfo.setAgentAlias(info.getAlias()); - } - } - } - } - Collections.sort(pageInfo.getList(), AgentComparator.getInstance()); - return new RpcResult().setResult(pageInfo); - } - - - @RpcMethod("getAllConsensusNodes") - public RpcResult getAllConsensusNodes(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, pageNumber, pageSize; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - return new RpcResult().setResult(pageInfo); - } - pageInfo = agentService.getAgentList(chainId, pageNumber, pageSize); - for (AgentInfo agentInfo : pageInfo.getList()) { - long count = punishService.getYellowCount(chainId, agentInfo.getAgentAddress()); - if (agentInfo.getTotalPackingCount() != 0 || count != 0) { - agentInfo.setLostRate(DoubleUtils.div(count, count + agentInfo.getTotalPackingCount())); - } - agentInfo.setYellowCardCount((int) count); - Result clientResult = WalletRpcHandler.getAgentInfo(chainId, agentInfo.getTxHash()); - if (clientResult.isSuccess()) { - agentInfo.setCreditValue(clientResult.getData().getCreditValue()); - agentInfo.setDepositCount(clientResult.getData().getDepositCount()); - agentInfo.setStatus(clientResult.getData().getStatus()); - if (agentInfo.getAgentAlias() == null) { - AliasInfo info = aliasService.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (null != info) { - agentInfo.setAgentAlias(info.getAlias()); - } - } - } - } - Collections.sort(pageInfo.getList(), AgentComparator.getInstance()); - return new RpcResult().setResult(pageInfo); - } - - @RpcMethod("getConsensusNode") - public RpcResult getConsensusNode(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String agentHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - agentHash = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[agentHash] is inValid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - AgentInfo agentInfo = agentService.getAgentByHash(chainId, agentHash); - if (agentInfo == null) { - return RpcResult.dataNotFound(); - } - long count = punishService.getYellowCount(chainId, agentInfo.getAgentAddress()); - if (agentInfo.getTotalPackingCount() != 0 || count != 0) { - agentInfo.setLostRate(DoubleUtils.div(count, count + agentInfo.getTotalPackingCount())); - } - agentInfo.setYellowCardCount((int) count); - ApiCache apiCache = CacheManager.getCache(chainId); - List itemList = apiCache.getCurrentRound().getItemList(); - PocRoundItem roundItem = null; - if (null != itemList) { - for (PocRoundItem item : itemList) { - if (item.getPackingAddress().equals(agentInfo.getPackingAddress())) { - roundItem = item; - break; - } - } - } - if (agentInfo.getStatus() != ApiConstant.STOP_AGENT) { - if (null == roundItem) { - agentInfo.setStatus(0); - } else { - agentInfo.setRoundPackingTime(apiCache.getCurrentRound().getStartTime() + roundItem.getOrder() * 10); - agentInfo.setStatus(1); - } - } - - Result result = WalletRpcHandler.getAgentInfo(chainId, agentHash); - if (result.isSuccess()) { - AgentInfo agent = result.getData(); - agentInfo.setCreditValue(agent.getCreditValue()); - agentInfo.setDepositCount(agent.getDepositCount()); - if (agentInfo.getAgentAlias() == null) { - AliasInfo info = aliasService.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (null != info) { - agentInfo.setAgentAlias(info.getAlias()); - } - } - } - return RpcResult.success(agentInfo); - } - - @RpcMethod("getAccountConsensusNode") - public RpcResult getAccountConsensusNode(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - AgentInfo agentInfo = agentService.getAgentByAgentAddress(chainId, address); - if (agentInfo != null) { - long count = punishService.getYellowCount(chainId, agentInfo.getAgentAddress()); - if (agentInfo.getTotalPackingCount() != 0 || count != 0) { - agentInfo.setLostRate(DoubleUtils.div(count, count + agentInfo.getTotalPackingCount())); - } - agentInfo.setYellowCardCount((int) count); - Result clientResult = WalletRpcHandler.getAgentInfo(chainId, agentInfo.getTxHash()); - if (clientResult.isSuccess()) { - agentInfo.setCreditValue(clientResult.getData().getCreditValue()); - agentInfo.setDepositCount(clientResult.getData().getDepositCount()); - agentInfo.setStatus(clientResult.getData().getStatus()); - if (agentInfo.getAgentAlias() == null) { - AliasInfo info = aliasService.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (null != info) { - agentInfo.setAgentAlias(info.getAlias()); - } - } - } - } - return RpcResult.success(agentInfo); - } - - @RpcMethod("getConsensusStatistical") - public RpcResult getConsensusStatistical(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId, type; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - type = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - if (type < 0 || type > 4) { - return RpcResult.paramError("[type] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.success(new ArrayList<>()); - } - List list = this.statisticalService.getStatisticalList(chainId, type, CONSENSUS_LOCKED); - return new RpcResult().setResult(list); - } - - @RpcMethod("getConsensusNodeStatistical") - public RpcResult getConsensusNodeStatistical(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId, type; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - type = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - if (type < 0 || type > 4) { - return RpcResult.paramError("[type] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.success(new ArrayList<>()); - } - List list = this.statisticalService.getStatisticalList(chainId, type, "nodeCount"); - return new RpcResult().setResult(list); - } - - @RpcMethod("getAnnulizedRewardStatistical") - public RpcResult getAnnulizedRewardStatistical(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId, type; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - type = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - if (type < 0 || type > 4) { - return RpcResult.paramError("[type] is invalid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.success(new ArrayList<>()); - } - List list = this.statisticalService.getStatisticalList(chainId, type, "annualizedReward"); - return new RpcResult().setResult(list); - } - - @RpcMethod("getPunishList") - public RpcResult getPunishList(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, type; - String agentAddress; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - type = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - try { - agentAddress = (String) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[agentAddress] is inValid"); - } - if (type < 0 || type > 2) { - return RpcResult.paramError("[type] is invalid"); - } - if (!StringUtils.isBlank(agentAddress) && !AddressTool.validAddress(chainId, agentAddress)) { - return RpcResult.paramError("[agentAddress] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo list; - if (!CacheManager.isChainExist(chainId)) { - list = new PageInfo<>(pageNumber, pageSize); - } else { - list = punishService.getPunishLogList(chainId, type, agentAddress, pageNumber, pageSize); - } - return new RpcResult().setResult(list); - } - - @RpcMethod("getConsensusDeposit") - public RpcResult getConsensusDeposit(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize; - String agentHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - agentHash = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[agentHash] is inValid"); - } - if (StringUtils.isBlank(agentHash)) { - return RpcResult.paramError("[agentHash] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo list; - if (!CacheManager.isChainExist(chainId)) { - list = new PageInfo<>(pageNumber, pageSize); - } else { - list = this.depositService.getDepositListByAgentHash(chainId, agentHash, pageNumber, pageSize); - } - return new RpcResult().setResult(list); - } - - @RpcMethod("getAllConsensusDeposit") - public RpcResult getAllConsensusDeposit(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, type; - String agentHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - agentHash = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[agentHash] is inValid"); - } - try { - type = (int) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - if (type < 0 || type > 2) { - return RpcResult.paramError("[type] is invalid"); - } - if (StringUtils.isBlank(agentHash)) { - return RpcResult.paramError("[agentHash] is inValid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo list; - if (!CacheManager.isChainExist(chainId)) { - list = new PageInfo<>(pageNumber, pageSize); - } else { - list = this.depositService.getCancelDepositListByAgentHash(chainId, agentHash, type, pageNumber, pageSize); - } - return new RpcResult().setResult(list); - } - - @RpcMethod("getAccountConsensus") - public RpcResult getAccountConsensus(List params) { - VerifyUtils.verifyParams(params, 4); - int chainId, pageNumber, pageSize; - String address; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo(pageNumber, pageSize); - return RpcResult.success(pageInfo); - } - List hashList = depositService.getAgentHashList(chainId, address); - AgentInfo agentInfo = agentService.getAliveAgentByAgentAddress(chainId, address); - if (agentInfo != null && !hashList.contains(agentInfo.getTxHash())) { - hashList.add(agentInfo.getTxHash()); - } - - pageInfo = agentService.getAgentByHashList(chainId, pageNumber, pageSize, hashList); - for (AgentInfo info : pageInfo.getList()) { - Result clientResult = WalletRpcHandler.getAgentInfo(chainId, info.getTxHash()); - if (clientResult.isSuccess()) { - info.setCreditValue(clientResult.getData().getCreditValue()); - info.setDepositCount(clientResult.getData().getDepositCount()); - info.setStatus(clientResult.getData().getStatus()); - if (info.getAgentAlias() == null) { - AliasInfo aliasInfo = aliasService.getAliasByAddress(chainId, info.getAgentAddress()); - if (null != aliasInfo) { - info.setAgentAlias(aliasInfo.getAlias()); - } - } - } - } - return RpcResult.success(pageInfo); - } - - @RpcMethod("getAccountDeposit") - public RpcResult getAccountDeposit(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize; - String address, agentHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - address = (String) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - try { - agentHash = (String) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[agentHash] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - PageInfo list; - if (!CacheManager.isChainExist(chainId)) { - list = new PageInfo<>(pageNumber, pageSize); - } else { - list = this.depositService.getDepositListByAddress(chainId, agentHash, address, pageNumber, pageSize); - } - return new RpcResult().setResult(list); - } - - @RpcMethod("getAccountDepositValue") - public RpcResult getAccountDepositValue(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String address, agentHash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - address = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[address] is inValid"); - } - try { - agentHash = (String) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[agentHash] is inValid"); - } - if (!AddressTool.validAddress(chainId, address)) { - return RpcResult.paramError("[address] is invalid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - BigInteger value = depositService.getDepositAmount(chainId, address, agentHash); - return new RpcResult().setResult(value); - } - - @RpcMethod("getBestRoundInfo") - public RpcResult getBestRoundInfo(List params) { - VerifyUtils.verifyParams(params, 1); - int chainId; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache == null) { - return RpcResult.dataNotFound(); - } - return new RpcResult().setResult(apiCache.getCurrentRound()); - } - - @RpcMethod("getRoundList") - public RpcResult getRoundList(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, pageNumber, pageSize; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 1000) { - pageSize = 10; - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.success(new PageInfo<>(pageNumber, pageSize)); - } - long count = roundService.getTotalCount(chainId); - List roundList = roundService.getRoundList(chainId, pageNumber, pageSize); - PageInfo pageInfo = new PageInfo<>(); - pageInfo.setPageNumber(pageNumber); - pageInfo.setPageSize(pageSize); - pageInfo.setTotalCount(count); - pageInfo.setList(roundList); - return new RpcResult().setResult(pageInfo); - } - - @RpcMethod("getRoundInfo") - public RpcResult getRoundInfo(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - long roundIndex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - roundIndex = Long.parseLong(params.get(1) + ""); - } catch (Exception e) { - return RpcResult.paramError("[roundIndex] is inValid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - if (roundIndex == 1) { - return getFirstRound(chainId); - } - CurrentRound round = new CurrentRound(); - PocRound pocRound = roundService.getRound(chainId, roundIndex); - if (pocRound == null) { - return RpcResult.dataNotFound(); - } - List itemList = roundService.getRoundItemList(chainId, roundIndex); - round.setItemList(itemList); - round.initByPocRound(pocRound); - return new RpcResult().setResult(round); - } - - private RpcResult getFirstRound(int chainId) { - BlockHeaderInfo headerInfo = headerService.getBlockHeader(chainId, 0); - if (null == headerInfo) { - return new RpcResult(); - } - CurrentRound round = new CurrentRound(); - round.setStartTime(headerInfo.getRoundStartTime()); - round.setStartHeight(0); - round.setProducedBlockCount(1); - round.setMemberCount(1); - round.setIndex(1); - round.setEndTime(headerInfo.getCreateTime()); - round.setEndHeight(0); - List itemList = new ArrayList<>(); - PocRoundItem item = new PocRoundItem(); - itemList.add(item); - item.setTime(headerInfo.getCreateTime()); - item.setTxCount(1); - item.setBlockHash(headerInfo.getHash()); - item.setBlockHeight(0); - item.setPackingAddress(headerInfo.getPackingAddress()); - item.setRoundIndex(1); - item.setOrder(1); - round.setItemList(itemList); - return new RpcResult().setResult(round); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java deleted file mode 100644 index b905ef959b..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/TransactionController.java +++ /dev/null @@ -1,605 +0,0 @@ -package io.nuls.api.rpc.controller; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.AnalysisHandler; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.db.*; -import io.nuls.api.exception.JsonRpcException; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.entity.CallContractData; -import io.nuls.api.model.entity.CreateContractData; -import io.nuls.api.model.entity.DeleteContractData; -import io.nuls.api.model.po.*; -import io.nuls.api.model.po.mini.MiniCoinBaseInfo; -import io.nuls.api.model.po.mini.MiniTransactionInfo; -import io.nuls.api.model.rpc.RpcErrorCode; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.api.utils.VerifyUtils; -import io.nuls.base.RPCUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.data.Transaction; -import io.nuls.core.basic.Result; -import io.nuls.core.constant.CommonCodeConstanst; -import io.nuls.core.constant.ErrorCode; -import io.nuls.core.constant.TxType; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.model.StringUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static io.nuls.api.constant.DBTableConstant.TX_COUNT; -import static io.nuls.core.constant.TxType.*; - -@Controller -public class TransactionController { - @Autowired - private TransactionService txService; - @Autowired - private AgentService agentService; - @Autowired - private DepositService depositService; - @Autowired - private PunishService punishService; - @Autowired - private BlockService blockService; - @Autowired - private StatisticalService statisticalService; - - @RpcMethod("getTx") - public RpcResult getTx(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId; - String hash; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - hash = "" + params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[hash] is inValid"); - } - if (StringUtils.isBlank(hash)) { - return RpcResult.paramError("[hash] is required"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - - Result result = WalletRpcHandler.getTx(chainId, hash); - if (result == null) { - return RpcResult.dataNotFound(); - } - if (result.isFailed()) { - throw new JsonRpcException(result.getErrorCode()); - } - TransactionInfo tx = result.getData(); - if (tx == null) { - return RpcResult.dataNotFound(); - } - try { - RpcResult rpcResult = new RpcResult(); - if (tx.getType() == TxType.COIN_BASE) { - BlockHeaderInfo headerInfo = blockService.getBlockHeader(chainId, tx.getHeight()); - MiniCoinBaseInfo coinBaseInfo = new MiniCoinBaseInfo(headerInfo.getRoundIndex(), headerInfo.getPackingIndexOfRound(), tx.getHash()); - tx.setTxData(coinBaseInfo); - } else if (tx.getType() == TxType.DEPOSIT || tx.getType() == TxType.CONTRACT_DEPOSIT) { - DepositInfo depositInfo = (DepositInfo) tx.getTxData(); - AgentInfo agentInfo = agentService.getAgentByHash(chainId, depositInfo.getAgentHash()); - tx.setTxData(agentInfo); - } else if (tx.getType() == TxType.CANCEL_DEPOSIT || tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT) { - DepositInfo depositInfo = (DepositInfo) tx.getTxData(); - depositInfo = depositService.getDepositInfoByHash(chainId, depositInfo.getTxHash()); - AgentInfo agentInfo = agentService.getAgentByHash(chainId, depositInfo.getAgentHash()); - tx.setTxData(agentInfo); - } else if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.CONTRACT_STOP_AGENT) { - AgentInfo agentInfo = (AgentInfo) tx.getTxData(); - agentInfo = agentService.getAgentByHash(chainId, agentInfo.getTxHash()); - tx.setTxData(agentInfo); - } else if (tx.getType() == TxType.YELLOW_PUNISH) { - List punishLogs = punishService.getYellowPunishLog(chainId, tx.getHash()); - tx.setTxDataList(punishLogs); - } else if (tx.getType() == TxType.RED_PUNISH) { - PunishLogInfo punishLog = punishService.getRedPunishLog(chainId, tx.getHash()); - tx.setTxData(punishLog); - } else if (tx.getType() == CREATE_CONTRACT) { -// try { -// ContractResultInfo resultInfo = contractService.getContractResultInfo(tx.getHash()); -// ContractInfo contractInfo = (ContractInfo) tx.getTxData(); -// contractInfo.setResultInfo(resultInfo); -// } catch (Exception e) { -// Log.error(e); -// } - } else if (tx.getType() == CALL_CONTRACT) { -// try { -// ContractResultInfo resultInfo = contractService.getContractResultInfo(tx.getHash()); -// ContractCallInfo contractCallInfo = (ContractCallInfo) tx.getTxData(); -// contractCallInfo.setResultInfo(resultInfo); -// } catch (Exception e) { -// Log.error(e); -// } - } - rpcResult.setResult(tx); - return rpcResult; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); - } - } - - @RpcMethod("getTxList") - public RpcResult getTxList(List params) { - VerifyUtils.verifyParams(params, 5); - int chainId, pageNumber, pageSize, type; - long startTime = 0, endTime = 0; - boolean isHidden; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - type = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - try { - isHidden = (boolean) params.get(4); - } catch (Exception e) { - return RpcResult.paramError("[isHidden] is inValid"); - } - try { - startTime = Long.parseLong(params.get(5).toString()); - } catch (Exception e) { - - } - try { - endTime = Long.parseLong(params.get(6).toString()); - } catch (Exception e) { - - } - - if (pageNumber <= 0) { - pageNumber = 1; - } - if (pageSize <= 0 || pageSize > 100) { - pageSize = 10; - } - PageInfo pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new PageInfo<>(pageNumber, pageSize); - } else { - pageInfo = txService.getTxList(chainId, pageNumber, pageSize, type, isHidden, startTime, endTime); - } - RpcResult rpcResult = new RpcResult(); - rpcResult.setResult(pageInfo); - return rpcResult; - } - - @RpcMethod("getBlockTxList") - public RpcResult getBlockTxList(List params) { - VerifyUtils.verifyParams(params, 3); - int chainId, type; - long height; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - height = Long.valueOf(params.get(1).toString()); - } catch (Exception e) { - return RpcResult.paramError("[height] is inValid"); - } - try { - type = Integer.parseInt("" + params.get(2)); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - List pageInfo; - if (!CacheManager.isChainExist(chainId)) { - pageInfo = new ArrayList<>(); - } else { - pageInfo = txService.getBlockTxList(chainId, height, type); - } - RpcResult rpcResult = new RpcResult(); - rpcResult.setResult(pageInfo); - return rpcResult; - } - - @RpcMethod("getTxStatistical") - public RpcResult getTxStatistical(List params) { - VerifyUtils.verifyParams(params, 2); - int chainId, type; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - type = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[type] is inValid"); - } - - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.success(new ArrayList<>()); - } - List list = this.statisticalService.getStatisticalList(chainId, type, TX_COUNT); - return new RpcResult().setResult(list); - } - - @RpcMethod("validateTx") - public RpcResult validateTx(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHex = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHex] is inValid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - if (StringUtils.isBlank(txHex)) { - return RpcResult.paramError("[txHex] is inValid"); - } - Result result = WalletRpcHandler.validateTx(chainId, txHex); - if (result.isSuccess()) { - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result); - } - } - - //private static final String QUEUE_CONTRACT = "NULSd6HgugbpQf76wayhtXyH3obWaLezkTBn5"; - //private static final String QUEUE_CONTRACT_METHOD = "depositForOwn"; - //private static final ExecutorService QUEUE_CONTRACT_SINGLE_THREAD_EXECUTOR = Executors.newSingleThreadExecutor(new NulsThreadFactory("queue_contract")); - - @RpcMethod("broadcastTx") - public RpcResult broadcastTx(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHex = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHex] is inValid"); - } - - try { - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - int type = this.extractTxTypeFromTx(txHex); - if(type == CROSS_CHAIN){ - return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); - } - Result result = Result.getSuccess(null); - CallContractData call = null; - String contract = null, txHash = null; - switch (type) { - case CREATE_CONTRACT: - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - CreateContractData create = new CreateContractData(); - create.parse(new NulsByteBuffer(tx.getTxData())); - RpcResult createArgsResult = this.validateContractArgs(create.getArgs()); - if (createArgsResult.getError() != null) { - return createArgsResult; - } - result = WalletRpcHandler.validateContractCreate(chainId, - AddressTool.getStringAddressByBytes(create.getSender()), - create.getGasLimit(), - create.getPrice(), - RPCUtil.encode(create.getCode()), - create.getArgs()); - break; - case CALL_CONTRACT: - Transaction callTx = new Transaction(); - callTx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - txHash = callTx.getHash().toHex(); - call = new CallContractData(); - call.parse(new NulsByteBuffer(callTx.getTxData())); - contract = AddressTool.getStringAddressByBytes(call.getContractAddress()); - RpcResult argsResult = this.validateContractArgs(call.getArgs()); - if (argsResult.getError() != null) { - return argsResult; - } - result = WalletRpcHandler.validateContractCall(chainId, - AddressTool.getStringAddressByBytes(call.getSender()), - call.getValue(), - call.getGasLimit(), - call.getPrice(), - contract, - call.getMethodName(), - call.getMethodDesc(), - call.getArgs()); - break; - case DELETE_CONTRACT: - Transaction deleteTx = new Transaction(); - deleteTx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - DeleteContractData delete = new DeleteContractData(); - delete.parse(new NulsByteBuffer(deleteTx.getTxData())); - result = WalletRpcHandler.validateContractDelete(chainId, - AddressTool.getStringAddressByBytes(delete.getSender()), - AddressTool.getStringAddressByBytes(delete.getContractAddress())); - break; - default: - break; - } - Map contractMap = (Map) result.getData(); - if (contractMap != null && Boolean.FALSE.equals(contractMap.get("success"))) { - result.setErrorCode(CommonCodeConstanst.DATA_ERROR); - result.setMsg((String) contractMap.get("msg")); - return RpcResult.failed(result); - } - - //if(call != null) { - // if(QUEUE_CONTRACT.equals(contract) && QUEUE_CONTRACT_METHOD.equals(call.getMethodName())) { - // QUEUE_CONTRACT_SINGLE_THREAD_EXECUTOR.submit(new QueueContractRun(chainId, txHex, txService)); - // Map map = new HashMap<>(4); - // map.put("value", true); - // map.put("hash", txHash); - // return RpcResult.success(map); - // } - //} - - result = WalletRpcHandler.broadcastTx(chainId, txHex); - - if (result.isSuccess()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - txService.saveUnConfirmTx(chainId, txInfo, txHex); - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); - } - } - - private RpcResult validateContractArgs(String[][] args) { - if (args == null || args.length == 0) { - return RpcResult.success(null); - } - try { - String[] arg; - for (int i = 0, length = args.length; i < length; i++) { - arg = args[i]; - if (arg == null || arg.length == 0) { - continue; - } - for (String str : arg) { - if (!this.checkSpaceArg(str)) { - return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); - } - } - } - return RpcResult.success(null); - } catch (Exception e) { - Log.error("parse args error.", e); - return RpcResult.failed(RpcErrorCode.CONTRACT_VALIDATION_FAILED); - } - } - - private boolean checkSpaceArg(String s) { - if (s == null) { - return true; - } - return s.length() == s.trim().length(); - } - - @RpcMethod("broadcastTxWithoutAnyValidation") - public RpcResult broadcastTxWithoutAnyValidation(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHex = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHex] is inValid"); - } - - try { - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - - Result result = WalletRpcHandler.broadcastTxWithoutAnyValidation(chainId, txHex); - - if (result.isSuccess()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - txService.saveUnConfirmTx(chainId, txInfo, txHex); - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); - } - } - - private int extractTxTypeFromTx(String txString) throws NulsException { - String txTypeHexString = txString.substring(0, 4); - NulsByteBuffer byteBuffer = new NulsByteBuffer(RPCUtil.decode(txTypeHexString)); - return byteBuffer.readUint16(); - } - - - @RpcMethod("sendCrossTx") - public RpcResult sendCrossTx(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - //if(true){ - // return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); - //} - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHex = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHex] is inValid"); - } - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - try { - Result result = WalletRpcHandler.sendCrossTx(chainId, txHex); - - if (result.isSuccess()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - txService.saveUnConfirmTx(chainId, txInfo, txHex); - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); - } - } - - @RpcMethod("broadcastTxWithNoContractValidation") - public RpcResult broadcastTxWithNoContractValidation(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - VerifyUtils.verifyParams(params, 2); - int chainId; - String txHex; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - txHex = (String) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[txHex] is inValid"); - } - - try { - if (!CacheManager.isChainExist(chainId)) { - return RpcResult.dataNotFound(); - } - Result result = WalletRpcHandler.broadcastTx(chainId, txHex); - if (result.isSuccess()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - txService.saveUnConfirmTx(chainId, txInfo, txHex); - return RpcResult.success(result.getData()); - } else { - return RpcResult.failed(result); - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return RpcResult.failed(RpcErrorCode.TX_PARSE_ERROR); - } - } - - @RpcMethod("getCrossTxList") - public RpcResult getCrossTxList(List params) { - if (!ApiContext.isReady) { - return RpcResult.chainNotReady(); - } - VerifyUtils.verifyParams(params, 5); - int chainId, crossChainId, pageNumber, pageSize; - long startTime = 0, endTime = 0; - try { - chainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - crossChainId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[chainId] is inValid"); - } - try { - pageNumber = (int) params.get(2); - } catch (Exception e) { - return RpcResult.paramError("[pageNumber] is inValid"); - } - try { - pageSize = (int) params.get(3); - } catch (Exception e) { - return RpcResult.paramError("[pageSize] is inValid"); - } - try { - startTime = Long.parseLong(params.get(4).toString()); - } catch (Exception e) { - - } - try { - endTime = Long.parseLong(params.get(5).toString()); - } catch (Exception e) { - - } - PageInfo pageInfo; - pageInfo = txService.getCrossTxList(chainId, crossChainId, pageNumber, pageSize, startTime, endTime); - RpcResult rpcResult = new RpcResult(); - rpcResult.setResult(pageInfo); - return rpcResult; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java deleted file mode 100644 index c783eb80e1..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/controller/runner/QueueContractRun.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2018 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.rpc.controller.runner; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.AnalysisHandler; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.db.TransactionService; -import io.nuls.api.model.po.TransactionInfo; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.RPCUtil; -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.base.data.Transaction; -import io.nuls.core.basic.Result; - -import java.util.concurrent.TimeUnit; - -/** - * @author: PierreLuo - * @date: 2020-03-31 - */ -public class QueueContractRun implements Runnable { - private int chainId; - private String txHex; - private TransactionService txService; - - public QueueContractRun(int chainId, String txHex, TransactionService txService) { - this.chainId = chainId; - this.txHex = txHex; - this.txService = txService; - } - - @Override - public void run() { - try { - Result result = WalletRpcHandler.broadcastTx(chainId, txHex); - - if (result.isSuccess()) { - Transaction tx = new Transaction(); - tx.parse(new NulsByteBuffer(RPCUtil.decode(txHex))); - TransactionInfo txInfo = AnalysisHandler.toTransaction(chainId, tx, ApiContext.protocolVersion); - LoggerUtil.commonLog.info("排队广播指定合约交易[{}]成功", txInfo.getHash()); - txService.saveUnConfirmTx(chainId, txInfo, txHex); - // 休眠10秒 - TimeUnit.SECONDS.sleep(10); - return; - } - LoggerUtil.commonLog.error("排队广播指定合约交易失败, 详细: {}", result.toString()); - } catch (Exception e) { - LoggerUtil.commonLog.error("排队广播指定合约交易失败", e); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcContext.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcContext.java deleted file mode 100644 index 5550fc2437..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcContext.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.jsonRpc; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Niels - */ -public class JsonRpcContext { - - public static final Map RPC_METHOD_INVOKER_MAP = new HashMap<>(); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcHandler.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcHandler.java deleted file mode 100644 index 10fc7ee28f..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcHandler.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.jsonRpc; - -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.model.rpc.RpcResultError; -import io.nuls.api.utils.AssetTool; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.model.StringUtils; -import io.nuls.core.parse.JSONUtils; -import org.glassfish.grizzly.http.Method; -import org.glassfish.grizzly.http.server.HttpHandler; -import org.glassfish.grizzly.http.server.Request; -import org.glassfish.grizzly.http.server.Response; - -import javax.ws.rs.core.MediaType; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 所有该端口的请求都发送到这里统一处理,在此类中封装JSON-RPC 2.0规范的框架 - * - * @author Niels - */ -public class JsonRpcHandler extends HttpHandler { - - @Override - public void service(Request request, Response response) throws Exception { - - response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin")); - response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); - response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers")); - response.setHeader("Content-Type", MediaType.APPLICATION_JSON); - request.setCharacterEncoding("UTF-8"); - response.setCharacterEncoding("UTF-8"); - if (request.getMethod().equals(Method.OPTIONS)) { - response.getWriter().write("ok"); - return; - } - - if (request.getMethod().equals(Method.GET)) { - if (request.getRequestURI().endsWith("nuls/assets/get") || request.getRequestURI().endsWith("nuls/assets/get/")) { - Map result = new HashMap<>(); - result.put("success", true); - result.put("code", 1000); - result.put("msg", "success"); - result.put("data", AssetTool.getNulsAssets()); - response.getWriter().write(JSONUtils.obj2json(result)); - return; - } - if (request.getRequestURI().endsWith("nuls/assets/all/get") || request.getRequestURI().endsWith("nuls/assets/get/")) { - Map result = new HashMap<>(); - result.put("success", true); - result.put("code", 1000); - result.put("msg", "success"); - result.put("data", AssetTool.getNulsAssetInfo()); - response.getWriter().write(JSONUtils.obj2json(result)); - return; - } - if (request.getRequestURI().endsWith("nuls/assets/total/get") || request.getRequestURI().endsWith("nuls/assets/total/get/")) { - response.getWriter().write(AssetTool.getTotal()); - return; - } - if (request.getRequestURI().endsWith("nuls/assets/circulation/get") || request.getRequestURI().endsWith("nuls/assets/circulation/get/")) { - response.getWriter().write(AssetTool.getCirculation()); - return; - } - } - String content = ""; - if (!request.getMethod().equals(Method.POST)) { - LoggerUtil.commonLog.warn("the request is not POST!, remoteHost:" + request.getRemoteAddr()); - try { - content = getParam(request); - } catch (IOException e) { - // LoggerUtil.commonLog.error(e); - } - LoggerUtil.commonLog.warn(content); - response.getWriter().write(JSONUtils.obj2json(responseError("-32600", "", "0"))); - return; - } - - try { - content = getParam(request); - } catch (IOException e) { - LoggerUtil.commonLog.error(e); - return; - } - if (StringUtils.isBlank(content)) { - response.getWriter().write(JSONUtils.obj2json(responseError("-32700", "", "0"))); - return; - } - content = content.trim(); - - String responseResult = null; - try { - do { - if (content.startsWith("[")) { - // 处理批量请求 - List paramList; - try { - paramList = JSONUtils.json2list(content, Map.class); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - responseResult = JSONUtils.obj2json(responseError("-32700", "the request is not a json-rpc 2.0 request", "0")); - break; - } - - List list = new ArrayList<>(); - for (Map map : paramList) { - list.add(doHandler(map, response)); - } - if (list.isEmpty()) { - responseResult = JSONUtils.obj2json(responseError("-32603", "Internal error!", "0")); - break; - } - if (list.size() == 1) { - responseResult = JSONUtils.obj2json(list.get(0)); - break; - } - if (list.size() > 1) { - responseResult = JSONUtils.obj2json(list); - break; - } - } else { - // 处理单个请求 - Map jsonRpcParam = null; - try { - - jsonRpcParam = JSONUtils.json2map(content); - } catch (Exception e) { - LoggerUtil.commonLog.error("------remote host : " + request.getRemoteHost()); - LoggerUtil.commonLog.error(e.getMessage()); - responseResult = JSONUtils.obj2json(responseError("-32700", "the request is not a json-rpc 2.0 request", "0")); - break; - } - RpcResult result = doHandler(jsonRpcParam, response); - responseResult = JSONUtils.obj2json(result); - } - } while (false); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - responseResult = JSONUtils.obj2json(responseError("-32603", "Internal error!", "0")); - } finally { - response.getWriter().write(responseResult); - } - } - - private RpcResult doHandler(Map jsonRpcParam, Response response) throws Exception { - String method = (String) jsonRpcParam.get("method"); - String id = jsonRpcParam.get("id") + ""; - if (!"2.0".equals(jsonRpcParam.get("jsonrpc"))) { - LoggerUtil.commonLog.warn("the request is not a json-rpc 2.0 request!"); - return responseError("-32600", "the request is not a json-rpc 2.0 request", id); - } - RpcMethodInvoker invoker = JsonRpcContext.RPC_METHOD_INVOKER_MAP.get(method); - - if (null == invoker) { - LoggerUtil.commonLog.warn("Can't find the method:{}", method); - return responseError("-32601", "Can't find the method", id); - } - - RpcResult result = invoker.invoke(jsonRpcParam.get("params")); - result.setId(id); - return result; - } - - private String getParam(Request request) throws IOException { - int contentLength = request.getContentLength(); - byte buffer[] = new byte[contentLength]; - for (int i = 0; i < contentLength; ) { - - int readlen = request.getInputStream().read(buffer, i, - contentLength - i); - if (readlen == -1) { - break; - } - i += readlen; - } - return new String(buffer, "UTF-8"); - } - - - private RpcResult responseError(String code, String message, String id) throws Exception { - RpcResult result = new RpcResult(); - RpcResultError error = new RpcResultError(); - error.setCode(code); - error.setMessage(message); - result.setError(error); - result.setId(id); - return result; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcServer.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcServer.java deleted file mode 100644 index 470bc8e1db..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/JsonRpcServer.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.jsonRpc; - -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.core.annotation.Controller; -import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.core.ioc.SpringLiteContext; -import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder; -import org.glassfish.grizzly.http.server.*; -import org.glassfish.grizzly.nio.transport.TCPNIOTransport; -import org.glassfish.grizzly.strategies.WorkerThreadIOStrategy; -import org.glassfish.grizzly.threadpool.ThreadPoolConfig; -import org.glassfish.grizzly.utils.Charsets; - -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.util.Collection; -import java.util.Map; - - -/** - * @author Niels - */ -public class JsonRpcServer { - - private HttpServer httpServer; - - public void startServer(String ip, int port) { - initRpcMethodHandlers(); - this.httpServer = new HttpServer(); - NetworkListener listener = new NetworkListener("NULS-RPC", ip, port); - TCPNIOTransport transport = listener.getTransport(); - ThreadPoolConfig workerPool = ThreadPoolConfig.defaultConfig() - .setCorePoolSize(8) - .setMaxPoolSize(8) - .setQueueLimit(2000) - .setThreadFactory((new ThreadFactoryBuilder()).setNameFormat("grizzly-http-server-%d").build()); - transport.configureBlocking(false); - transport.setSelectorRunnersCount(2); - transport.setWorkerThreadPoolConfig(workerPool); - transport.setIOStrategy(WorkerThreadIOStrategy.getInstance()); - transport.setTcpNoDelay(true); - listener.setSecure(false); - httpServer.addListener(listener); - - ServerConfiguration config = httpServer.getServerConfiguration(); - config.addHttpHandler(new JsonRpcHandler()); - config.setDefaultQueryEncoding(Charsets.UTF8_CHARSET); - - try { - httpServer.start(); - } catch (IOException e) { - LoggerUtil.commonLog.error(e); - httpServer.shutdownNow(); - } - } - - private void initRpcMethodHandlers() { - Collection beanList = SpringLiteContext.getAllBeanList(); - for (Object bean : beanList) { - Annotation anno = SpringLiteContext.getFromArray(bean.getClass().getDeclaredAnnotations(), Controller.class); - if (null == anno) { - continue; - } - Method[] methods = bean.getClass().getDeclaredMethods(); - if (null == methods || methods.length == 0) { - continue; - } - for (Method method : methods) { - RpcMethod rpc = (RpcMethod) SpringLiteContext.getFromArray(method.getDeclaredAnnotations(), RpcMethod.class); - if (null == rpc) { - continue; - } - String methodCmd = rpc.value(); - if (methodCmd == null || methodCmd.trim().length() == 0) { - LoggerUtil.commonLog.warn("null method:" + bean.getClass() + ":" + method.getName()); - continue; - } - JsonRpcContext.RPC_METHOD_INVOKER_MAP.put(methodCmd, new RpcMethodInvoker(bean, method)); - } - - } - } - - public void shutdown() { - Map mapping = httpServer.getServerConfiguration().getHttpHandlersWithMapping(); - for (HttpHandler handler : mapping.keySet()) { - handler.destroy(); - } - httpServer.shutdown(); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/RpcMethodInvoker.java b/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/RpcMethodInvoker.java deleted file mode 100644 index 28bfec1f45..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/rpc/jsonRpc/RpcMethodInvoker.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.rpc.jsonRpc; - -import io.nuls.api.exception.JsonRpcException; -import io.nuls.api.model.rpc.RpcResult; -import io.nuls.api.model.rpc.RpcResultError; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.exception.NulsException; -import io.nuls.core.model.StringUtils; - -import java.lang.reflect.Method; -import java.util.List; -import java.util.Map; - -/** - * @author Niels - */ -public class RpcMethodInvoker { - - private Object bean; - - private Method method; - - public RpcMethodInvoker(Object bean, Method method) { - this.bean = bean; - this.method = method; - } - - public RpcResult invoke(Object object) { - RpcResult result = null; - try { - result = (RpcResult) method.invoke(bean, object); - } catch (Exception e) { - - LoggerUtil.commonLog.error("\n" + method.toString()); - if (e.getCause() instanceof JsonRpcException) { - JsonRpcException jsonRpcException = (JsonRpcException) e.getCause(); - result = new RpcResult(); - result.setError(jsonRpcException.getError()); - - } else if (e.getCause() instanceof NulsException) { - NulsException nulsException = (NulsException) e.getCause(); - result = new RpcResult(); - String error = null; - String customMessage = nulsException.getCustomMessage(); - if (StringUtils.isNotBlank(customMessage) && customMessage.contains(";")) { - error = (customMessage.split(";", 2))[1]; - } - RpcResultError rpcResultError = new RpcResultError(nulsException.getErrorCode()); - rpcResultError.setData(error); - result.setError(rpcResultError); - } else { - LoggerUtil.commonLog.error(e.getCause()); - result = new RpcResult(); - RpcResultError error = new RpcResultError(); - error.setMessage("system error"); - error.setCode("-32603"); - error.setData(e.getCause().getMessage()); - result.setError(error); - } - } - return result; - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/ConfigStorageService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/ConfigStorageService.java deleted file mode 100644 index 5366b9b016..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/ConfigStorageService.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * * MIT License - * * Copyright (c) 2017-2019 nuls.io - * * Permission is hereby granted, free of charge, to any person obtaining a copy - * * of this software and associated documentation files (the "Software"), to deal - * * in the Software without restriction, including without limitation the rights - * * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * * copies of the Software, and to permit persons to whom the Software is - * * furnished to do so, subject to the following conditions: - * * The above copyright notice and this permission notice shall be included in all - * * copies or substantial portions of the Software. - * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * * SOFTWARE. - * - */ - -package io.nuls.api.service; - -import io.nuls.api.constant.config.ConfigBean; - -import java.util.Map; - -/** - * 配置信息存储管理类 - * Configuration Information Storage Management Class - * - * @author captain - * @version 1.0 - * @date 19-1-25 下午3:02 - */ -public interface ConfigStorageService { - /** - * 保存指定链的配置信息 - * Save configuration information for the specified chain - * - * @param configBean 配置类/config bean - * @param chainID 链ID/chain id - * @return 保存是否成功/Is preservation successful? - * @throws - */ - boolean save(int chainID, ConfigBean configBean) throws Exception; - - /** - * 查询某条链的配置信息 - * Query the configuration information of a chain - * - * @param chainID 链ID/chain id - * @return 配置信息类/config bean - */ - ConfigBean get(int chainID); - - /** - * 删除某条链的配置信息 - * Delete configuration information for a chain - * - * @param chainID 链ID/chain id - * @return 删除是否成功/Delete success - */ - boolean delete(int chainID) throws Exception; - - /** - * 获取当前节点所有的链信息 - * Get all the chain information of the current node - * - * @return 节点信息列表/Node information list - */ - Map getList(); -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/RollbackService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/RollbackService.java deleted file mode 100644 index b19455c503..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/RollbackService.java +++ /dev/null @@ -1,865 +0,0 @@ -package io.nuls.api.service; - -import io.nuls.api.analysis.AnalysisHandler; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.constant.ApiErrorCode; -import io.nuls.api.db.*; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.utils.DBUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.constant.TxType; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.exception.NulsRuntimeException; -import io.nuls.core.log.Log; - -import java.math.BigInteger; -import java.util.*; - -import static io.nuls.api.constant.ApiConstant.ENABLE; - -@Component -public class RollbackService { - @Autowired - private AgentService agentService; - @Autowired - private AccountService accountService; - @Autowired - private AliasService aliasService; - @Autowired - private DepositService depositService; - @Autowired - private BlockService blockService; - @Autowired - private TransactionService transactionService; - @Autowired - private PunishService punishService; - @Autowired - private RoundManager roundManager; - @Autowired - private ContractService contractService; - @Autowired - private TokenService tokenService; - @Autowired - private ChainService chainService; - @Autowired - private AccountLedgerService ledgerService; - - //记录每个区块打包交易涉及到的账户的余额变动 - private Map accountInfoMap = new HashMap<>(); - //记录每个账户的资产变动 - private Map accountLedgerInfoMap = new HashMap<>(); - //记录每个区块代理节点的变化 - private List agentInfoList = new ArrayList<>(); - //记录每个区块设置别名信息 - private List aliasInfoList = new ArrayList<>(); - //记录每个区块委托共识的信息 - private List depositInfoList = new ArrayList<>(); - //记录惩罚交易的hash - private List punishTxHashList = new ArrayList<>(); - //记录每个区块新创建的智能合约信息 - private Map contractInfoMap = new HashMap<>(); - //记录智能合约相关的交易信息 - private List contractTxHashList = new ArrayList<>(); - //记录每个区块智能合约相关的账户token信息 - private Map accountTokenMap = new HashMap<>(); - //记录合约转账信息 - private List tokenTransferHashList = new ArrayList<>(); - //记录链信息 - private List chainInfoList = new ArrayList<>(); - //记录每个区块交易和账户地址的关系 - private Set txRelationInfoSet = new HashSet<>(); - //处理每个交易时,过滤交易中的重复地址 - Set addressSet = new HashSet<>(); - - public boolean rollbackBlock(int chainId, long blockHeight) { - clear(); - BlockHexInfo blockHexInfo = blockService.getBlockHexInfo(chainId, blockHeight); - if (blockHexInfo == null) { - blockService.deleteBlockHeader(chainId, blockHeight); - SyncInfo syncInfo = chainService.getSyncInfo(chainId); - if (syncInfo != null) { - if (syncInfo.getBestHeight() > 0) { - syncInfo.setBestHeight(syncInfo.getBestHeight() - 1); - syncInfo.setStep(100); - chainService.updateStep(syncInfo); - } - } - return true; - } - - Map resultInfoMap = null; - if (blockHexInfo.getContractHashList() != null && !blockHexInfo.getContractHashList().isEmpty()) { - resultInfoMap = new HashMap<>(); - for (String hash : blockHexInfo.getContractHashList()) { - ContractResultInfo resultInfo = contractService.getContractResultInfo(chainId, hash); - resultInfoMap.put(resultInfo.getTxHash(), resultInfo); - } - } - BlockInfo blockInfo; - try { - blockInfo = AnalysisHandler.toBlockInfo(blockHexInfo.getBlockHex(), resultInfoMap, chainId); - } catch (Exception e) { - Log.error(e); - return false; - } - - findAddProcessAgentOfBlock(chainId, blockInfo); - - processTxs(chainId, blockInfo.getTxList()); - - roundManager.rollback(chainId, blockInfo); - - save(chainId, blockInfo); - - System.out.println("-------------rollbackBlock: " + blockHeight + ", txCount:" + blockInfo.getHeader().getTxCount()); - return true; - } - - private void findAddProcessAgentOfBlock(int chainId, BlockInfo blockInfo) { - BlockHeaderInfo headerInfo = blockInfo.getHeader(); - AgentInfo agentInfo; - if (headerInfo.isSeedPacked()) { - //如果是种子节点打包的区块,则创建一个新的AgentInfo对象,临时使用 - //If it is a block packed by the seed node, create a new AgentInfo object for temporary use. - agentInfo = new AgentInfo(); - agentInfo.setPackingAddress(headerInfo.getPackingAddress()); - agentInfo.setAgentId(headerInfo.getPackingAddress()); - agentInfo.setRewardAddress(agentInfo.getPackingAddress()); - headerInfo.setByAgentInfo(agentInfo); - } else { - //根据区块头的打包地址,查询打包节点的节点信息,修改相关统计数据 - //According to the packed address of the block header, query the node information of the packed node, and modify related statistics. - agentInfo = queryAgentInfo(chainId, headerInfo.getPackingAddress(), 3); - agentInfo.setTotalPackingCount(agentInfo.getTotalPackingCount() - 1); - agentInfo.setLastRewardHeight(headerInfo.getHeight() - 1); - agentInfo.setVersion(headerInfo.getAgentVersion()); - headerInfo.setByAgentInfo(agentInfo); - - if (blockInfo.getTxList() != null && !blockInfo.getTxList().isEmpty()) { - calcCommissionReward(chainId, agentInfo, blockInfo.getTxList().get(0)); - } - } - } - - private void calcCommissionReward(int chainId, AgentInfo agentInfo, TransactionInfo coinBaseTx) { - List list = coinBaseTx.getCoinTos(); - if (null == list || list.isEmpty()) { - return; - } - - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - BigInteger agentReward = BigInteger.ZERO, otherReward = BigInteger.ZERO; - for (CoinToInfo output : list) { - //奖励只计算本链的共识资产 - if (output.getChainId() == assetInfo.getChainId() && output.getAssetsId() == assetInfo.getAssetId()) { - if (output.getAddress().equals(agentInfo.getRewardAddress())) { - agentReward = agentReward.add(output.getAmount()); - } else { - otherReward = otherReward.add(output.getAmount()); - } - } - } - agentInfo.setTotalReward(agentInfo.getTotalReward().subtract(agentReward).subtract(otherReward)); - agentInfo.setAgentReward(agentInfo.getAgentReward().subtract(agentReward)); - agentInfo.setCommissionReward(agentInfo.getCommissionReward().subtract(otherReward)); - } - - private void processTxs(int chainId, List txs) { - for (int i = 0; i < txs.size(); i++) { - TransactionInfo tx = txs.get(i); - if (tx.getType() == TxType.COIN_BASE) { - processCoinBaseTx(chainId, tx); - } else if (tx.getType() == TxType.TRANSFER || tx.getType() == TxType.CONTRACT_TRANSFER) { - processTransferTx(chainId, tx); - } else if (tx.getType() == TxType.ACCOUNT_ALIAS) { - processAliasTx(chainId, tx); - } else if (tx.getType() == TxType.REGISTER_AGENT || tx.getType() == TxType.CONTRACT_CREATE_AGENT) { - processCreateAgentTx(chainId, tx); - } else if (tx.getType() == TxType.DEPOSIT || tx.getType() == TxType.CONTRACT_DEPOSIT) { - processDepositTx(chainId, tx); - } else if (tx.getType() == TxType.CANCEL_DEPOSIT || tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT) { - processCancelDepositTx(chainId, tx); - } else if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.CONTRACT_STOP_AGENT) { - processStopAgentTx(chainId, tx); - } else if (tx.getType() == TxType.YELLOW_PUNISH) { - processYellowPunishTx(chainId, tx); - } else if (tx.getType() == TxType.RED_PUNISH) { - processRedPunishTx(chainId, tx); - } else if (tx.getType() == TxType.CREATE_CONTRACT) { - processCreateContract(chainId, tx); - } else if (tx.getType() == TxType.CALL_CONTRACT) { - processCallContract(chainId, tx); - } else if (tx.getType() == TxType.DELETE_CONTRACT) { - processDeleteContract(chainId, tx); - } else if (tx.getType() == TxType.CROSS_CHAIN) { - processCrossTransferTx(chainId, tx); - } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET) { - processRegChainTx(chainId, tx); - } else if (tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { - processDestroyChainTx(chainId, tx); - } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN) { - processAddAssetTx(chainId, tx); - } else if (tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { - processCancelAssetTx(chainId, tx); - } else if (tx.getType() == TxType.CONTRACT_RETURN_GAS) { - processReturnGasTx(chainId, tx); - } - } - } - - private void processCoinBaseTx(int chainId, TransactionInfo tx) { - if (tx.getCoinTos() == null || tx.getCoinTos().isEmpty()) { - return; - } - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - addressSet.clear(); - for (CoinToInfo output : tx.getCoinTos()) { - addressSet.add(output.getAddress()); - calcBalance(chainId, output); - //创世块的数据和合约返还不计算共识奖励 - if (tx.getHeight() == 0) { - continue; - } - //奖励是本链主资产的时候,回滚奖励金额 - if (output.getChainId() == assetInfo.getChainId() && output.getAssetsId() == assetInfo.getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTotalReward(accountInfo.getTotalReward().subtract(output.getAmount())); - } - } - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - } - } - - private void processReturnGasTx(int chainId, TransactionInfo tx) { - if (tx.getCoinTos() == null || tx.getCoinTos().isEmpty()) { - return; - } - for (CoinToInfo output : tx.getCoinTos()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().subtract(output.getAmount())); - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().subtract(output.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - } - } - - private void processTransferTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - addressSet.add(input.getAddress()); - calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input.getAddress(), tx.getHash())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - addressSet.add(output.getAddress()); - calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - } - } - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - } - } - - private void processCrossTransferTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(input.getAddress())) { - continue; - } - addressSet.add(input.getAddress()); - calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input.getAddress(), tx.getHash())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(output.getAddress())) { - continue; - } - addressSet.add(output.getAddress()); - calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - } - } - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - } - } - - private void processAliasTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - addressSet.add(input.getAddress()); - calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input.getAddress(), tx.getHash())); - } - } - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - addressSet.add(output.getAddress()); - calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - } - } - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - } - - AliasInfo aliasInfo = (AliasInfo) tx.getTxData(); - if (aliasInfo != null) { - AccountInfo accountInfo = queryAccountInfo(chainId, aliasInfo.getAddress()); - accountInfo.setAlias(null); - aliasInfoList.add(aliasInfo); - } - } - - private void processCreateAgentTx(int chainId, TransactionInfo tx) { - CoinToInfo output = tx.getCoinTos().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - //查找到代理节点,设置isNew = true,最后做存储的时候删除 - AgentInfo agentInfo = queryAgentInfo(chainId, tx.getHash(), 1); - agentInfo.setNew(true); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(agentInfo.getDeposit())); - } - - private void processDepositTx(int chainId, TransactionInfo tx) { - CoinToInfo output = tx.getCoinTos().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - //查找到委托记录,设置isNew = true,最后做存储的时候删除 - DepositInfo depositInfo = (DepositInfo) tx.getTxData(); - depositInfo.setKey(DBUtil.getDepositKey(depositInfo.getTxHash(), depositInfo.getAddress())); - depositInfo.setNew(true); - depositInfoList.add(depositInfo); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(depositInfo.getAmount())); - - AgentInfo agentInfo = queryAgentInfo(chainId, depositInfo.getAgentHash(), 1); - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().subtract(depositInfo.getAmount())); - agentInfo.setNew(false); - } - - private void processCancelDepositTx(int chainId, TransactionInfo tx) { - CoinToInfo output = tx.getCoinTos().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - //查询取消委托记录,再根据deleteHash反向查到委托记录 - DepositInfo cancelInfo = (DepositInfo) tx.getTxData(); - DepositInfo depositInfo = depositService.getDepositInfoByKey(chainId, DBUtil.getDepositKey(cancelInfo.getTxHash(), accountInfo.getAddress())); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(depositInfo.getAmount())); - - cancelInfo.setTxHash(tx.getHash()); - cancelInfo.setKey(DBUtil.getDepositKey(tx.getHash(), depositInfo.getKey())); - cancelInfo.setNew(true); - - depositInfo.setDeleteKey(null); - depositInfo.setDeleteHeight(0); - depositInfoList.add(depositInfo); - depositInfoList.add(cancelInfo); - - AgentInfo agentInfo = queryAgentInfo(chainId, depositInfo.getAgentHash(), 1); - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().add(depositInfo.getAmount())); - agentInfo.setNew(false); - } - - private void processStopAgentTx(int chainId, TransactionInfo tx) { - AgentInfo agentInfo = (AgentInfo) tx.getTxData(); - agentInfo = queryAgentInfo(chainId, agentInfo.getTxHash(), 1); - agentInfo.setDeleteHash(null); - agentInfo.setDeleteHeight(0); - agentInfo.setStatus(1); - agentInfo.setNew(false); - - AccountInfo accountInfo; - CoinToInfo output; - addressSet.clear(); - for (int i = 0; i < tx.getCoinTos().size(); i++) { - output = tx.getCoinTos().get(i); - accountInfo = queryAccountInfo(chainId, output.getAddress()); - if (!addressSet.contains(output.getAddress())) { - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - } - //lockTime > 0 这条output的金额就是节点的保证金 - if (output.getLockTime() > 0) { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(agentInfo.getDeposit())); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - } else { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(output.getAmount())); - } - addressSet.add(output.getAddress()); - } - - //根据交易hash查询所有取消委托的记录 - List depositInfos = depositService.getDepositListByHash(chainId, tx.getHash()); - if (!depositInfos.isEmpty()) { - for (DepositInfo cancelDeposit : depositInfos) { - //需要删除的数据 - cancelDeposit.setNew(true); - - DepositInfo depositInfo = depositService.getDepositInfoByKey(chainId, cancelDeposit.getDeleteKey()); - depositInfo.setDeleteHeight(0); - depositInfo.setDeleteKey(null); - - depositInfoList.add(cancelDeposit); - depositInfoList.add(depositInfo); - - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().add(depositInfo.getAmount())); - } - } - } - - private void processYellowPunishTx(int chainId, TransactionInfo tx) { - Set addressSet = new HashSet<>(); - for (TxDataInfo txData : tx.getTxDataList()) { - PunishLogInfo punishLog = (PunishLogInfo) txData; - addressSet.add(punishLog.getAddress()); - } - - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - txRelationInfoSet.add(new TxRelationInfo(accountInfo.getAddress(), tx.getHash())); - } - punishTxHashList.add(tx.getHash()); - } - - private void processRedPunishTx(int chainId, TransactionInfo tx) { - PunishLogInfo redPunish = (PunishLogInfo) tx.getTxData(); - punishTxHashList.add(tx.getHash()); - //根据红牌找到被惩罚的节点,恢复节点状态 - AgentInfo agentInfo = queryAgentInfo(chainId, redPunish.getAddress(), 2); - agentInfo.setDeleteHash(null); - agentInfo.setDeleteHeight(0); - agentInfo.setStatus(1); - agentInfo.setNew(false); - - AccountInfo accountInfo; - CoinToInfo output; - addressSet.clear(); - for (int i = 0; i < tx.getCoinTos().size(); i++) { - output = tx.getCoinTos().get(i); - accountInfo = queryAccountInfo(chainId, output.getAddress()); - if (!addressSet.contains(output.getAddress())) { - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - } - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(output.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - addressSet.add(output.getAddress()); - } - - //根据交易hash查询所有取消委托的记录 - List depositInfos = depositService.getDepositListByHash(chainId, tx.getHash()); - if (!depositInfos.isEmpty()) { - for (DepositInfo cancelDeposit : depositInfos) { - //需要删除的数据 - cancelDeposit.setNew(true); - - DepositInfo depositInfo = depositService.getDepositInfoByKey(chainId, cancelDeposit.getDeleteKey()); - depositInfo.setDeleteHeight(0); - depositInfo.setDeleteKey(null); - - depositInfoList.add(cancelDeposit); - depositInfoList.add(depositInfo); - - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().add(depositInfo.getAmount())); - } - } - } - - private void processCreateContract(int chainId, TransactionInfo tx) { - //CoinFromInfo coinFromInfo = tx.getCoinFroms().get(0); - // - //AccountInfo accountInfo = queryAccountInfo(chainId, coinFromInfo.getAddress()); - //accountInfo.setTxCount(accountInfo.getTxCount() - 1); - //calcBalance(chainId, coinFromInfo); - //txRelationInfoSet.add(new TxRelationInfo(accountInfo.getAddress(), tx.getHash())); - processTransferTx(chainId, tx); - ContractInfo contractInfo = (ContractInfo) tx.getTxData(); - contractInfo.setNew(true); - contractInfoMap.put(contractInfo.getContractAddress(), contractInfo); - contractTxHashList.add(tx.getHash()); - ContractResultInfo resultInfo = contractInfo.getResultInfo(); - if (resultInfo.isSuccess()) { - processTokenTransfers(chainId, resultInfo.getTokenTransfers(), tx); - } - } - - private void processCallContract(int chainId, TransactionInfo tx) { - processTransferTx(chainId, tx); - contractTxHashList.add(tx.getHash()); - ContractCallInfo callInfo = (ContractCallInfo) tx.getTxData(); - ContractResultInfo resultInfo = callInfo.getResultInfo(); - ContractInfo contractInfo = queryContractInfo(chainId, resultInfo.getContractAddress()); - contractInfo.setTxCount(contractInfo.getTxCount() - 1); - - if (resultInfo.isSuccess()) { - processTokenTransfers(chainId, resultInfo.getTokenTransfers(), tx); - } - } - - private void processDeleteContract(int chainId, TransactionInfo tx) { - CoinFromInfo coinFromInfo = tx.getCoinFroms().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, coinFromInfo.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - calcBalance(chainId, coinFromInfo); - txRelationInfoSet.add(new TxRelationInfo(accountInfo.getAddress(), tx.getHash())); - //首先查询合约交易执行结果 - ContractDeleteInfo deleteInfo = (ContractDeleteInfo) tx.getTxData(); - ContractResultInfo resultInfo = deleteInfo.getResultInfo(); - //再查询智能合约 - ContractInfo contractInfo = queryContractInfo(chainId, deleteInfo.getContractAddress()); - contractInfo.setTxCount(contractInfo.getTxCount() - 1); - - contractTxHashList.add(tx.getHash()); - if (resultInfo.isSuccess()) { - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_NORMAL); - } - } - - private void processRegChainTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - AccountInfo accountInfo; - - - for (CoinToInfo to : tx.getCoinTos()) { - if (to.getAddress().equals(input.getAddress())) { - accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, input.getAmount().subtract(to.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(input.getAddress(), tx.getHash())); - } else { - accountInfo = queryAccountInfo(chainId, to.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, to); - txRelationInfoSet.add(new TxRelationInfo(to.getAddress(), tx.getHash())); - } - } - chainInfoList.add((ChainInfo) tx.getTxData()); - } - - private void processDestroyChainTx(int chainId, TransactionInfo tx) { - CoinToInfo output = tx.getCoinTos().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - ChainInfo chainInfo = chainService.getChainInfo(chainId); - chainInfo.setStatus(ENABLE); - for (AssetInfo assetInfo : chainInfo.getAssets()) { - assetInfo.setStatus(ENABLE); - } - chainInfo.getDefaultAsset().setStatus(ENABLE); - chainInfo.setNew(false); - chainInfoList.add(chainInfo); - } - - private void processAddAssetTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - txRelationInfoSet.add(new TxRelationInfo(input.getAddress(), tx.getHash())); - - CoinToInfo output = null; - for (CoinToInfo to : tx.getCoinTos()) { - if (!to.getAddress().equals(accountInfo.getAddress())) { - output = to; - break; - } - } - calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, output.getAmount().add(tx.getFee().getValue())); - AccountInfo destroyAccount = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(destroyAccount.getTxCount() - 1); - calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(chainId); - chainInfo.removeAsset(assetInfo.getAssetId()); - chainInfoList.add(chainInfo); - } - - private void processCancelAssetTx(int chainId, TransactionInfo tx) { - CoinToInfo output = tx.getCoinTos().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() - 1); - calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(output.getAddress(), tx.getHash())); - - AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(chainId); - chainInfo.getAsset(assetInfo.getAssetId()).setStatus(ENABLE); - chainInfo.setNew(false); - chainInfoList.add(chainInfo); - } - - private void processTokenTransfers(int chainId, List tokenTransfers, TransactionInfo tx) { - if (tokenTransfers.isEmpty()) { - return; - } - tokenTransferHashList.add(tx.getHash()); - - TokenTransfer tokenTransfer; - ContractInfo contractInfo; - for (int i = 0; i < tokenTransfers.size(); i++) { - tokenTransfer = tokenTransfers.get(i); - contractInfo = queryContractInfo(chainId, tokenTransfer.getContractAddress()); - contractInfo.setTransferCount(contractInfo.getTransferCount() - 1); - - if (tokenTransfer.getFromAddress() != null) { - processAccountNrc20(chainId, contractInfo, tokenTransfer.getFromAddress(), new BigInteger(tokenTransfer.getValue()), 1); - } - if (tokenTransfer.getToAddress() != null) { - processAccountNrc20(chainId, contractInfo, tokenTransfer.getToAddress(), new BigInteger(tokenTransfer.getValue()), -1); - } - } - } - - private AccountTokenInfo processAccountNrc20(int chainId, ContractInfo contractInfo, String address, BigInteger value, int type) { - AccountTokenInfo tokenInfo = queryAccountTokenInfo(chainId, address + contractInfo.getContractAddress()); - if (tokenInfo == null) { - return null; - } - if (type == 1) { - tokenInfo.setBalance(tokenInfo.getBalance().add(value)); - } else { - tokenInfo.setBalance(tokenInfo.getBalance().subtract(value)); - } - -// if (tokenInfo.getBalance().compareTo(BigInteger.ZERO) < 0) { -// throw new RuntimeException("data error: " + address + " token[" + contractInfo.getSymbol() + "] balance < 0"); -// } - if (!accountTokenMap.containsKey(tokenInfo.getKey())) { - accountTokenMap.put(tokenInfo.getKey(), tokenInfo); - } - return tokenInfo; - } - - - private AccountLedgerInfo calcBalance(int chainId, CoinToInfo output) { - ChainInfo chainInfo = CacheManager.getCacheChain(chainId); - if (output.getChainId() == chainInfo.getChainId() && output.getAssetsId() == chainInfo.getDefaultAsset().getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTotalIn(accountInfo.getTotalIn().subtract(output.getAmount())); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().subtract(output.getAmount())); -// if (accountInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { -// throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "account[" + accountInfo.getAddress() + "] totalBalance < 0"); -// } - } - - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().subtract(output.getAmount())); -// if (ledgerInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { -// throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "account[" + ledgerInfo.getAddress() + "] totalBalance < 0"); -// } - return ledgerInfo; - } - - private AccountLedgerInfo calcBalance(int chainId, CoinFromInfo input) { - ChainInfo chainInfo = CacheManager.getCacheChain(chainId); - if (input.getChainId() == chainInfo.getChainId() && input.getAssetsId() == chainInfo.getDefaultAsset().getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTotalOut(accountInfo.getTotalOut().subtract(input.getAmount())); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().add(input.getAmount())); - } - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(input.getAmount())); - return ledgerInfo; - } - - private AccountLedgerInfo calcBalance(int chainId, int assetChainId, int assetId, AccountInfo accountInfo, BigInteger fee) { - if (chainId == assetChainId) { - accountInfo.setTotalOut(accountInfo.getTotalOut().subtract(fee)); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().add(fee)); - } - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, accountInfo.getAddress(), assetChainId, assetId); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(fee)); - return ledgerInfo; - } - - private void save(int chainId, BlockInfo blockInfo) { - SyncInfo syncInfo = chainService.getSyncInfo(chainId); - if (blockInfo.getHeader().getHeight() != syncInfo.getBestHeight()) { - throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR); - } - if (syncInfo.isFinish()) { - accountService.saveAccounts(chainId, accountInfoMap); - syncInfo.setStep(50); - chainService.updateStep(syncInfo); - } - - if (syncInfo.getStep() == 50) { - tokenService.saveAccountTokens(chainId, accountTokenMap); - syncInfo.setStep(40); - chainService.updateStep(syncInfo); - } - - if (syncInfo.getStep() == 40) { - contractService.rollbackContractInfos(chainId, contractInfoMap); - syncInfo.setStep(30); - chainService.updateStep(syncInfo); - } - - if (syncInfo.getStep() == 30) { - ledgerService.saveLedgerList(chainId, accountLedgerInfoMap); - syncInfo.setStep(20); - chainService.updateStep(syncInfo); - } - - if (syncInfo.getStep() == 20) { - agentService.rollbackAgentList(chainId, agentInfoList); - syncInfo.setStep(10); - chainService.updateStep(syncInfo); - } - //回滚chain信息 - chainService.rollbackChainList(chainInfoList); - //回滾token转账信息 - tokenService.rollbackTokenTransfers(chainId, tokenTransferHashList, blockInfo.getHeader().getHeight()); - //回滾智能合約交易 - contractService.rollbackContractResults(chainId, contractTxHashList); - contractService.rollbackContractTxInfos(chainId, contractTxHashList); - depositService.rollbackDeposit(chainId, depositInfoList); - punishService.rollbackPunishLog(chainId, punishTxHashList, blockInfo.getHeader().getHeight()); - aliasService.rollbackAliasList(chainId, aliasInfoList); - transactionService.rollbackTxRelationList(chainId, txRelationInfoSet); - transactionService.rollbackTx(chainId, blockInfo.getHeader().getTxHashList()); - blockService.deleteBlockHeader(chainId, blockInfo.getHeader().getHeight()); - - syncInfo.setStep(100); - syncInfo.setBestHeight(blockInfo.getHeader().getHeight() - 1); - chainService.updateStep(syncInfo); - } - - private BlockInfo queryBlock(int chainId, long blockHeight) { - BlockHeaderInfo headerInfo = blockService.getBlockHeader(chainId, blockHeight); - if (headerInfo == null) { - return null; - } - BlockInfo blockInfo = new BlockInfo(); - blockInfo.setHeader(headerInfo); - List txList = new ArrayList<>(); - for (int i = 0; i < headerInfo.getTxHashList().size(); i++) { - TransactionInfo tx = transactionService.getTx(chainId, headerInfo.getTxHashList().get(i)); - if (tx != null) { - txList.add(tx); - } - } - blockInfo.setTxList(txList); - return blockInfo; - } - - private AccountInfo queryAccountInfo(int chainId, String address) { - AccountInfo accountInfo = accountInfoMap.get(address); - if (accountInfo == null) { - accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo == null) { - accountInfo = new AccountInfo(address); - } - accountInfoMap.put(address, accountInfo); - } - return accountInfo; - } - - private AccountLedgerInfo queryLedgerInfo(int chainId, String address, int assetChainId, int assetId) { - String key = DBUtil.getAccountAssetKey(address, assetChainId, assetId); - AccountLedgerInfo ledgerInfo = accountLedgerInfoMap.get(key); - if (ledgerInfo == null) { - ledgerInfo = ledgerService.getAccountLedgerInfo(chainId, key); - if (ledgerInfo == null) { - ledgerInfo = new AccountLedgerInfo(address, assetChainId, assetId); - } - accountLedgerInfoMap.put(key, ledgerInfo); - } - return ledgerInfo; - } - - private AgentInfo queryAgentInfo(int chainId, String key, int type) { - AgentInfo agentInfo; - for (int i = 0; i < agentInfoList.size(); i++) { - agentInfo = agentInfoList.get(i); - - if (type == 1 && agentInfo.getTxHash().equals(key)) { - return agentInfo; - } else if (type == 2 && agentInfo.getAgentAddress().equals(key)) { - return agentInfo; - } else if (type == 3 && agentInfo.getPackingAddress().equals(key)) { - return agentInfo; - } - } - if (type == 1) { - agentInfo = agentService.getAgentByHash(chainId, key); - } else if (type == 2) { - agentInfo = agentService.getAgentByAgentAddress(chainId, key); - } else { - agentInfo = agentService.getAgentByPackingAddress(chainId, key); - } - if (agentInfo != null) { - agentInfoList.add(agentInfo); - } - return agentInfo; - } - - private ContractInfo queryContractInfo(int chainId, String contractAddress) { - ContractInfo contractInfo = contractInfoMap.get(contractAddress); - if (contractInfo == null) { - contractInfo = contractService.getContractInfo(chainId, contractAddress); - contractInfoMap.put(contractInfo.getContractAddress(), contractInfo); - } - return contractInfo; - } - - private AccountTokenInfo queryAccountTokenInfo(int chainId, String key) { - AccountTokenInfo accountTokenInfo = accountTokenMap.get(key); - if (accountTokenInfo == null) { - accountTokenInfo = tokenService.getAccountTokenInfo(chainId, key); - } - return accountTokenInfo; - } - - private void clear() { - accountInfoMap.clear(); - accountLedgerInfoMap.clear(); - agentInfoList.clear(); - aliasInfoList.clear(); - depositInfoList.clear(); - punishTxHashList.clear(); - contractInfoMap.clear(); - contractTxHashList.clear(); - accountTokenMap.clear(); - tokenTransferHashList.clear(); - chainInfoList.clear(); - txRelationInfoSet.clear(); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java deleted file mode 100644 index 737dc19fa1..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/SyncService.java +++ /dev/null @@ -1,1212 +0,0 @@ -package io.nuls.api.service; - - -import io.nuls.api.ApiContext; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.constant.ApiErrorCode; -import io.nuls.api.db.*; -import io.nuls.api.db.mongo.MongoAccountServiceImpl; -import io.nuls.api.db.mongo.MongoChainServiceImpl; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.*; -import io.nuls.api.utils.DBUtil; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.constant.TxType; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.exception.NulsRuntimeException; - -import java.math.BigInteger; -import java.util.*; - -import static io.nuls.api.constant.ApiConstant.*; - -@Component -public class SyncService { - - @Autowired - private ChainService chainService; - @Autowired - private BlockService blockService; - @Autowired - private AccountService accountService; - @Autowired - private AccountLedgerService ledgerService; - @Autowired - private TransactionService txService; - @Autowired - private AgentService agentService; - @Autowired - private AliasService aliasService; - @Autowired - private DepositService depositService; - @Autowired - private PunishService punishService; - @Autowired - private RoundManager roundManager; - @Autowired - private ContractService contractService; - @Autowired - private TokenService tokenService; - - //记录每个区块打包交易涉及到的账户的余额变动 - private Map accountInfoMap = new HashMap<>(); - //记录每个账户的资产变动 - private Map accountLedgerInfoMap = new HashMap<>(); - //记录每个区块代理节点的变化 - private List agentInfoList = new ArrayList<>(); - //记录每个区块交易和账户地址的关系 - private Set txRelationInfoSet = new HashSet<>(); - //记录每个跨链交易和账户地址的关系 - private Set crossTxRelationInfoSet = new HashSet<>(); - //记录每个区块设置别名信息 - private List aliasInfoList = new ArrayList<>(); - //记录每个区块委托共识的信息 - private List depositInfoList = new ArrayList<>(); - //记录每个区块的红黄牌信息 - private List punishLogList = new ArrayList<>(); - - private List coinDataList = new ArrayList<>(); - //记录每个区块新创建的智能合约信息 - private Map contractInfoMap = new HashMap<>(); - //记录智能合约执行结果 - private List contractResultList = new ArrayList<>(); - //记录智能合约相关的交易信息 - private List contractTxInfoList = new ArrayList<>(); - //记录每个区块智能合约相关的账户token信息 - private Map accountTokenMap = new HashMap<>(); - //记录合约转账信息 - private List tokenTransferList = new ArrayList<>(); - //记录链信息 - private List chainInfoList = new ArrayList<>(); - //处理每个交易时,过滤交易中的重复地址 - Set addressSet = new HashSet<>(); - - public SyncInfo getSyncInfo(int chainId) { - return chainService.getSyncInfo(chainId); - } - - public BlockHeaderInfo getBestBlockHeader(int chainId) { - return blockService.getBestBlockHeader(chainId); - } - - - public boolean syncNewBlock(int chainId, BlockInfo blockInfo) { - clear(chainId); - long time1, time2; - time1 = System.currentTimeMillis(); - findAddProcessAgentOfBlock(chainId, blockInfo); - //处理交易 - processTxs(chainId, blockInfo.getTxList()); - //处理交易 - roundManager.process(chainId, blockInfo); - //保存数据 - save(chainId, blockInfo); - - ApiCache apiCache = CacheManager.getCache(chainId); - apiCache.setBestHeader(blockInfo.getHeader()); - - time2 = System.currentTimeMillis(); - LoggerUtil.commonLog.info("-----height finish:" + blockInfo.getHeader().getHeight() + "-----txCount:" + blockInfo.getHeader().getTxCount() + "-----use:" + (time2 - time1) + "-----"); - return true; - } - - - /** - * 查找当前出块节点并处理相关信息 - * Find the current outbound node and process related information - * - * @return - */ - private void findAddProcessAgentOfBlock(int chainId, BlockInfo blockInfo) { - BlockHeaderInfo headerInfo = blockInfo.getHeader(); - AgentInfo agentInfo; - if (headerInfo.isSeedPacked()) { - //如果是种子节点打包的区块,则创建一个新的AgentInfo对象,临时使用 - //If it is a block packed by the seed node, create a new AgentInfo object for temporary use. - agentInfo = new AgentInfo(); - agentInfo.setPackingAddress(headerInfo.getPackingAddress()); - agentInfo.setAgentId(headerInfo.getPackingAddress()); - agentInfo.setRewardAddress(agentInfo.getPackingAddress()); - headerInfo.setByAgentInfo(agentInfo); - } else { - //根据区块头的打包地址,查询打包节点的节点信息,修改相关统计数据 - //According to the packed address of the block header, query the node information of the packed node, and modify related statistics. - agentInfo = queryAgentInfo(chainId, headerInfo.getPackingAddress(), 3); - agentInfo.setTotalPackingCount(agentInfo.getTotalPackingCount() + 1); - agentInfo.setLastRewardHeight(headerInfo.getHeight()); - agentInfo.setVersion(headerInfo.getAgentVersion()); - headerInfo.setByAgentInfo(agentInfo); - - if (blockInfo.getTxList() != null && !blockInfo.getTxList().isEmpty()) { - calcCommissionReward(chainId, agentInfo, blockInfo.getTxList().get(0)); - } - } - } - - /** - * 分别记录当前块,代理节点自己的和委托人的奖励 - * Record the current block, the agent node's own and the principal's reward - * - * @param agentInfo - * @param coinBaseTx - */ - private void calcCommissionReward(int chainId, AgentInfo agentInfo, TransactionInfo coinBaseTx) { - List list = coinBaseTx.getCoinTos(); - if (null == list || list.isEmpty()) { - return; - } - - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - BigInteger agentReward = BigInteger.ZERO, otherReward = BigInteger.ZERO; - for (CoinToInfo output : list) { - //奖励只计算本链的共识资产 - if (output.getChainId() == assetInfo.getChainId() && output.getAssetsId() == assetInfo.getAssetId()) { - if (output.getAddress().equals(agentInfo.getRewardAddress())) { - agentReward = agentReward.add(output.getAmount()); - } else { - otherReward = otherReward.add(output.getAmount()); - } - } - } - agentInfo.setTotalReward(agentInfo.getTotalReward().add(agentReward).add(otherReward)); - agentInfo.setAgentReward(agentInfo.getAgentReward().add(agentReward)); - agentInfo.setCommissionReward(agentInfo.getCommissionReward().add(otherReward)); - } - - /** - * 处理各种交易 - * - * @param txs - */ - private void processTxs(int chainId, List txs) { - for (int i = 0; i < txs.size(); i++) { - TransactionInfo tx = txs.get(i); - CoinDataInfo coinDataInfo = new CoinDataInfo(tx.getHash(), tx.getCoinFroms(), tx.getCoinTos()); - coinDataList.add(coinDataInfo); - - if (tx.getType() == TxType.COIN_BASE) { - processCoinBaseTx(chainId, tx); - } else if (tx.getType() == TxType.TRANSFER || tx.getType() == TxType.CONTRACT_TRANSFER) { - processTransferTx(chainId, tx); - } else if (tx.getType() == TxType.ACCOUNT_ALIAS) { - processAliasTx(chainId, tx); - } else if (tx.getType() == TxType.REGISTER_AGENT || tx.getType() == TxType.CONTRACT_CREATE_AGENT) { - processCreateAgentTx(chainId, tx); - } else if (tx.getType() == TxType.DEPOSIT || tx.getType() == TxType.CONTRACT_DEPOSIT) { - processDepositTx(chainId, tx); - } else if (tx.getType() == TxType.CANCEL_DEPOSIT || tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT) { - processCancelDepositTx(chainId, tx); - } else if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.CONTRACT_STOP_AGENT) { - processStopAgentTx(chainId, tx); - } else if (tx.getType() == TxType.YELLOW_PUNISH) { - processYellowPunishTx(chainId, tx); - } else if (tx.getType() == TxType.RED_PUNISH) { - processRedPunishTx(chainId, tx); - } else if (tx.getType() == TxType.CREATE_CONTRACT) { - processCreateContract(chainId, tx); - } else if (tx.getType() == TxType.CALL_CONTRACT) { - processCallContract(chainId, tx); - } else if (tx.getType() == TxType.DELETE_CONTRACT) { - processDeleteContract(chainId, tx); - } else if (tx.getType() == TxType.CROSS_CHAIN) { - processCrossTransferTx(chainId, tx); - // add by pierre at 2019-12-23 特殊跨链转账交易,从平行链跨链转回主网的NRC20资产 - processCrossTransferTxForNRC20TransferBack(chainId, tx); - // end code by pierre - } else if (tx.getType() == TxType.REGISTER_CHAIN_AND_ASSET) { - processRegChainTx(chainId, tx); - } else if (tx.getType() == TxType.DESTROY_CHAIN_AND_ASSET) { - processDestroyChainTx(chainId, tx); - } else if (tx.getType() == TxType.ADD_ASSET_TO_CHAIN) { - processAddAssetTx(chainId, tx); - } else if (tx.getType() == TxType.REMOVE_ASSET_FROM_CHAIN) { - processCancelAssetTx(chainId, tx); - } else if (tx.getType() == TxType.CONTRACT_RETURN_GAS) { - processReturnGasTx(chainId, tx); - } else if (tx.getType() == TxType.CONTRACT_TOKEN_CROSS_TRANSFER) { - processCrossTransferTxForNRC20TransferOut(chainId, tx); - } else if (tx.getType() == TxType.LEDGER_ASSET_REG_TRANSFER) { - processLedgerAssetRegTransferTx(chainId, tx); - } - } - } - - private void processCoinBaseTx(int chainId, TransactionInfo tx) { - if (tx.getCoinTos() == null || tx.getCoinTos().isEmpty()) { - return; - } - AssetInfo assetInfo = CacheManager.getCacheChain(chainId).getDefaultAsset(); - addressSet.clear(); - for (CoinToInfo output : tx.getCoinTos()) { - addressSet.add(output.getAddress()); - calcBalance(chainId, output); - //创世块的数据和合约返还不计算共识奖励 - if (tx.getHeight() == 0) { - continue; - } - //奖励是本链主资产的时候,累计奖励金额 - if (output.getChainId() == assetInfo.getChainId() && output.getAssetsId() == assetInfo.getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTotalReward(accountInfo.getTotalReward().add(output.getAmount())); - accountInfo.setLastReward(output.getAmount()); - } - - if (ApiContext.syncCoinBase) { - if (!ApiContext.syncAddress.isEmpty()) { - if (ApiContext.syncAddress.contains(output.getAddress())) { - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - } - } else { - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - } - } - } - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - } - - private void processReturnGasTx(int chainId, TransactionInfo tx) { - if (tx.getCoinTos() == null || tx.getCoinTos().isEmpty()) { - return; - } - for (CoinToInfo output : tx.getCoinTos()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().add(output.getAmount())); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - } - } - - private void processTransferTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - addressSet.add(input.getAddress()); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); - } - } - - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - addressSet.add(output.getAddress()); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - } - } - - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - } - - private void processCrossTransferTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(input.getAddress())) { - continue; - } - addressSet.add(input.getAddress()); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); - AssetInfo assetInfo = CacheManager.getRegisteredAsset(input.getAssetKey()); - crossTxRelationInfoSet.add(new CrossTxRelationInfo(input, tx, assetInfo.getDecimals())); - - if (assetInfo.getChainId() != ApiContext.defaultChainId) { - //资产跨链转出后,修改资产在本链的总余额 - ChainInfo chainInfo = queryChainInfo(assetInfo.getChainId()); - if (chainInfo != null) { - AssetInfo asset = chainInfo.getDefaultAsset(); - if (asset.getAssetId() == assetInfo.getAssetId()) { - asset.setLocalTotalCoins(asset.getLocalTotalCoins().subtract(input.getAmount())); - if (asset.getChainId() == 123) { - - System.out.println("from:" + input.getAmount() + ",total:" + asset.getLocalTotalCoins()); - } - } - for (AssetInfo ass : chainInfo.getAssets()) { - if (ass.getAssetId() == assetInfo.getAssetId()) { - ass.setLocalTotalCoins(ass.getLocalTotalCoins().subtract(input.getAmount())); - } - } - } - } - } - } - - boolean nrc20CrossTransferBack = tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo; - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(output.getAddress())) { - continue; - } - addressSet.add(output.getAddress()); - if (nrc20CrossTransferBack && output.getAssetsId() != ApiContext.defaultAssetId) { - txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO)); - } else { - AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - AssetInfo assetInfo = CacheManager.getRegisteredAsset(output.getAssetKey()); - crossTxRelationInfoSet.add(new CrossTxRelationInfo(output, tx, assetInfo.getDecimals())); - - //资产跨链转入后,修改资产在本链的总余额 - if (assetInfo.getChainId() != ApiContext.defaultChainId) { - ChainInfo chainInfo = queryChainInfo(assetInfo.getChainId()); - if (chainInfo != null) { - AssetInfo asset = chainInfo.getDefaultAsset(); - if (asset.getAssetId() == assetInfo.getAssetId()) { - asset.setLocalTotalCoins(asset.getLocalTotalCoins().add(output.getAmount())); - if (asset.getChainId() == 123) { - System.out.println("to:" + output.getAmount() + ",total:" + asset.getLocalTotalCoins()); - } - } - for (AssetInfo ass : chainInfo.getAssets()) { - if (ass.getAssetId() == assetInfo.getAssetId()) { - ass.setLocalTotalCoins(ass.getLocalTotalCoins().add(output.getAmount())); - } - } - } - } - } - } - } - - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - } - - private void processCrossTransferTxForNRC20TransferOut(int chainId, TransactionInfo tx) { - addressSet.clear(); - - if (tx.getCoinFroms() != null) { - for (CoinFromInfo input : tx.getCoinFroms()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(input.getAddress())) { - continue; - } - addressSet.add(input.getAddress()); - if (input.getAssetsId() == ApiContext.defaultAssetId) { - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); - } else { - txRelationInfoSet.add(new TxRelationInfo(input, tx, BigInteger.ZERO)); - } - } - } - - if (tx.getCoinTos() != null) { - for (CoinToInfo output : tx.getCoinTos()) { - //如果地址不是本链的地址,不参与计算与存储 - if (chainId != AddressTool.getChainIdByAddress(output.getAddress())) { - continue; - } - addressSet.add(output.getAddress()); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - } - } - - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - } - - private void processLedgerAssetRegTransferTx(int chainId, TransactionInfo tx) { - processTransferTx(chainId, tx); - } - - private void processCrossTransferTxForNRC20TransferBack(int chainId, TransactionInfo tx) { - if (tx.getTxData() != null && tx.getTxData() instanceof ContractCallInfo) { - ContractCallInfo callInfo = (ContractCallInfo) tx.getTxData(); - ContractInfo contractInfo = queryContractInfo(chainId, callInfo.getContractAddress()); - contractInfo.setTxCount(contractInfo.getTxCount() + 1); - - contractResultList.add(callInfo.getResultInfo()); - createContractTxInfo(tx, contractInfo, callInfo.getMethodName()); - - if (callInfo.getResultInfo().isSuccess()) { - processTokenTransfers(chainId, callInfo.getResultInfo().getTokenTransfers(), tx); - } - } - } - - private void processAliasTx(int chainId, TransactionInfo tx) { - AliasInfo aliasInfo = (AliasInfo) tx.getTxData(); - AccountInfo accountInfo = queryAccountInfo(chainId, aliasInfo.getAddress()); - accountInfo.setAlias(aliasInfo.getAlias()); - aliasInfoList.add(aliasInfo); - if (tx.getCoinFroms() == null) { - return; - } - CoinFromInfo input = tx.getCoinFroms().get(0); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input); - txRelationInfoSet.add(new TxRelationInfo(input, tx, ledgerInfo.getTotalBalance())); - accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - - CoinToInfo output = tx.getCoinTos().get(0); - ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - - private void processCreateAgentTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - - AgentInfo agentInfo = (AgentInfo) tx.getTxData(); - agentInfo.setNew(true); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(agentInfo.getDeposit())); - //查询agent节点是否设置过别名 - AliasInfo aliasInfo = aliasService.getAliasByAddress(chainId, agentInfo.getAgentAddress()); - if (aliasInfo != null) { - agentInfo.setAgentAlias(aliasInfo.getAlias()); - } - agentInfoList.add(agentInfo); - } - - private void processDepositTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - - DepositInfo depositInfo = (DepositInfo) tx.getTxData(); - depositInfo.setKey(DBUtil.getDepositKey(depositInfo.getTxHash(), depositInfo.getAddress())); - depositInfo.setNew(true); - depositInfoList.add(depositInfo); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().add(depositInfo.getAmount())); - - AgentInfo agentInfo = queryAgentInfo(chainId, depositInfo.getAgentHash(), 1); - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().add(depositInfo.getAmount())); - agentInfo.setNew(false); - } - - private void processCancelDepositTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - - //查询委托记录,生成对应的取消委托信息 - DepositInfo cancelInfo = (DepositInfo) tx.getTxData(); - DepositInfo depositInfo = depositService.getDepositInfoByKey(chainId, DBUtil.getDepositKey(cancelInfo.getTxHash(), accountInfo.getAddress())); - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(depositInfo.getAmount())); - - cancelInfo.copyInfoWithDeposit(depositInfo); - cancelInfo.setTxHash(tx.getHash()); - cancelInfo.setKey(DBUtil.getDepositKey(tx.getHash(), depositInfo.getKey())); - cancelInfo.setDeleteKey(depositInfo.getKey()); - cancelInfo.setNew(true); - - depositInfo.setDeleteKey(cancelInfo.getKey()); - depositInfo.setDeleteHeight(tx.getHeight()); - depositInfoList.add(depositInfo); - depositInfoList.add(cancelInfo); - - AgentInfo agentInfo = queryAgentInfo(chainId, depositInfo.getAgentHash(), 1); - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().subtract(depositInfo.getAmount())); - agentInfo.setNew(false); - } - - private void processStopAgentTx(int chainId, TransactionInfo tx) { - AgentInfo agentInfo = (AgentInfo) tx.getTxData(); - agentInfo = queryAgentInfo(chainId, agentInfo.getTxHash(), 1); - agentInfo.setDeleteHash(tx.getHash()); - agentInfo.setDeleteHeight(tx.getHeight()); - agentInfo.setStatus(ApiConstant.STOP_AGENT); - agentInfo.setNew(false); - - AccountInfo accountInfo; - AccountLedgerInfo ledgerInfo; - CoinToInfo output; - addressSet.clear(); - //处理各个用户的锁定金额,尤其是创建节点的地址要特殊处理 - for (int i = 0; i < tx.getCoinTos().size(); i++) { - output = tx.getCoinTos().get(i); - accountInfo = queryAccountInfo(chainId, output.getAddress()); - if (!addressSet.contains(output.getAddress())) { - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - //lockTime > 0 这条output的金额就是节点的保证金 - if (output.getLockTime() > 0) { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(agentInfo.getDeposit())); - ledgerInfo = calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - TxRelationInfo relationInfo = new TxRelationInfo(output, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance()); - relationInfo.setTransferType(TRANSFER_FROM_TYPE); - txRelationInfoSet.add(relationInfo); - } else { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(output.getAmount())); - if (!output.getAddress().equals(agentInfo.getAgentAddress())) { - ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO, ledgerInfo.getTotalBalance())); - } - } - addressSet.add(output.getAddress()); - } - - //查询所有当前节点下的委托,生成取消委托记录 - List depositInfos = depositService.getDepositListByAgentHash(chainId, agentInfo.getTxHash()); - for (DepositInfo depositInfo : depositInfos) { - DepositInfo cancelDeposit = new DepositInfo(); - cancelDeposit.setNew(true); - cancelDeposit.setType(ApiConstant.CANCEL_CONSENSUS); - cancelDeposit.copyInfoWithDeposit(depositInfo); - cancelDeposit.setKey(DBUtil.getDepositKey(tx.getHash(), depositInfo.getKey())); - cancelDeposit.setTxHash(tx.getHash()); - cancelDeposit.setBlockHeight(tx.getHeight()); - cancelDeposit.setDeleteKey(depositInfo.getKey()); - cancelDeposit.setFee(BigInteger.ZERO); - cancelDeposit.setCreateTime(tx.getCreateTime()); - - depositInfo.setDeleteKey(cancelDeposit.getKey()); - depositInfo.setDeleteHeight(tx.getHeight()); - depositInfoList.add(depositInfo); - depositInfoList.add(cancelDeposit); - - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().subtract(depositInfo.getAmount())); - } - } - - public void processYellowPunishTx(int chainId, TransactionInfo tx) { - addressSet.clear(); - - for (TxDataInfo txData : tx.getTxDataList()) { - PunishLogInfo punishLog = (PunishLogInfo) txData; - punishLogList.add(punishLog); - addressSet.add(punishLog.getAddress()); - } - - ChainConfigInfo configInfo = CacheManager.getCache(chainId).getConfigInfo(); - for (String address : addressSet) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AssetInfo assetInfo = CacheManager.getRegisteredAsset(DBUtil.getAssetKey(configInfo.getChainId(), configInfo.getAwardAssetId())); - txRelationInfoSet.add(new TxRelationInfo(accountInfo.getAddress(), tx, assetInfo, BigInteger.ZERO, TRANSFER_TO_TYPE, accountInfo.getTotalBalance())); - } - } - - public void processRedPunishTx(int chainId, TransactionInfo tx) { - PunishLogInfo redPunish = (PunishLogInfo) tx.getTxData(); - punishLogList.add(redPunish); - //根据红牌找到被惩罚的节点 - AgentInfo agentInfo = queryAgentInfo(chainId, redPunish.getAddress(), 2); - agentInfo.setDeleteHash(tx.getHash()); - agentInfo.setDeleteHeight(tx.getHeight()); - agentInfo.setStatus(ApiConstant.STOP_AGENT); - agentInfo.setNew(false); - - //红牌惩罚的账户余额和锁定金额的处理和停止共识节点类似 - AccountInfo accountInfo; - AccountLedgerInfo ledgerInfo; - CoinToInfo output = null; - BigInteger amount = BigInteger.ZERO; - addressSet.clear(); - for (int i = 0; i < tx.getCoinTos().size(); i++) { - output = tx.getCoinTos().get(i); - accountInfo = queryAccountInfo(chainId, output.getAddress()); - if (!addressSet.contains(output.getAddress())) { - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - } - //lockTime > 0 这条output的金额就是节点的保证金 - if (output.getLockTime() > 0) { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(agentInfo.getDeposit())); - ledgerInfo = calcBalance(chainId, output.getChainId(), output.getAssetsId(), accountInfo, tx.getFee().getValue()); - TxRelationInfo relationInfo = new TxRelationInfo(output, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance()); - relationInfo.setTransferType(TRANSFER_FROM_TYPE); - txRelationInfoSet.add(relationInfo); - } else { - accountInfo.setConsensusLock(accountInfo.getConsensusLock().subtract(output.getAmount())); - if (!output.getAddress().equals(agentInfo.getAgentAddress())) { - ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO, ledgerInfo.getTotalBalance())); - } - } - addressSet.add(output.getAddress()); - } - //最后这条记录是创建节点的地址 - ledgerInfo = queryLedgerInfo(chainId, agentInfo.getAgentAddress(), output.getChainId(), output.getAssetsId()); - txRelationInfoSet.add(new TxRelationInfo(output, tx, BigInteger.ZERO, ledgerInfo.getTotalBalance())); - - //根据节点找到委托列表 - List depositInfos = depositService.getDepositListByAgentHash(chainId, agentInfo.getTxHash()); - if (!depositInfos.isEmpty()) { - for (DepositInfo depositInfo : depositInfos) { - DepositInfo cancelDeposit = new DepositInfo(); - cancelDeposit.setNew(true); - cancelDeposit.setType(ApiConstant.CANCEL_CONSENSUS); - cancelDeposit.copyInfoWithDeposit(depositInfo); - cancelDeposit.setKey(DBUtil.getDepositKey(tx.getHash(), depositInfo.getKey())); - cancelDeposit.setTxHash(tx.getHash()); - cancelDeposit.setBlockHeight(tx.getHeight()); - cancelDeposit.setDeleteKey(depositInfo.getKey()); - cancelDeposit.setFee(BigInteger.ZERO); - cancelDeposit.setCreateTime(tx.getCreateTime()); - - depositInfo.setDeleteKey(cancelDeposit.getKey()); - depositInfo.setDeleteHeight(tx.getHeight()); - depositInfoList.add(depositInfo); - depositInfoList.add(cancelDeposit); - - agentInfo.setTotalDeposit(agentInfo.getTotalDeposit().subtract(depositInfo.getAmount())); - } - } - } - - private void processCreateContract(int chainId, TransactionInfo tx) { - //CoinFromInfo coinFromInfo = tx.getCoinFroms().get(0); - // - //AccountInfo accountInfo = queryAccountInfo(chainId, coinFromInfo.getAddress()); - //accountInfo.setTxCount(accountInfo.getTxCount() + 1); - //calcBalance(chainId, coinFromInfo); - //txRelationInfoSet.add(new TxRelationInfo(coinFromInfo, tx, tx.getFee().getValue(), accountInfo.getTotalBalance())); - - processTransferTx(chainId, tx); - - ContractInfo contractInfo = (ContractInfo) tx.getTxData(); - contractInfo.setTxCount(1); - contractInfo.setNew(true); - contractInfo.setRemark(tx.getRemark()); - createContractTxInfo(tx, contractInfo, null); - - contractResultList.add(contractInfo.getResultInfo()); - if (contractInfo.isSuccess()) { - addNrc20Info(chainId, contractInfo); - contractInfoMap.put(contractInfo.getContractAddress(), contractInfo); - processTokenTransfers(chainId, contractInfo.getResultInfo().getTokenTransfers(), tx); - } - } - - private void addNrc20Info(int chainId, ContractInfo contractInfo) { - if (contractInfo.isNrc20()) { - Nrc20Info nrc20Info = new Nrc20Info(); - nrc20Info.setContractAddress(contractInfo.getContractAddress()); - nrc20Info.setSymbol(contractInfo.getSymbol()); - nrc20Info.setDecimal(nrc20Info.getDecimal()); - nrc20Info.setTotalSupply(nrc20Info.getTotalSupply()); - - ApiCache apiCache = CacheManager.getCache(chainId); - apiCache.addNrc20Info(nrc20Info); - } - } - - private void processCallContract(int chainId, TransactionInfo tx) { - processTransferTx(chainId, tx); - ContractCallInfo callInfo = (ContractCallInfo) tx.getTxData(); - ContractInfo contractInfo = queryContractInfo(chainId, callInfo.getContractAddress()); - contractInfo.setTxCount(contractInfo.getTxCount() + 1); - - contractResultList.add(callInfo.getResultInfo()); - createContractTxInfo(tx, contractInfo, callInfo.getMethodName()); - - if (callInfo.getResultInfo().isSuccess()) { - processTokenTransfers(chainId, callInfo.getResultInfo().getTokenTransfers(), tx); - } - } - - private void processDeleteContract(int chainId, TransactionInfo tx) { - CoinFromInfo coinFromInfo = tx.getCoinFroms().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, coinFromInfo.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - calcBalance(chainId, coinFromInfo); - txRelationInfoSet.add(new TxRelationInfo(coinFromInfo, tx, tx.getFee().getValue(), accountInfo.getTotalBalance())); - - ContractDeleteInfo deleteInfo = (ContractDeleteInfo) tx.getTxData(); - ContractResultInfo resultInfo = deleteInfo.getResultInfo(); - ContractInfo contractInfo = queryContractInfo(chainId, resultInfo.getContractAddress()); - contractInfo.setTxCount(contractInfo.getTxCount() + 1); - - contractResultList.add(resultInfo); - createContractTxInfo(tx, contractInfo, null); - if (resultInfo.isSuccess()) { - contractInfo.setStatus(ApiConstant.CONTRACT_STATUS_DELETE); - } - } - - private void processRegChainTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - AccountInfo accountInfo; - AccountLedgerInfo ledgerInfo; - for (CoinToInfo to : tx.getCoinTos()) { - if (to.getAddress().equals(input.getAddress())) { - accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, input.getAmount().subtract(to.getAmount())); - txRelationInfoSet.add(new TxRelationInfo(input, tx, input.getAmount().subtract(to.getAmount()), ledgerInfo.getTotalBalance())); - break; - } else { - accountInfo = queryAccountInfo(chainId, to.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - ledgerInfo = calcBalance(chainId, to); - txRelationInfoSet.add(new TxRelationInfo(to, tx, ledgerInfo.getTotalBalance())); - } - } - - ChainInfo chainInfo = (ChainInfo) tx.getTxData(); - ChainInfo info = queryChainInfo(chainInfo.getChainId()); - if (info != null) { - chainInfo.setNew(false); - chainInfo.getDefaultAsset().setLocalTotalCoins(info.getDefaultAsset().getLocalTotalCoins()); - for (AssetInfo assetInfo1 : chainInfo.getAssets()) { - for (AssetInfo assetInfo2 : info.getAssets()) { - if (assetInfo1.getAssetId() == assetInfo2.getAssetId()) { - assetInfo1.setLocalTotalCoins(assetInfo2.getLocalTotalCoins()); - } - } - } - } else { - chainInfo.setNew(true); - } - - chainInfoList.add(chainInfo); - CacheManager.getChainInfoMap().put(chainInfo.getChainId(), chainInfo); - CacheManager.getAssetInfoMap().put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); - } - - private void processDestroyChainTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - - ChainInfo chainInfo = (ChainInfo) tx.getTxData(); - chainInfo = chainService.getChainInfo(chainInfo.getChainId()); - chainInfo.setStatus(DISABLE); - for (AssetInfo assetInfo : chainInfo.getAssets()) { - assetInfo.setStatus(DISABLE); - } - chainInfo.getDefaultAsset().setStatus(DISABLE); - chainInfo.setNew(false); - chainInfoList.add(chainInfo); - } - - private void processAddAssetTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - - CoinToInfo output = null; - for (CoinToInfo to : tx.getCoinTos()) { - if (!to.getAddress().equals(accountInfo.getAddress())) { - output = to; - break; - } - } - - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, output.getAmount().add(tx.getFee().getValue())); - txRelationInfoSet.add(new TxRelationInfo(input, tx, output.getAmount().add(tx.getFee().getValue()), ledgerInfo.getTotalBalance())); - - AccountInfo destroyAccount = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTxCount(destroyAccount.getTxCount() + 1); - ledgerInfo = calcBalance(chainId, output); - txRelationInfoSet.add(new TxRelationInfo(output, tx, ledgerInfo.getTotalBalance())); - - AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(assetInfo.getChainId()); - if (chainInfo != null) { - chainInfo.setNew(false); - chainInfo.getAssets().add(assetInfo); - chainInfoList.add(chainInfo); - } - CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); - } - - private void processCancelAssetTx(int chainId, TransactionInfo tx) { - CoinFromInfo input = tx.getCoinFroms().get(0); - - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTxCount(accountInfo.getTxCount() + 1); - AccountLedgerInfo ledgerInfo = calcBalance(chainId, input.getChainId(), input.getAssetsId(), accountInfo, tx.getFee().getValue()); - txRelationInfoSet.add(new TxRelationInfo(input, tx, tx.getFee().getValue(), ledgerInfo.getTotalBalance())); - - AssetInfo assetInfo = (AssetInfo) tx.getTxData(); - ChainInfo chainInfo = chainService.getChainInfo(assetInfo.getChainId()); - chainInfo.getAsset(assetInfo.getAssetId()).setStatus(DISABLE); - chainInfo.setNew(false); - if (assetInfo.getAssetId() == chainInfo.getDefaultAsset().getAssetId()) { - chainInfo.getDefaultAsset().setStatus(DISABLE); - } - chainInfoList.add(chainInfo); - } - - private void processTokenTransfers(int chainId, List tokenTransfers, TransactionInfo tx) { - if (tokenTransfers.isEmpty()) { - return; - } - AccountTokenInfo tokenInfo; - TokenTransfer tokenTransfer; - ContractInfo contractInfo; - for (int i = 0; i < tokenTransfers.size(); i++) { - tokenTransfer = tokenTransfers.get(i); - tokenTransfer.setTxHash(tx.getHash()); - tokenTransfer.setHeight(tx.getHeight()); - tokenTransfer.setTime(tx.getCreateTime()); - - contractInfo = queryContractInfo(chainId, tokenTransfer.getContractAddress()); - if (tokenTransfer.getToAddress() != null && !contractInfo.getOwners().contains(tokenTransfer.getToAddress())) { - contractInfo.getOwners().add(tokenTransfer.getToAddress()); - } - contractInfo.setTransferCount(contractInfo.getTransferCount() + 1); - - if (tokenTransfer.getFromAddress() != null) { - tokenInfo = processAccountNrc20(chainId, contractInfo, tokenTransfer.getFromAddress(), new BigInteger(tokenTransfer.getValue()), -1); - tokenTransfer.setFromBalance(tokenInfo.getBalance().toString()); - } - if (tokenTransfer.getToAddress() != null) { - tokenInfo = processAccountNrc20(chainId, contractInfo, tokenTransfer.getToAddress(), new BigInteger(tokenTransfer.getValue()), 1); - tokenTransfer.setToBalance(tokenInfo.getBalance().toString()); - } - tokenTransferList.add(tokenTransfer); - } - } - - private AccountTokenInfo processAccountNrc20(int chainId, ContractInfo contractInfo, String address, BigInteger value, int type) { - AccountTokenInfo tokenInfo = queryAccountTokenInfo(chainId, address + contractInfo.getContractAddress()); - if (tokenInfo == null) { - AccountInfo accountInfo = queryAccountInfo(chainId, address); - accountInfo.getTokens().add(contractInfo.getContractAddress() + "," + contractInfo.getSymbol()); - - tokenInfo = new AccountTokenInfo(address, contractInfo.getContractAddress(), contractInfo.getTokenName(), contractInfo.getSymbol(), contractInfo.getDecimals()); - } - - if (type == 1) { - tokenInfo.setBalance(tokenInfo.getBalance().add(value)); - } else { - tokenInfo.setBalance(tokenInfo.getBalance().subtract(value)); - } - -// if (tokenInfo.getBalance().compareTo(BigInteger.ZERO) < 0) { -// throw new RuntimeException("data error: " + address + " token[" + contractInfo.getSymbol() + "] balance < 0"); -// } - if (!accountTokenMap.containsKey(tokenInfo.getKey())) { - accountTokenMap.put(tokenInfo.getKey(), tokenInfo); - } - - return tokenInfo; - } - - private void createContractTxInfo(TransactionInfo tx, ContractInfo contractInfo, String methodName) { - ContractTxInfo contractTxInfo = new ContractTxInfo(); - contractTxInfo.setTxHash(tx.getHash()); - contractTxInfo.setBlockHeight(tx.getHeight()); - contractTxInfo.setContractAddress(contractInfo.getContractAddress()); - contractTxInfo.setTime(tx.getCreateTime()); - contractTxInfo.setType(tx.getType()); - contractTxInfo.setFee(tx.getFee()); - contractTxInfo.setContractMethod(methodName); - contractTxInfoList.add(contractTxInfo); - } - - private AccountLedgerInfo calcBalance(int chainId, CoinToInfo output) { - ChainInfo chainInfo = CacheManager.getCacheChain(chainId); - if (output.getChainId() == chainInfo.getChainId() && output.getAssetsId() == chainInfo.getDefaultAsset().getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, output.getAddress()); - accountInfo.setTotalIn(accountInfo.getTotalIn().add(output.getAmount())); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().add(output.getAmount())); - } - - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, output.getAddress(), output.getChainId(), output.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().add(output.getAmount())); - return ledgerInfo; - } - - private AccountLedgerInfo calcBalance(int chainId, CoinFromInfo input) { - ChainInfo chainInfo = CacheManager.getCacheChain(chainId); - if (input.getChainId() == chainInfo.getChainId() && input.getAssetsId() == chainInfo.getDefaultAsset().getAssetId()) { - AccountInfo accountInfo = queryAccountInfo(chainId, input.getAddress()); - accountInfo.setTotalOut(accountInfo.getTotalOut().add(input.getAmount())); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().subtract(input.getAmount())); - if (accountInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { - throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "account[" + accountInfo.getAddress() + "] totalBalance < 0"); - } - } - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, input.getAddress(), input.getChainId(), input.getAssetsId()); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().subtract(input.getAmount())); - if (ledgerInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { - throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "accountLedger[" + DBUtil.getAccountAssetKey(ledgerInfo.getAddress(), ledgerInfo.getChainId(), ledgerInfo.getAssetId()) + "] totalBalance < 0"); - } - return ledgerInfo; - } - - private AccountLedgerInfo calcBalance(int chainId, int assetChainId, int assetId, AccountInfo accountInfo, BigInteger fee) { - if (chainId == assetChainId) { - accountInfo.setTotalOut(accountInfo.getTotalOut().add(fee)); - accountInfo.setTotalBalance(accountInfo.getTotalBalance().subtract(fee)); - if (accountInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { - throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "account[" + accountInfo.getAddress() + "] totalBalance < 0"); - } - } - AccountLedgerInfo ledgerInfo = queryLedgerInfo(chainId, accountInfo.getAddress(), assetChainId, assetId); - ledgerInfo.setTotalBalance(ledgerInfo.getTotalBalance().subtract(fee)); - if (ledgerInfo.getTotalBalance().compareTo(BigInteger.ZERO) < 0) { - throw new NulsRuntimeException(ApiErrorCode.DATA_ERROR, "accountLedger[" + DBUtil.getAccountAssetKey(ledgerInfo.getAddress(), ledgerInfo.getChainId(), ledgerInfo.getAssetId()) + "] totalBalance < 0"); - } - return ledgerInfo; - } - - - /** - * 解析区块和所有交易后,将数据存储到数据库中 - * Store entity in the database after parsing the block and all transactions - */ - public void save(int chainId, BlockInfo blockInfo) { - long height = blockInfo.getHeader().getHeight(); - - long time1, time2; - - SyncInfo syncInfo = chainService.saveNewSyncInfo(chainId, height, blockInfo.getHeader()); - - //存储区块头信息 - time1 = System.currentTimeMillis(); - blockService.saveBLockHeaderInfo(chainId, blockInfo.getHeader()); - //存区块序列化完整信息 - blockService.saveBlockHexInfo(chainId, blockInfo.getBlockHexInfo()); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveBlockHexInfo, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - //存储交易记录 - txService.saveTxList(chainId, blockInfo.getTxList()); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveTxList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - // txService.saveCoinDataList(chainId, coinDataList); - //存储交易和地址关系记录 - txService.saveTxRelationList(chainId, txRelationInfoSet); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveTxRelationList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - //存储跨链交易和地址关系记录 - txService.saveCrossTxRelationList(chainId, crossTxRelationInfoSet); - - //存储别名记录 - aliasService.saveAliasList(chainId, aliasInfoList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveAliasList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储红黄牌惩罚记录 - punishService.savePunishList(chainId, punishLogList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------savePunishList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储委托/取消委托记录 - depositService.saveDepositList(chainId, depositInfoList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveDepositList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储智能合约交易关系记录 - contractService.saveContractTxInfos(chainId, contractTxInfoList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveContractTxInfos, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储智能合约结果记录 - contractService.saveContractResults(chainId, contractResultList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveContractResults, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储token转账信息 - tokenService.saveTokenTransfers(chainId, tokenTransferList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveTokenTransfers, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储链信息 - chainService.saveChainList(chainInfoList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveChainList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - /* - 涉及到统计类的表放在最后来存储,便于回滚 - */ - //存储共识节点列表 - syncInfo.setStep(10); - chainService.updateStep(syncInfo); - agentService.saveAgentList(chainId, agentInfoList); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveAgentList, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - //存储账户资产信息 - syncInfo.setStep(20); - chainService.updateStep(syncInfo); - ledgerService.saveLedgerList(chainId, accountLedgerInfoMap); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveLedgerList, use: " + (time2 - time1)); -// time1 = System.currentTimeMillis(); - //存储智能合约信息表 - syncInfo.setStep(30); - chainService.updateStep(syncInfo); - contractService.saveContractInfos(chainId, contractInfoMap); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveContractInfos, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储账户token信息 - syncInfo.setStep(40); - chainService.updateStep(syncInfo); - tokenService.saveAccountTokens(chainId, accountTokenMap); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveAccountTokens, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //存储账户信息表 - syncInfo.setStep(50); - chainService.updateStep(syncInfo); - accountService.saveAccounts(chainId, accountInfoMap); -// time2 = System.currentTimeMillis(); -// System.out.println("-----------saveAccounts, use: " + (time2 - time1) ); -// time1 = System.currentTimeMillis(); - - //完成解析 - syncInfo.setStep(100); - chainService.updateStep(syncInfo); - } - - private AccountInfo queryAccountInfo(int chainId, String address) { - AccountInfo accountInfo = accountInfoMap.get(address); - if (accountInfo == null) { - accountInfo = accountService.getAccountInfo(chainId, address); - if (accountInfo == null) { - accountInfo = new AccountInfo(address); - } - accountInfoMap.put(address, accountInfo); - } - return accountInfo; - } - - private AccountLedgerInfo queryLedgerInfo(int chainId, String address, int assetChainId, int assetId) { - String key = DBUtil.getAccountAssetKey(address, assetChainId, assetId); - AccountLedgerInfo ledgerInfo = accountLedgerInfoMap.get(key); - if (ledgerInfo == null) { - ledgerInfo = ledgerService.getAccountLedgerInfo(chainId, key); - if (ledgerInfo == null) { - ledgerInfo = new AccountLedgerInfo(address, assetChainId, assetId); - } - accountLedgerInfoMap.put(key, ledgerInfo); - } - return ledgerInfo; - } - - private AgentInfo queryAgentInfo(int chainId, String key, int type) { - AgentInfo agentInfo; - for (int i = 0; i < agentInfoList.size(); i++) { - agentInfo = agentInfoList.get(i); - - if (type == 1 && agentInfo.getTxHash().equals(key)) { - return agentInfo; - } else if (type == 2 && agentInfo.getAgentAddress().equals(key)) { - return agentInfo; - } else if (type == 3 && agentInfo.getPackingAddress().equals(key)) { - return agentInfo; - } - } - if (type == 1) { - agentInfo = agentService.getAgentByHash(chainId, key); - } else if (type == 2) { - agentInfo = agentService.getAgentByAgentAddress(chainId, key); - } else { - agentInfo = agentService.getAgentByPackingAddress(chainId, key); - } - if (agentInfo != null) { - agentInfoList.add(agentInfo); - } - return agentInfo; - } - - private ContractInfo queryContractInfo(int chainId, String contractAddress) { - ContractInfo contractInfo = contractInfoMap.get(contractAddress); - if (contractInfo == null) { - contractInfo = contractService.getContractInfo(chainId, contractAddress); - contractInfoMap.put(contractInfo.getContractAddress(), contractInfo); - } - return contractInfo; - } - - private AccountTokenInfo queryAccountTokenInfo(int chainId, String key) { - AccountTokenInfo accountTokenInfo = accountTokenMap.get(key); - if (accountTokenInfo == null) { - accountTokenInfo = tokenService.getAccountTokenInfo(chainId, key); - } - return accountTokenInfo; - } - - private ChainInfo queryChainInfo(int chainId) { - for (ChainInfo chainInfo : chainInfoList) { - if (chainInfo != null) { - return chainInfo; - } - } - ChainInfo chainInfo = chainService.getChainInfo(chainId); - if (chainInfo != null) { - chainInfoList.add(chainInfo); - } - return chainInfo; - } - - private void clear(int chainId) { - accountInfoMap.clear(); - accountLedgerInfoMap.clear(); - agentInfoList.clear(); - txRelationInfoSet.clear(); - crossTxRelationInfoSet.clear(); - aliasInfoList.clear(); - depositInfoList.clear(); - punishLogList.clear(); - coinDataList.clear(); - contractInfoMap.clear(); - contractResultList.clear(); - contractTxInfoList.clear(); - accountTokenMap.clear(); - tokenTransferList.clear(); - chainInfoList.clear(); - - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache.getAccountMap().size() > MongoAccountServiceImpl.cacheSize * 2) { - Set keySet = apiCache.getAccountMap().keySet(); - int i = 0; - for (String key : keySet) { - apiCache.getAccountMap().remove(key); - i++; - if (i >= MongoAccountServiceImpl.cacheSize) { - break; - } - } - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/service/impl/ConfigStorageServiceImpl.java b/module/nuls-public-service/src/main/java/io/nuls/api/service/impl/ConfigStorageServiceImpl.java deleted file mode 100644 index 44c1ee844e..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/service/impl/ConfigStorageServiceImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * * MIT License - * * Copyright (c) 2017-2019 nuls.io - * * Permission is hereby granted, free of charge, to any person obtaining a copy - * * of this software and associated documentation files (the "Software"), to deal - * * in the Software without restriction, including without limitation the rights - * * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * * copies of the Software, and to permit persons to whom the Software is - * * furnished to do so, subject to the following conditions: - * * The above copyright notice and this permission notice shall be included in all - * * copies or substantial portions of the Software. - * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * * SOFTWARE. - * - */ - -package io.nuls.api.service.impl; - -import io.nuls.api.constant.ApiConstant; -import io.nuls.api.constant.config.ConfigBean; -import io.nuls.api.service.ConfigStorageService; -import io.nuls.core.rockdb.model.Entry; -import io.nuls.core.rockdb.service.RocksDBService; -import io.nuls.core.core.annotation.Service; -import io.nuls.core.model.ByteUtils; -import io.nuls.core.model.ObjectUtils; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -@Service -public class ConfigStorageServiceImpl implements ConfigStorageService { - @Override - public boolean save(int chainID, ConfigBean configBean) throws Exception { - if (configBean == null) { - return false; - } - return RocksDBService.put(ApiConstant.DB_MODULE_CONFIG, ByteUtils.intToBytes(chainID), ObjectUtils.objectToBytes(configBean)); - } - - @Override - public ConfigBean get(int chainID) { - byte[] value = RocksDBService.get(ApiConstant.DB_MODULE_CONFIG, ByteUtils.intToBytes(chainID)); - if (value == null) { - return null; - } - return ObjectUtils.bytesToObject(value); - } - - @Override - public boolean delete(int chainID) throws Exception { - return RocksDBService.delete(ApiConstant.DB_MODULE_CONFIG, ByteUtils.intToBytes(chainID)); - } - - @Override - public Map getList() { - List> list = RocksDBService.entryList(ApiConstant.DB_MODULE_CONFIG); - Map configBeanMap = new HashMap<>(); - for (Entry entry : list) { - int key = ByteUtils.bytesToInt(entry.getKey()); - ConfigBean value = ObjectUtils.bytesToObject(entry.getValue()); - configBeanMap.put(key, value); - } - return configBeanMap; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/DeleteTxsTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/DeleteTxsTask.java deleted file mode 100644 index 7dc8199444..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/DeleteTxsTask.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.nuls.api.task; - -import io.nuls.api.db.TransactionService; -import io.nuls.api.db.mongo.MongoTransactionServiceImpl; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.log.Log; - -public class DeleteTxsTask implements Runnable { - - private int chainId; - - private TransactionService transactionService; - - public DeleteTxsTask(int chainId) { - this.chainId = chainId; - } - - @Override - public void run() { - try { - transactionService = SpringLiteContext.getBean(MongoTransactionServiceImpl.class); - transactionService.deleteTxs(chainId); - } catch (Exception e) { - Log.error(e); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/GetGlobalInfoTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/GetGlobalInfoTask.java deleted file mode 100644 index 6552475a4c..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/GetGlobalInfoTask.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.nuls.api.task; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.core.basic.Result; - -import java.util.Map; - -public class GetGlobalInfoTask implements Runnable { - - private int chainId; - - public GetGlobalInfoTask(int chainId) { - this.chainId = chainId; - } - - @Override - public void run() { - Result> result = WalletRpcHandler.getBlockGlobalInfo(chainId); - if (result == null || result.isFailed()) { - return; - } - Map map = result.getData(); - ApiContext.localHeight = Long.parseLong(map.get("localHeight").toString()); - ApiContext.networkHeight = Long.parseLong(map.get("networkHeight").toString()); - - if(ApiContext.magicNumber == 0) { - result = WalletRpcHandler.getNetworkInfo(chainId); - map = result.getData(); - ApiContext.magicNumber = Integer.parseInt(map.get("magicNumber").toString()); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java deleted file mode 100644 index 65042683c4..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/QueryChainInfoTask.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.nuls.api.task; - - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AssetInfo; -import io.nuls.api.model.po.ChainInfo; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.basic.Result; - -import java.util.HashMap; -import java.util.Map; - -public class QueryChainInfoTask implements Runnable { - - private int chainId; - - - public QueryChainInfoTask(int chainId) { - this.chainId = chainId; - } - - @Override - public void run() { - Map chainInfoMap; - Map assetInfoMap; - try { - if (ApiContext.isRunCrossChain) { - Result> result = WalletRpcHandler.getRegisteredChainInfoList(); - Map map = result.getData(); - chainInfoMap = (Map) map.get("chainInfoMap"); - CacheManager.setChainInfoMap(chainInfoMap); - - assetInfoMap = (Map) map.get("assetInfoMap"); - for (AssetInfo assetInfo : assetInfoMap.values()) { - if (!CacheManager.getAssetInfoMap().containsKey(assetInfo.getKey())) { - CacheManager.getAssetInfoMap().put(assetInfo.getKey(), assetInfo); - } - } - ApiContext.isReady = true; - } else { - chainInfoMap = new HashMap<>(); - assetInfoMap = new HashMap<>(); - ApiCache apiCache = CacheManager.getCache(chainId); - ChainInfo chainInfo = apiCache.getChainInfo(); - chainInfoMap.put(chainInfo.getChainId(), chainInfo); - assetInfoMap.put(chainInfo.getDefaultAsset().getKey(), chainInfo.getDefaultAsset()); - - CacheManager.setChainInfoMap(chainInfoMap); - CacheManager.setAssetInfoMap(assetInfoMap); - - ApiContext.isReady = true; - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java deleted file mode 100644 index d159d43192..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalNulsTask.java +++ /dev/null @@ -1,152 +0,0 @@ -package io.nuls.api.task; - - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.AccountService; -import io.nuls.api.db.AgentService; -import io.nuls.api.db.ChainService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AssetInfo; -import io.nuls.api.model.po.CoinContextInfo; -import io.nuls.api.model.po.DestroyInfo; -import io.nuls.api.model.po.SyncInfo; -import io.nuls.api.model.rpc.BalanceInfo; -import io.nuls.api.utils.AssetTool; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.model.StringUtils; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -public class StatisticalNulsTask implements Runnable { - - private int chainId; - - private AccountService accountService; - - private AgentService agentService; - - private ChainService chainService; - - public StatisticalNulsTask(int chainId) { - this.chainId = chainId; - accountService = SpringLiteContext.getBean(AccountService.class); - agentService = SpringLiteContext.getBean(AgentService.class); - chainService = SpringLiteContext.getBean(ChainService.class); - } - - @Override - public void run() { - try { - - BigInteger totalCoin = BigInteger.ZERO; - SyncInfo syncInfo = chainService.getSyncInfo(chainId); - if (syncInfo != null) { - totalCoin = syncInfo.getTotalSupply(); - } - BigInteger consensusTotal = agentService.getConsensusCoinTotal(chainId); - - ApiCache apiCache = CacheManager.getCache(chainId); - CoinContextInfo contextInfo = apiCache.getCoinContextInfo(); - //团队持有数量 - BigInteger teamNuls = BigInteger.ZERO; - BalanceInfo balanceInfo = null; - if (!StringUtils.isBlank(ApiContext.TEAM_ADDRESS)) { - teamNuls = accountService.getAccountTotalBalance(chainId, ApiContext.TEAM_ADDRESS); - AssetInfo defaultAsset = apiCache.getChainInfo().getDefaultAsset(); - balanceInfo = WalletRpcHandler.getAccountBalance(chainId, ApiContext.TEAM_ADDRESS, defaultAsset.getChainId(), defaultAsset.getAssetId()); - } - contextInfo.setTeam(teamNuls); - //销毁数量 - byte[] address = AddressTool.getAddress(ApiContext.blackHolePublicKey, chainId); - String destroyAddress = AddressTool.getStringAddressByBytes(address); - BigInteger destroyNuls = accountService.getAccountTotalBalance(chainId, destroyAddress); - - for (String blackAddress : AddressTool.BLOCK_HOLE_ADDRESS_SET) { - BigInteger blackNuls = accountService.getAccountTotalBalance(chainId, blackAddress); - destroyNuls = destroyNuls.add(blackNuls); - } - // add by pierre at 2020-04-02 协议升级黑洞地址 - if (ApiContext.protocolVersion >= 5) { - for (String blackAddress : AddressTool.BLOCK_HOLE_ADDRESS_SET_5) { - BigInteger blackNuls = accountService.getAccountTotalBalance(chainId, blackAddress); - destroyNuls = destroyNuls.add(blackNuls); - } - } - // end code by pierre - //商务持有数量 - BigInteger businessNuls = BigInteger.ZERO; - if (!StringUtils.isBlank(ApiContext.BUSINESS_ADDRESS)) { - businessNuls = accountService.getAccountTotalBalance(chainId, ApiContext.BUSINESS_ADDRESS); - } - contextInfo.setBusiness(businessNuls); - //社区持有数量 - BigInteger communityNuls = BigInteger.ZERO; - if (!StringUtils.isBlank(ApiContext.COMMUNITY_ADDRESS)) { - communityNuls = accountService.getAccountTotalBalance(chainId, ApiContext.COMMUNITY_ADDRESS); - } - contextInfo.setCommunity(communityNuls); - - BigInteger unmapped = BigInteger.ZERO; - if (ApiContext.MAPPING_ADDRESS != null) { - for (String mapAddress : ApiContext.MAPPING_ADDRESS) { - unmapped = unmapped.add(accountService.getAccountTotalBalance(chainId, mapAddress)); - } - } - contextInfo.setUnmapped(unmapped); - contextInfo.setTotal(totalCoin); - contextInfo.setConsensusTotal(consensusTotal); - contextInfo.setDestroy(destroyNuls); - - BigInteger circulation = totalCoin.subtract(destroyNuls); - if (balanceInfo != null) { - circulation = circulation.subtract(balanceInfo.getTimeLock()); - } - circulation = circulation.subtract(businessNuls); - circulation = circulation.subtract(communityNuls); - circulation = circulation.subtract(unmapped); - contextInfo.setCirculation(circulation); - - setDestroyInfo(contextInfo); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - - private void setDestroyInfo(CoinContextInfo contextInfo) { - List list = new LinkedList<>(); - //销毁数量 - byte[] address = AddressTool.getAddress(ApiContext.blackHolePublicKey, chainId); - String destroyAddress = AddressTool.getStringAddressByBytes(address); - BigInteger destroyNuls = accountService.getAccountTotalBalance(chainId, destroyAddress); - String reason = "account set alias destroy nuls"; - DestroyInfo destroyInfo = new DestroyInfo(destroyAddress, reason, AssetTool.toCoinString(destroyNuls)); - list.add(destroyInfo); - - reason = "stolen blacklist"; - for (String blackAddress : AddressTool.BLOCK_HOLE_ADDRESS_SET) { - BigInteger blackNuls = accountService.getAccountTotalBalance(chainId, blackAddress); - destroyNuls = destroyNuls.add(blackNuls); - destroyInfo = new DestroyInfo(blackAddress, reason, AssetTool.toCoinString(blackNuls)); - list.add(destroyInfo); - } - // add by pierre at 2020-04-02 协议升级黑洞地址 - if (ApiContext.protocolVersion >= 5) { - for (String blackAddress : AddressTool.BLOCK_HOLE_ADDRESS_SET_5) { - BigInteger blackNuls = accountService.getAccountTotalBalance(chainId, blackAddress); - destroyNuls = destroyNuls.add(blackNuls); - destroyInfo = new DestroyInfo(blackAddress, reason, AssetTool.toCoinString(blackNuls)); - list.add(destroyInfo); - } - } - // end code by pierre - contextInfo.setDestroyInfoList(list); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java deleted file mode 100644 index bb69c34690..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalRewardTask.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.nuls.api.task; - -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.BlockService; -import io.nuls.api.db.ChainService; -import io.nuls.api.db.StatisticalService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.ChainStatisticalInfo; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.log.Log; - -import java.math.BigInteger; - -public class StatisticalRewardTask implements Runnable { - - private int chainId; - - private BlockService blockService; - - private StatisticalService statisticalService; - - public StatisticalRewardTask(int chainId) { - this.chainId = chainId; - blockService = SpringLiteContext.getBean(BlockService.class); - statisticalService = SpringLiteContext.getBean(StatisticalService.class); - } - - @Override - public void run() { - try { - BigInteger reward = blockService.getLast24HourRewards(chainId); - ApiCache apiCache = CacheManager.getCache(chainId); - if (apiCache != null) { - apiCache.getCoinContextInfo().setDailyReward(reward); - } - //查询当前最新block高度 - BlockHeaderInfo headerInfo = blockService.getBestBlockHeader(chainId); - if (headerInfo == null) { - return; - } - ChainStatisticalInfo statisticalInfo = statisticalService.getChainStatisticalInfo(chainId); - if (statisticalInfo == null) { - statisticalInfo = new ChainStatisticalInfo(); - statisticalInfo.setChainId(chainId); - statisticalInfo.setLastStatisticalHeight(0); - } - //统计已打包区块的交易数量 - //获取上一次统计截止的区块高度,获取当前最新区块高度,累计之间所有区块的交易数量 - //超过1000条数据后,每次循环统计1000条 - long startHeight = statisticalInfo.getLastStatisticalHeight(); - long endHeight = headerInfo.getHeight(); - while (endHeight - startHeight > 1000) { - long count = blockService.getBlockPackageTxCount(chainId, startHeight, startHeight + 1000); - statisticalInfo.setLastStatisticalHeight(startHeight + 1000); - statisticalInfo.setTxCount(statisticalInfo.getTxCount() + count); - statisticalService.saveChainStatisticalInfo(statisticalInfo); - apiCache.getCoinContextInfo().setTxCount(statisticalInfo.getTxCount()); - startHeight += 1000; - Thread.sleep(100); - } - long count = blockService.getBlockPackageTxCount(chainId, startHeight, endHeight); - statisticalInfo.setLastStatisticalHeight(endHeight); - statisticalInfo.setTxCount(statisticalInfo.getTxCount() + count); - statisticalService.saveChainStatisticalInfo(statisticalInfo); - - apiCache.getCoinContextInfo().setTxCount(statisticalInfo.getTxCount()); - } catch (Exception e) { - Log.error(e); - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalTask.java deleted file mode 100644 index cfd6b38acc..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/StatisticalTask.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.task; - -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.db.AgentService; -import io.nuls.api.db.BlockService; -import io.nuls.api.db.DepositService; -import io.nuls.api.db.StatisticalService; -import io.nuls.api.db.mongo.MongoAgentServiceImpl; -import io.nuls.api.db.mongo.MongoBlockServiceImpl; -import io.nuls.api.db.mongo.MongoDepositServiceImpl; -import io.nuls.api.db.mongo.MongoStatisticalServiceImpl; -import io.nuls.api.model.po.AgentInfo; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.DepositInfo; -import io.nuls.api.model.po.StatisticalInfo; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.basic.Result; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.model.DateUtils; -import io.nuls.core.model.DoubleUtils; - -import java.math.BigInteger; -import java.util.Calendar; -import java.util.List; -import java.util.Map; - -/** - * @author Niels - */ -public class StatisticalTask implements Runnable { - - private int chainId; - - private StatisticalService statisticalService; - - private BlockService blockService; - - private DepositService depositService; - - private AgentService agentService; - - public StatisticalTask(int chainId) { - this.chainId = chainId; - statisticalService = SpringLiteContext.getBean(MongoStatisticalServiceImpl.class); - blockService = SpringLiteContext.getBean(MongoBlockServiceImpl.class); - depositService = SpringLiteContext.getBean(MongoDepositServiceImpl.class); - agentService = SpringLiteContext.getBean(MongoAgentServiceImpl.class); - } - - @Override - public void run() { - try { - this.doCalc(); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - private void doCalc() { - long bestId = statisticalService.getBestId(chainId); - BlockHeaderInfo header = blockService.getBestBlockHeader(chainId); - if (null == header || header.getHeight() == 0) { - return; - } - long day = 24 * 3600 * 1000; - long start = bestId + 1; - long end = 0; - if (bestId == -1) { - BlockHeaderInfo header0 = blockService.getBlockHeader(chainId, 1); - start = header0.getCreateTime() * 1000 - 10 * DateUtils.SECOND_TIME; - end = start + day; - this.statisticalService.saveBestId(chainId, start); - } else { - end = start + day - 1; - } - while (true) { - if (end > header.getCreateTime() * 1000) { - break; - } - statistical(start, end); - start = end + 1; - end = end + day; - BlockHeaderInfo newBlockHeader = blockService.getBestBlockHeader(chainId); - if (null != newBlockHeader) { - header = newBlockHeader; - } - } - } - - private void statistical(long start, long end) { - long txCount = statisticalService.calcTxCount(chainId, start / 1000, end / 1000); - BigInteger consensusLocked = BigInteger.ZERO; - long height = blockService.getMaxHeight(chainId, end / 1000); - List agentList = agentService.getAgentList(chainId, height); - List depositList = depositService.getDepositList(chainId, height); - int nodeCount = agentList.size(); - for (AgentInfo agent : agentList) { - consensusLocked = consensusLocked.add(agent.getDeposit()); - } - for (DepositInfo deposit : depositList) { - consensusLocked = consensusLocked.add(deposit.getAmount()); - } - double annualizedReward = 0L; - if (consensusLocked.compareTo(BigInteger.ZERO) != 0) { - Result result = WalletRpcHandler.getConsensusConfig(chainId); - Map map = result.getData(); - String inflationAmount = map.get("inflationAmount").toString(); - double d = DoubleUtils.mul(365, new BigInteger(inflationAmount).doubleValue()); - d = DoubleUtils.div(d, 30, 0); - annualizedReward = DoubleUtils.mul(100, DoubleUtils.div(d, consensusLocked.doubleValue(), 4), 2); - } - - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(end); - StatisticalInfo info = new StatisticalInfo(); - info.setTime(end); - info.setTxCount(txCount); - info.setAnnualizedReward(annualizedReward); - info.setNodeCount(nodeCount); - info.setConsensusLocked(consensusLocked); - info.setDate(calendar.get(Calendar.DATE)); - info.setMonth(calendar.get(Calendar.MONTH) + 1); - info.setYear(calendar.get(Calendar.YEAR)); - try { - this.statisticalService.insert(chainId, info); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - this.statisticalService.updateBestId(chainId, info.getTime()); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/SyncBlockTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/SyncBlockTask.java deleted file mode 100644 index cb42f1f461..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/SyncBlockTask.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.nuls.api.task; - -import io.nuls.api.ApiContext; -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.BlockInfo; -import io.nuls.api.model.po.SyncInfo; -import io.nuls.api.service.RollbackService; -import io.nuls.api.service.SyncService; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.core.basic.Result; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.log.Log; - -public class SyncBlockTask implements Runnable { - - private int chainId; - - private SyncService syncService; - - private RollbackService rollbackService; - - public SyncBlockTask(int chainId) { - this.chainId = chainId; - syncService = SpringLiteContext.getBean(SyncService.class); - rollbackService = SpringLiteContext.getBean(RollbackService.class); - } - - @Override - public void run() { - if (!ApiContext.isReady) { - LoggerUtil.commonLog.info("------- ApiModule wait for successful cross-chain networking --------"); - return; - } - //每次同步数据前都查看一下最新的同步信息,如果最新块的数据并没有在一次事务中完全处理,需要对区块数据进行回滚 - //Check the latest synchronization information before each entity synchronization. - //If the latest block entity is not completely processed in one transaction, you need to roll back the block entity. - try { - SyncInfo syncInfo = syncService.getSyncInfo(chainId); - if (syncInfo != null && !syncInfo.isFinish()) { - rollbackService.rollbackBlock(chainId, syncInfo.getBestHeight()); - } - } catch (Exception e) { - Log.error(e); - return; - } - - boolean running = true; - while (running) { - try { - running = syncBlock(); - } catch (Exception e) { - Log.error(e); - running = false; - } - } - } - - /** - * 同步逻辑 - * 1.Take the record of the latest block saved from the local - * 2.According to the height of the latest local block, to synchronize the next block of the wallet (local does not start from the 0th block) - * 3.After syncing to the latest block, the task ends, waiting for the next 10 seconds, resynchronizing - * 4.Each synchronization needs to be verified with the previous one. If the verification fails, it means local fork and needs to be rolled back. - *

- * 1. 从本地取出已保存的最新块的记录 - * 2. 根据本地最新块的高度,去同步钱包的下一个块(本地没有则从第0块开始) - * 3. 同步到最新块后,任务结束,等待下个10秒,重新同步 - * 4. 每次同步都需要和上一块做连续性验证,如果验证失败,说明本地分叉,需要做回滚处理 - * - * @return boolean 是否还继续同步 - */ - private boolean syncBlock() { - BlockHeaderInfo localBestBlockHeader = syncService.getBestBlockHeader(chainId); - try { - return process(localBestBlockHeader); - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - return false; - } - } - - private boolean process(BlockHeaderInfo localBestBlockHeader) throws Exception { - long nextHeight = 0; - if (localBestBlockHeader != null) { - nextHeight = localBestBlockHeader.getHeight() + 1; - } - Result result = WalletRpcHandler.getBlockInfo(chainId, nextHeight); - if (result.isFailed()) { - return false; - } - BlockInfo newBlock = result.getData(); - if (null == newBlock) { - Thread.sleep(5000L); - return false; - } - if (checkBlockContinuity(localBestBlockHeader, newBlock.getHeader())) { - return syncService.syncNewBlock(chainId, newBlock); - } else if (localBestBlockHeader != null) { - return rollbackService.rollbackBlock(chainId, localBestBlockHeader.getHeight()); - } - return false; - } - - /** - * 区块连续性验证 - * Block continuity verification - * - * @param localBest - * @param newest - * @return - */ - private boolean checkBlockContinuity(BlockHeaderInfo localBest, BlockHeaderInfo newest) { -// return false; - if (localBest == null) { - if (newest.getHeight() == 0) { - return true; - } else { - return false; - } - } else { - if (newest.getHeight() == localBest.getHeight() + 1) { - if (newest.getPreHash().equals(localBest.getHash())) { - return true; - } else { - return false; - } - } else { - return false; - } - } - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/task/UnConfirmTxTask.java b/module/nuls-public-service/src/main/java/io/nuls/api/task/UnConfirmTxTask.java deleted file mode 100644 index a3251bcbc3..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/task/UnConfirmTxTask.java +++ /dev/null @@ -1,63 +0,0 @@ -package io.nuls.api.task; - -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.db.TransactionService; -import io.nuls.api.model.po.TxHexInfo; -import io.nuls.api.utils.LoggerUtil; -import io.nuls.base.RPCUtil; -import io.nuls.base.basic.NulsByteBuffer; -import io.nuls.core.basic.Result; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.exception.NulsException; -import io.nuls.core.model.DateUtils; -import io.nuls.core.rpc.util.NulsDateUtils; - -import java.util.List; - -public class UnConfirmTxTask implements Runnable { - - private int chainId; - - private TransactionService transactionService; - - public UnConfirmTxTask(int chainId) { - this.chainId = chainId; - transactionService = SpringLiteContext.getBean(TransactionService.class); - } - - @Override - public void run() { - try { - - List txHexInfoList = transactionService.getUnConfirmList(chainId); - long currentTime = NulsDateUtils.getCurrentTimeMillis(); - for (int i = txHexInfoList.size() - 1; i >= 0; i--) { - TxHexInfo txHexInfo = txHexInfoList.get(i); - int txType = extractTxTypeFromTx(txHexInfo.getTxHex()); - if (txType == 10) { - continue; - } - if (txHexInfo.getTime() < currentTime && txHexInfo.getTime() + DateUtils.TEN_MINUTE_TIME > currentTime) { - Result result = WalletRpcHandler.validateTx(chainId, txHexInfo.getTxHex()); - if (!result.isSuccess()) { - transactionService.deleteUnConfirmTx(chainId, txHexInfo.getTxHash()); - txHexInfoList.remove(i); - } else { - WalletRpcHandler.broadcastTx(chainId, txHexInfo.getTxHex()); - } - } else if (txHexInfo.getTime() + DateUtils.TEN_MINUTE_TIME < currentTime) { - transactionService.deleteUnConfirmTx(chainId, txHexInfo.getTxHash()); - } - } - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - } - } - - private int extractTxTypeFromTx(String txString) throws NulsException { - String txTypeHexString = txString.substring(0, 4); - NulsByteBuffer byteBuffer = new NulsByteBuffer(RPCUtil.decode(txTypeHexString)); - return byteBuffer.readUint16(); - } - -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentComparator.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentComparator.java deleted file mode 100644 index f77abde53d..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentComparator.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.utils; - -import io.nuls.api.model.po.AgentInfo; - -import java.util.Comparator; - -/** - * @author Niels - */ -public class AgentComparator implements Comparator { - - private static final AgentComparator INSTANCE = new AgentComparator(); - - private AgentComparator() { - } - - public static AgentComparator getInstance() { - return INSTANCE; - } - - @Override - public int compare(AgentInfo o1, AgentInfo o2) { - if (o1.getStatus() > o2.getStatus()) { - return -1; - } else if (o1.getStatus() < o2.getStatus()) { - return 1; - } - if (o1.getCreditValue() > o2.getCreditValue()) { - return -1; - } else if (o1.getCreditValue() < o2.getCreditValue()) { - return 1; - } - if (o1.getCommissionRate() < o2.getCommissionRate()) { - return -1; - } else if (o1.getCommissionRate() > o2.getCommissionRate()) { - return 1; - } - if (o1.getTotalDeposit().compareTo(o2.getTotalDeposit()) < 0) { - return -1; - } else if (o1.getTotalDeposit().compareTo(o2.getTotalDeposit()) > 0) { - return 1; - } - if (o1.getDeposit().compareTo(o2.getDeposit()) > 0) { - return -1; - } else if (o1.getDeposit().compareTo(o2.getDeposit()) < 0) { - return 1; - } - - return 0; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentSorter.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentSorter.java deleted file mode 100644 index 0971a53772..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AgentSorter.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.utils; - -/** - * @author Niels - */ -public class AgentSorter implements Comparable { - - private String agentId; - - private String seedAddress; - - private String sorter; - - public String getAgentId() { - return agentId; - } - - public void setAgentId(String agentId) { - this.agentId = agentId; - } - - public String getSorter() { - return sorter; - } - - public void setSorter(String sorter) { - this.sorter = sorter; - } - - public String getSeedAddress() { - return seedAddress; - } - - public void setSeedAddress(String seedAddress) { - this.seedAddress = seedAddress; - } - - @Override - public int compareTo(AgentSorter o2) { - return this.getSorter().compareTo(o2.getSorter()); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AssetTool.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/AssetTool.java deleted file mode 100644 index d2e8cc4052..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/AssetTool.java +++ /dev/null @@ -1,100 +0,0 @@ -package io.nuls.api.utils; - -import io.nuls.api.ApiContext; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.db.AgentService; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.CoinContextInfo; -import io.nuls.core.core.ioc.SpringLiteContext; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.RoundingMode; -import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.Map; - -public class AssetTool { - - public static Map getNulsAssets() { - ApiCache apiCache = CacheManager.getCache(ApiContext.defaultChainId); - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - map.put("trades", coinContextInfo.getTxCount()); - map.put("totalAssets", AssetTool.toDouble(coinContextInfo.getTotal())); - map.put("circulation", AssetTool.toDouble(coinContextInfo.getCirculation())); - map.put("deposit", AssetTool.toDouble(coinContextInfo.getConsensusTotal())); - map.put("business", AssetTool.toDouble(coinContextInfo.getBusiness())); - map.put("team", AssetTool.toDouble(coinContextInfo.getTeam())); - map.put("community", AssetTool.toDouble(coinContextInfo.getCommunity())); - map.put("unmapped", AssetTool.toDouble(coinContextInfo.getUnmapped())); - map.put("dailyReward", AssetTool.toDouble(coinContextInfo.getDailyReward())); - map.put("destroy", AssetTool.toDouble(coinContextInfo.getDestroy())); - int consensusCount = apiCache.getCurrentRound().getMemberCount() - apiCache.getChainInfo().getSeeds().size(); - if (consensusCount < 0) { - consensusCount = 0; - } - map.put("consensusNodes", consensusCount); - long count = 0; - if (apiCache.getBestHeader() != null) { - AgentService agentService = SpringLiteContext.getBean(AgentService.class); - if (agentService != null) { - count = agentService.agentsCount(ApiContext.defaultChainId, apiCache.getBestHeader().getHeight()); - } - } - map.put("totalNodes", count); - return map; - } - - public static Map getNulsAssetInfo() { - ApiCache apiCache = CacheManager.getCache(ApiContext.defaultChainId); - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - Map map = new HashMap<>(); - map.put("trades", coinContextInfo.getTxCount()); - map.put("totalAssets", AssetTool.toCoinString(coinContextInfo.getTotal())); - map.put("circulation", AssetTool.toCoinString(coinContextInfo.getCirculation())); - map.put("deposit", AssetTool.toCoinString(coinContextInfo.getConsensusTotal())); - map.put("business", AssetTool.toCoinString(coinContextInfo.getBusiness())); - map.put("team", AssetTool.toCoinString(coinContextInfo.getTeam())); - map.put("community", AssetTool.toCoinString(coinContextInfo.getCommunity())); - map.put("unmapped", AssetTool.toCoinString(coinContextInfo.getUnmapped())); - map.put("dailyReward", AssetTool.toCoinString(coinContextInfo.getDailyReward())); - map.put("destroy", AssetTool.toCoinString(coinContextInfo.getDestroy())); - int consensusCount = apiCache.getCurrentRound().getMemberCount() - apiCache.getChainInfo().getSeeds().size(); - if (consensusCount < 0) { - consensusCount = 0; - } - map.put("consensusNodes", consensusCount); - long count = 0; - if (apiCache.getBestHeader() != null) { - AgentService agentService = SpringLiteContext.getBean(AgentService.class); - if (agentService != null) { - count = agentService.agentsCount(ApiContext.defaultChainId, apiCache.getBestHeader().getHeight()); - } - } - map.put("totalNodes", count); - return map; - } - - public static String getTotal() { - ApiCache apiCache = CacheManager.getCache(ApiContext.defaultChainId); - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - return AssetTool.toCoinString(coinContextInfo.getTotal()); - } - - public static String getCirculation() { - ApiCache apiCache = CacheManager.getCache(ApiContext.defaultChainId); - CoinContextInfo coinContextInfo = apiCache.getCoinContextInfo(); - return AssetTool.toCoinString(coinContextInfo.getCirculation()); - } - - public static double toDouble(BigInteger value) { - return new BigDecimal(value).movePointLeft(8).setScale(8, RoundingMode.HALF_DOWN).doubleValue(); - } - - public static String toCoinString(BigInteger value) { - BigDecimal decimal = new BigDecimal(value).movePointLeft(8).setScale(8, RoundingMode.HALF_DOWN); - DecimalFormat format = new DecimalFormat("0.########"); - return format.format(decimal); - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DBUtil.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/DBUtil.java deleted file mode 100644 index 6559b71552..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DBUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.nuls.api.utils; - -import static io.nuls.api.constant.DBTableConstant.TX_RELATION_SHARDING_COUNT; - -public class DBUtil { - - public static int getShardNumber(String value) { - return Math.abs(value.hashCode()) % TX_RELATION_SHARDING_COUNT; - } - - public static String getAssetKey(int chainId, int assetId) { - return chainId + "-" + assetId; - } - - public static String getAccountAssetKey(String address, int chainId, int assetId) { - return address + "-" + chainId + "-" + assetId; - } - - public static String getDepositKey(String hash, String key) { - return hash + "-" + key; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java deleted file mode 100644 index 6b4e732a03..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/DocumentTransferTool.java +++ /dev/null @@ -1,181 +0,0 @@ -package io.nuls.api.utils; - -import io.nuls.api.constant.ApiErrorCode; -import io.nuls.core.exception.NulsRuntimeException; -import org.bson.Document; - -import java.lang.reflect.Field; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - -public class DocumentTransferTool { - - public static Document toDocument(Object obj) { - if (null == obj) { - return null; - } - Class clazz = obj.getClass(); - Field[] fields = clazz.getDeclaredFields(); - Document document = new Document(); - for (Field field : fields) { - try { - field.setAccessible(true); - if ("isNew".equals(field.getName())) { - continue; - } - if ("java.math.BigInteger".equals(field.getType().getName())) { - BigInteger value = (BigInteger) field.get(obj); - if (value == null) { - value = BigInteger.ZERO; - } - document.append(field.getName(), value.toString()); - } else { - document.append(field.getName(), field.get(obj)); - } - - } catch (IllegalAccessException e) { - throw new NulsRuntimeException(ApiErrorCode.DATA_PARSE_ERROR, "class to Document fail"); - } - } - return document; - } - - public static Document toDocument(Object obj, String _id) { - if (null == obj) { - return null; - } - Class clazz = obj.getClass(); - Field[] fields = clazz.getDeclaredFields(); - Document document = new Document(); - for (Field field : fields) { - try { - field.setAccessible(true); - if ("isNew".equals(field.getName())) { - continue; - } - if ("java.math.BigInteger".equals(field.getType().getName())) { - BigInteger value = (BigInteger) field.get(obj); - if (value == null) { - value = BigInteger.ZERO; - } - document.append(field.getName(), value.toString()); - } else if (field.getName().equals(_id)) { - document.append("_id", field.get(obj)); - } else { - document.append(field.getName(), field.get(obj)); - } - } catch (IllegalAccessException e) { - throw new NulsRuntimeException(ApiErrorCode.DATA_PARSE_ERROR, "Model to Document fail"); - } - } - return document; - } - - public static T toInfo(Document document, Class clazz) { - if (null == document) { - return null; - } - try { - T instance = clazz.getDeclaredConstructor().newInstance(); - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - field.setAccessible(true); - if ("isNew".equals(field.getName())) { - continue; - } - if (!document.containsKey(field.getName())) { - continue; - } - if (field.getType().getName().equals("java.math.BigInteger")) { - field.set(instance, new BigInteger(document.get(field.getName()).toString())); - } else { - field.set(instance, document.get(field.getName())); - } - - } - return instance; - } catch (Exception e) { - LoggerUtil.commonLog.error(e); - throw new NulsRuntimeException(ApiErrorCode.DATA_PARSE_ERROR, "Document to Model fail"); - } - } - - public static T toInfo(Document document, String _id, Class clazz) { - if (null == document) { - return null; - } - try { - T instance = clazz.getDeclaredConstructor().newInstance(); - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - field.setAccessible(true); - if ("isNew".equals(field.getName())) { - continue; - } - if (_id.equals(field.getName())) { - field.set(instance, document.get("_id")); - } else if (!document.containsKey(field.getName())) { - continue; - } else if (field.getType().getName().equals("java.math.BigInteger")) { - field.set(instance, new BigInteger(document.get(field.getName()).toString())); - } else { - field.set(instance, document.get(field.getName())); - } - } - return instance; - } catch (Exception e) { - LoggerUtil.commonLog.error("address:" + document.get("address").toString()); - LoggerUtil.commonLog.error("balance:" + document.get("balance").toString()); - LoggerUtil.commonLog.error("lockedBalance" + document.get("lockedBalance").toString()); - LoggerUtil.commonLog.error("tokenSymbol" + document.get("tokenSymbol").toString()); - - LoggerUtil.commonLog.error(e); - throw new NulsRuntimeException(ApiErrorCode.DATA_PARSE_ERROR, "Document to Model fail"); - } - } - - public static List toDocumentList(List list) { - List documentList = new ArrayList<>(); - if (list == null || list.isEmpty()) { - return documentList; - } - for (int i = 0; i < list.size(); i++) { - documentList.add(toDocument(list.get(i))); - } - return documentList; - } - - public static List toDocumentList(List list, String _id) { - List documentList = new ArrayList<>(); - if (list == null || list.isEmpty()) { - return documentList; - } - for (int i = 0; i < list.size(); i++) { - documentList.add(toDocument(list.get(i), _id)); - } - return documentList; - } - - public static List toInfoList(List documents, Class clazz) { - List list = new ArrayList<>(); - if (documents == null || documents.isEmpty()) { - return list; - } - for (int i = 0; i < documents.size(); i++) { - list.add(toInfo(documents.get(i), clazz)); - } - return list; - } - - public static List toInfoList(List documents, String _id, Class clazz) { - List list = new ArrayList<>(); - if (documents == null || documents.isEmpty()) { - return list; - } - for (int i = 0; i < documents.size(); i++) { - list.add(toInfo(documents.get(i), _id, clazz)); - } - return list; - } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/LoggerUtil.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/LoggerUtil.java deleted file mode 100644 index d886fdafe9..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/LoggerUtil.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -package io.nuls.api.utils; - -import ch.qos.logback.classic.Level; -import io.nuls.core.log.logback.LoggerBuilder; -import io.nuls.core.log.logback.NulsLogger; - -/** - * 日志工具类 - * Logging utility class - * - * @author captain - * @version 1.0 - * @date 19-1-25 上午11:40 - */ -public class LoggerUtil { - - //modify by zlj : common.log->protocol.log - public static NulsLogger commonLog = LoggerBuilder.getLogger("public-service"); -// -// public static void init(int chainId, String levelString) { -// Level level = Level.valueOf(levelString); -// NulsLogger commonLog = LoggerBuilder.getLogger("api-module/chain-"+chainId+"/","common", level); -// } -} diff --git a/module/nuls-public-service/src/main/java/io/nuls/api/utils/VerifyUtils.java b/module/nuls-public-service/src/main/java/io/nuls/api/utils/VerifyUtils.java deleted file mode 100644 index aa2cc313b9..0000000000 --- a/module/nuls-public-service/src/main/java/io/nuls/api/utils/VerifyUtils.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.api.utils; - - -import io.nuls.api.exception.JsonRpcException; -import io.nuls.api.model.rpc.RpcErrorCode; -import io.nuls.api.model.rpc.RpcResultError; - -import java.util.List; - -/** - * @author Niels - */ -public class VerifyUtils { - - public static void verifyParams(List params, int minSize) { - if (null == params || params.size() < minSize) { - throw new JsonRpcException(new RpcResultError(RpcErrorCode.PARAMS_ERROR, "Incorrect number of parameters")); - } - } -} diff --git a/module/nuls-public-service/src/main/resources/languages/en.properties b/module/nuls-public-service/src/main/resources/languages/en.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/module/nuls-public-service/src/main/resources/languages/zh-CHS.properties b/module/nuls-public-service/src/main/resources/languages/zh-CHS.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/module/nuls-public-service/src/main/resources/module.json b/module/nuls-public-service/src/main/resources/module.json deleted file mode 100644 index bebcbd73c4..0000000000 --- a/module/nuls-public-service/src/main/resources/module.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "providerType": "RPC", - "chainId": 2, - "assetId": 1, - "symbol": "NULS", - "language": "en", - "encoding": "UTF-8", - "databaseUrl": "127.0.0.1", - "databasePort": 27017, - "kernelUrl": "ws://127.0.0.1:7771", - "listenerIp": "0.0.0.0", - "rpcPort": 18003, - "logLevel": "DEBUG", - "maxAliveConnect": 20, - "maxWaitTime": 120000, - "connectTimeOut": 30000 -} \ No newline at end of file diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java deleted file mode 100644 index 7b693194b1..0000000000 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/ApiTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package io.nuls.api.test; - -import io.nuls.api.analysis.WalletRpcHandler; -import io.nuls.api.cache.ApiCache; -import io.nuls.api.manager.CacheManager; -import io.nuls.api.model.po.AccountTokenInfo; -import io.nuls.api.model.po.ContractInfo; -import io.nuls.api.model.po.ContractResultInfo; -import io.nuls.api.model.po.CurrentRound; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.model.BigIntegerUtils; -import io.nuls.core.model.DoubleUtils; -import io.nuls.core.rpc.info.HostInfo; -import io.nuls.core.rpc.info.NoUse; -import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; -import io.nuls.core.basic.Result; -import io.nuls.core.exception.NulsException; -import org.bson.Document; -import org.checkerframework.checker.units.qual.A; -import org.junit.Before; -import org.junit.Test; - -import java.math.BigInteger; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentSkipListMap; - -public class ApiTest { - -// protected Chain chain; -// protected static int chainId = 2; -// protected static int assetId = 1; - - @Before - public void before() throws Exception { -// NoUse.mockModule(); -// ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); -// chain = new Chain(); -// chain.setConfig(new ConfigBean(chainId, assetId, 100000000L)); - } - - @Test - public void testCmdCall() { -// -// for (int i = 0; i < 10000; i++) { -// BlockInfo block = WalletRpcHandler.getBlockInfo(2, i); -// for (TransactionInfo tx : block.getTxList()) { -// if (tx.getType() == 1) { -// -// } -// } -// } - } - - @Before - public void initApiCache() { - ApiCache apiCache = new ApiCache(); - CurrentRound currentRound = new CurrentRound(); - currentRound.setStartHeight(111); - currentRound.setEndHeight(222); - apiCache.setCurrentRound(currentRound); - - CacheManager.addApiCache(2, apiCache); - } - - - @Test - public void updateCurrentRound() { - ApiCache apiCache = CacheManager.getCache(2); - CurrentRound currentRound = apiCache.getCurrentRound(); - System.out.println(currentRound.getStartHeight() + "----" + currentRound.getEndHeight()); - CurrentRound beforeRound = new CurrentRound(); - beforeRound.setStartHeight(3333); - beforeRound.setEndHeight(4444); - - apiCache.setCurrentRound(beforeRound); - System.out.println(apiCache.getCurrentRound().getStartHeight() + "----" + apiCache.getCurrentRound().getEndHeight()); - - testUpdateCurrentRound(currentRound); - - System.out.println(currentRound.getStartHeight() + "----" + currentRound.getEndHeight()); - } - - private void testUpdateCurrentRound(CurrentRound currentRound) { - currentRound.setStartHeight(7777); - currentRound.setEndHeight(8888); - } - - - @Test - public void testContract() { - try { - ContractInfo contractInfo = new ContractInfo(); - contractInfo.setCreateTxHash("0020f0b5b43fb165413938030266ebdcfb780b7a213ebddc2db8665cbfcb6a936cb5"); - contractInfo.setContractAddress("tNULSeBaNAsdgUuiYL5WCtVqb8r9gCkpw8QH86"); - Result result = WalletRpcHandler.getContractInfo(2, contractInfo); - contractInfo = result.getData(); - Document document = contractInfo.toDocument(); - System.out.println(1); - } catch (NulsException e) { - e.printStackTrace(); - } - } - - @Test - public void testContractResult() { - try { - Result result = WalletRpcHandler.getContractResultInfo(2, "0020cc10c27160b1e0c7dd8590baa16fedbb91661654b48df45ad370c47ce27cefa6"); - ContractResultInfo resultInfo = result.getData(); - Document document = resultInfo.toDocument(); - System.out.println(1); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - @Test - public void test() { - AccountTokenInfo info = new AccountTokenInfo(); - info.setKey("abcde"); - info.setBalance(new BigInteger("-11111")); - - - System.out.println(BigIntegerUtils.bigIntegerToString(info.getBalance(), 32)); - } -} diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/DropTableTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/DropTableTest.java deleted file mode 100644 index 9fd87be29b..0000000000 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/DropTableTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.nuls.api.test; - -import com.mongodb.MongoClient; -import com.mongodb.ServerAddress; -import com.mongodb.client.MongoDatabase; -import io.nuls.api.constant.DBTableConstant; -import io.nuls.api.db.mongo.MongoDBService; -import org.junit.Test; - -import java.math.BigInteger; - -import static io.nuls.api.constant.DBTableConstant.TX_RELATION_SHARDING_COUNT; - -public class DropTableTest { - - private static int chainId = 100; - - @Test - public void dropTable() { - ServerAddress serverAddress = new ServerAddress("127.0.0.1", 27017); - MongoClient mongoClient = new MongoClient(serverAddress); - MongoDatabase mongoDatabase = mongoClient.getDatabase(DBTableConstant.DATABASE_NAME); - MongoDBService mongoDBService = new MongoDBService(mongoClient, mongoDatabase); - - mongoDBService.dropTable(DBTableConstant.TEST_TABLE); - mongoDBService.dropTable(DBTableConstant.CHAIN_INFO_TABLE); - mongoDBService.dropTable(DBTableConstant.SYNC_INFO_TABLE); - mongoDBService.dropTable(DBTableConstant.BLOCK_HEADER_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ACCOUNT_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ACCOUNT_LEDGER_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.AGENT_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ALIAS_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.DEPOSIT_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.TX_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.TX_UNCONFIRM_RELATION_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.TX_UNCONFIRM_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.COINDATA_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.PUNISH_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ROUND_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ROUND_ITEM_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.ACCOUNT_TOKEN_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.CONTRACT_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.CONTRACT_TX_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.TOKEN_TRANSFER_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.CONTRACT_RESULT_TABLE + chainId); - mongoDBService.dropTable(DBTableConstant.STATISTICAL_TABLE + chainId); - - for (int i = 0; i < TX_RELATION_SHARDING_COUNT; i++) { - mongoDBService.dropTable(DBTableConstant.TX_RELATION_TABLE + chainId + "_" + i); - } - } - - - @Test - public void testBigInteger() { - BigInteger b1 = new BigInteger("12345678987654321"); - System.out.println(b1); - b1 = b1.multiply(new BigInteger("40")).divide(new BigInteger("100")); - System.out.println(b1); - } -} diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/MessageIntfTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/MessageIntfTest.java deleted file mode 100644 index c0801d6e4a..0000000000 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/MessageIntfTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.api.test; - -import com.fasterxml.jackson.core.JsonProcessingException; -import io.nuls.core.parse.JSONUtils; -import org.junit.Test; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author Niels - */ -public class MessageIntfTest { - - private static final String httpurl = "http://127.0.0.1:18003"; - - @Test - public void send() throws JsonProcessingException { - for (int i = 0; i < 990; i++) { - Map param = new HashMap<>(); - param.put("jsonrpc", "2.0"); - param.put("method", "commitMsg"); - param.put("id", i); - List list = new ArrayList<>(); - list.add("aaaaa" + i); - list.add("asdfasdfasi;ogupaowiefjao;shfd;lasureoifhgv;afd;lkasdjflsdjfoiweuhfoasjdf"); - param.put("params", list); - String paramString = JSONUtils.obj2json(param); - String result = doPost(httpurl, paramString); - System.out.println(i + "=====" + result); - if (i % 10 == 0) { - get(i); - } - } - } - - public void get(int index) throws JsonProcessingException { - for (int i = index; i > index - 10 && i >= 0; i--) { - Map param = new HashMap<>(); - param.put("jsonrpc", "2.0"); - param.put("method", "getMsg"); - param.put("id", i); - List list = new ArrayList<>(); - list.add("aaaaa" + i); - param.put("params", list); - String paramString = JSONUtils.obj2json(param); - String result = doPost(httpurl, paramString); - System.out.println(i + "===get==" + result); - } - } - - public static String doPost(String httpUrl, String param) { - HttpURLConnection connection = null; - InputStream is = null; - OutputStream os = null; - BufferedReader br = null; - String result = null; - try { - URL url = new URL(httpUrl); - // 通过远程url连接对象打开连接 - connection = (HttpURLConnection) url.openConnection(); - // 设置连接请求方式 - connection.setRequestMethod("POST"); - // 设置连接主机服务器超时时间:15000毫秒 - connection.setConnectTimeout(15000); - // 设置读取主机服务器返回数据超时时间:60000毫秒 - connection.setReadTimeout(60000); - - // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true - connection.setDoOutput(true); - // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无 - connection.setDoInput(true); - // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。 - connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0 - connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0"); - // 通过连接对象获取一个输出流 - os = connection.getOutputStream(); - // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 - os.write(param.getBytes()); - // 通过连接对象获取一个输入流,向远程读取 - if (connection.getResponseCode() == 200) { - - is = connection.getInputStream(); - // 对输入流对象进行包装:charset根据工作项目组的要求来设置 - br = new BufferedReader(new InputStreamReader(is, "UTF-8")); - - StringBuffer sbf = new StringBuffer(); - String temp = null; - // 循环遍历一行一行读取数据 - while ((temp = br.readLine()) != null) { - sbf.append(temp); - sbf.append("\r\n"); - } - result = sbf.toString(); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - // 关闭资源 - if (null != br) { - try { - br.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (null != os) { - try { - os.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (null != is) { - try { - is.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - // 断开与远程地址url的连接 - connection.disconnect(); - } - return result; - } -} diff --git a/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java b/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java deleted file mode 100644 index b181ec95af..0000000000 --- a/module/nuls-public-service/src/test/java/io/nuls/api/test/MongoDBTest.java +++ /dev/null @@ -1,173 +0,0 @@ -package io.nuls.api.test; - -import io.nuls.api.ApiContext; -import io.nuls.api.constant.CommandConstant; -import io.nuls.api.db.mongo.MongoBlockServiceImpl; -import io.nuls.api.db.mongo.MongoContractServiceImpl; -import io.nuls.api.model.po.BlockHeaderInfo; -import io.nuls.api.model.po.ContractInfo; -import io.nuls.api.rpc.RpcCall; -import io.nuls.api.utils.DocumentTransferTool; -import io.nuls.core.basic.Result; -import io.nuls.core.core.ioc.SpringLiteContext; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.rpc.info.Constants; -import io.nuls.core.rpc.model.ModuleE; -import org.bson.Document; -import org.junit.Before; -import org.junit.Test; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class MongoDBTest { - - @Before - public void before() { - -// String dbName = "nuls-api"; -// MongoClient mongoClient = new MongoClient("127.0.0.1", 27017); -// MongoDatabase mongoDatabase = mongoClient.getDatabase(dbName); -// MongoDBService mongoDBService = new MongoDBService(mongoClient, mongoDatabase); -// SpringLiteContext.putBean("dbService", mongoDBService); - - ApiContext.databaseUrl = "127.0.0.1"; - ApiContext.databasePort = 27017; - SpringLiteContext.init("io.nuls"); - } - - - - @Test - public void testDBSaveBlock() { - MongoBlockServiceImpl mongoBlockServiceImpl = SpringLiteContext.getBean(MongoBlockServiceImpl.class); - long time1, time2; - time1 = System.currentTimeMillis(); - - for (int i = 1; i < 2; i++) { - BlockHeaderInfo headerInfo = new BlockHeaderInfo(); - headerInfo.setHeight(i); - mongoBlockServiceImpl.saveBLockHeaderInfo(2, headerInfo); - if (i % 100000 == 0) { - time2 = System.currentTimeMillis(); - - System.out.println("i:" + i + ",--------------------time:" + (time2 - time1)); - time1 = time2; - } - } - - - BlockHeaderInfo headerInfo = mongoBlockServiceImpl.getBlockHeader(2, 0); - System.out.println(headerInfo.getHeight()); - } - - @Test - public void testSaveBlocks() { - MongoBlockServiceImpl mongoBlockServiceImpl = SpringLiteContext.getBean(MongoBlockServiceImpl.class); - BlockHeaderInfo a = mongoBlockServiceImpl.getBlockHeader(2, 0); - - List blockHeaderInfos = new ArrayList<>(); - for (int i = 1; i < 1000000; i++) { - BlockHeaderInfo headerInfo = new BlockHeaderInfo(); - headerInfo.setHeight(i); -// headerInfo.setSize(100); -// headerInfo.setTotalFee(new BigInteger("100")); -// headerInfo.setAgentVersion(1); -// headerInfo.setScriptSign("abcdkeagaadsf"); -// headerInfo.setPackingAddress("dfadsfadsf"); -// headerInfo.setAgentHash("fasdfsdafasd"); -// headerInfo.setMerkleHash("fdsafsdfsdf"); -// headerInfo.setPreHash("fdsafadsfsd"); -// headerInfo.setHash("fdsafasdfd"); -// headerInfo.setTxHashList(List.of("abd","fsdf","Fdsf")); -// headerInfo.setAgentAlias("dsfsd"); -// headerInfo.setAgentId("dfsdf"); -// headerInfo.setCreateTime(System.nanoTime()); -// headerInfo.setPackingIndexOfRound(3); -// headerInfo.setReward(new BigInteger("2990")); -// headerInfo.setTxCount(6); -// headerInfo.setRoundIndex(4); -// headerInfo.setRoundStartTime(10100); -// headerInfo.setSeedPacked(false); - blockHeaderInfos.add(headerInfo); - } -// mongoBlockServiceImpl.saveBulkList(2, blockHeaderInfos); - mongoBlockServiceImpl.saveList(2, blockHeaderInfos); - } - - @Test - public void testDBGet() { - MongoBlockServiceImpl mongoBlockServiceImpl = SpringLiteContext.getBean(MongoBlockServiceImpl.class); - BlockHeaderInfo headerInfo = mongoBlockServiceImpl.getBlockHeader(2, 0L); - System.out.println(); - } - - @Test - public void testGetContract() { - MongoContractServiceImpl mongoContractServiceImpl = SpringLiteContext.getBean(MongoContractServiceImpl.class); - ContractInfo contractInfo = mongoContractServiceImpl.getContractInfo(2, "tNULSeBaN32a2hucBYT9o4BnNoHQcM8WDmpPgq"); - } - - @Test - public void testTransferUseTime() { - BlockHeaderInfo blockHeaderInfo = new BlockHeaderInfo(); - blockHeaderInfo.setHash("abcdefg"); - blockHeaderInfo.setHeight(1L); - blockHeaderInfo.setAgentAlias("alias"); - blockHeaderInfo.setAgentHash("bbbbbb"); - blockHeaderInfo.setAgentId("dfsaf"); - blockHeaderInfo.setAgentVersion(2); - blockHeaderInfo.setCreateTime(131313L); - blockHeaderInfo.setMerkleHash("dfsdfsdfsd"); - blockHeaderInfo.setPackingAddress("dfasdfdasf"); - blockHeaderInfo.setPackingIndexOfRound(1); - blockHeaderInfo.setPreHash("fdsfsdf"); - blockHeaderInfo.setReward(new BigInteger("26")); - blockHeaderInfo.setRoundIndex(1L); - blockHeaderInfo.setRoundStartTime(131L); - blockHeaderInfo.setScriptSign("fdsfsdf"); - blockHeaderInfo.setTotalFee(new BigInteger("26")); - blockHeaderInfo.setTxCount(1); - blockHeaderInfo.setTxHashList(List.of("abcd", "aset", "sdfsd", "eeee")); - - long time1 = System.currentTimeMillis(); - - for (int i = 0; i < 100000; i++) { - Document document = new Document(); - document.put("hash", blockHeaderInfo.getHash()); - document.put("height", blockHeaderInfo.getHeight()); - document.put("preHash", blockHeaderInfo.getPreHash()); - document.put("merkleHash", blockHeaderInfo.getMerkleHash()); - document.put("createTime", blockHeaderInfo.getCreateTime()); - document.put("agentHash", blockHeaderInfo.getAgentHash()); - document.put("agentId", blockHeaderInfo.getAgentId()); - document.put("packingAddress", blockHeaderInfo.getPackingAddress()); - document.put("agentAlias", blockHeaderInfo.getAgentAlias()); - document.put("txCount", blockHeaderInfo.getTxCount()); - document.put("roundIndex", blockHeaderInfo.getRoundIndex()); - document.put("totalFee", blockHeaderInfo.getTotalFee()); - document.put("reward", blockHeaderInfo.getReward()); - document.put("size", blockHeaderInfo.getSize()); - document.put("packingIndexOfRound", blockHeaderInfo.getPackingIndexOfRound()); - document.put("scriptSign", blockHeaderInfo.getScriptSign()); - document.put("txHashList", blockHeaderInfo.getTxHashList()); - document.put("isSeedPacked", blockHeaderInfo.isSeedPacked()); - document.put("roundStartTime", blockHeaderInfo.getRoundStartTime()); - document.put("agentVersion", blockHeaderInfo.getAgentVersion()); - } - - System.out.println("-------------time;" + (System.currentTimeMillis() - time1)); - - time1 = System.currentTimeMillis(); - for (int i = 0; i < 100000; i++) { - Document document = DocumentTransferTool.toDocument(blockHeaderInfo); - } - System.out.println("-------------time;" + (System.currentTimeMillis() - time1)); - } - - -} diff --git a/module/pom.xml b/module/pom.xml index 1abef97eb8..2c51a47c48 100644 --- a/module/pom.xml +++ b/module/pom.xml @@ -17,7 +17,6 @@ nuls-account - nuls-public-service nuls-block nuls-chain-manager nuls-consensus diff --git a/pom.xml b/pom.xml index 46ba77b942..9987a2fe09 100644 --- a/pom.xml +++ b/pom.xml @@ -135,4 +135,16 @@ + + + + maven-releases + http://nexus.nuls.center/nexus/content/repositories/releases/ + + + maven-snapshots + http://nexus.nuls.center/nexus/content/repositories/snapshots/ + + + \ No newline at end of file From 6b41d265b6ead062c5007a07106574cf408824f8 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 3 Dec 2020 18:20:22 +0800 Subject: [PATCH 209/304] update contract execution way --- .../callable/ContractBatchEndCallable.java | 57 +--- .../callable/ContractTxCallableV8.java | 299 ++++++++++++++++++ .../nuls/contract/helper/ContractHelper.java | 86 ++++- .../nuls/contract/model/bo/BatchInfoV8.java | 248 +++++++++++++++ .../java/io/nuls/contract/model/bo/Chain.java | 40 +++ .../model/bo/ContractWrapperTransaction.java | 20 ++ .../processor/CallContractTxProcessor.java | 88 ++++++ .../processor/CreateContractTxProcessor.java | 128 ++++++++ .../processor/DeleteContractTxProcessor.java | 13 + .../io/nuls/contract/rpc/cmd/ContractCmd.java | 59 +++- .../contract/service/ContractService.java | 12 +- .../service/impl/ContractServiceImpl.java | 237 ++++++++------ .../tx/common/TransactionCommitAdvice.java | 46 ++- .../tx/common/TransactionRollbackAdvice.java | 12 +- .../tx/v8/CallContractProcessorV8.java | 11 +- .../tx/v8/CreateContractProcessorV8.java | 115 +++++++ .../tx/v8/DeleteContractProcessorV8.java | 115 +++++++ .../src/main/resources/protocol-config.json | 16 + 18 files changed, 1413 insertions(+), 189 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/BatchInfoV8.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CreateContractProcessorV8.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/DeleteContractProcessorV8.java diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractBatchEndCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractBatchEndCallable.java index 2c429c3b7a..2751a02a8b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractBatchEndCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractBatchEndCallable.java @@ -138,7 +138,7 @@ public ContractPackageDto call() { } } // 生成退还剩余Gas的交易 - ContractReturnGasTransaction contractReturnGasTx = makeReturnGasTx(chainId, contractResultList, blockTime, contractHelper); + ContractReturnGasTransaction contractReturnGasTx = contractHelper.makeReturnGasTx(contractResultList, blockTime); if (contractReturnGasTx != null) { resultTxList.add(RPCUtil.encode(contractReturnGasTx.serialize())); } @@ -162,59 +162,4 @@ public ContractPackageDto call() { } } - private static ContractReturnGasTransaction makeReturnGasTx(int chainId, List resultList, long time, ContractHelper contractHelper) throws IOException { - int assetsId = contractHelper.getChain(chainId).getConfig().getAssetId(); - ContractWrapperTransaction wrapperTx; - ContractData contractData; - Map returnMap = new HashMap<>(); - for (ContractResult contractResult : resultList) { - wrapperTx = contractResult.getTx(); - // 终止合约不消耗Gas,跳过 - if (wrapperTx.getType() == DELETE_CONTRACT) { - continue; - } - // add by pierre at 2019-12-03 代币跨链交易的合约调用是系统调用,不计算Gas消耗,跳过 - if (wrapperTx.getType() == CROSS_CHAIN) { - continue; - } - // end code by pierre - contractData = wrapperTx.getContractData(); - long realGasUsed = contractResult.getGasUsed(); - long txGasUsed = contractData.getGasLimit(); - long returnGas; - - BigInteger returnValue; - if (txGasUsed > realGasUsed) { - returnGas = txGasUsed - realGasUsed; - returnValue = BigInteger.valueOf(LongUtils.mul(returnGas, contractData.getPrice())); - - ByteArrayWrapper sender = new ByteArrayWrapper(contractData.getSender()); - BigInteger senderValue = returnMap.get(sender); - if (senderValue == null) { - senderValue = returnValue; - } else { - senderValue = senderValue.add(returnValue); - } - returnMap.put(sender, senderValue); - } - } - if (!returnMap.isEmpty()) { - CoinData coinData = new CoinData(); - List toList = coinData.getTo(); - Set> entries = returnMap.entrySet(); - CoinTo returnCoin; - for (Map.Entry entry : entries) { - returnCoin = new CoinTo(entry.getKey().getBytes(), chainId, assetsId, entry.getValue(), 0L); - toList.add(returnCoin); - } - ContractReturnGasTransaction tx = new ContractReturnGasTransaction(); - tx.setTime(time); - tx.setCoinData(coinData.serialize()); - tx.setHash(NulsHash.calcHash(tx.serializeForHash())); - return tx; - } - - return null; - } - } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java new file mode 100644 index 0000000000..81281d295a --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java @@ -0,0 +1,299 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.callable; + +import io.nuls.base.RPCUtil; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.NulsHash; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.helper.ContractNewTxHandler; +import io.nuls.contract.helper.ContractTransferHandler; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.manager.ContractTempBalanceManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.tx.ContractTransferTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.model.txdata.ContractData; +import io.nuls.contract.model.txdata.ContractTransferData; +import io.nuls.contract.service.ContractExecutor; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.vm.program.ProgramExecutor; +import io.nuls.core.basic.Result; +import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.exception.NulsException; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; +import static io.nuls.contract.util.ContractUtil.extractPublicKey; +import static io.nuls.contract.util.ContractUtil.makeContractResult; +import static io.nuls.core.constant.TxType.*; + +public class ContractTxCallableV8 { + + private ContractExecutor contractExecutor; + private ContractHelper contractHelper; + private ContractNewTxHandler contractNewTxHandler; + private ContractTransferHandler contractTransferHandler; + private ContractTempBalanceManager tempBalanceManager; + private ProgramExecutor executor; + private String contract; + private ContractWrapperTransaction tx; + private long number; + private String preStateRoot; + private int chainId; + private int blockType; + private long blockTime; + private BatchInfoV8 batchInfo; + + + public ContractTxCallableV8(int chainId, int blockType, long blockTime, ProgramExecutor executor, String contract, ContractWrapperTransaction tx, long number, String preStateRoot) { + this.chainId = chainId; + this.blockType = blockType; + this.blockTime = blockTime; + this.contractExecutor = SpringLiteContext.getBean(ContractExecutor.class); + this.contractHelper = SpringLiteContext.getBean(ContractHelper.class); + this.contractNewTxHandler = SpringLiteContext.getBean(ContractNewTxHandler.class); + this.contractTransferHandler = SpringLiteContext.getBean(ContractTransferHandler.class); + this.tempBalanceManager = contractHelper.getBatchInfoTempBalanceManagerV8(chainId); + this.executor = executor; + this.contract = contract; + this.tx = tx; + this.number = number; + this.preStateRoot = preStateRoot; + } + + public ContractResult call() throws Exception { + ChainManager.chainHandle(chainId, blockType); + this.batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + String hash = tx.getHash().toHex(); + long start = System.currentTimeMillis(); + ContractData contractData; + ContractResult contractResult = null; + contractData = tx.getContractData(); + int type = tx.getType(); + do { + if (type != DELETE_CONTRACT && !ContractUtil.checkPrice(contractData.getPrice())) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "The gas price is error."); + break; + } + + switch (type) { + case CREATE_CONTRACT: + contractResult = contractExecutor.create(executor, contractData, number, preStateRoot, extractPublicKey(tx)); + checkCreateResult(tx, contractResult); + break; + // add by pierre at 2019-10-20 需要协议升级 done + case CROSS_CHAIN: + if(ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { + break; + } + // end code by pierre + case CALL_CONTRACT: + // 创建合约无论成功与否,后续的其他的跳过执行,视作失败 -> 合约锁定中或者合约不存在 + if (batchInfo.getCreateSet().contains(contract)) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "contract lock or not exist."); + break; + } + // 删除合约成功后,后续的其他的跳过执行,视作失败 -> 合约已删除 + if (batchInfo.getDeleteSet().contains(contract)) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "contract has been terminated."); + break; + } + contractHelper.extractAssetInfoFromCallTransaction((CallContractData) contractData, tx); + contractResult = contractExecutor.call(executor, contractData, number, preStateRoot, extractPublicKey(tx)); + checkCallResult(tx, contractResult); + break; + case DELETE_CONTRACT: + contractResult = contractExecutor.delete(executor, contractData, number, preStateRoot); + checkDeleteResult(tx, contractResult); + break; + default: + break; + } + } while (false); + if (contractResult != null) { + // pierre 标记 需要协议升级 done + if(!contractResult.isSuccess()) { + Log.error("Failed TxType [{}] Execute ContractResult is {}", tx.getType(), contractResult.toString()); + contractResult.setGasUsed(contractData.getGasLimit()); + } + // end code by pierre + } + Log.info("[Per Contract Execution Cost Time] TxType is {}, TxHash is {}, Cost Time is {}", tx.getType(), hash, System.currentTimeMillis() - start); + return contractResult; + } + + private void checkCreateResult(ContractWrapperTransaction tx, ContractResult contractResult) { + makeContractResult(tx, contractResult); + batchInfo.getCreateSet().add(contract); + if (contractResult.isSuccess()) { + Result checkResult = contractHelper.validateNrc20Contract(chainId, (ProgramExecutor) contractResult.getTxTrack(), tx, contractResult); + if (checkResult.isFailed()) { + Log.error("check validateNrc20Contract Result is {}", checkResult.toString()); + } + if (checkResult.isSuccess()) { + commitContract(contractResult); + } + } + } + + + private void checkCallResult(ContractWrapperTransaction tx, ContractResult contractResult) throws IOException, NulsException { + makeContractResult(tx, contractResult); + // 处理合约结果 + dealCallResult(tx, contractResult, chainId); + } + + private void dealCallResult(ContractWrapperTransaction tx, ContractResult contractResult, int chainId) throws IOException, NulsException { + if (contractResult.isSuccess()) { + // 处理合约生成的其他交易、临时余额、合约内部转账 + contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); + } else { + // 处理调用失败的合约,把需要退还的NULS 生成一笔合约内部转账交易,退还给调用者 + this.handleFailedContract(contractResult); + } + // 处理合约内部转账成功后,提交合约 + if (contractResult.isSuccess()) { + commitContract(contractResult); + } + } + + private void handleFailedContract(ContractResult contractResult) throws IOException, NulsException { + ContractWrapperTransaction orginTx = contractResult.getTx(); + ContractData contractData = orginTx.getContractData(); + NulsHash orginTxHash = orginTx.getHash(); + BigInteger value = contractData.getValue(); + byte[] contractAddress = contractData.getContractAddress(); + + Map multyAssetMap = new HashMap<>(); + int assetChainId, assetId; + String assetKey; + CoinData orginTxCoinData = orginTx.getCoinDataInstance(); + List fromList = orginTxCoinData.getFrom(); + List toList = orginTxCoinData.getTo(); + for(CoinFrom from : fromList) { + assetChainId = from.getAssetsChainId(); + assetId = from.getAssetsId(); + assetKey = assetChainId + "_" + assetId; + if (CHAIN_ID != assetChainId || ASSET_ID != assetId) { + multyAssetMap.put(assetKey, from.getAddress()); + } else if (from.getAmount().compareTo(value) >= 0){ + orginTx.setValueSender(from.getAddress()); + } + } + + if (value.compareTo(BigInteger.ZERO) > 0) { + byte[] sender = orginTx.getValueSender(); + if (sender == null) { + sender = contractData.getSender(); + } + ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, sender, value, CHAIN_ID, ASSET_ID); + contractResult.getContractTransferList().add(tx); + } + + int toSize = toList.size(); + if (toSize > 0) { + for (CoinTo coin : toList) { + coin = toList.get(0); + assetChainId = coin.getAssetsChainId(); + assetId = coin.getAssetsId(); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + assetKey = assetChainId + "_" + assetId; + byte[] recipient = multyAssetMap.get(assetKey); + if (recipient == null) { + continue; + } + ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, recipient, coin.getAmount(), assetChainId, assetId); + contractResult.getContractTransferList().add(tx); + } + } + } + contractResult.setMergedTransferList(contractTransferHandler.contractTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); + contractResult.setMergerdMultyAssetTransferList(contractTransferHandler.contractMultyAssetTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); + } + + private ContractTransferTransaction generateContractTransferTransaction(NulsHash orginTxHash, byte[] contractAddress, byte[] recipient, BigInteger value, int assetChainId, int assetId) throws IOException { + ContractTransferData txData = new ContractTransferData(orginTxHash, contractAddress); + + CoinData coinData = new CoinData(); + ContractBalance balance = tempBalanceManager.getBalance(contractAddress, assetChainId, assetId).getData(); + byte[] nonceBytes = RPCUtil.decode(balance.getNonce()); + + CoinFrom coinFrom = new CoinFrom(contractAddress, assetChainId, assetId, value, nonceBytes, (byte) 0); + coinData.getFrom().add(coinFrom); + CoinTo coinTo = new CoinTo(recipient, assetChainId, assetId, value, 0L); + coinData.getTo().add(coinTo); + + ContractTransferTransaction tx = new ContractTransferTransaction(); + tx.setCoinDataObj(coinData); + tx.setTxDataObj(txData); + tx.setTime(blockTime); + + tx.serializeData(); + NulsHash hash = NulsHash.calcHash(tx.serializeForHash()); + byte[] hashBytes = hash.getBytes(); + byte[] currentNonceBytes = Arrays.copyOfRange(hashBytes, hashBytes.length - 8, hashBytes.length); + balance.setNonce(RPCUtil.encode(currentNonceBytes)); + tx.setHash(hash); + return tx; + } + + private void commitContract(ContractResult contractResult) { + if (!contractResult.isSuccess()) { + return; + } + Object txTrackObj = contractResult.getTxTrack(); + if (txTrackObj != null && txTrackObj instanceof ProgramExecutor) { + ProgramExecutor txTrack = (ProgramExecutor) txTrackObj; + txTrack.commit(); + } + } + + private boolean checkDeleteResult(ContractWrapperTransaction tx, ContractResult contractResult) { + batchInfo.getDeleteSet().add(contract); + makeContractResult(tx, contractResult); + boolean result = false; + if (contractResult.isSuccess()) { + result = true; + commitContract(contractResult); + } + return result; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index f45dcd1f8e..56dfafec3e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -25,10 +25,7 @@ import io.nuls.base.basic.AddressTool; -import io.nuls.base.data.BlockHeader; -import io.nuls.base.data.CoinData; -import io.nuls.base.data.CoinTo; -import io.nuls.base.data.Transaction; +import io.nuls.base.data.*; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.ContractStatus; @@ -40,6 +37,7 @@ import io.nuls.contract.model.dto.ContractConstructorInfoDto; import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; +import io.nuls.contract.model.tx.ContractReturnGasTransaction; import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.rpc.call.BlockCall; @@ -48,7 +46,6 @@ import io.nuls.contract.storage.ContractTokenTransferStorageService; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; -import io.nuls.contract.util.MapUtil; import io.nuls.contract.util.VMContext; import io.nuls.contract.vm.program.*; import io.nuls.core.basic.Result; @@ -56,18 +53,22 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; +import io.nuls.core.model.ByteArrayWrapper; +import io.nuls.core.model.LongUtils; import io.nuls.core.model.StringUtils; import org.bouncycastle.util.Arrays; +import java.io.IOException; import java.math.BigInteger; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractConstant.*; import static io.nuls.contract.constant.ContractErrorCode.ADDRESS_ERROR; import static io.nuls.contract.util.ContractUtil.*; +import static io.nuls.core.constant.TxType.CROSS_CHAIN; +import static io.nuls.core.constant.TxType.DELETE_CONTRACT; import static io.nuls.core.model.FormatValidUtils.validTokenNameOrSymbol; @Component @@ -465,6 +466,22 @@ public void createTempBalanceManagerAndCurrentBlockHeader(int chainId, long numb chain.getBatchInfo().setCurrentBlockHeader(tempHeader); } + public ContractTempBalanceManager getBatchInfoTempBalanceManagerV8(int chainId) { + BatchInfoV8 batchInfo; + if((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { + return null; + } + return batchInfo.getTempBalanceManager(); + } + + public BlockHeader getBatchInfoCurrentBlockHeaderV8(int chainId) { + BatchInfoV8 batchInfo; + if((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { + return null; + } + return batchInfo.getCurrentBlockHeader(); + } + public ContractTempBalanceManager getBatchInfoTempBalanceManager(int chainId) { BatchInfo batchInfo; if((batchInfo = getChain(chainId).getBatchInfo()) == null) { @@ -704,7 +721,9 @@ public ProgramStatus getContractStatus(int chainId, byte[] stateRoot, byte[] con public ContractResult makeFailedContractResult(int chainId, ContractWrapperTransaction tx, CallableResult callableResult, String errorMsg) { ContractResult contractResult = ContractResult.genFailed(tx.getContractData(), errorMsg); makeContractResult(tx, contractResult); - callableResult.putFailed(chainId, contractResult); + if (callableResult != null) { + callableResult.putFailed(chainId, contractResult); + } return contractResult; } @@ -726,4 +745,57 @@ public void extractAssetInfoFromCallTransaction(CallContractData contractData, T } contractData.setMultyAssetValues(list); } + + public ContractReturnGasTransaction makeReturnGasTx(List resultList, long time) throws IOException { + ContractWrapperTransaction wrapperTx; + ContractData contractData; + Map returnMap = new HashMap<>(); + for (ContractResult contractResult : resultList) { + wrapperTx = contractResult.getTx(); + // 终止合约不消耗Gas,跳过 + if (wrapperTx.getType() == DELETE_CONTRACT) { + continue; + } + // add by pierre at 2019-12-03 代币跨链交易的合约调用是系统调用,不计算Gas消耗,跳过 + if (wrapperTx.getType() == CROSS_CHAIN) { + continue; + } + // end code by pierre + contractData = wrapperTx.getContractData(); + long realGasUsed = contractResult.getGasUsed(); + long txGasUsed = contractData.getGasLimit(); + long returnGas; + + BigInteger returnValue; + if (txGasUsed > realGasUsed) { + returnGas = txGasUsed - realGasUsed; + returnValue = BigInteger.valueOf(LongUtils.mul(returnGas, contractData.getPrice())); + + ByteArrayWrapper sender = new ByteArrayWrapper(contractData.getSender()); + BigInteger senderValue = returnMap.get(sender); + if (senderValue == null) { + senderValue = returnValue; + } else { + senderValue = senderValue.add(returnValue); + } + returnMap.put(sender, senderValue); + } + } + if (!returnMap.isEmpty()) { + CoinData coinData = new CoinData(); + List toList = coinData.getTo(); + Set> entries = returnMap.entrySet(); + CoinTo returnCoin; + for (Map.Entry entry : entries) { + returnCoin = new CoinTo(entry.getKey().getBytes(), CHAIN_ID, ASSET_ID, entry.getValue(), 0L); + toList.add(returnCoin); + } + ContractReturnGasTransaction tx = new ContractReturnGasTransaction(); + tx.setTime(time); + tx.setCoinData(coinData.serialize()); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + return tx; + } + return null; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/BatchInfoV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/BatchInfoV8.java new file mode 100644 index 0000000000..055f059004 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/BatchInfoV8.java @@ -0,0 +1,248 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.bo; + +import io.nuls.base.data.BlockHeader; +import io.nuls.contract.enums.BatchInfoStatus; +import io.nuls.contract.manager.ContractTempBalanceManager; +import io.nuls.contract.vm.program.ProgramExecutor; + +import java.util.*; + +/** + * @author: PierreLuo + * @date: 2019-03-16 + */ +public class BatchInfoV8 { + + /** + * 当前批量执行超时时间 - 10秒 + */ + private static final long TIME_OUT = 10L * 1000L; + /** + * 智能合约临时余额 + */ + private ContractTempBalanceManager tempBalanceManager; + + /** + * 当前正在打包的区块头 + */ + private BlockHeader currentBlockHeader; + + /** + * 批量执行器 + */ + private ProgramExecutor batchExecutor; + /** + * 打包的交易计数器 + */ + private int txCounter; + /** + * 打包的区块高度 + */ + private long height; + /** + * 批量开始执行时间 + */ + private long beginTime; + /** + * 停止接收交易开始时间 + */ + private long beforeEndTime; + /** + * 本次批量执行总共消耗的gas + */ + private long gasCostTotal; + /** + * 本次批量执行总交易数 + */ + private int txTotal; + /** + * 0 - 未开始, 1 - 已开始 + */ + private BatchInfoStatus status; + + /** + * 上一区块世界状态根 + */ + private String preStateRoot; + + private Map contractResultMap; + + private Set deleteSet = new HashSet<>(); + private Set createSet = new HashSet<>(); + private List offlineTxHashList; + /** + * 串行标记数字 + */ + private int serialOrder; + + public BatchInfoV8(long height) { + this.txCounter = 0; + this.height = height; + this.gasCostTotal = 0L; + this.txTotal = 0; + this.beginTime = System.currentTimeMillis(); + this.status = BatchInfoStatus.STARTING; + this.contractResultMap = new HashMap<>(); + this.offlineTxHashList = new ArrayList<>(); + this.serialOrder = 0; + } + + public List getOfflineTxHashList() { + return offlineTxHashList; + } + + public void setOfflineTxHashList(List offlineTxHashList) { + this.offlineTxHashList = offlineTxHashList; + } + + public Map getContractResultMap() { + return contractResultMap; + } + + public void setContractResultMap(Map contractResultMap) { + this.contractResultMap = contractResultMap; + } + + public int getAndIncreaseTxCounter() { + return txCounter++; + } + + public static long getTimeOut() { + return TIME_OUT; + } + + public Set getDeleteSet() { + return deleteSet; + } + + public Set getCreateSet() { + return createSet; + } + + public ContractTempBalanceManager getTempBalanceManager() { + return tempBalanceManager; + } + + public void setTempBalanceManager(ContractTempBalanceManager tempBalanceManager) { + this.tempBalanceManager = tempBalanceManager; + } + + public BlockHeader getCurrentBlockHeader() { + return currentBlockHeader; + } + + public void setCurrentBlockHeader(BlockHeader currentBlockHeader) { + this.currentBlockHeader = currentBlockHeader; + } + + public ProgramExecutor getBatchExecutor() { + return batchExecutor; + } + + public void setBatchExecutor(ProgramExecutor batchExecutor) { + this.batchExecutor = batchExecutor; + } + + public int getTxCounter() { + return txCounter; + } + + public void setTxCounter(int txCounter) { + this.txCounter = txCounter; + } + + public long getHeight() { + return height; + } + + public void setHeight(long height) { + this.height = height; + } + + public long getBeginTime() { + return beginTime; + } + + public void setBeginTime(long beginTime) { + this.beginTime = beginTime; + } + + public long getBeforeEndTime() { + return beforeEndTime; + } + + public void setBeforeEndTime(long beforeEndTime) { + this.beforeEndTime = beforeEndTime; + } + + public long getGasCostTotal() { + return gasCostTotal; + } + + public void setGasCostTotal(long gasCostTotal) { + this.gasCostTotal = gasCostTotal; + } + + public int getTxTotal() { + return txTotal; + } + + public void setTxTotal(int txTotal) { + this.txTotal = txTotal; + } + + public BatchInfoStatus getStatus() { + return status; + } + + public void setStatus(BatchInfoStatus status) { + this.status = status; + } + + public String getPreStateRoot() { + return preStateRoot; + } + + public void setPreStateRoot(String preStateRoot) { + this.preStateRoot = preStateRoot; + } + + public void setDeleteSet(Set deleteSet) { + this.deleteSet = deleteSet; + } + + public void setCreateSet(Set createSet) { + this.createSet = createSet; + } + + public int getSerialOrder() { + return serialOrder; + } + + public void setSerialOrder(int serialOrder) { + this.serialOrder = serialOrder; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java index 7cf0b19f92..ab7ad7d770 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java @@ -63,6 +63,15 @@ public class Chain { */ private BatchInfo verifyBatchInfo; + /** + * 打包区块时批量执行信息(版本8及以上) + */ + private BatchInfoV8 batchInfoV8; + /** + * 验证区块时批量执行信息(版本8及以上) + */ + private BatchInfoV8 verifyBatchInfoV8; + /** * 向合约模块注册接口提供给合约来调用 */ @@ -174,6 +183,37 @@ public void setBatchInfo(BatchInfo batchInfo) { Log.error("Setting value error. Unkown blockType! - [{}]", blockType); } + public BatchInfoV8 getBatchInfoV8() { + Integer blockType = currentThreadBlockType.get(); + if(blockType == null) { + return null; + } + if(blockType == BlockType.PACKAGE_BLOCK.type()) { + return batchInfoV8; + } + if(blockType == BlockType.VERIFY_BLOCK.type()) { + return verifyBatchInfoV8; + } + Log.error("Unkown blockType! - [{}]", blockType); + return null; + } + + public void setBatchInfoV8(BatchInfoV8 batchInfo) { + Integer blockType = currentThreadBlockType.get(); + if(blockType == null) { + return; + } + if(blockType == BlockType.PACKAGE_BLOCK.type()) { + this.batchInfoV8 = batchInfo; + return; + } + if(blockType == BlockType.VERIFY_BLOCK.type()) { + this.verifyBatchInfoV8 = batchInfo; + return; + } + Log.error("Setting value error. Unkown blockType! - [{}]", blockType); + } + public Map getCmdRegisterMap() { return cmdRegisterMap; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractWrapperTransaction.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractWrapperTransaction.java index 1c1aa59099..49c94b9e05 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractWrapperTransaction.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractWrapperTransaction.java @@ -46,6 +46,10 @@ public class ContractWrapperTransaction extends Transaction { private BlockHeader blockHeader; + private String uuid; + + private byte[] valueSender; + public ContractWrapperTransaction(Transaction tx, String txHex, ContractData contractData) { this.txHex = txHex; this.contractData = contractData; @@ -105,4 +109,20 @@ public BlockHeader getBlockHeader() { public void setBlockHeader(BlockHeader blockHeader) { this.blockHeader = blockHeader; } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public byte[] getValueSender() { + return valueSender; + } + + public void setValueSender(byte[] valueSender) { + this.valueSender = valueSender; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java index ec7e4b5415..aebc7d6108 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java @@ -156,5 +156,93 @@ public Result onRollback(int chainId, ContractWrapperTransaction tx) { } } + public Result onCommitV8(int chainId, ContractWrapperTransaction tx) { + try { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + byte[] stateRoot = blockHeader.getStateRoot(); + long blockHeight = blockHeader.getHeight(); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + + // 保存代币交易 + ContractData callContractData = tx.getContractData(); + byte[] contractAddress = callContractData.getContractAddress(); + + Result contractAddressInfoPoResult = contractHelper.getContractAddressInfo(chainId, contractAddress); + ContractAddressInfoPo contractAddressInfoPo = contractAddressInfoPoResult.getData(); + contractResult.setNrc20(contractAddressInfoPo.isNrc20()); + tx.setBlockHeight(blockHeight); + // 获取合约当前状态 + ProgramStatus status = contractHelper.getContractStatus(chainId, stateRoot, contractAddress); + boolean isTerminatedContract = ContractUtil.isTerminatedContract(status.ordinal()); + + // 处理合约执行失败 - 没有transferEvent的情况, 直接从数据库中获取, 若是本地创建的交易,获取到修改为失败交易 + if (isTerminatedContract || !contractResult.isSuccess()) { + if (contractAddressInfoPo != null && contractAddressInfoPo.isNrc20() && ContractUtil.isTransferMethod(callContractData.getMethodName())) { + byte[] txHashBytes = tx.getHash().getBytes(); + byte[] infoKey = Arrays.concatenate(callContractData.getSender(), txHashBytes, new VarInt(0).encode()); + Result infoResult = contractTokenTransferStorageService.getTokenTransferInfo(chainId, infoKey); + ContractTokenTransferInfoPo po = infoResult.getData(); + if (po != null) { + po.setStatus((byte) 2); + contractTokenTransferStorageService.saveTokenTransferInfo(chainId, infoKey, po); + + // 刷新token余额 + if (isTerminatedContract) { + // 终止的合约,回滚token余额 + contractHelper.rollbackContractToken(chainId, po); + contractResult.setError(true); + contractResult.setErrorMessage("this contract has been terminated"); + } else { + + if (po.getFrom() != null) { + contractHelper.refreshTokenBalance(chainId, stateRoot, blockHeight, contractAddressInfoPo, AddressTool.getStringAddressByBytes(po.getFrom()), po.getContractAddress()); + } + if (po.getTo() != null) { + contractHelper.refreshTokenBalance(chainId, stateRoot, blockHeight, contractAddressInfoPo, AddressTool.getStringAddressByBytes(po.getTo()), po.getContractAddress()); + } + } + } + } + } + + if (!isTerminatedContract) { + // 处理合约事件 + contractHelper.dealNrc20Events(chainId, stateRoot, tx, contractResult, contractAddressInfoPo); + } + + // 保存合约执行结果 + return contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + } catch (Exception e) { + Log.error("save call contract tx error.", e); + return getFailed(); + } + } + + public Result onRollbackV8(int chainId, ContractWrapperTransaction tx) { + try { + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return ContractUtil.getSuccess(); + } + try { + CallContractData contractData = (CallContractData) tx.getContractData(); + Log.info("rollback call tx, contract data is {}, result is {}", JSONUtils.obj2json(new CallContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace call rollback log, error is {}", e.getMessage()); + } + contractHelper.rollbackNrc20Events(chainId, tx, contractResult); + // 删除合约执行结果 + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } catch (Exception e) { + Log.error("rollback call contract tx error.", e); + return getFailed(); + } + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java index b8982174da..3de8df8701 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java @@ -213,5 +213,133 @@ public Result onRollback(int chainId, ContractWrapperTransaction tx) throws Exce return contractService.deleteContractExecuteResult(chainId, tx.getHash()); } + public Result onCommitV8(int chainId, ContractWrapperTransaction tx) throws Exception { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + long blockHeight = blockHeader.getHeight(); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + Result saveContractExecuteResult = contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + if (saveContractExecuteResult.isFailed()) { + return saveContractExecuteResult; + } + + CreateContractData txData = (CreateContractData) tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + byte[] sender = txData.getSender(); + String contractAddressStr = AddressTool.getStringAddressByBytes(contractAddress); + + // 执行失败的合约直接返回 + if (!contractResult.isSuccess()) { + return getSuccess(); + } + + + NulsHash hash = tx.getHash(); + tx.setBlockHeight(blockHeight); + ContractAddressInfoPo info = new ContractAddressInfoPo(); + info.setContractAddress(contractAddress); + info.setSender(sender); + info.setCreateTxHash(hash.getBytes()); + info.setAlias(txData.getAlias()); + info.setCreateTime(tx.getTime()); + info.setBlockHeight(blockHeight); + + boolean isNrc20Contract = contractResult.isNrc20(); + boolean acceptDirectTransfer = contractResult.isAcceptDirectTransfer(); + info.setAcceptDirectTransfer(acceptDirectTransfer); + info.setNrc20(isNrc20Contract); + info.setTokenType(contractResult.getTokenType()); + // 获取 token tracker + if (isNrc20Contract) { + // NRC20 token 标准方法获取名称数据 + String tokenName = contractResult.getTokenName(); + String tokenSymbol = contractResult.getTokenSymbol(); + int tokenDecimals = contractResult.getTokenDecimals(); + BigInteger tokenTotalSupply = contractResult.getTokenTotalSupply(); + info.setNrc20TokenName(tokenName); + info.setNrc20TokenSymbol(tokenSymbol); + info.setDecimals(tokenDecimals); + info.setTotalSupply(tokenTotalSupply); + byte[] newestStateRoot = blockHeader.getStateRoot(); + //处理NRC20合约事件 + contractHelper.dealNrc20Events(chainId, newestStateRoot, tx, contractResult, info); + // 保存NRC20-token地址 + Result result = contractTokenAddressStorageService.saveTokenAddress(chainId, contractAddress); + if (result.isFailed()) { + return result; + } + // add by pierre at 2019-11-02 调用账本模块,登记资产id,当NRC20合约存在[transferCrossChain]方法时,才登记资产id 需要协议升级 done + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_V250 ) { + List methods = contractHelper.getAllMethods(chainId, txData.getCode()); + boolean isNewNrc20 = false; + for(ProgramMethod method : methods) { + if(ContractConstant.CROSS_CHAIN_NRC20_CONTRACT_TRANSFER_OUT_METHOD_NAME.equals(method.getName()) && + ContractConstant.CROSS_CHAIN_NRC20_CONTRACT_TRANSFER_OUT_METHOD_DESC.equals(method.getDesc())) { + isNewNrc20 = true; + break; + } + } + if(isNewNrc20) { + Log.info("CROSS-NRC20-TOKEN contract [{}] 向账本注册合约资产", contractAddressStr); + Map resultMap = LedgerCall.commitNRC20Assets(chainId, tokenName, tokenSymbol, (short) tokenDecimals, tokenTotalSupply, contractAddressStr); + if(resultMap != null) { + // 缓存合约地址和合约资产ID + int assetId = Integer.parseInt(resultMap.get("assetId").toString()); + Chain chain = contractHelper.getChain(chainId); + Map tokenAssetsInfoMap = chain.getTokenAssetsInfoMap(); + Map tokenAssetsContractAddressInfoMap = chain.getTokenAssetsContractAddressInfoMap(); + tokenAssetsInfoMap.put(contractAddressStr, new ContractTokenAssetsInfo(chainId, assetId)); + tokenAssetsContractAddressInfoMap.put(chainId + "-" + assetId, contractAddressStr); + } + } + } + // end code by pierre + } + return contractAddressStorageService.saveContractAddress(chainId, contractAddress, info); + } + + public Result onRollbackV8(int chainId, ContractWrapperTransaction tx) throws Exception { + ContractData txData = tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return Result.getSuccess(null); + } + try { + CreateContractData contractData = (CreateContractData) tx.getContractData(); + Log.info("rollback create tx, contract data is {}, result is {}", JSONUtils.obj2json(new CreateContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace create rollback log, error is {}", e.getMessage()); + } + // add by pierre at 2019-11-02 调用账本模块,回滚已登记的资产id 需要协议升级 done + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_V250 && contractResult.isNrc20()) { + LedgerCall.rollBackNRC20Assets(chainId, AddressTool.getStringAddressByBytes(contractAddress)); + // 清理缓存 + Chain chain = contractHelper.getChain(chainId); + Map tokenAssetsInfoMap = chain.getTokenAssetsInfoMap(); + ContractTokenAssetsInfo tokenAssetsInfo = tokenAssetsInfoMap.remove(contractAddress); + if(tokenAssetsInfo != null) { + Map tokenAssetsContractAddressInfoMap = chain.getTokenAssetsContractAddressInfoMap(); + tokenAssetsContractAddressInfoMap.remove(chainId + "-" + tokenAssetsInfo.getAssetId()); + } + } + // end code by pierre + contractHelper.rollbackNrc20Events(chainId, tx, contractResult); + Result result = contractAddressStorageService.deleteContractAddress(chainId, contractAddress); + if (result.isFailed()) { + return result; + } + result = contractTokenAddressStorageService.deleteTokenAddress(chainId, contractAddress); + if (result.isFailed()) { + return result; + } + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/DeleteContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/DeleteContractTxProcessor.java index 954060f8ce..0b800d2db8 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/DeleteContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/DeleteContractTxProcessor.java @@ -60,4 +60,17 @@ public Result onRollback(int chainId, ContractWrapperTransaction tx) { return contractService.deleteContractExecuteResult(chainId, tx.getHash()); } + public Result onCommitV8(int chainId, ContractWrapperTransaction tx) { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + long blockHeight = blockHeader.getHeight(); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + return contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + } + + public Result onRollbackV8(int chainId, ContractWrapperTransaction tx) { + Log.info("rollback delete tx, hash is {}", tx.getHash().toString()); + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java index 6ca06f8ef2..9c53ce90b7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java @@ -108,8 +108,13 @@ public Response batchBegin(Map params) { Long blockTime = Long.parseLong(params.get("blockTime").toString()); String packingAddress = (String) params.get("packingAddress"); String preStateRoot = (String) params.get("preStateRoot"); - Result result = contractService.begin(chainId, blockHeight, blockTime, packingAddress, preStateRoot); - return success(); + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + Result result = contractService.beginV8(chainId, blockHeight, blockTime, packingAddress, preStateRoot); + return success(result.getData()); + } else { + contractService.begin(chainId, blockHeight, blockTime, packingAddress, preStateRoot); + return success(); + } } catch (Exception e) { Log.error(e); return failed(e.getMessage()); @@ -134,17 +139,25 @@ public Response invokeContractOneByOne(Map params) { tx.parse(RPCUtil.decode(txData), 0); String hash = tx.getHash().toHex(); Map dealResult = new HashMap<>(2); - if(!contractHelper.getChain(chainId).getBatchInfo().checkGasCostTotal(hash)) { - Log.warn("Exceed tx count [600] or gas limit of block [13,000,000 gas], the contract transaction [{}] revert to package queue.", hash); - dealResult.put(RPC_RESULT_KEY, false); + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + Result result = contractService.invokeContractOneByOneV8(chainId, tx); + if (result.isFailed()) { + return wrapperFailed(result); + } + return success(result.getData()); + } else { + if(!contractHelper.getChain(chainId).getBatchInfo().checkGasCostTotal(hash)) { + Log.warn("Exceed tx count [600] or gas limit of block [13,000,000 gas], the contract transaction [{}] revert to package queue.", hash); + dealResult.put(RPC_RESULT_KEY, false); + return success(dealResult); + } + Result result = contractService.invokeContractOneByOne(chainId, tx); + if (result.isFailed()) { + return wrapperFailed(result); + } + dealResult.put(RPC_RESULT_KEY, true); return success(dealResult); } - Result result = contractService.invokeContractOneByOne(chainId, tx); - if (result.isFailed()) { - return wrapperFailed(result); - } - dealResult.put(RPC_RESULT_KEY, true); - return success(dealResult); } catch (Exception e) { Log.error(e); return failed(e.getMessage()); @@ -163,6 +176,10 @@ public Response batchBeforeEnd(Map params) { Integer chainId = (Integer) params.get("chainId"); Integer blockType = (Integer) params.get("blockType"); ChainManager.chainHandle(chainId, blockType); + // 版本8及以上,跳过处理 + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + return success(); + } Long blockHeight = Long.parseLong(params.get("blockHeight").toString()); Result result = contractService.beforeEnd(chainId, blockHeight); Log.info("[Before End Result] contract batch, result is {}", result.toString()); @@ -183,7 +200,7 @@ public Response batchBeforeEnd(Map params) { }) @ResponseData(name = "返回值", description = "返回一个Map对象,包含两个key", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "stateRoot", description = "当前stateRoot"), - @Key(name = "txList", valueType = List.class, valueElement = String.class, description = "合约新生成的交易序列化字符串列表(可能有合约转账、合约共识、合约返回GAS)") + @Key(name = "txList", valueType = List.class, valueElement = String.class, description = "合约新生成的交易序列化字符串列表(可能有合约转账、合约共识、合约返回GAS), 版本8及以上只返回合约返回GAS交易") })) public Response batchEnd(Map params) { try { @@ -192,6 +209,13 @@ public Response batchEnd(Map params) { Long blockHeight = Long.parseLong(params.get("blockHeight").toString()); Log.info("[End Contract Batch] contract batch request start, height is {}", blockHeight); + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + Result result = contractService.endV8(chainId, blockHeight); + if (result.isFailed()) { + return wrapperFailed(result); + } + return success(result.getData()); + } Result result = contractService.end(chainId, blockHeight); if (result.isFailed()) { return wrapperFailed(result); @@ -221,7 +245,7 @@ public Response batchEnd(Map params) { }) @ResponseData(name = "返回值", description = "返回一个Map对象,包含两个key", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "stateRoot", description = "当前stateRoot"), - @Key(name = "txList", valueType = List.class, valueElement = String.class, description = "合约新生成的交易序列化字符串列表(可能有合约转账、合约共识、合约返回GAS)") + @Key(name = "txList", valueType = List.class, valueElement = String.class, description = "合约新生成的交易序列化字符串列表(可能有合约转账、合约共识、合约返回GAS), 版本8及以上只返回合约返回GAS交易") })) public Response packageBatchEnd(Map params) { try { @@ -230,6 +254,15 @@ public Response packageBatchEnd(Map params) { Long blockHeight = Long.parseLong(params.get("blockHeight").toString()); Log.info("[End Package Contract Batch] contract batch request start, height is {}", blockHeight); + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + Result result = contractService.packageEndV8(chainId, blockHeight); + if (result.isFailed()) { + return wrapperFailed(result); + } + Log.info("[End Package Contract Batch] packaging blockHeight is [{}], packaging StateRoot is [{}]", blockHeight, ((Map)result.getData()).get("stateRoot")); + return success(result.getData()); + } + Result result = contractService.packageEnd(chainId, blockHeight); if (result.isFailed()) { return wrapperFailed(result); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java index d014744755..a8bd00795e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java @@ -31,8 +31,6 @@ import io.nuls.core.basic.Result; import io.nuls.core.exception.NulsException; -import java.util.List; - /** * @author: PierreLuo * @date: 2018/11/19 @@ -41,17 +39,21 @@ public interface ContractService { Result begin(int chainId, long blockHeight, long blockTime, String packingAddress, String preStateRoot); + Result beginV8(int chainId, long blockHeight, long blockTime, String packingAddress, String preStateRoot); + Result beforeEnd(int chainId, long blockHeight); Result end(int chainId, long blockHeight); + Result endV8(int chainId, long blockHeight); + Result packageEnd(int chainId, long blockHeight); - Result invokeContractOneByOne(int chainId, ContractTempTransaction tx); + Result packageEndV8(int chainId, long blockHeight); - Result commitProcessor(int chainId, List txDataList, String blockHeaderData); + Result invokeContractOneByOne(int chainId, ContractTempTransaction tx); - Result rollbackProcessor(int chainId, List txDataList, String blockHeaderData); + Result invokeContractOneByOneV8(int chainId, ContractTempTransaction tx); Result saveContractExecuteResult(int chainId, NulsHash hash, ContractResult contractResult); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index ed56464d08..f74153b032 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -28,36 +28,37 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.contract.callable.ContractTxCallableV8; import io.nuls.contract.constant.ContractErrorCode; +import io.nuls.contract.enums.CmdRegisterMode; import io.nuls.contract.helper.ContractConflictChecker; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.manager.ContractTempBalanceManager; import io.nuls.contract.manager.ContractTxProcessorManager; import io.nuls.contract.manager.ContractTxValidatorManager; import io.nuls.contract.model.bo.*; import io.nuls.contract.model.dto.ContractPackageDto; import io.nuls.contract.model.po.ContractOfflineTxHashPo; -import io.nuls.contract.model.tx.CallContractTransaction; -import io.nuls.contract.model.tx.CreateContractTransaction; -import io.nuls.contract.model.tx.DeleteContractTransaction; -import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.model.tx.*; import io.nuls.contract.model.txdata.ContractData; -import io.nuls.contract.model.txdata.CreateContractData; -import io.nuls.contract.model.txdata.DeleteContractData; import io.nuls.contract.service.*; import io.nuls.contract.storage.ContractExecuteResultStorageService; import io.nuls.contract.storage.ContractOfflineTxHashListStorageService; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.vm.program.ProgramExecutor; +import io.nuls.contract.vm.program.ProgramInvokeRegisterCmd; +import io.nuls.contract.vm.program.ProgramNewTx; import io.nuls.core.basic.Result; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.model.StringUtils; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.io.IOException; +import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -125,6 +126,31 @@ public Result begin(int chainId, long blockHeight, long blockTime, String packin return getSuccess(); } + @Override + public Result beginV8(int chainId, long blockHeight, long blockTime, String packingAddress, String preStateRoot) { + + Log.info("[Begin contract batch] packaging blockHeight is [{}], packaging address is [{}], preStateRoot is [{}]", blockHeight, packingAddress, preStateRoot); + Chain chain = contractHelper.getChain(chainId); + BatchInfoV8 batchInfo = new BatchInfoV8(blockHeight); + // 初始化批量执行基本数据 + chain.setBatchInfoV8(batchInfo); + // 准备临时余额和当前区块头 + ContractTempBalanceManager tempBalanceManager = ContractTempBalanceManager.newInstance(chainId); + BlockHeader tempHeader = new BlockHeader(); + tempHeader.setHeight(blockHeight); + tempHeader.setTime(blockTime); + tempHeader.setPackingAddress(AddressTool.getAddress(packingAddress)); + batchInfo.setTempBalanceManager(tempBalanceManager); + batchInfo.setCurrentBlockHeader(tempHeader); + // 准备批量执行器 + ProgramExecutor batchExecutor = contractExecutor.createBatchExecute(chainId, RPCUtil.decode(preStateRoot)); + batchInfo.setBatchExecutor(batchExecutor); + batchInfo.setPreStateRoot(preStateRoot); + Map result = new HashMap<>(); + return getSuccess().setData(result); + } + + private Result validContractTx(int chainId, Transaction tx) { try { Result result; @@ -157,9 +183,7 @@ private Result validContractTx(int chainId, Transaction tx) { @Override public Result invokeContractOneByOne(int chainId, ContractTempTransaction tx) { try { -// if (Log.isDebugEnabled()) { Log.info("[Invoke Contract] TxType is [{}], hash is [{}]", tx.getType(), tx.getHash().toString()); -// } tx.setChainId(chainId); ContractWrapperTransaction wrapperTx = ContractUtil.parseContractTransaction(tx, chainManager); // add by pierre at 2019-10-20 @@ -200,6 +224,98 @@ public Result invokeContractOneByOne(int chainId, ContractTempTransaction tx) { } } + @Override + public Result invokeContractOneByOneV8(int chainId, ContractTempTransaction tx) { + try { + Log.info("[Invoke Contract] TxType is [{}], hash is [{}]", tx.getType(), tx.getHash().toString()); + tx.setChainId(chainId); + ContractWrapperTransaction wrapperTx = ContractUtil.parseContractTransaction(tx, chainManager); + // add by pierre at 2019-10-20 + if (wrapperTx == null) { + return getSuccess(); + } + // end code by pierre + Chain chain = contractHelper.getChain(chainId); + BatchInfoV8 batchInfo = chain.getBatchInfoV8(); + wrapperTx.setOrder(batchInfo.getAndIncreaseTxCounter()); + // 验证合约交易 + Result validResult = this.validContractTx(chainId, tx); + if (validResult.isFailed()) { + return validResult; + } + String preStateRoot = batchInfo.getPreStateRoot(); + ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); + // 执行合约 + Result result = callTx(chainId, batchExecutor, wrapperTx, preStateRoot, batchInfo); + return result; + } catch (NulsException e) { + Log.error(e); + return Result.getFailed(e.getErrorCode() == null ? FAILED : e.getErrorCode()); + } + } + + protected Result callTx(int chainId, ProgramExecutor batchExecutor, ContractWrapperTransaction tx, String preStateRoot, BatchInfoV8 batchInfo) { + try { + ContractData contractData = tx.getContractData(); + Integer blockType = Chain.currentThreadBlockType(); + byte[] contractAddressBytes = contractData.getContractAddress(); + String contract = AddressTool.getStringAddressByBytes(contractAddressBytes); + BlockHeader currentBlockHeader = batchInfo.getCurrentBlockHeader(); + long blockTime = currentBlockHeader.getTime(); + long lastestHeight = currentBlockHeader.getHeight() - 1; + ContractTxCallableV8 txCallable = new ContractTxCallableV8(chainId, blockType, blockTime, batchExecutor, contract, tx, lastestHeight, preStateRoot); + ContractResult contractResult = txCallable.call(); + batchInfo.getContractResultMap().put(tx.getHash().toString(), contractResult); + // 提取需要返回的结果数据 + Map result = this.extractDataFromContractResult(contractResult); + batchInfo.getOfflineTxHashList().addAll((List)result.get("txHashList")); + return getSuccess().setData(result); + } catch (Exception e) { + Log.error(e); + return getFailed(); + } + } + + protected Map extractDataFromContractResult(ContractResult contractResult) throws IOException { + List offlineTxHashList = new ArrayList<>(); + List resultTxList = new ArrayList<>(); + List contractTransferList; + List invokeRegisterCmds; + String newTx, newTxHash; + ProgramNewTx programNewTx; + // [外部模块调用生成的交易] + invokeRegisterCmds = contractResult.getInvokeRegisterCmds(); + for (ProgramInvokeRegisterCmd invokeRegisterCmd : invokeRegisterCmds) { + if (!invokeRegisterCmd.getCmdRegisterMode().equals(CmdRegisterMode.NEW_TX)) { + continue; + } + programNewTx = invokeRegisterCmd.getProgramNewTx(); + if (StringUtils.isNotBlank(newTxHash = programNewTx.getTxHash())) { + offlineTxHashList.add(RPCUtil.decode(newTxHash)); + } + if (StringUtils.isNotBlank(newTx = programNewTx.getTxString())) { + resultTxList.add(newTx); + } + } + // [合约内部转账交易] + contractTransferList = contractResult.getContractTransferList(); + for(Transaction tx : contractTransferList) { + newTx = RPCUtil.encode(tx.serialize()); + contractResult.getContractTransferTxStringList().add(newTx); + resultTxList.add(newTx); + offlineTxHashList.add(tx.getHash().getBytes()); + } + + Map result = new HashMap<>(); + result.put("success", contractResult.isSuccess()); + result.put("gasUsed", contractResult.getGasUsed()); + result.put("txList", resultTxList); + result.put("txHashList", offlineTxHashList); + return result; + } + + + @Override public Result beforeEnd(int chainId, long blockHeight) { try { @@ -333,95 +449,34 @@ public Result packageEnd(int chainId, long blockHeight) { } @Override - public Result commitProcessor(int chainId, List txDataList, String blockHeaderHex) { + public Result endV8(int chainId, long blockHeight) { try { - ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); - if (contractPackageDto != null) { - List offlineTxHashList = contractPackageDto.getOfflineTxHashList(); - if (offlineTxHashList != null && !offlineTxHashList.isEmpty()) { - BlockHeader header = new BlockHeader(); - header.parse(RPCUtil.decode(blockHeaderHex), 0); - // 保存智能合约链下交易hash - contractOfflineTxHashListStorageService.saveOfflineTxHashList(chainId, header.getHash().getBytes(), new ContractOfflineTxHashPo(offlineTxHashList)); - } + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + BlockHeader currentBlockHeader = batchInfo.getCurrentBlockHeader(); + ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); + Result batchExecuteResult = contractExecutor.commitBatchExecute(batchExecutor); + byte[] stateRoot = batchExecuteResult.getData(); + currentBlockHeader.setStateRoot(stateRoot); - Map contractResultMap = contractPackageDto.getContractResultMap(); - ContractResult contractResult; - ContractWrapperTransaction wrapperTx; - if (Log.isDebugEnabled()) { - Log.debug("contract execute txDataSize is {}, commit txDataSize is {}", contractResultMap.keySet().size(), txDataList.size()); - } - for (String txData : txDataList) { - contractResult = contractResultMap.get(txData); - if (contractResult == null) { - Log.warn("empty contract result with txData: {}", txData); - continue; - } - wrapperTx = contractResult.getTx(); - wrapperTx.setContractResult(contractResult); - switch (wrapperTx.getType()) { - case CREATE_CONTRACT: - contractTxProcessorManager.createCommit(chainId, wrapperTx); - break; - case CALL_CONTRACT: - contractTxProcessorManager.callCommit(chainId, wrapperTx); - break; - case DELETE_CONTRACT: - contractTxProcessorManager.deleteCommit(chainId, wrapperTx); - break; - default: - break; - } - } + List txList = new ArrayList<>(); + // 生成退还剩余Gas的交易 + ContractReturnGasTransaction returnGasTx = contractHelper.makeReturnGasTx(new ArrayList<>(batchInfo.getContractResultMap().values()), batchInfo.getCurrentBlockHeader().getTime()); + if (returnGasTx != null) { + txList.add(RPCUtil.encode(returnGasTx.serialize())); } - - return getSuccess(); + Map result = new HashMap<>(); + result.put("stateRoot", HexUtil.encode(stateRoot)); + result.put("txList", txList); + return getSuccess().setData(result); } catch (Exception e) { Log.error(e); - return getFailed(); - } finally { - // 移除临时余额, 临时区块头等当前批次执行数据 - Chain chain = contractHelper.getChain(chainId); - chain.setBatchInfo(null); + return getFailed().setMsg(e.getMessage()); } } @Override - public Result rollbackProcessor(int chainId, List txDataList, String blockHeaderHex) { - try { - Transaction tx; - for (String txData : txDataList) { - tx = new Transaction(); - tx.parse(RPCUtil.decode(txData), 0); - switch (tx.getType()) { - case CREATE_CONTRACT: - CreateContractData create = new CreateContractData(); - create.parse(tx.getTxData(), 0); - contractTxProcessorManager.createRollback(chainId, new ContractWrapperTransaction(tx, create)); - break; - case CALL_CONTRACT: - CallContractData call = new CallContractData(); - call.parse(tx.getTxData(), 0); - contractTxProcessorManager.callRollback(chainId, new ContractWrapperTransaction(tx, call)); - break; - case DELETE_CONTRACT: - DeleteContractData delete = new DeleteContractData(); - delete.parse(tx.getTxData(), 0); - contractTxProcessorManager.deleteRollback(chainId, new ContractWrapperTransaction(tx, delete)); - break; - default: - break; - } - } - - return getSuccess(); - } catch (NulsException e) { - Log.error(e); - return Result.getFailed(e.getErrorCode() == null ? FAILED : e.getErrorCode()); - } catch (Exception e) { - Log.error(e); - return getFailed().setMsg(e.getMessage()); - } + public Result packageEndV8(int chainId, long blockHeight) { + return this.endV8(chainId, blockHeight); } @Override diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionCommitAdvice.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionCommitAdvice.java index 3cb23a74b9..2d986c086b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionCommitAdvice.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionCommitAdvice.java @@ -31,11 +31,13 @@ import io.nuls.contract.enums.BlockType; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; import io.nuls.contract.model.bo.Chain; import io.nuls.contract.model.dto.ContractPackageDto; import io.nuls.contract.model.po.ContractOfflineTxHashPo; import io.nuls.contract.storage.ContractOfflineTxHashListStorageService; import io.nuls.contract.tx.v1.CallContractProcessor; +import io.nuls.contract.tx.v8.CallContractProcessorV8; import io.nuls.contract.util.Log; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; @@ -57,25 +59,45 @@ public class TransactionCommitAdvice implements CommonAdvice { private ContractOfflineTxHashListStorageService contractOfflineTxHashListStorageService; @Autowired private CallContractProcessor callContractProcessor; + @Autowired + private CallContractProcessorV8 callContractProcessorV8; @Override public void begin(int chainId, List txList, BlockHeader header) { try { ChainManager.chainHandle(chainId, BlockType.VERIFY_BLOCK.type()); - ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); - if (contractPackageDto != null) { - Log.info("contract execute txDataSize is {}, commit txDataSize is {}", contractPackageDto.getContractResultMap().keySet().size(), txList.size()); + Short currentVersion = ProtocolGroupManager.getCurrentVersion(chainId); + if(currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Log.info("contract execute txDataSize is {}, commit txDataSize is {}", batchInfo.getContractResultMap().size(), txList.size()); + + List offlineTxHashList = batchInfo.getOfflineTxHashList(); + if(offlineTxHashList != null && !offlineTxHashList.isEmpty()) { + // 保存智能合约链下交易hash + contractOfflineTxHashListStorageService.saveOfflineTxHashList(chainId, header.getHash().getBytes(), new ContractOfflineTxHashPo(offlineTxHashList)); + } + } + } else { + ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); + if (contractPackageDto != null) { + Log.info("contract execute txDataSize is {}, commit txDataSize is {}", contractPackageDto.getContractResultMap().keySet().size(), txList.size()); - List offlineTxHashList = contractPackageDto.getOfflineTxHashList(); - if(offlineTxHashList != null && !offlineTxHashList.isEmpty()) { - // 保存智能合约链下交易hash - contractOfflineTxHashListStorageService.saveOfflineTxHashList(chainId, header.getHash().getBytes(), new ContractOfflineTxHashPo(contractPackageDto.getOfflineTxHashList())); + List offlineTxHashList = contractPackageDto.getOfflineTxHashList(); + if(offlineTxHashList != null && !offlineTxHashList.isEmpty()) { + // 保存智能合约链下交易hash + contractOfflineTxHashListStorageService.saveOfflineTxHashList(chainId, header.getHash().getBytes(), new ContractOfflineTxHashPo(contractPackageDto.getOfflineTxHashList())); + } } } // add by pierre at 2019-12-01 处理type10交易的业务提交, 需要协议升级 done - if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_V250) { + if(currentVersion >= ContractContext.UPDATE_VERSION_V250) { List crossTxList = txList.stream().filter(tx -> tx.getType() == TxType.CROSS_CHAIN).collect(Collectors.toList()); - callContractProcessor.commit(chainId, crossTxList, header); + if(currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + callContractProcessorV8.commit(chainId, crossTxList, header); + } else { + callContractProcessor.commit(chainId, crossTxList, header); + } } // end code by pierre } catch (Exception e) { @@ -87,6 +109,10 @@ public void begin(int chainId, List txList, BlockHeader header) { public void end(int chainId, List txList, BlockHeader blockHeader) { // 移除临时余额, 临时区块头等当前批次执行数据 Chain chain = contractHelper.getChain(chainId); - chain.setBatchInfo(null); + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + chain.setBatchInfoV8(null); + } else { + chain.setBatchInfo(null); + } } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionRollbackAdvice.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionRollbackAdvice.java index 5a67f21ed1..780e9c8679 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionRollbackAdvice.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/common/TransactionRollbackAdvice.java @@ -33,6 +33,7 @@ import io.nuls.contract.manager.ChainManager; import io.nuls.contract.storage.ContractOfflineTxHashListStorageService; import io.nuls.contract.tx.v1.CallContractProcessor; +import io.nuls.contract.tx.v8.CallContractProcessorV8; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; @@ -53,17 +54,24 @@ public class TransactionRollbackAdvice implements CommonAdvice { private ContractOfflineTxHashListStorageService contractOfflineTxHashListStorageService; @Autowired private CallContractProcessor callContractProcessor; + @Autowired + private CallContractProcessorV8 callContractProcessorV8; @Override public void begin(int chainId, List txList, BlockHeader header) { try { ChainManager.chainHandle(chainId, BlockType.VERIFY_BLOCK.type()); + Short currentVersion = ProtocolGroupManager.getCurrentVersion(chainId); // 删除智能合约链下交易hash contractOfflineTxHashListStorageService.deleteOfflineTxHashList(chainId, header.getHash().getBytes()); // add by pierre at 2019-12-01 处理type10交易的业务回滚, 需要协议升级 done - if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_V250) { + if(currentVersion >= ContractContext.UPDATE_VERSION_V250) { List crossTxList = txList.stream().filter(tx -> tx.getType() == TxType.CROSS_CHAIN).collect(Collectors.toList()); - callContractProcessor.rollback(chainId, crossTxList, header); + if(currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + callContractProcessorV8.rollback(chainId, crossTxList, header); + } else { + callContractProcessor.rollback(chainId, crossTxList, header); + } } // end code by pierre } catch (Exception e) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java index 68ce6ed7c5..f4b556238e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CallContractProcessorV8.java @@ -7,6 +7,7 @@ import io.nuls.contract.config.ContractContext; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; import io.nuls.contract.model.bo.ContractResult; import io.nuls.contract.model.bo.ContractWrapperTransaction; import io.nuls.contract.model.dto.ContractPackageDto; @@ -74,9 +75,9 @@ public Map validate(int chainId, List txs, Map txs, BlockHeader header) { try { - ContractPackageDto contractPackageDto = contractHelper.getChain(chainId).getBatchInfo().getContractPackageDto(); - if (contractPackageDto != null) { - Map contractResultMap = contractPackageDto.getContractResultMap(); + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); ContractResult contractResult; ContractWrapperTransaction wrapperTx; String txHash; @@ -89,7 +90,7 @@ public boolean commit(int chainId, List txs, BlockHeader header) { } wrapperTx = contractResult.getTx(); wrapperTx.setContractResult(contractResult); - callContractTxProcessor.onCommit(chainId, wrapperTx); + callContractTxProcessor.onCommitV8(chainId, wrapperTx); } } @@ -119,7 +120,7 @@ public boolean rollback(int chainId, List txs, BlockHeader blockHea call = new CallContractData(); call.parse(tx.getTxData(), 0); } - callContractTxProcessor.onRollback(chainId, new ContractWrapperTransaction(tx, call)); + callContractTxProcessor.onRollbackV8(chainId, new ContractWrapperTransaction(tx, call)); } return true; } catch (NulsException e) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CreateContractProcessorV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CreateContractProcessorV8.java new file mode 100644 index 0000000000..5c22ce1235 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/CreateContractProcessorV8.java @@ -0,0 +1,115 @@ +package io.nuls.contract.tx.v8; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.dto.ContractPackageDto; +import io.nuls.contract.model.tx.CreateContractTransaction; +import io.nuls.contract.model.txdata.CreateContractData; +import io.nuls.contract.processor.CreateContractTxProcessor; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CreateContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("CreateContractProcessorV8") +public class CreateContractProcessorV8 implements TransactionProcessor { + + @Autowired + private CreateContractTxProcessor createContractTxProcessor; + @Autowired + private CreateContractTxValidator createContractTxValidator; + @Autowired + private ContractHelper contractHelper; + + @Override + public int getType() { + return TxType.CREATE_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CreateContractTransaction createTx; + for(Transaction tx : txs) { + createTx = new CreateContractTransaction(); + createTx.copyTx(tx); + try { + Result validate = createContractTxValidator.validate(chainId, createTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}", txHash); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + createContractTxProcessor.onCommitV8(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CreateContractData create; + for (Transaction tx : txs) { + create = new CreateContractData(); + create.parse(tx.getTxData(), 0); + createContractTxProcessor.onRollbackV8(chainId, new ContractWrapperTransaction(tx, create)); + } + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/DeleteContractProcessorV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/DeleteContractProcessorV8.java new file mode 100644 index 0000000000..0f8c854dce --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v8/DeleteContractProcessorV8.java @@ -0,0 +1,115 @@ +package io.nuls.contract.tx.v8; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.dto.ContractPackageDto; +import io.nuls.contract.model.tx.DeleteContractTransaction; +import io.nuls.contract.model.txdata.DeleteContractData; +import io.nuls.contract.processor.DeleteContractTxProcessor; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.DeleteContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("DeleteContractProcessorV8") +public class DeleteContractProcessorV8 implements TransactionProcessor { + + @Autowired + private DeleteContractTxProcessor deleteContractTxProcessor; + @Autowired + private DeleteContractTxValidator deleteContractTxValidator; + @Autowired + private ContractHelper contractHelper; + + @Override + public int getType() { + return TxType.DELETE_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + DeleteContractTransaction deleteTx; + for(Transaction tx : txs) { + deleteTx = new DeleteContractTransaction(); + deleteTx.copyTx(tx); + try { + Result validate = deleteContractTxValidator.validate(chainId, deleteTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}", txHash); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + deleteContractTxProcessor.onCommitV8(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + DeleteContractData delete; + for (Transaction tx : txs) { + delete = new DeleteContractData(); + delete.parse(tx.getTxData(), 0); + deleteContractTxProcessor.onRollbackV8(chainId, new ContractWrapperTransaction(tx, delete)); + } + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/resources/protocol-config.json b/module/nuls-smart-contract/src/main/resources/protocol-config.json index b08e6286a0..dbee5ea107 100644 --- a/module/nuls-smart-contract/src/main/resources/protocol-config.json +++ b/module/nuls-smart-contract/src/main/resources/protocol-config.json @@ -3,6 +3,14 @@ "version": "8", "extend": "4", "validTxs": [ + { + "type": "15", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "CreateContractProcessorV8" + }, { "type": "16", "systemTx": false, @@ -10,6 +18,14 @@ "verifySignature": true, "verifyFee": true, "handler": "CallContractProcessorV8" + }, + { + "type": "17", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "DeleteContractProcessorV8" } ], "validMsgs": [], From 06d033fa077599451ad28f6f88114771125574c8 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 4 Dec 2020 17:35:31 +0800 Subject: [PATCH 210/304] update package logic of contract transactions --- .gitignore | 7 +- .../service/impl/ContractServiceImpl.java | 8 + .../nuls/transaction/constant/TxContext.java | 2 + .../nuls/transaction/manager/TxManager.java | 8 + .../transaction/rpc/call/ContractCall.java | 43 +- .../transaction/rpc/cmd/TransactionCmd.java | 17 +- .../nuls/transaction/service/TxService.java | 5 + .../service/impl/TxServiceImpl.java | 881 ++++++++++++++++++ 8 files changed, 965 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 1cabefadd9..bd9502f93b 100644 --- a/.gitignore +++ b/.gitignore @@ -116,7 +116,7 @@ buildNumber.properties # log logs/ /data-prod/ -/data/ +/data*/ !tools/nuls-tools/base-tools/src/main/java/io/nuls/base/data keystore/ Modules/ @@ -124,4 +124,7 @@ NULS-Wallet-linux64-beta* NULS_Wallet* config_tmp/ NULS-Wallet-linux64-alpha* -.package-version \ No newline at end of file +.package-version +genesis-block_*.json +module_*.ncf +nuls-v2.zip diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index f74153b032..201b434b60 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -247,6 +247,14 @@ public Result invokeContractOneByOneV8(int chainId, ContractTempTransaction tx) ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); // 执行合约 Result result = callTx(chainId, batchExecutor, wrapperTx, preStateRoot, batchInfo); + if (result.isSuccess()) { + Map _result = new HashMap<>(); + Map map = (Map) result.getData(); + _result.put("success", map.get("success")); + _result.put("gasUsed", map.get("gasUsed")); + _result.put("txList", map.get("txList")); + return result.setData(_result); + } return result; } catch (NulsException e) { Log.error(e); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java index f1f6f7ef03..c6604b8f28 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java @@ -29,4 +29,6 @@ */ public class TxContext { public static short UPDATE_VERSION_V250 = 5; + + public static short UPDATE_VERSION_CONTRACT_ASSET = 8; } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/manager/TxManager.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/manager/TxManager.java index 17ada5cdb0..80a8913a1f 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/manager/TxManager.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/manager/TxManager.java @@ -152,4 +152,12 @@ public static boolean isSystemSmartContract(TxRegister txRegister){ public static boolean isCrossTx(int txType) { return txType == TxType.CROSS_CHAIN || txType == TxType.CONTRACT_TOKEN_CROSS_TRANSFER; } + + public static boolean isGasCostContractTransaction(int txType) { + if(txType == TxType.CREATE_CONTRACT + || txType == TxType.CALL_CONTRACT) { + return true; + } + return false; + } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java index 0a9ac471f9..624e984b88 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java @@ -78,12 +78,16 @@ public static boolean contractBatchBegin(Chain chain, long blockHeight, long blo * @throws NulsException */ public static boolean invokeContract(Chain chain, String tx, int blockType) throws NulsException { + return invokeContract(chain, tx, blockType, null); + } + + public static boolean invokeContract(Chain chain, String tx, int blockType, Long timeOut) throws NulsException { try { Map params = new HashMap(TxConstant.INIT_CAPACITY_8); params.put(Constants.CHAIN_ID, chain.getChainId()); params.put("tx", tx); params.put("blockType", blockType); - HashMap result = (HashMap) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_invoke_contract", params); + HashMap result = (HashMap) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_invoke_contract", params, timeOut); Boolean value = (Boolean) result.get("value"); if(null == value){ chain.getLogger().error("call sc_invoke_contract response value is null, error:{}", @@ -97,6 +101,37 @@ public static boolean invokeContract(Chain chain, String tx, int blockType) thro } } + /** + * 调用智能合约, 合约执行成功与否,不影响交易的打包 + * @param chain + * @param tx + * @param blockType 该调用的处理模式, 打包:0, 验证区块:1 + * @return + * @throws NulsException + */ + public static Map invokeContractV8(Chain chain, String tx, int blockType) throws NulsException { + return invokeContractV8(chain, tx, blockType, null); + } + + public static Map invokeContractV8(Chain chain, String tx, int blockType, Long timeOut) throws NulsException { + try { + Map params = new HashMap(TxConstant.INIT_CAPACITY_8); + params.put(Constants.CHAIN_ID, chain.getChainId()); + params.put("tx", tx); + params.put("blockType", blockType); + HashMap result = (HashMap) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_invoke_contract", params, timeOut); + if(null == result){ + chain.getLogger().error("call sc_invoke_contract response result is null, error:{}", + TxErrorCode.REMOTE_RESPONSE_DATA_NOT_FOUND.getCode()); + throw new NulsException(TxErrorCode.REMOTE_RESPONSE_DATA_NOT_FOUND); + } + return result; + } catch (RuntimeException e) { + chain.getLogger().error(e); + throw new NulsException(TxErrorCode.RPC_REQUEST_FAILD); + } + } + /** * 调用智能合约 * @param chain @@ -130,12 +165,16 @@ public static boolean contractBatchBeforeEnd(Chain chain, long blockHeight, int * @throws NulsException */ public static Map contractBatchEnd(Chain chain, long blockHeight) throws NulsException { + return contractBatchEnd(chain, blockHeight, null); + } + + public static Map contractBatchEnd(Chain chain, long blockHeight, Long timeOut) throws NulsException { Map params = new HashMap(TxConstant.INIT_CAPACITY_4); params.put(Constants.CHAIN_ID, chain.getChainId()); params.put("blockHeight", blockHeight); try { - Map result = (Map) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_batch_end", params); + Map result = (Map) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_batch_end", params, timeOut); return result; }catch (Exception e) { chain.getLogger().error(e); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java index 539c0ab64b..4284724170 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java @@ -6,6 +6,7 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.base.protocol.TxRegisterDetail; import io.nuls.base.signture.MultiSignTxSignature; import io.nuls.base.signture.P2PHKSignature; @@ -22,6 +23,7 @@ import io.nuls.transaction.cache.PackablePool; import io.nuls.transaction.constant.TxCmd; import io.nuls.transaction.constant.TxConstant; +import io.nuls.transaction.constant.TxContext; import io.nuls.transaction.constant.TxErrorCode; import io.nuls.transaction.manager.ChainManager; import io.nuls.transaction.manager.TxManager; @@ -205,7 +207,13 @@ public Response packableTxs(Map params) { String packingAddress = (String) params.get("packingAddress"); String preStateRoot = (String) params.get("preStateRoot"); - TxPackage txPackage = txService.getPackableTxs(chain, endTimestamp, maxTxDataSize, blockTime, packingAddress, preStateRoot); + TxPackage txPackage; + if(ProtocolGroupManager.getCurrentVersion(chain.getChainId()) >= TxContext.UPDATE_VERSION_CONTRACT_ASSET ) { + txPackage = txService.getPackableTxsV8(chain, endTimestamp, maxTxDataSize, blockTime, packingAddress, preStateRoot); + } else { + txPackage = txService.getPackableTxs(chain, endTimestamp, maxTxDataSize, blockTime, packingAddress, preStateRoot); + } + Map map = new HashMap<>(TxConstant.INIT_CAPACITY_4); map.put("list", txPackage.getList()); map.put("stateRoot", txPackage.getStateRoot()); @@ -657,7 +665,12 @@ public Response batchVerify(Map params) { String preStateRoot = (String) params.get("preStateRoot"); - Map resultMap = txService.batchVerify(chain, txList, blockHeader, blockHeaderStr, preStateRoot); + Map resultMap; + if(ProtocolGroupManager.getCurrentVersion(chain.getChainId()) >= TxContext.UPDATE_VERSION_CONTRACT_ASSET ) { + resultMap = txService.batchVerifyV8(chain, txList, blockHeader, blockHeaderStr, preStateRoot); + } else { + resultMap = txService.batchVerify(chain, txList, blockHeader, blockHeaderStr, preStateRoot); + } return success(resultMap); } catch (NulsException e) { errorLogProcess(chain, e); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/TxService.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/TxService.java index 7a1a9518d1..c8c9463715 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/TxService.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/TxService.java @@ -102,6 +102,9 @@ public interface TxService { TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSize, long blockTime, String packingAddress, String preStateRoot); + TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxDataSize, long blockTime, + String packingAddress, String preStateRoot); + /** * 收到新区快时,验证完整交易列表 * @param chain @@ -112,6 +115,8 @@ TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSize, lon */ Map batchVerify(Chain chain, List list, BlockHeader blockHeader, String blockHeaderStr, String preStateRoot) throws Exception; + Map batchVerifyV8(Chain chain, List list, BlockHeader blockHeader, String blockHeaderStr, String preStateRoot) throws Exception; + /** diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index f463cff981..f0be0ba438 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -41,11 +41,13 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; import io.nuls.core.log.logback.NulsLogger; import io.nuls.core.model.BigIntegerUtils; import io.nuls.core.model.ByteArrayWrapper; import io.nuls.core.parse.JSONUtils; import io.nuls.core.parse.SerializeUtils; +import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.util.NulsDateUtils; import io.nuls.core.thread.ThreadUtils; @@ -1843,4 +1845,883 @@ public void clearInvalidTx(Chain chain, Transaction tx, boolean changeStatus) { } } + long MAX_GAS_COST_IN_BLOCK = 13000000L; + @Override + public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxDataSize, long blockTime, String packingAddress, String preStateRoot) { + chain.getPackageLock().lock(); + long startTime = NulsDateUtils.getCurrentTimeMillis(); + List packingTxList = new ArrayList<>(); + //记录账本的孤儿交易,返回给共识的时候给过滤出去,因为在因高度变化而导致重新打包的时候,需要还原到待打包队列 + Set orphanTxSet = new HashSet<>(); + NulsLogger nulsLogger = chain.getLogger(); + try { + //本次打包高度 + long blockHeight = chain.getBestBlockHeight() + 1; + + long packableTime = endtimestamp - startTime; + nulsLogger.info("[Package start] -可打包时间:{}, -可打包容量:{}B , - height:{}, - 当前待打包队列交易hash数:{}, - 待打包队列实际交易数:{}", + packableTime, maxTxDataSize, blockHeight, packablePool.packableHashQueueSize(chain), packablePool.packableTxMapSize(chain)); + long batchValidReserve = TxConstant.PACKAGE_MODULE_VALIDATOR_RESERVE_TIME; + if (packableTime <= batchValidReserve) { + //直接打空块 + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + } + //重置标志 + chain.setContractTxFail(false); + //组装统一验证参数数据,key为各模块统一验证器cmd + Map> moduleVerifyMap = new HashMap<>(TxConstant.INIT_CAPACITY_8); + + long packingTime = endtimestamp - startTime; + //统计总等待时间 + int allSleepTime = 0; + //循环获取交易使用时间 + long whileTime; + //验证账本总时间 + long totalLedgerTime = 0; + //模块统一验证使用总时间 + long batchModuleTime; + long totalSize = 0L; + //获取交易时计算区块总size大小临时值 + long totalSizeTemp = 0L; + int maxCount = TxConstant.PACKAGE_TX_MAX_COUNT - TxConstant.PACKAGE_TX_VERIFY_COINDATA_NUMBER_OF_TIMES_TO_PROCESS; + //通过配置的百分比,计算从总的打包时间中预留给批量验证的时间 + // long batchValidReserve = packagingReservationTime(chain, packingTime); + long packageRpcReserveTime = chain.getConfig().getPackageRpcReserveTime(); + + //智能合约通知标识,出现的第一个智能合约交易并且调用验证器通过时,有则只第一次时通知. + boolean contractNotify = false; + + //向账本模块发送要批量验证coinData的标识 + LedgerCall.coinDataBatchNotify(chain); + //取出的交易集合(需要发送给账本验证) + List batchProcessList = new ArrayList<>(); + Set duplicatesVerify = new HashSet<>(); + //取出的交易集合 + List currentBatchPackableTxs = new ArrayList<>(); + //本次打包包含跨链交易个数 + int corssTxCount = 0; + //一批次处理,包含跨链交易个数 + int batchCorssTxCount = 0; + //本次打包包含合约交易个数 + int contractTxCount = 0; + //一批次处理,包含合约交易个数 + int batchContractTxCount = 0; + //是否停止执行职能合约,如果位true,则取出的智能合约本次打包不再处理,需要还回待打包队列 + boolean stopInvokeContract = false; + + int packageContractTxMaxCount; + /*Random random = new Random(); + int availableProcessors = Runtime.getRuntime().availableProcessors(); + if (availableProcessors <= 4) { + packageContractTxMaxCount = 20 + random.nextInt(10); + } else if (availableProcessors <= 8) { + packageContractTxMaxCount = 50 + random.nextInt(10); + } else { + packageContractTxMaxCount = 100 + random.nextInt(20); + }*/ + packageContractTxMaxCount = 300; + long totalGasInBlock = 0; + List contractGenerateTxs = new ArrayList<>(); + List originTxList = new ArrayList<>(); + + for (int index = 0; ; index++) { + long currentTimeMillis = NulsDateUtils.getCurrentTimeMillis(); + long currentReserve = endtimestamp - currentTimeMillis; + if (currentReserve <= batchValidReserve) { + if (nulsLogger.isDebugEnabled()) { + nulsLogger.debug("获取交易时间到,进入模块验证阶段: currentTimeMillis:{}, -endtimestamp:{}, -offset:{}, -remaining:{}", + currentTimeMillis, endtimestamp, batchValidReserve, currentReserve); + } + backTempPackablePool(chain, currentBatchPackableTxs); + break; + } + if (currentReserve < packageRpcReserveTime) { + //超时,留给最后数据组装和RPC传输时间不足 + nulsLogger.error("getPackableTxs time out, endtimestamp:{}, current:{}, endtimestamp-current:{}, reserveTime:{}", + endtimestamp, currentTimeMillis, currentReserve, packageRpcReserveTime); + backTempPackablePool(chain, currentBatchPackableTxs); + throw new NulsException(TxErrorCode.PACKAGE_TIME_OUT); + } + if (chain.getProtocolUpgrade().get()) { + nulsLogger.info("Protocol Upgrade Package stop -chain:{} -best block height", chain.getChainId(), chain.getBestBlockHeight()); + backTempPackablePool(chain, currentBatchPackableTxs); + //放回可打包交易和孤儿 + putBackPackablePool(chain, packingTxList, orphanTxSet); + //直接打空块 + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + } + //如果本地最新区块+1 大于当前在打包区块的高度, 说明本地最新区块已更新,需要重新打包,把取出的交易放回到打包队列 + if (blockHeight < chain.getBestBlockHeight() + 1) { + nulsLogger.info("获取交易过程中最新区块高度已增长,把取出的交易以及孤儿放回到打包队列, 重新打包..."); + backTempPackablePool(chain, currentBatchPackableTxs); + //放回可打包交易和孤儿 + putBackPackablePool(chain, packingTxList, orphanTxSet); + return getPackableTxsV8(chain, endtimestamp, maxTxDataSize, blockTime, packingAddress, preStateRoot); + } + if (packingTxList.size() > maxCount) { + if (nulsLogger.isDebugEnabled()) { + nulsLogger.debug("获取交易已达max count,进入模块验证阶段: currentTimeMillis:{}, -endtimestamp:{}, -offset:{}, -remaining:{}", + currentTimeMillis, endtimestamp, batchValidReserve, endtimestamp - currentTimeMillis); + } + backTempPackablePool(chain, currentBatchPackableTxs); + break; + } + int batchProcessListSize = batchProcessList.size(); + boolean process = false; + Transaction tx = null; + boolean maxDataSize = false; + try { + tx = packablePool.poll(chain); + if (tx == null && batchProcessListSize == 0) { + Thread.sleep(10L); + allSleepTime += 10; + continue; + } else if (tx == null && batchProcessListSize > 0) { + //达到处理该批次的条件 + process = true; + } else if (tx != null) { + if (!duplicatesVerify.add(tx.getHash().toHex())) { + //加入不进去表示已存在 + continue; + } + long txSize = tx.size(); + if ((totalSizeTemp + txSize) > maxTxDataSize) { + packablePool.offerFirstOnlyHash(chain, tx); + nulsLogger.info("交易已达最大容量, 实际值: {}, totalSizeTemp:{}, 当前交易size:{} - 预定最大值maxTxDataSize:{}, txhash:{}", totalSize, totalSizeTemp, txSize, maxTxDataSize, tx.getHash().toHex()); + maxDataSize = true; + if (batchProcessListSize > 0) { + //达到处理该批次的条件 + process = true; + } else { + break; + } + } else { + TxRegister txRegister = TxManager.getTxRegister(chain, tx.getType()); + //限制跨链交易数量 + if (txRegister.getModuleCode().equals(ModuleE.CC.abbr)) { + if (corssTxCount + (++batchCorssTxCount) >= TxConstant.PACKAGE_CROSS_TX_MAX_COUNT) { + //限制单个区块包含的跨链交易总数,超过跨链交易最大个数,放回去, 然后停止获取交易 + packablePool.add(chain, tx); + if (batchProcessListSize > 0) { + //达到处理该批次的条件 + process = true; + } else { + break; + } + } + } + //限制智能合约交易数量 + boolean isContract = txRegister.getModuleCode().equals(ModuleE.SC.abbr); + if (isContract) { + if (contractTxCount + (++batchContractTxCount) >= packageContractTxMaxCount) { + //限制单个区块包含的跨链交易总数,超过跨链交易最大个数,放回去, 然后停止获取交易 + packablePool.add(chain, tx); + if (batchProcessListSize > 0) { + //达到处理该批次的条件 + process = true; + } else { + break; + } + } + } + String txHex; + try { + txHex = RPCUtil.encode(tx.serialize()); + } catch (Exception e) { + nulsLogger.warn(e.getMessage(), e); + nulsLogger.error("丢弃获取hex出错交易, txHash:{}, - type:{}, - time:{}", tx.getHash().toHex(), tx.getType(), tx.getTime()); + clearInvalidTx(chain, tx); + continue; + } + TxPackageWrapper txPackageWrapper = new TxPackageWrapper(tx, index, txHex); + batchProcessList.add(txHex); + currentBatchPackableTxs.add(txPackageWrapper); + if (batchProcessList.size() == TxConstant.PACKAGE_TX_VERIFY_COINDATA_NUMBER_OF_TIMES_TO_PROCESS) { + //达到处理该批次的条件 + process = true; + } + } + //总大小加上当前批次各笔交易大小 + totalSizeTemp += txSize; + } + if (process) { + long verifyLedgerStart = NulsDateUtils.getCurrentTimeMillis(); + if (!chain.getPackableState().get()) { + nulsLogger.info("获取交易过程中保存或回滚区块触发账本提交或回滚, 重新打包..."); + //放回可打包交易和孤儿 + packingTxList.addAll(currentBatchPackableTxs); + putBackPackablePool(chain, packingTxList, orphanTxSet); + Thread.sleep(30L); + return getPackableTxsV8(chain, endtimestamp, maxTxDataSize, blockTime, packingAddress, preStateRoot); + } + verifyLedger(chain, batchProcessList, currentBatchPackableTxs, orphanTxSet, false, false); + totalLedgerTime += NulsDateUtils.getCurrentTimeMillis() - verifyLedgerStart; + + Iterator it = currentBatchPackableTxs.iterator(); + while (it.hasNext()) { + TxPackageWrapper txPackageWrapper = it.next(); + Transaction transaction = txPackageWrapper.getTx(); + TxRegister txRegister = TxManager.getTxRegister(chain, transaction.getType()); + String moduleCode = txRegister.getModuleCode(); + boolean isSmartContractTx = moduleCode.equals(ModuleE.SC.abbr); + boolean isCrossTx = moduleCode.equals(ModuleE.CC.abbr); + // add by pierre at 2019-11-02 跨链转账交易发送到智能合约模块进行解析,是否为合约资产跨链转账 需要协议升级 done + if (ProtocolGroupManager.getCurrentVersion(chain.getChainId()) >= TxContext.UPDATE_VERSION_V250) { + boolean isCrossTransferTx = TxType.CROSS_CHAIN == transaction.getType(); + if (!isSmartContractTx && txConfig.isCollectedSmartContractModule()) { + isSmartContractTx = isCrossTransferTx; + } + } + // end code by pierre + if (isSmartContractTx) { + if (stopInvokeContract) { + //该标志true,表示不再处理智能合约交易,需要暂存交易,统一还回待打包队列 + orphanTxSet.add(txPackageWrapper); + it.remove(); + continue; + } + // 出现智能合约,且通知标识为false,则先调用通知 + if (!contractNotify) { + ContractCall.contractBatchBegin(chain, blockHeight, blockTime, packingAddress, preStateRoot, 0); + contractNotify = true; + } + try { + // 调用执行智能合约 + Map invokeContractRs = ContractCall.invokeContractV8(chain, txPackageWrapper.getTxHex(), 0); + //boolean success = (boolean) invokeContractRs.get("success"); + long gasUsed = Long.valueOf(invokeContractRs.get("gasUsed").toString()); + List txList = (List) invokeContractRs.get("txList"); + totalGasInBlock += gasUsed; + if (txList != null && !txList.isEmpty()) { + contractGenerateTxs.addAll(txList); + String txHash = transaction.getHash().toString(); + for (int i = 0, size = txList.size(); i < size; i++) { + originTxList.add(txHash); + } + } + + // 检查区块中已使用的GAS + if (totalGasInBlock >= MAX_GAS_COST_IN_BLOCK) { + //不再发invoke + stopInvokeContract = true; + continue; + } + } catch (NulsException e) { + chain.getLogger().error(e); + clearInvalidTx(chain, transaction); + continue; + } + } + totalSize += transaction.getSize(); + + //计算跨链交易的数量 + if (isCrossTx) { + corssTxCount++; + } + //计算合约交易的数量 + if (isSmartContractTx) { + contractTxCount++; + } + //根据模块的统一验证器名,对所有交易进行分组,准备进行各模块的统一验证 + TxUtil.moduleGroups(moduleVerifyMap, txRegister, RPCUtil.encode(transaction.serialize())); + // 检查剩余打包时间 + long _currentTimeMillis = NulsDateUtils.getCurrentTimeMillis(); + long _currentReserve = endtimestamp - _currentTimeMillis; + if (_currentReserve <= batchValidReserve) { + nulsLogger.info("打包交易时间到,进入模块验证阶段: currentTimeMillis:{}, -endtimestamp:{}, -offset:{}, -remaining:{}", + _currentTimeMillis, endtimestamp, batchValidReserve, _currentReserve); + //不再发invoke + stopInvokeContract = true; + continue; + } + } + //更新到当前最新区块交易大小总值 + totalSizeTemp = totalSize; + packingTxList.addAll(currentBatchPackableTxs); + + //批次结束重置数据 + batchProcessList.clear(); + currentBatchPackableTxs.clear(); + batchCorssTxCount = 0; + batchContractTxCount = 0; + if (maxDataSize) { + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + currentBatchPackableTxs.clear(); + nulsLogger.error("打包交易异常, txHash:{}, - type:{}, - time:{}", tx.getHash().toHex(), tx.getType(), tx.getTime()); + nulsLogger.error(e); + continue; + } + + } + //循环获取交易使用时间 + whileTime = NulsDateUtils.getCurrentTimeMillis() - startTime; + nulsLogger.info("-取出的交易 -count:{} - data size:{}", packingTxList.size(), totalSize); + + boolean contractBefore = false; + if (contractNotify) { + contractBefore = ContractCall.contractBatchBeforeEnd(chain, blockHeight, 0); + } + //处理智能合约 + String stateRoot = preStateRoot; + boolean hasTxbackPackablePool = false; + long contractStart = NulsDateUtils.getCurrentTimeMillis(); + /** 智能合约 当通知标识为true, 则表明有智能合约被调用执行*/ + if (contractNotify && !chain.getContractTxFail()) { + //处理智能合约执行结果 + Map map = processContractResultV8(chain, packingTxList, orphanTxSet, contractGenerateTxs, originTxList, blockHeight, contractBefore, stateRoot); + stateRoot = (String) map.get("stateRoot"); + hasTxbackPackablePool = (boolean) map.get("hasTxbackPackablePool"); + } + //如果合约invoke时有需要还回去的合约交易,或者合约执行结果有还回去的交易,都需要重新验证账本 + if (stopInvokeContract || hasTxbackPackablePool) { + //如果智能合约有退回或者验证不通过的交易 则需要再次账本验证 + moduleVerifyMap = new HashMap<>(TxConstant.INIT_CAPACITY_16); + verifyAgain(chain, moduleVerifyMap, packingTxList, orphanTxSet, true); + } + long contractTime = NulsDateUtils.getCurrentTimeMillis() - contractStart; + + //模块统一验证器 + long batchStart = NulsDateUtils.getCurrentTimeMillis(); + txModuleValidatorPackable(chain, moduleVerifyMap, packingTxList, orphanTxSet); + //模块统一验证使用总时间 + batchModuleTime = NulsDateUtils.getCurrentTimeMillis() - batchStart; + + List packableTxs = new ArrayList<>(); + Iterator iterator = packingTxList.iterator(); + Map txPackageOrphanMap = chain.getTxPackageOrphanMap(); + while (iterator.hasNext()) { + TxPackageWrapper txPackageWrapper = iterator.next(); + Transaction tx = txPackageWrapper.getTx(); + NulsHash hash = tx.getHash(); + if (txPackageOrphanMap.containsKey(hash)) { + txPackageOrphanMap.remove(hash); + } + try { + packableTxs.add(RPCUtil.encode(tx.serialize())); + } catch (Exception e) { + clearInvalidTx(chain, tx); + iterator.remove(); + throw new NulsException(e); + } + } + //将智能合约生成的返还GAS的tx加到队尾 + if (contractGenerateTxs.size() > 0) { + String csTxStr = contractGenerateTxs.get(contractGenerateTxs.size() - 1); + if (TxUtil.extractTxTypeFromTx(csTxStr) == TxType.CONTRACT_RETURN_GAS) { + packableTxs.add(csTxStr); + } + } + //检测最新高度 + if (blockHeight < chain.getBestBlockHeight() + 1) { + //这个阶段已经不够时间再打包,所以直接超时异常处理交易回滚至待打包队列,打空块 + nulsLogger.info("获取交易完成时,当前最新高度已增长,不够时间重新打包,直接超时异常处理交易回滚至待打包队列,打空块"); + throw new NulsException(TxErrorCode.HEIGHT_UPDATE_UNABLE_TO_REPACKAGE); + } + + //孤儿交易加回待打包队列去 + putBackPackablePool(chain, orphanTxSet); + if (chain.getProtocolUpgrade().get()) { + //协议升级直接打空块,取出的交易,倒序放入新交易处理队列 + int size = packingTxList.size(); + for (int i = size - 1; i >= 0; i--) { + TxPackageWrapper txPackageWrapper = packingTxList.get(i); + Transaction tx = txPackageWrapper.getTx(); + //执行交易基础验证 + TxRegister txRegister = TxManager.getTxRegister(chain, tx.getType()); + if (null == txRegister) { + throw new NulsException(TxErrorCode.TX_TYPE_INVALID); + } + baseValidateTx(chain, tx, txRegister); + chain.getUnverifiedQueue().addLast(new TransactionNetPO(txPackageWrapper.getTx())); + } + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + } + //检测预留传输时间 + long current = NulsDateUtils.getCurrentTimeMillis(); + if (endtimestamp - current < packageRpcReserveTime) { + //超时,留给最后数据组装和RPC传输时间不足 + nulsLogger.error("getPackableTxs time out, endtimestamp:{}, current:{}, endtimestamp-current:{}, reserveTime:{}", + endtimestamp, current, endtimestamp - current, packageRpcReserveTime); + throw new NulsException(TxErrorCode.PACKAGE_TIME_OUT); + } + + TxPackage txPackage = new TxPackage(packableTxs, stateRoot, blockHeight); + + long totalTime = NulsDateUtils.getCurrentTimeMillis() - startTime; + nulsLogger.info("[打包时间统计] 总执行时间:{}, 剩余时间:{}, 打包可用时间:{}, 获取交易(循环)总等待时间:{}, " + + "获取交易(循环)执行时间:{}, 获取交易(循环)验证账本总时间:{}, 模块统一验证执行时间:{}, " + + "合约执行时间:{},", totalTime, endtimestamp - NulsDateUtils.getCurrentTimeMillis(), + packingTime, allSleepTime, whileTime, totalLedgerTime, batchModuleTime, + contractTime); + + nulsLogger.info("[Package end] - height:{} - 本次打包交易数:{} - 当前待打包队列交易hash数:{}, - 待打包队列实际交易数:{}" + TxUtil.nextLine(), + blockHeight, packableTxs.size(), packablePool.packableHashQueueSize(chain), packablePool.packableTxMapSize(chain)); + + return txPackage; + } catch (Exception e) { + nulsLogger.error(e); + //可打包交易,孤儿交易,全加回去 + putBackPackablePool(chain, packingTxList, orphanTxSet); + return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + } finally { + chain.getPackageLock().unlock(); + } + } + + @Override + public Map batchVerifyV8(Chain chain, List txStrList, BlockHeader blockHeader, String blockHeaderStr, String preStateRoot) throws NulsException { + NulsLogger logger = chain.getLogger(); + long s1 = NulsDateUtils.getCurrentTimeMillis(); + long blockHeight = blockHeader.getHeight(); + logger.info("[验区块交易] 开始 -----高度:{} -----区块交易数:{}", blockHeight, txStrList.size()); + List txList = new ArrayList<>(); + //验证区块中只允许有一个的交易不能有多个 + Set onlyOneTxTypes = new HashSet<>(); + //智能合约通知标识,出现的第一个智能合约交易并且调用验证器通过时,有则只第一次时通知. + boolean contractNotify = false; + Transaction scReturnGas = null; + long blockTime = blockHeader.getTime(); + List> futures = new ArrayList<>(); + //组装统一验证参数数据,key为各模块统一验证器cmd + Map> moduleVerifyMap = new HashMap<>(TxConstant.INIT_CAPACITY_8); + int chainId = chain.getChainId(); + long timeF1; + long timeF2; + long timeF3; + long timeF4; + List keys = new ArrayList<>(); + long f1 = System.currentTimeMillis(); + long totalGasInBlock = 0; + List contractGenerateTxs = new ArrayList<>(); + + for (String txStr : txStrList) { + Transaction tx = TxUtil.getInstanceRpcStr(txStr, Transaction.class); + txList.add(new TxVerifyWrapper(tx, txStr)); + int type = tx.getType(); + verifySysTxCount(onlyOneTxTypes, type); + TxRegister txRegister = TxManager.getTxRegister(chain, type); + if (null == txRegister) { + throw new NulsException(TxErrorCode.TX_TYPE_INVALID); + } + if (type == TxType.CONTRACT_RETURN_GAS) { + //记录gas返还交易 + scReturnGas = tx; + } + boolean isSmartContractTx = TxManager.isUnSystemSmartContract(txRegister); + // add by pierre at 2019-11-02 跨链转账交易发送到智能合约模块进行解析,是否为合约资产跨链转账 需要协议升级 done + if (ProtocolGroupManager.getCurrentVersion(chain.getChainId()) >= TxContext.UPDATE_VERSION_V250) { + boolean isCrossTransferTx = TxType.CROSS_CHAIN == type; + if (!isSmartContractTx && txConfig.isCollectedSmartContractModule()) { + isSmartContractTx = isCrossTransferTx; + } + } + // end code by pierre + /** 智能合约*/ + if (isSmartContractTx) { + // 检查区块中已使用的GAS + if (totalGasInBlock >= MAX_GAS_COST_IN_BLOCK) { + if (TxManager.isGasCostContractTransaction(type)) { + Log.error("verify block failed: Excess block gas limit of contract transaction detected."); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + } + /** 出现智能合约,且通知标识为false,则先调用通知 */ + if (!contractNotify) { + String packingAddress = AddressTool.getStringAddressByBytes(blockHeader.getPackingAddress(chain.getChainId())); + ContractCall.contractBatchBegin(chain, blockHeight, blockTime, packingAddress, preStateRoot, 1); + contractNotify = true; + } + try { + // 调用执行智能合约 + Map invokeContractRs = ContractCall.invokeContractV8(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 2); + //boolean success = (boolean) invokeContractRs.get("success"); + long gasUsed = Long.valueOf(invokeContractRs.get("gasUsed").toString()); + List contractTxList = (List) invokeContractRs.get("txList"); + totalGasInBlock += gasUsed; + if (contractTxList != null && !contractTxList.isEmpty()) { + contractGenerateTxs.addAll(contractTxList); + } + } catch (IOException e) { + throw new NulsException(TxErrorCode.SERIALIZE_ERROR); + } + } + if (chain.getContractGenerateTxTypes().contains(tx.getType())) { + //包含了合约模块生成的并且不应该放在区块交易列表中的交易 + throw new NulsException(TxErrorCode.SYS_CONTRACT_TX_NON_CIRCULATING); + } + keys.add(tx.getHash().getBytes()); + //根据模块的统一验证器名,对所有交易进行分组,准备进行各模块的统一验证 + TxUtil.moduleGroups(moduleVerifyMap, txRegister, txStr); + } + if (!contractNotify && null != scReturnGas) { + throw new NulsException(TxErrorCode.EXIST_GAS_RETURN_WITHOUT_SC_RETURN); + } + + long f2 = System.currentTimeMillis(); + timeF1 = f2 - f1; + //验证交易是否已确认过 + List confirmedList = confirmedTxStorageService.getExistTxs(chainId, keys); + if (!confirmedList.isEmpty()) { + logger.error("There are confirmed transactions"); + try { + for (byte[] cfmtx : confirmedList) { + logger.error("confirmed hash:{}", TxUtil.getTransaction(cfmtx).getHash().toHex()); + } + } finally { + logger.error("Show confirmed transaction deserialize fail"); + throw new NulsException(TxErrorCode.TX_CONFIRMED); + } + } + long f3 = System.currentTimeMillis(); + timeF2 = f3 - f2; + + //验证本地没有的交易 + List unconfirmedList = unconfirmedTxStorageService.getExistKeysStr(chainId, keys); + + long f4 = System.currentTimeMillis(); + timeF3 = f4 - f3; + + Set set = new HashSet<>(); + set.addAll(unconfirmedList); + long d = 0L; + for (TxVerifyWrapper txVerifyWrapper : txList) { + Transaction tx = txVerifyWrapper.getTx(); + tx.setBlockHeight(blockHeight); + //能加入表明未确认中没有,则需要处理 + if (set.add(tx.getHash().toHex())) { + long d1 = System.currentTimeMillis(); + //不在未确认中就进行基础验证 + //多线程处理单个交易 + Future res = verifySignExecutor.submit(new Callable() { + @Override + public Boolean call() { + try { + //只验证单个交易的基础内容(TX模块本地验证) + TxRegister txRegister = TxManager.getTxRegister(chain, tx.getType()); + if (null == txRegister) { + throw new NulsException(TxErrorCode.TX_TYPE_INVALID); + } + baseValidateTx(chain, tx, txRegister); + } catch (Exception e) { + logger.error("batchVerify failed, single tx verify failed. hash:{}, -type:{}", tx.getHash().toHex(), tx.getType()); + logger.error(e); + return false; + } + return true; + } + }); + futures.add(res); + d += (System.currentTimeMillis() - d1); + } + } + + timeF4 = System.currentTimeMillis() - f4; + logger.info("[验区块交易] 反序列化,合约,分组:{} -是否确认过:{} -是否在未确认中:{}, -单个验证:{} -单内部处理:{} -合计时间:{}", + timeF1, timeF2, timeF3, d, timeF4, NulsDateUtils.getCurrentTimeMillis() - s1); + + if (contractNotify) { + ContractCall.contractBatchBeforeEnd(chain, blockHeight, 1); + } + + long coinDataV = NulsDateUtils.getCurrentTimeMillis(); + //账本验证 + if (!LedgerCall.verifyBlockTxsCoinData(chain, txStrList, blockHeight)) { + if (logger.isDebugEnabled()) { + logger.debug("batch verifyCoinData failed."); + } + throw new NulsException(TxErrorCode.TX_LEDGER_VERIFY_FAIL); + } + if (logger.isDebugEnabled()) { + logger.debug("[验区块交易] coinData -距方法开始的时间:{},-验证时间:{}", + NulsDateUtils.getCurrentTimeMillis() - s1, NulsDateUtils.getCurrentTimeMillis() - coinDataV); + } + + //模块统一验证器 + long moduleV = NulsDateUtils.getCurrentTimeMillis(); + Iterator>> it = moduleVerifyMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry> entry = it.next(); + List txHashList = TransactionCall.txModuleValidator(chain, + entry.getKey(), entry.getValue(), blockHeaderStr); + if (txHashList != null && txHashList.size() > 0) { + if (logger.isDebugEnabled()) { + logger.debug("batch module verify fail, module-code:{}, return count:{}", entry.getKey(), txHashList.size()); + } + throw new NulsException(TxErrorCode.TX_VERIFY_FAIL); + } + } + if (logger.isDebugEnabled()) { + logger.debug("[验区块交易] 模块统一验证时间:{}", NulsDateUtils.getCurrentTimeMillis() - moduleV); + logger.debug("[验区块交易] 模块统一验证 -距方法开始的时间:{}", NulsDateUtils.getCurrentTimeMillis() - s1); + } + + /** 智能合约 当通知标识为true, 则表明有智能合约被调用执行*/ + String scStateRoot = preStateRoot; + if (contractNotify) { + Map map; + try { + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 3); + } catch (NulsException e) { + logger.error(e); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + scStateRoot = (String) map.get("stateRoot"); + List returnGasTx = (List) map.get("txList"); + contractGenerateTxs.addAll(returnGasTx); + /** + * 1.共识验证 如果有 + * 2.如果只有智能合约的共识交易失败,isRollbackPackablePool=true + * 3.如果只有其他共识交易失败,单独删掉 + * 4.混合 执行2. + */ + List scNewConsensusList = new ArrayList<>(); + List scNewTokenCrossTransferList = new ArrayList<>(); + for (String scNewTx : contractGenerateTxs) { + int scNewTxType = TxUtil.extractTxTypeFromTx(scNewTx); + if (scNewTxType == TxType.CONTRACT_CREATE_AGENT + || scNewTxType == TxType.CONTRACT_DEPOSIT + || scNewTxType == TxType.CONTRACT_CANCEL_DEPOSIT + || scNewTxType == TxType.CONTRACT_STOP_AGENT) { + scNewConsensusList.add(scNewTx); + } else if (scNewTxType == TxType.CONTRACT_TOKEN_CROSS_TRANSFER) { + scNewTokenCrossTransferList.add(scNewTx); + } + } + if (!scNewConsensusList.isEmpty() || !scNewTokenCrossTransferList.isEmpty()) { + //收集共识模块/跨链模块所有交易, 加上新产生的智能合约共识交易,一起再次进行模块统一验证 + List consensusList = new ArrayList<>(); + List crossTransferList = new ArrayList<>(); + int txType; + for (TxVerifyWrapper txVerifyWrapper : txList) { + Transaction tx = txVerifyWrapper.getTx(); + txType = tx.getType(); + // 区块中的包含了智能合约生成的共识交易,不重复添加 + if (txType == TxType.CONTRACT_CREATE_AGENT + || txType == TxType.CONTRACT_DEPOSIT + || txType == TxType.CONTRACT_CANCEL_DEPOSIT + || txType == TxType.CONTRACT_STOP_AGENT) { + continue; + } + TxRegister txRegister = TxManager.getTxRegister(chain, tx.getType()); + if (txRegister.getModuleCode().equals(ModuleE.CS.abbr)) { + consensusList.add(txVerifyWrapper.getTxStr()); + } + if (txRegister.getModuleCode().equals(ModuleE.CC.abbr)) { + crossTransferList.add(txVerifyWrapper.getTxStr()); + } + } + consensusList.addAll(scNewConsensusList); + crossTransferList.addAll(scNewTokenCrossTransferList); + if (!consensusList.isEmpty()) { + boolean rsProcess = processContractTxs(chain, ModuleE.CS.abbr, consensusList, null, true); + if (rsProcess) { + logger.error("contract tx consensus module verify fail."); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + } + if (!crossTransferList.isEmpty()) { + boolean rsProcess = processContractTxs(chain, ModuleE.CC.abbr, crossTransferList, null, true); + if (rsProcess) { + logger.error("contract tx cross-chain module verify fail."); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + } + } + //验证智能合约gas返回的交易hex 是否正确.打包时返回的交易是加入到区块交易的队尾 + int size = contractGenerateTxs.size(); + if (size > 0) { + int txSize = txStrList.size(); + String scNewTxHex = null; + int returnGasIndex = -1; + for (int i = size - 1; i >= 0; i--) { + String hex = contractGenerateTxs.get(i); + int txType = TxUtil.extractTxTypeFromTx(hex); + if (txType == TxType.CONTRACT_RETURN_GAS) { + scNewTxHex = hex; + returnGasIndex = i; + break; + } + } + if (scNewTxHex != null) { + String receivedScNewTxHex = null; + boolean rs = false; + for (int i = txSize - 1; i >= 0; i--) { + String txHex = txStrList.get(i); + int txType = TxUtil.extractTxTypeFromTx(txHex); + if (txType == TxType.CONTRACT_RETURN_GAS) { + receivedScNewTxHex = txHex; + if (txHex.equals(scNewTxHex)) { + rs = true; + } + break; + } + } + if (!rs) { + logger.error("contract error.生成的合约gas返还交易:{}, - 收到的合约gas返还交易:{}", scNewTxHex, receivedScNewTxHex); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + //返回智能合约交易给区块 + if (returnGasIndex != -1) { + contractGenerateTxs.remove(returnGasIndex); + } + } else { + if (null != scReturnGas) { + throw new NulsException(TxErrorCode.EXIST_GAS_RETURN_WITHOUT_SC_RETURN); + } + } + } else { + if (null != scReturnGas) { + throw new NulsException(TxErrorCode.EXIST_GAS_RETURN_WITHOUT_SC_RETURN); + } + } + } + //stateRoot发到共识,处理完再比较 + String coinBaseTx = null; + for (TxVerifyWrapper txVerifyWrapper : txList) { + Transaction tx = txVerifyWrapper.getTx(); + if (tx.getType() == TxType.COIN_BASE) { + coinBaseTx = txVerifyWrapper.getTxStr(); + break; + } + } + String stateRootNew = ConsensusCall.triggerCoinBaseContract(chain, coinBaseTx, blockHeaderStr, scStateRoot); + String stateRoot = RPCUtil.encode(blockHeader.getExtendsData().getStateRoot()); + if (!stateRoot.equals(stateRootNew)) { + logger.warn("contract stateRoot error."); + throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); + } + + //多线程处理结果 + try { + for (Future future : futures) { + if (!future.get()) { + logger.error("batchVerify failed, single tx verify failed"); + throw new NulsException(TxErrorCode.TX_VERIFY_FAIL); + } + } + } catch (InterruptedException e) { + logger.error(e); + throw new NulsException(TxErrorCode.SYS_UNKOWN_EXCEPTION); + } catch (ExecutionException e) { + logger.error(e); + throw new NulsException(TxErrorCode.SYS_UNKOWN_EXCEPTION); + } + + if (logger.isDebugEnabled()) { + logger.debug("[验区块交易] 合计执行时间:{}, - 高度:{} - 区块交易数:{}" + TxUtil.nextLine(), + NulsDateUtils.getCurrentTimeMillis() - s1, blockHeight, txStrList.size()); + } + Map resultMap = new HashMap<>(TxConstant.INIT_CAPACITY_4); + resultMap.put("value", true); + resultMap.put("contractList", contractGenerateTxs); + return resultMap; + } + + private Map processContractResultV8(Chain chain, List packingTxList, Set orphanTxSet, List contractGenerateTxs, List originTxList, + long blockHeight, boolean contractBefore, String stateRoot) throws IOException { + + boolean hasTxbackPackablePool = false; + /**当contractBefore通知失败,或者contractBatchEnd失败则需要将智能合约交易还回待打包队列*/ + boolean isRollbackPackablePool = false; + /** + * 当出现智能合约生成的共识交易验证不通过时, 对应的原始交易有限制次数的还回待打包队列 + * (记录有还回限制次数的合约原始交易hash) + */ + Set setLimitedRollbackOriginTx = new HashSet<>(); + if (!contractBefore) { + isRollbackPackablePool = true; + } else { + try { + Map map = ContractCall.contractPackageBatchEnd(chain, blockHeight); + List returnGasTx = (List) map.get("txList"); + contractGenerateTxs.addAll(returnGasTx); + if (null != contractGenerateTxs) { + /** + * 1.共识验证 如果有 + * 2.如果只有智能合约的共识交易失败,isRollbackPackablePool=true + * 3.如果只有其他共识交易失败,单独删掉 + * 4.混合 执行2. + */ + List scNewConsensusList = new ArrayList<>(); + List scNewTokenCrossTransferList = new ArrayList<>(); +// for (String scNewTx : scNewList) { + for (int i = 0; i < contractGenerateTxs.size(); i++) { + String scNewTx = contractGenerateTxs.get(i); + int scNewTxType = TxUtil.extractTxTypeFromTx(scNewTx); + if (scNewTxType == TxType.CONTRACT_CREATE_AGENT + || scNewTxType == TxType.CONTRACT_DEPOSIT + || scNewTxType == TxType.CONTRACT_CANCEL_DEPOSIT + || scNewTxType == TxType.CONTRACT_STOP_AGENT) { + scNewConsensusList.add(scNewTx); + setLimitedRollbackOriginTx.add(originTxList.get(i)); + } else if (scNewTxType == TxType.CONTRACT_TOKEN_CROSS_TRANSFER) { + scNewTokenCrossTransferList.add(scNewTx); + } + } + if (!scNewConsensusList.isEmpty() || !scNewTokenCrossTransferList.isEmpty()) { + //收集共识模块/跨链模块所有交易, 加上新产生的智能合约共识交易,一起再次进行模块统一验证 + List consensusList = new ArrayList<>(); + List crossTransferList = new ArrayList<>(); + for (TxPackageWrapper txPackageWrapper : packingTxList) { + Transaction tx = txPackageWrapper.getTx(); + TxRegister txRegister = TxManager.getTxRegister(chain, tx.getType()); + if (txRegister.getModuleCode().equals(ModuleE.CS.abbr)) { + consensusList.add(RPCUtil.encode(txPackageWrapper.getTx().serialize())); + } + if (txRegister.getModuleCode().equals(ModuleE.CC.abbr)) { + crossTransferList.add(RPCUtil.encode(txPackageWrapper.getTx().serialize())); + } + } + consensusList.addAll(scNewConsensusList); + crossTransferList.addAll(scNewTokenCrossTransferList); + if (!consensusList.isEmpty()) { + isRollbackPackablePool = processContractTxs(chain, ModuleE.CS.abbr, consensusList, packingTxList, false); + } + if (!isRollbackPackablePool && !crossTransferList.isEmpty()) { + isRollbackPackablePool = processContractTxs(chain, ModuleE.CC.abbr, crossTransferList, packingTxList, false); + } + } + if (!isRollbackPackablePool) { + // 合约共识 合约跨链都没有失败的交易 则获取使用新的stateRoot + String sr = (String) map.get("stateRoot"); + if (null != sr) { + stateRoot = sr; + } + } + } + } catch (NulsException e) { + chain.getLogger().error(e); + isRollbackPackablePool = true; + } + } + // 判断智能合约出现需要加回待打包队列的情况 + if (isRollbackPackablePool) { + Iterator iterator = packingTxList.iterator(); + while (iterator.hasNext()) { + TxPackageWrapper txPackageWrapper = iterator.next(); + if (TxManager.isUnSystemSmartContract(chain, txPackageWrapper.getTx().getType())) { + if (setLimitedRollbackOriginTx.contains(txPackageWrapper.getTx().getHash().toHex())) { + // 有加回次数限制的交易 + addOrphanTxSet(chain, orphanTxSet, txPackageWrapper); + } else { + // 没有加回次数限制的情况, 直接加入集合,可以与孤儿交易合用一个集合 + orphanTxSet.add(txPackageWrapper); + } + //从可打包集合中删除 + iterator.remove(); + if (!hasTxbackPackablePool) { + hasTxbackPackablePool = true; + } + } + } + } + Map rs = new HashMap(); + rs.put("stateRoot", stateRoot); + rs.put("hasTxbackPackablePool", hasTxbackPackablePool); + return rs; + } } From e8154767e6744e4b34d7d431273a43ffd3a8e606 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 7 Dec 2020 10:39:45 +0800 Subject: [PATCH 211/304] test case --- .../io/nuls/contract/tx/base/BaseQuery.java | 56 +++++++------- .../tx/multyasset/ContractMultyAssetTest.java | 77 +++++++++++++++---- .../tx/multytx/ContractMultyTxTest.java | 7 +- 3 files changed, 94 insertions(+), 46 deletions(-) diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index fe73c348ea..674f9e9f1b 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -95,34 +95,34 @@ public void importPriKeyTest() { // importPriKey("979c0ceeba6062e46b8eaa0f8435951ce27859581a39d4d2e7c0eef1baac15d3", password);//5 tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM importPriKey("edacaeb4ae6836ead7dd61d8ab79444b631274a303f91608472c8f99d646bbdf", password);//6 tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29 - //importPriKey("ab69dab113f27ecac4024536c8a72b35f1ad4c8c934e486f7c4edbb14d8b7f9e", password);//7 tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf - //importPriKey("14e86ce16c0a21fe3960e18a86c4ed943d4cf434cb4dc0c761cf811b20486f43", password);//8 tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S - //importPriKey("a17e3161cc2b2a5d8ac2777f4113f6147270cda9ec9ba2ca979c06839f264e39", password);//9 tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja - //importPriKey("2a1eff43919f52370682c527a5932ca43ea0d65ebd3b4686b5823c5087b33355", password);//10 tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv - //importPriKey("425c9c6e9cf1c6dbb51fe22baf2487b273b0b3fe0f596f6e7b406cbb97775fd0", password);//11 tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB - //importPriKey("3ba402d5138ff7439fd0187f6359b1b1e1ec0529544dc05bf0072445b5196e2d", password);//12 tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE - //importPriKey("1a4bb53eddab9d355c56c840097de6611497b53fc348f4abaa664ea5a5f8829c", password);//13 tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr - //importPriKey("2cca1c7f69f929680a00d45298dca7b705d87d34ae1dbbcb4125b5663552db36", password);//14 tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ - //importPriKey("1c73a09db8b19b14921f8790ef015ac1ee6137cdb99f967a3f257b21f68bac1d", password);//15 tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb - //importPriKey("2d969f5dd4b68089fcb581f9d029fd3bb472c4858b88bcfec96f0575c1310eb5", password);//16 tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE - //importPriKey("d60fc83130dbe5537d4f1e1e35c533f1a396b8b7d641d717b2d1eb1245d0d796", password);//17 tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9 - //importPriKey("d78bbdd20e0166d468d93c6a5bde7950c84427b7e1da307217f7e68583b137b5", password);//18 tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA - //importPriKey("63da888abcdfbb20931e88ec1f926e0624f57792e4c41dcde889bf6bbe01f49a", password);//19 tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT - //importPriKey("c34d3ec20f8134b53f3df9b61bbac0c50d6e368db3dbf0a0069b0206db409643", password);//20 tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1 - //importPriKey("f13d4e1ff9f8e8311072b6cf8cff74f754f38675905bd22a51dd17461ab8946c", password);//21 tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6 - //importPriKey("bc6032137bf45ccc7a230cdef655a263a86a69b1d98f3b9567688872afa5af15", password);//22 tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A - //importPriKey("0bf13b6653412e905b06001e4b57d95c113da9fe279db83076a88159b2828d23", password);//23 tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc - //importPriKey("a08afb9b85f54622503b06f26b8883a78a90892d2909071e4e1a3306e283992a", password);//24 tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR - //importPriKey("a9d2e66e4bb78a71a99a0509c05689f394f2ccb77ca88a14670b5fda117d2de7", password);//25 tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk - //importPriKey("a99470957cc20287b66ff4a9deb70770a698ea1968e7ac8262532c9a644d01c1", password);//26 tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc - //importPriKey("6f5a847f5bce1e7bae540daeb024fc05cab6b21c2eea2cdf2c8837e2844af4e2", password);//27 tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF - //importPriKey("f8ae46ce88cf33091eab6068fa39756d4aa2181c49192b3e1531ecb52dad1b1d", password);//28 tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7 - //importPriKey("9da23738f9efe1e8271c7a43d45df6087a57782e276c7b4a8e19f7ced04b73c8", password);//29 tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN - //importPriKey("6fec251b4f3b2b48f98c2426587515fee2339a3f9f1e0011d816cd1f54d37be7", password);//30 tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1 - //importPriKey("9f32c23400bcb08ae52c6195ba9167969ee36ac3219bb320e9c7bc3d49efb4ee", password);//31 tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy - //importPriKey("4ecbcf0768ea880c6001ad46838e5ece4fa5641424f4e0cce5ec412c11d5ae8f", password);//32 tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu - //importPriKey("5633c9e3923773a5665c4e8cf5f8e80abb7085f9b30694656dfc1c9f3b7092d2", password);//33 tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG - //importPriKey("b936b61041b6fc84943b46dc0bc8ed79c009fdeb607fce17113800b64a726f0c", password);//34 tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD + importPriKey("ab69dab113f27ecac4024536c8a72b35f1ad4c8c934e486f7c4edbb14d8b7f9e", password);//7 tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf + importPriKey("14e86ce16c0a21fe3960e18a86c4ed943d4cf434cb4dc0c761cf811b20486f43", password);//8 tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S + importPriKey("a17e3161cc2b2a5d8ac2777f4113f6147270cda9ec9ba2ca979c06839f264e39", password);//9 tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja + importPriKey("2a1eff43919f52370682c527a5932ca43ea0d65ebd3b4686b5823c5087b33355", password);//10 tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv + importPriKey("425c9c6e9cf1c6dbb51fe22baf2487b273b0b3fe0f596f6e7b406cbb97775fd0", password);//11 tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB + importPriKey("3ba402d5138ff7439fd0187f6359b1b1e1ec0529544dc05bf0072445b5196e2d", password);//12 tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE + importPriKey("1a4bb53eddab9d355c56c840097de6611497b53fc348f4abaa664ea5a5f8829c", password);//13 tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr + importPriKey("2cca1c7f69f929680a00d45298dca7b705d87d34ae1dbbcb4125b5663552db36", password);//14 tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ + importPriKey("1c73a09db8b19b14921f8790ef015ac1ee6137cdb99f967a3f257b21f68bac1d", password);//15 tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb + importPriKey("2d969f5dd4b68089fcb581f9d029fd3bb472c4858b88bcfec96f0575c1310eb5", password);//16 tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE + importPriKey("d60fc83130dbe5537d4f1e1e35c533f1a396b8b7d641d717b2d1eb1245d0d796", password);//17 tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9 + importPriKey("d78bbdd20e0166d468d93c6a5bde7950c84427b7e1da307217f7e68583b137b5", password);//18 tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA + importPriKey("63da888abcdfbb20931e88ec1f926e0624f57792e4c41dcde889bf6bbe01f49a", password);//19 tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT + importPriKey("c34d3ec20f8134b53f3df9b61bbac0c50d6e368db3dbf0a0069b0206db409643", password);//20 tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1 + importPriKey("f13d4e1ff9f8e8311072b6cf8cff74f754f38675905bd22a51dd17461ab8946c", password);//21 tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6 + importPriKey("bc6032137bf45ccc7a230cdef655a263a86a69b1d98f3b9567688872afa5af15", password);//22 tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A + importPriKey("0bf13b6653412e905b06001e4b57d95c113da9fe279db83076a88159b2828d23", password);//23 tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc + importPriKey("a08afb9b85f54622503b06f26b8883a78a90892d2909071e4e1a3306e283992a", password);//24 tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR + importPriKey("a9d2e66e4bb78a71a99a0509c05689f394f2ccb77ca88a14670b5fda117d2de7", password);//25 tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk + importPriKey("a99470957cc20287b66ff4a9deb70770a698ea1968e7ac8262532c9a644d01c1", password);//26 tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc + importPriKey("6f5a847f5bce1e7bae540daeb024fc05cab6b21c2eea2cdf2c8837e2844af4e2", password);//27 tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF + importPriKey("f8ae46ce88cf33091eab6068fa39756d4aa2181c49192b3e1531ecb52dad1b1d", password);//28 tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7 + importPriKey("9da23738f9efe1e8271c7a43d45df6087a57782e276c7b4a8e19f7ced04b73c8", password);//29 tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN + importPriKey("6fec251b4f3b2b48f98c2426587515fee2339a3f9f1e0011d816cd1f54d37be7", password);//30 tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1 + importPriKey("9f32c23400bcb08ae52c6195ba9167969ee36ac3219bb320e9c7bc3d49efb4ee", password);//31 tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy + importPriKey("4ecbcf0768ea880c6001ad46838e5ece4fa5641424f4e0cce5ec412c11d5ae8f", password);//32 tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu + importPriKey("5633c9e3923773a5665c4e8cf5f8e80abb7085f9b30694656dfc1c9f3b7092d2", password);//33 tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG + importPriKey("b936b61041b6fc84943b46dc0bc8ed79c009fdeb607fce17113800b64a726f0c", password);//34 tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index 1c2686b108..b6a3bc18fe 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -124,7 +124,7 @@ public void assetRegisterTest() throws Exception { @Test public void nulsTest() throws Exception { // 转入 3.2 NULS - this.callByParams("_payable", "3.2", null); + this.callByParams("_payable", "6.2", null); // 转出 1.1 NULS Object[] args = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; this.callByParams("transferNuls", "0", args); @@ -225,10 +225,50 @@ public void getAssetRegInfoByHashTest() throws Exception { } /** - * 多账户调用合约 + * 多账户调用合约 - 转入 */ @Test - public void manyAccountCall() throws Exception { + public void transferInOfmanyAccountCall() throws Exception { + NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; + String remark = ""; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "_payable", "", remark, null, null, null, true); + + } + + /** + * 多账户调用合约 - 转入(A账户支出,合约记录B账户) + */ + @Test + public void transferInOfmanyAccountCall_1() throws Exception { + NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; + String remark = ""; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "_payable", "", remark, null, null, null, true); + + } + + /** + * 多账户调用合约 - 转出 + */ + @Test + public void transferOutOfmanyAccountCall() throws Exception { NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); //importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG //importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD @@ -237,20 +277,14 @@ public void manyAccountCall() throws Exception { String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; BigInteger value = BigInteger.ZERO; - String contractAddress = "tNULSeBaN7Fd9yMXAcL5EUhjyq4AUWJ3pw1Gu9"; - //String contractAddress = "tNULSeBaNA1AvcgZh1geK8upzgiabUTSyBy5R2"; + String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; String methodName = "transferNuls"; String methodDesc = ""; String remark = ""; // 转出 0.1 NULS Object[] args = new Object[]{toAddress17, new BigDecimal("0.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; String[] argsType = new String[]{"Address", "BigInteger"}; - this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, - new BigDecimal("3.2").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), - contractAddress, - "_payable", "", remark, null, null, true); - this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, true); - + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, null, true); } protected void callTxOffline(String feeAccount, String feeAccountPri, @@ -258,6 +292,17 @@ protected void callTxOffline(String feeAccount, String feeAccountPri, BigInteger value, String contractAddress, String methodName, String methodDesc, String remark, + Object[] args, String[] argsType, ProgramMultyAssetValue[] multyAssetValues, boolean isBroadcastTx) throws Exception{ + + } + + //TODO pierre 设置CoinData + protected void callTxOfflineBase(List froms, List tos, + String feeAccount, + String contractSender, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, Object[] args, String[] argsType, boolean isBroadcastTx) throws Exception{ // 生成参数的二维数组 String[][] finalArgs = null; @@ -270,12 +315,12 @@ protected void callTxOffline(String feeAccount, String feeAccountPri, // 组装交易的txData byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); - byte[] senderBytes = AddressTool.getAddress(sender); + byte[] senderBytes = AddressTool.getAddress(contractSender); CallContractData callContractData = new CallContractData(); callContractData.setContractAddress(contractAddressBytes); callContractData.setSender(senderBytes); callContractData.setValue(value); - callContractData.setPrice(1); + callContractData.setPrice(25); callContractData.setGasLimit(gasLimit); callContractData.setMethodName(methodName); callContractData.setMethodDesc(methodDesc); @@ -326,14 +371,14 @@ protected void callTxOffline(String feeAccount, String feeAccountPri, tx.setCoinData(coinData.serialize()); // 签名 List signDtoList = new ArrayList<>(); - SignDto signDto = new SignDto(); + /*SignDto signDto = new SignDto(); signDto.setAddress(sender); signDto.setPriKey(senderPri); signDtoList.add(signDto); signDto = new SignDto(); signDto.setAddress(feeAccount); signDto.setPriKey(feeAccountPri); - signDtoList.add(signDto); + signDtoList.add(signDto);*/ byte[] txBytes = tx.serialize(); String txHex = HexUtil.encode(txBytes); @@ -410,4 +455,6 @@ protected void innerCallOfDesignatedAssetByParams(String methodName, String othe String hash = (String) result.get("txHash"); Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); } + + } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multytx/ContractMultyTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multytx/ContractMultyTxTest.java index d655c83619..c0525ab9fe 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multytx/ContractMultyTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multytx/ContractMultyTxTest.java @@ -157,8 +157,9 @@ public void multyCreateContractCallContract() throws Exception { */ @Test public void multySenderCallOneContract() throws Exception { + this.contractAddress_nrc20 = "tNULSeBaMyjLVA3J8YeaTfd4sopWYiKmBVYh1A"; int times = 35; - contractNRC20TokenSendTxTest.setContractAddress_nrc20(address("getContractAddress_nrc20", 0)); + contractNRC20TokenSendTxTest.setContractAddress_nrc20(contractAddress_nrc20); contractNRC20TokenSendTxTest.setMethodName("approve"); for (int i = 0; i < times; i++) { contractNRC20TokenSendTxTest.setSender(address("getToAddress", i)); @@ -173,9 +174,9 @@ public void multySenderCallOneContract() throws Exception { public void multySenderCallMultyContracts() throws Exception { int times = 35; contractNRC20TokenSendTxTest.setMethodName("approve"); - for (int i = 0; i < times; i++) { + for (int i = 0; i < 200; i++) { contractNRC20TokenSendTxTest.setSender(address("getToAddress", i)); - contractNRC20TokenSendTxTest.setContractAddress_nrc20(address("getContractAddress_nrc20", i)); + contractNRC20TokenSendTxTest.setContractAddress_nrc20(address("getContractAddress_nrc20", i % times)); contractNRC20TokenSendTxTest.callContract(); } } From 020a7b9c9ca5fded93cce83204c884a7ae57bde5 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Mon, 7 Dec 2020 13:09:24 +0800 Subject: [PATCH 212/304] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=86=E5=8F=89=E9=93=BE=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=8C=BA=E5=9D=97=E6=A8=A1=E5=9D=97=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/block/manager/BlockChainManager.java | 25 +++++++++++++------ .../thread/monitor/ForkChainsMonitor.java | 10 ++++++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/module/nuls-block/src/main/java/io/nuls/block/manager/BlockChainManager.java b/module/nuls-block/src/main/java/io/nuls/block/manager/BlockChainManager.java index d055cfb7a0..51ea910f9b 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/manager/BlockChainManager.java +++ b/module/nuls-block/src/main/java/io/nuls/block/manager/BlockChainManager.java @@ -25,10 +25,13 @@ import io.nuls.block.constant.BlockErrorCode; import io.nuls.block.constant.ChainTypeEnum; import io.nuls.block.model.Chain; +import io.nuls.block.model.CheckResult; import io.nuls.block.rpc.call.ConsensusCall; +import io.nuls.block.rpc.call.NetworkCall; import io.nuls.block.rpc.call.TransactionCall; import io.nuls.block.service.BlockService; import io.nuls.block.storage.ChainStorageService; +import io.nuls.block.thread.BlockSynchronizer; import io.nuls.block.utils.BlockUtil; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; @@ -82,7 +85,7 @@ public class BlockChainManager { * @param forkChain * @return */ - public static boolean switchChain(int chainId, Chain masterChain, Chain forkChain) { + public static CheckResult switchChain(int chainId, Chain masterChain, Chain forkChain) { NulsLogger logger = ContextManager.getContext(chainId).getLogger(); try { logger.info("*switch chain start"); @@ -99,7 +102,13 @@ public static boolean switchChain(int chainId, Chain masterChain, Chain forkChai long masterChainEndHeight = masterChain.getEndHeight(); if (masterChainEndHeight < forkHeight) { logger.error("*masterChainEndHeight < forkHeight, data error"); - System.exit(1); + //重置网络 + NetworkCall.resetNetwork(chainId); + //重新开启区块同步线程 + ConsensusCall.notice(chainId, MODULE_WAITING); + TransactionCall.notice(chainId, MODULE_WAITING); + BlockSynchronizer.syn(chainId); + return new CheckResult(false, true); } logger.info("*calculate fork point complete, forkHeight=" + forkHeight); @@ -119,7 +128,7 @@ public static boolean switchChain(int chainId, Chain masterChain, Chain forkChai } else { logger.info("*rollback master chain doing, fail hash=" + hash); saveBlockToMasterChain(chainId, blockStack); - return false; + return new CheckResult(false, false); } } while (rollbackHeight >= forkHeight); logger.info("*rollback master chain end"); @@ -147,7 +156,7 @@ public static boolean switchChain(int chainId, Chain masterChain, Chain forkChai if (!chainStorageService.save(chainId, blockStack)) { logger.info("*error occur when save masterForkChain"); append(masterChain, masterForkChain); - return false; + return new CheckResult(false, false); } //至此,主链回滚完成 logger.info("*masterChain rollback complete"); @@ -169,7 +178,7 @@ public static boolean switchChain(int chainId, Chain masterChain, Chain forkChai subChain + ",masterForkChain-" + masterForkChain); deleteForkChain(chainId, topForkChain, true); append(masterChain, masterForkChain); - return false; + return new CheckResult(false, false); } } //6.收尾工作 @@ -179,7 +188,7 @@ public static boolean switchChain(int chainId, Chain masterChain, Chain forkChai logger.error("block chain switch fail, auto rollback fail, process exit."); System.exit(1); } - return true; + return new CheckResult(true, false); } private static void saveBlockToMasterChain(int chainId, Stack blockStack) { @@ -419,8 +428,8 @@ public static boolean fork(Chain mainChain, Chain forkChain) { /** * 递归删除孤儿链 * - * @param chainId 链Id/chain id - * @param orphanChain 要删除的孤儿链 + * @param chainId 链Id/chain id + * @param orphanChain 要删除的孤儿链 */ public static void deleteOrphanChain(int chainId, Chain orphanChain) { orphanChains.get(chainId).remove(orphanChain); diff --git a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/ForkChainsMonitor.java b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/ForkChainsMonitor.java index 5db129aa94..1938fa0889 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/ForkChainsMonitor.java +++ b/module/nuls-block/src/main/java/io/nuls/block/thread/monitor/ForkChainsMonitor.java @@ -25,6 +25,7 @@ import io.nuls.block.model.Chain; import io.nuls.block.model.ChainContext; import io.nuls.block.model.ChainParameters; +import io.nuls.block.model.CheckResult; import io.nuls.block.rpc.call.ConsensusCall; import io.nuls.block.rpc.call.TransactionCall; import io.nuls.core.log.logback.NulsLogger; @@ -55,6 +56,7 @@ public static ForkChainsMonitor getInstance() { protected void process(int chainId, ChainContext context, NulsLogger commonLog) { StampedLock lock = context.getLock(); long stamp = lock.tryOptimisticRead(); + StatusEnum status = StatusEnum.RUNNING; try { for (; ; stamp = lock.writeLock()) { if (stamp == 0L) { @@ -96,8 +98,12 @@ protected void process(int chainId, ChainContext context, NulsLogger commonLog) context.setStatus(StatusEnum.SWITCHING); ConsensusCall.notice(chainId, MODULE_WAITING); TransactionCall.notice(chainId, MODULE_WAITING); - if (BlockChainManager.switchChain(chainId, masterChain, switchChain)) { + CheckResult checkResult = BlockChainManager.switchChain(chainId, masterChain, switchChain); + if (checkResult.isResult()) { commonLog.info("chainId-" + chainId + ", switchChain success"); + } else if (checkResult.isTimeout()) { + status = StatusEnum.WAITING; + break; } else { commonLog.info("chainId-" + chainId + ", switchChain fail, auto rollback success"); } @@ -107,7 +113,7 @@ protected void process(int chainId, ChainContext context, NulsLogger commonLog) break; } } finally { - context.setStatus(StatusEnum.RUNNING); + context.setStatus(status); if (StampedLock.isWriteLockStamp(stamp)) { lock.unlockWrite(stamp); } From 4156b14b2194c3e13c559941dbad887cd0d21a1e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 7 Dec 2020 23:18:50 +0800 Subject: [PATCH 213/304] fix bug about multi-asset transfer into contract --- .../controller/ContractController.java | 6 +- .../controller/TransactionController.java | 5 +- .../api/resources/AccountLedgerResource.java | 5 +- .../api/resources/ContractResource.java | 3 +- .../form/contract/ContractValidateCall.java | 12 +++ .../nuls/provider/rpctools/ContractTools.java | 3 +- .../java/io/nuls/provider/utils/Utils.java | 28 +++++++ .../contract/callable/ContractTxCallable.java | 1 - .../nuls/contract/helper/ContractHelper.java | 15 +--- .../service/impl/ContractCallerImpl.java | 1 - .../io/nuls/contract/util/ContractUtil.java | 82 +++++++++++++------ .../validator/CallContractTxValidator.java | 1 - .../main/java/io/nuls/contract/vm/Heap.java | 6 +- .../tx/pocm/ContractPOCMSendTxTest.java | 58 ++++++++++--- 14 files changed, 165 insertions(+), 61 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index 6427011e8a..ca5972cf6c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -743,7 +743,8 @@ public RpcResult validateContractCreate(List params) { @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), - @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true) + @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "success", valueType = boolean.class, description = "验证成功与否"), @@ -769,7 +770,8 @@ public RpcResult validateContractCall(List params) { params.get(5), params.get(6), params.get(7), - params.get(8) + params.get(8), + params.get(9) ); return ResultUtil.getJsonRpcResult(mapResult); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index d44604bede..a0efce1ad5 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -54,6 +54,7 @@ import io.nuls.provider.rpctools.TransactionTools; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.Utils; import io.nuls.provider.utils.VerifyUtils; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; @@ -234,6 +235,7 @@ public RpcResult broadcastTx(List params) { if (argsResult.getError() != null) { return argsResult; } + String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); result = contractTools.validateContractCall(chainId, AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), @@ -242,7 +244,8 @@ public RpcResult broadcastTx(List params) { AddressTool.getStringAddressByBytes(call.getContractAddress()), call.getMethodName(), call.getMethodDesc(), - call.getArgs()); + call.getArgs(), + multyAssetValues); break; case DELETE_CONTRACT: Transaction deleteTx = new Transaction(); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index edfef17a7c..14176f4d26 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -54,6 +54,7 @@ import io.nuls.provider.rpctools.vo.AccountBalance; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.Utils; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.model.dto.*; @@ -188,6 +189,7 @@ public RpcClientResult broadcast(TxForm form) { if (argsResult.isFailed()) { return argsResult; } + String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); result = contractTools.validateContractCall(config.getChainId(), AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), @@ -196,7 +198,8 @@ public RpcClientResult broadcast(TxForm form) { AddressTool.getStringAddressByBytes(call.getContractAddress()), call.getMethodName(), call.getMethodDesc(), - call.getArgs()); + call.getArgs(), + multyAssetValues); break; case DELETE_CONTRACT: Transaction deleteTx = new Transaction(); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index ab1032eb3b..945c6fa585 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -468,7 +468,8 @@ public RpcClientResult validateContractCall(ContractValidateCall form) { form.getContractAddress(), form.getMethodName(), form.getMethodDesc(), - form.getArgs()); + form.getArgs(), + form.getMultyAssetValues()); return ResultUtil.getRpcClientResult(mapResult); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java index 6ffe039c7d..d0db031045 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java @@ -27,6 +27,8 @@ import io.nuls.core.rpc.model.ApiModel; import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.core.rpc.model.Parameter; +import io.nuls.core.rpc.model.TypeDescriptor; import io.nuls.provider.model.form.Base; import io.nuls.v2.util.ContractUtil; @@ -41,6 +43,8 @@ public class ContractValidateCall extends Base { private String sender; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0", required = false) private long value; + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + private String[][] multyAssetValues; @ApiModelProperty(description = "最大gas消耗", required = true) private long gasLimit; @ApiModelProperty(description = "执行合约单价", required = true) @@ -54,6 +58,14 @@ public class ContractValidateCall extends Base { @ApiModelProperty(description = "参数列表", required = false) private Object[] args; + public String[][] getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(String[][] multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } + public String[][] getArgs(String[] types) { return ContractUtil.twoDimensionalArray(args, types); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java index dbb01635fa..a0b690faad 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java @@ -126,7 +126,7 @@ public Result validateContractCreate(int chainId, Object sender, Object gas } public Result validateContractCall(int chainId, Object sender, Object value, Object gasLimit, Object price, - Object contractAddress, Object methodName, Object methodDesc, Object args) { + Object contractAddress, Object methodName, Object methodDesc, Object args, Object multyAssetValues) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); params.put("sender", sender); @@ -137,6 +137,7 @@ public Result validateContractCall(int chainId, Object sender, Object value params.put("methodName", methodName); params.put("methodDesc", methodDesc); params.put("args", args); + params.put("multyAssetValues", multyAssetValues); Map map = new HashMap(4); try { return callRpc(ModuleE.SC.abbr, VALIDATE_CALL, params,(Function, Result>) res->{ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java index 1df4534eb5..587a175118 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java @@ -2,6 +2,8 @@ import io.nuls.base.RPCUtil; import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinTo; import io.nuls.base.data.Transaction; import io.nuls.base.signture.P2PHKSignature; import io.nuls.base.signture.SignatureUtil; @@ -119,4 +121,30 @@ private static int getDepth(Class cls, int depth) { return max; } + public static String[][] extractMultyAssetInfoFromCallTransaction(CoinData coinData, int mainChainId, int mainAssetId) { + List toList = coinData.getTo(); + if (toList == null || toList.isEmpty()) { + return null; + } + List list = null; + for (CoinTo to : toList) { + if (to.getAssetsChainId() == mainChainId && to.getAssetsId() == mainAssetId) { + continue; + } + if (list == null) { + list = new ArrayList<>(); + } + list.add(new String[]{to.getAmount().toString(), String.valueOf(to.getAssetsChainId()), String.valueOf(to.getAssetsId())}); + } + if (list == null) { + return null; + } + int length = list.size(); + String[][] array = new String[length][]; + for (int i = 0; i < length; i++) { + array[i] = list.get(i); + } + return array; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java index 5d4c5c0704..91c01e6f97 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallable.java @@ -147,7 +147,6 @@ public ContractResult call() throws Exception { } // end code by pierre case CALL_CONTRACT: - contractHelper.extractAssetInfoFromCallTransaction((CallContractData) contractData, tx); contractResult = contractExecutor.call(executor, contractData, number, preStateRoot, extractPublicKey(tx)); boolean bool = makeContractResultAndCheckGasSerial(tx, contractResult, batchInfo); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 56dfafec3e..5993dd0299 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -729,20 +729,7 @@ public ContractResult makeFailedContractResult(int chainId, ContractWrapperTrans public void extractAssetInfoFromCallTransaction(CallContractData contractData, Transaction tx) throws NulsException { CoinData coinData = tx.getCoinDataInstance(); - List toList = coinData.getTo(); - if (toList == null || toList.isEmpty()) { - return; - } - List list = null; - for (CoinTo to : toList) { - if (to.getAssetsChainId() == CHAIN_ID && to.getAssetsId() == ASSET_ID) { - continue; - } - if (list == null) { - list = new ArrayList<>(); - } - list.add(new ProgramMultyAssetValue(to.getAmount(), to.getAssetsChainId(), to.getAssetsId())); - } + List list = extractMultyAssetInfoFromCallTransaction(coinData); contractData.setMultyAssetValues(list); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index a16e97fb8f..c86df55c17 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -152,7 +152,6 @@ public List reCallTx(ProgramExecutor batchExecutor, List tokenAssetsContractAddressInfoMap = chain.getTokenAssetsContractAddressInfoMap(); String nrcContractAddress = tokenAssetsContractAddressInfoMap.get(assetsChainId + "-" + assetsId); - if(StringUtils.isBlank(nrcContractAddress)) { + if (StringUtils.isBlank(nrcContractAddress)) { // 没有注册合约资产 - if(Log.isDebugEnabled()) { + if (Log.isDebugEnabled()) { Log.warn("没有注册合约资产[{}]", assetsChainId + "-" + assetsId); } return null; } boolean isCrossAssets = ChainManagerCall.isCrossAssets(assetsChainId, assetsId); - if(!isCrossAssets) { + if (!isCrossAssets) { // 没有注册跨链资产 - if(Log.isDebugEnabled()) { + if (Log.isDebugEnabled()) { Log.warn("没有注册跨链资产[{}]", assetsChainId + "-" + assetsId); } return null; @@ -553,8 +555,8 @@ public static boolean makeContractResultAndCheckGasSerial(ContractWrapperTransac synchronized (batchInfo) { int txOrder = tx.getOrder(); int serialOrder = batchInfo.getSerialOrder(); - if(serialOrder == txOrder) { - if(Log.isDebugEnabled()) { + if (serialOrder == txOrder) { + if (Log.isDebugEnabled()) { Log.debug("串行交易order - [{}]", txOrder); } batchInfo.setSerialOrder(serialOrder + 1); @@ -567,7 +569,7 @@ public static boolean makeContractResultAndCheckGasSerial(ContractWrapperTransac return checkGas; } else { i++; - if(Log.isDebugEnabled()) { + if (Log.isDebugEnabled()) { Log.debug("等待的交易order - [{}], [{}]线程等待次数 - [{}]", txOrder, Thread.currentThread().getName(), i); } try { @@ -576,7 +578,7 @@ public static boolean makeContractResultAndCheckGasSerial(ContractWrapperTransac Log.error(e); } // 防止唤醒线程意外终止,导致等待线程永远等待 - if(i > 4) { + if (i > 4) { return false; } } @@ -587,9 +589,9 @@ public static boolean makeContractResultAndCheckGasSerial(ContractWrapperTransac private static boolean checkGas(ContractResult contractResult, BatchInfo batchInfo) { long gasUsed = contractResult.getGasUsed(); boolean isAdded = batchInfo.addGasCostTotal(gasUsed, contractResult.getHash()); - if(!isAdded) { + if (!isAdded) { contractResult.setError(true); - contractResult.setErrorMessage("Exceed tx count [600] or gas limit of block [13,000,000 gas], the contract transaction ["+ contractResult.getHash() +"] revert to package queue."); + contractResult.setErrorMessage("Exceed tx count [600] or gas limit of block [13,000,000 gas], the contract transaction [" + contractResult.getHash() + "] revert to package queue."); } return isAdded; } @@ -646,7 +648,7 @@ public static ContractBaseTransaction convertContractTx(int chainId, Transaction break; // pierre 标记 需要协议升级 done case CROSS_CHAIN: - if(ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { + if (ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { break; } resultTx = new CrossTokenContractTransaction(); @@ -670,7 +672,7 @@ public static Response wrapperFailed(Result result) { if (StringUtils.isBlank(msg)) { msg = errorCode.getMsg(); } - Response res = MessageUtil.newFailResponse("",msg); + Response res = MessageUtil.newFailResponse("", msg); res.setResponseErrorCode(errorCode.getCode()); return res; } else { @@ -685,7 +687,7 @@ public static int extractTxTypeFromTx(String txString) throws NulsException { } public static byte[] extractPublicKey(Transaction tx) { - if(tx.getTransactionSignature() == null) { + if (tx.getTransactionSignature() == null) { return null; } TransactionSignature signature = new TransactionSignature(); @@ -741,17 +743,49 @@ public static String toString(String[][] a) { } public static void addDebugEvents(List debugEvents, Result result) { - if(debugEvents.isEmpty()) { + if (debugEvents.isEmpty()) { return; } String msg = result.getMsg(); - if(msg == null) { + if (msg == null) { msg = EMPTY; } msg += ", debugEvents: " + debugEvents.toString(); result.setMsg(msg); } + public static List extractMultyAssetInfoFromCallTransaction(CoinData coinData) { + List toList = coinData.getTo(); + if (toList == null || toList.isEmpty()) { + return null; + } + List list = null; + for (CoinTo to : toList) { + if (to.getAssetsChainId() == CHAIN_ID && to.getAssetsId() == ASSET_ID) { + continue; + } + if (list == null) { + list = new ArrayList<>(); + } + list.add(new ProgramMultyAssetValue(to.getAmount(), to.getAssetsChainId(), to.getAssetsId())); + } + return list; + } + + public static String[][] multyAssetStringArray(List multyAssetValues) { + int length; + if (multyAssetValues == null || (length = multyAssetValues.size()) == 0) { + return null; + } + String[][] array = new String[length][]; + ProgramMultyAssetValue value; + for (int i = 0; i < length; i++) { + value = multyAssetValues.get(i); + array[i] = new String[]{value.getValue().toString(), String.valueOf(value.getAssetChainId()), String.valueOf(value.getAssetId())}; + } + return array; + } + public static String[][] multyAssetStringArray(ProgramMultyAssetValue[] multyAssetValues) { int length; if (multyAssetValues == null || (length = multyAssetValues.length) == 0) { @@ -759,7 +793,7 @@ public static String[][] multyAssetStringArray(ProgramMultyAssetValue[] multyAss } String[][] array = new String[length][]; ProgramMultyAssetValue value; - for (int i=0;i 0) { for (CoinTo coin : toList) { - coin = toList.get(0); if (coin.getLockTime() != 0) { Log.error("contract call error: Transfer amount cannot be locked."); return Result.getFailed(AMOUNT_LOCK_ERROR); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 6f498cbcee..fd8612991e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -52,17 +52,17 @@ public class Heap { private VM vm; - //TODO pierre 标记 + // pierre 标记 public Map> objects = new LinkedHashMap<>(1024); // end code by pierre //public final Map> objects = new HashMap<>(1024); - //TODO pierre 标记 + // pierre 标记 public Map arrays = new LinkedHashMap<>(1024); // end code by pierre //public final Map arrays = new HashMap<>(1024); - //TODO pierre 标记 + // pierre 标记 public Set changes = new LinkedHashSet<>(1024); // end code by pierre //private final Set changes = new HashSet<>(1024); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index d7f83837d2..8e36a60d07 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -86,19 +86,48 @@ public void createAgent()throws Exception{ params.put(Constants.CHAIN_ID,2); params.put("deposit","2000000000000"); params.put("commissionRate",10); - params.put("packingAddress",toAddress34); + params.put("packingAddress","tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe"); params.put("password","nuls123456"); params.put("rewardAddress",sender); Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_createAgent", params); System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); } + /** + * 委托节点 + * */ + @Test + public void depositAgent()throws Exception{ + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID,2); + params.put("address",sender); + params.put("agentHash","08423ef3f75ad4426f285e950626aeeeeaba07df3dd05161f31c4f49103ef5d4"); + params.put("deposit","30000000000000"); + params.put("password", "nuls123456"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_depositToAgent", params); + System.out.println(cmdResp.getResponseData()); + } + + /** + * 取消委托节点 + * */ + @Test + public void withdraw()throws Exception{ + Mapparams = new HashMap<>(); + params.put(Constants.CHAIN_ID,2); + params.put("address", sender); + params.put("txHash","b7bf0b75b972e040f2a071e5ef3825a7dee69d864a300e75d8200d7f0c596cdd"); + params.put("password", "nuls123456"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_withdraw", params); + System.out.println(cmdResp.getResponseData()); + } + /** * 流程 - 创建TOKEN, POCM, 添加节点,抵押,退出 */ @Test public void testConsensusDepositOthersProcessor() throws Exception { - String authCode = "1a4123aa-7cbb-42f5-80be-8d8dc8331522"; + /*String authCode = "1a4123aa-7cbb-42f5-80be-8d8dc8331522"; String nrc20Locked = nrc20Locked(); this.contractAddress_nrc20 = nrc20Locked; String pocm = pocm(nrc20Locked, authCode); @@ -108,19 +137,26 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); Log.info("begin addOtherAgent"); - this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("445ed18a9b03a252360ebc9264a6d9b59b2f0c8b4f17053aac53d61183c99dba").toArray()); - Log.info("begin depositForOwn {}", sender); - - //String nrc20Locked = "tNULSeBaN8w5ioWD9m2GE16QpuawaKtMDjdDRk"; - //contractAddress_nrc20 = nrc20Locked; - //contractAddress = "tNULSeBaN7opQS7Trq1VcWsBjNZJgtXTr9ieZ9"; - //String pocm = contractAddress; + this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("08423ef3f75ad4426f285e950626aeeeeaba07df3dd05161f31c4f49103ef5d4").toArray()); + Log.info("begin depositForOwn {}", sender);*/ + + String nrc20Locked = "tNULSeBaN2VmScSuWZt9VWHRrwcFPGQ3MUQ9um"; + contractAddress_nrc20 = nrc20Locked; + contractAddress = "tNULSeBaN2hxBq9S6Qn1iRjNLHERcZjizE1R8d"; + String pocm = contractAddress; + //Log.info("begin quit {}", sender); + //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); + //Log.info("begin quit {}", toAddress5); + //this.invokeCall(toAddress5, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); + //Log.info("begin quit {}", toAddress6); + //this.invokeCall(toAddress6, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); + // this.invokeCall(sender, BigInteger.valueOf(3000_00000000L), contractAddress, "depositForOwn", null, "remark"); Log.info("begin depositForOwn {}", toAddress5); this.invokeCall(toAddress5, BigInteger.valueOf(2100_00000000L), contractAddress, "depositForOwn", null, "remark"); Log.info("begin depositForOwn {}", toAddress6); this.invokeCall(toAddress6, BigInteger.valueOf(1200_00000000L), contractAddress, "depositForOwn", null, "remark"); - TimeUnit.SECONDS.sleep(30); + /*TimeUnit.SECONDS.sleep(30); Log.info("begin quit {}", sender); this.invokeCall(sender, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); @@ -137,7 +173,7 @@ public void testConsensusDepositOthersProcessor() throws Exception { Log.info("sender locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", sender)); Log.info("toAddress5 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress5)); Log.info("toAddress6 locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", toAddress6)); - Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm)); + Log.info("pocm locked balance is {}", this.invokeView(nrc20Locked, "lockedBalanceOf", pocm));*/ } @Test From 60304d90db1d7f7dde20e6f83284fa37157be34b Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Dec 2020 12:19:51 +0800 Subject: [PATCH 214/304] update contract db and transfer --- .../callable/ContractTxCallableV8.java | 9 +- .../contract/helper/ContractNewTxHandler.java | 4 +- .../org/ethereum/config/SystemProperties.java | 2 +- .../datasource/rocksdb/RocksDbDataSource.java | 107 ++++++++++++++---- .../java/org/ethereum/db/StateSource.java | 21 +++- 5 files changed, 114 insertions(+), 29 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java index 81281d295a..3937fe6537 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java @@ -183,7 +183,11 @@ private void checkCallResult(ContractWrapperTransaction tx, ContractResult contr private void dealCallResult(ContractWrapperTransaction tx, ContractResult contractResult, int chainId) throws IOException, NulsException { if (contractResult.isSuccess()) { // 处理合约生成的其他交易、临时余额、合约内部转账 - contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); + boolean isSuccess = contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); + if (!isSuccess) { + // 处理调用失败的合约,把需要退还的NULS 生成一笔合约内部转账交易,退还给调用者 + this.handleFailedContract(contractResult); + } } else { // 处理调用失败的合约,把需要退还的NULS 生成一笔合约内部转账交易,退还给调用者 this.handleFailedContract(contractResult); @@ -226,11 +230,10 @@ private void handleFailedContract(ContractResult contractResult) throws IOExcept ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, sender, value, CHAIN_ID, ASSET_ID); contractResult.getContractTransferList().add(tx); } - + //TODO pierre 多个账户向合约转入多个资产,合约执行失败后,退还转入的资产金额 int toSize = toList.size(); if (toSize > 0) { for (CoinTo coin : toList) { - coin = toList.get(0); assetChainId = coin.getAssetsChainId(); assetId = coin.getAssetsId(); boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java index 89530dd4f3..0db35c3ab3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractNewTxHandler.java @@ -57,7 +57,7 @@ public class ContractNewTxHandler { @Autowired private ContractNewTxFromOtherModuleHandler contractNewTxFromOtherModuleHandler; - public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTransaction tx, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) throws NulsException { + public boolean handleContractNewTx(int chainId, long blockTime, ContractWrapperTransaction tx, ContractResult contractResult, ContractTempBalanceManager tempBalanceManager) throws NulsException { Map accountMap = contractResult.getAccounts(); // 维护临时余额管理器 if(accountMap != null) { @@ -189,7 +189,7 @@ public void handleContractNewTx(int chainId, long blockTime, ContractWrapperTran } } } - + return isSuccess; } } diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java index d37297f256..416da05dd0 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/config/SystemProperties.java @@ -145,7 +145,7 @@ static boolean isUseOnlySpringConfig() { public SystemProperties() { Map values = new HashMap<>(); values.put("cache.flush.writeCacheSize", 64); - values.put("cache.flush.blocks", 10000); + values.put("cache.flush.blocks", 0); values.put("cache.flush.shortSyncFlush", true); values.put("cache.stateCacheSize", 384); values.put("crypto.providerName", "BC"); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java index a5b565cccd..6eb84857e8 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java @@ -17,18 +17,24 @@ */ package org.ethereum.datasource.rocksdb; +import io.nuls.contract.config.ContractConfig; +import io.nuls.contract.util.Log; +import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.model.StringUtils; import io.nuls.core.rockdb.manager.RocksDBManager; import io.nuls.core.rockdb.service.BatchOperation; import io.nuls.core.rockdb.service.RocksDBService; +import io.nuls.core.rockdb.util.DBUtils; import org.apache.commons.lang3.ArrayUtils; import org.ethereum.config.SystemProperties; import org.ethereum.datasource.DbSettings; import org.ethereum.datasource.DbSource; -import org.rocksdb.RocksDB; -import org.rocksdb.RocksDBException; +import org.rocksdb.*; +import org.rocksdb.util.SizeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.util.Map; import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; @@ -96,10 +102,10 @@ public void init(DbSettings settings) { String[] areas = RocksDBService.listTable(); - if (!ArrayUtils.contains(areas, AREA)) { - RocksDBService.createTable(AREA); + if (ArrayUtils.contains(areas, AREA)) { + RocksDBManager.closeTable(AREA); } - rocksDB = RocksDBManager.getTable(AREA); + rocksDB = createTable(AREA); alive = true; @@ -111,6 +117,51 @@ public void init(DbSettings settings) { } } + private RocksDB createTable(String area) { + try { + if (StringUtils.isBlank(area)) { + throw new RuntimeException("empty area"); + } + ContractConfig contractConfig = SpringLiteContext.getBean(ContractConfig.class); + String dataPath = contractConfig.getDataPath(); + File pathDir = DBUtils.loadDataPath(dataPath); + dataPath = pathDir.getPath(); + dataPath += File.separator + "smart-contract"; + File dir = new File(dataPath + File.separator + area); + if (!dir.exists()) { + dir.mkdirs(); + } + dataPath = dataPath + File.separator + area + File.separator + "rocksdb"; + Log.info("Contract dataPath is " + dataPath); + + Options options = new Options(); + options.setCreateIfMissing(true); + /** + * 优化读取性能方案 + */ + options.setAllowMmapReads(true); + options.setCompressionType(CompressionType.NO_COMPRESSION); + options.setMaxOpenFiles(-1); + + BlockBasedTableConfig tableOption = new BlockBasedTableConfig(); + tableOption.setBlockCache(new LRUCache(32 * 1024 * 1024)); + tableOption.setCacheIndexAndFilterBlocks(true); + tableOption.setPinL0FilterAndIndexBlocksInCache(true); + tableOption.setBlockRestartInterval(4); + tableOption.setFilterPolicy(new BloomFilter(10, true)); + options.setTableFormatConfig(tableOption); + + options.setNewTableReaderForCompactionInputs(true); + //为压缩的输入,打开RocksDB层的预读取 + options.setCompactionReadaheadSize(128 * SizeUnit.KB); + return RocksDB.open(options, dataPath); + } catch (Exception e) { + Log.error("error create table: " + area, e); + throw new RuntimeException("error create table: " + area); + } + + } + @Override public void reset() { } @@ -137,6 +188,7 @@ public String getName() { @Override public byte[] get(byte[] key) { + //long startTime = System.nanoTime(); resetDbLock.readLock().lock(); try { //if (logger.isTraceEnabled()) { @@ -145,8 +197,8 @@ public byte[] get(byte[] key) { try { byte[] ret = rocksDB.get(key); - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); + //if (Log.isInfoEnabled()) { + // Log.info("<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", System.nanoTime() - startTime); //} return ret; } catch (Exception e) { @@ -175,8 +227,8 @@ public void put(byte[] key, byte[] value) { // logger.trace("~> RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); //} rocksDB.put(key, value); - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //if (logger.isInfoEnabled()) { + // logger.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); //} } catch (Exception e) { logger.error("RocksDbDataSource.put() error", e); @@ -193,8 +245,8 @@ public void delete(byte[] key) { // logger.trace("~> RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); //} rocksDB.delete(key); - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); + //if (logger.isInfoEnabled()) { + // logger.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); //} } catch (Exception e) { logger.error("RocksDbDataSource.delete() error", e); @@ -209,20 +261,33 @@ public Set keys() { } private void updateBatchInternal(Map rows) throws Exception { - BatchOperation batchOperation = RocksDBService.createWriteBatch(AREA); - Set> entrySet = rows.entrySet(); - for (Map.Entry entry : entrySet) { - if (entry.getValue() == null) { - batchOperation.delete(entry.getKey()); - } else { - batchOperation.put(entry.getKey(), entry.getValue()); + WriteBatch batch = null; + try { + batch = new WriteBatch(); + Set> entrySet = rows.entrySet(); + for (Map.Entry entry : entrySet) { + if (entry.getValue() == null) { + batch.delete(entry.getKey()); + } else { + batch.put(entry.getKey(), entry.getValue()); + } + } + rocksDB.write(new WriteOptions(), batch); + } catch (Exception e) { + throw e; + } finally { + // Make sure you close the batch to avoid resource leaks. + // 关闭批量操作对象释放资源 + if (batch != null) { + batch.close(); } } - batchOperation.executeBatch(); + } @Override public void updateBatch(Map rows) { + //long startTime = System.nanoTime(); resetDbLock.writeLock().lock(); try { //if (logger.isTraceEnabled()) { @@ -230,8 +295,8 @@ public void updateBatch(Map rows) { //} try { updateBatchInternal(rows); - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //if (Log.isInfoEnabled()) { + // Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime); //} } catch (Exception e) { logger.error("Error, retrying one more time...", e); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java index 0d035c26dc..cfb9befb80 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java @@ -17,6 +17,7 @@ */ package org.ethereum.db; +import io.nuls.contract.util.Log; import org.ethereum.config.CommonConfig; import org.ethereum.config.SystemProperties; import org.ethereum.datasource.*; @@ -35,7 +36,15 @@ public class StateSource extends SourceChainBox public StateSource(Source src, boolean pruningEnabled) { super(src); - add(readCache = new ReadCache.BytesKey<>(src).withMaxCapacity(16 * 1024 * 1024 / 512)); // 512 - approx size of a node + long memorySize = Runtime.getRuntime().maxMemory() / 1024 / 1024; + Log.info("Total RAM:{} MB", memorySize); + int maxCapacity = 16 * 1024 * 2; + if (memorySize >= 7500) { + maxCapacity = maxCapacity * 12; + } else if (memorySize >= 2500) { + maxCapacity = maxCapacity * 3; + } + add(readCache = new ReadCache.BytesKey<>(src).withMaxCapacity(maxCapacity)); // 512 - approx size of a node readCache.setFlushSource(true); writeCache = new AsyncWriteCache(readCache) { @Override @@ -58,7 +67,15 @@ protected WriteCache createCache(Source source) public void setConfig(SystemProperties config) { int size = config.getConfig().getInt("cache.stateCacheSize"); - readCache.withMaxCapacity(size * 1024 * 1024 / 512); // 512 - approx size of a node + long memorySize = Runtime.getRuntime().maxMemory() / 1024 / 1024; + Log.info("Total RAM:{} MB", memorySize); + int maxCapacity = size * 1024 * 2; + if (memorySize >= 7500) { + maxCapacity = maxCapacity * 10; + } else if (memorySize >= 2500) { + maxCapacity = maxCapacity * 2; + } + readCache.withMaxCapacity(maxCapacity); // 512 - approx size of a node } public void setCommonConfig(CommonConfig commonConfig) { From 4e9f1b4cae4a4bcaf66cf3caf17b06bc0cb1e987 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Dec 2020 15:42:44 +0800 Subject: [PATCH 215/304] fix NPE --- .../main/java/io/nuls/contract/rpc/cmd/ContractCmd.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java index 9c53ce90b7..91971b0318 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java @@ -144,6 +144,13 @@ public Response invokeContractOneByOne(Map params) { if (result.isFailed()) { return wrapperFailed(result); } + if (result.getData() == null) { + Map resultData = new HashMap<>(); + resultData.put("success", true); + resultData.put("gasUsed", 0); + resultData.put("txList", List.of()); + return success(resultData); + } return success(result.getData()); } else { if(!contractHelper.getChain(chainId).getBatchInfo().checkGasCostTotal(hash)) { From 4de19be7f763af89b4dc48e58c5a5f5f90ae4094 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Dec 2020 16:04:54 +0800 Subject: [PATCH 216/304] update memory rule in contract --- module/nuls-smart-contract/module.ncf | 4 ++-- .../src/main/java/org/ethereum/db/StateSource.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 7d54c7bae9..47736016cd 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,8 +2,8 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=4096 -JOPT_XMX=8192 +JOPT_XMS=3096 +JOPT_XMX=dynamic [Core] Managed=1 diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java index cfb9befb80..1f2177e79c 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/StateSource.java @@ -41,6 +41,8 @@ public StateSource(Source src, boolean pruningEnabled) { int maxCapacity = 16 * 1024 * 2; if (memorySize >= 7500) { maxCapacity = maxCapacity * 12; + } else if (memorySize >= 4500) { + maxCapacity = maxCapacity * 6; } else if (memorySize >= 2500) { maxCapacity = maxCapacity * 3; } @@ -72,6 +74,8 @@ public void setConfig(SystemProperties config) { int maxCapacity = size * 1024 * 2; if (memorySize >= 7500) { maxCapacity = maxCapacity * 10; + } else if (memorySize >= 4500) { + maxCapacity = maxCapacity * 5; } else if (memorySize >= 2500) { maxCapacity = maxCapacity * 2; } From 9d257308daa16e531f9961a86bc6ee1456067900 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Dec 2020 18:08:25 +0800 Subject: [PATCH 217/304] update result --- .../src/main/java/io/nuls/contract/model/bo/ContractResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java index dc9d4f4c73..76b86d3763 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java @@ -87,7 +87,6 @@ public class ContractResult { */ private List transfers = new ArrayList<>(); private List mergedTransferList = new ArrayList<>(); - private List mergerdMultyAssetTransferList = new ArrayList<>(); private transient List contractTransferList = new ArrayList<>(); private List contractTransferTxStringList = new ArrayList<>(); /** @@ -99,6 +98,7 @@ public class ContractResult { private String remark; private boolean isTerminated; private Set contractAddressInnerCallSet; + private List mergerdMultyAssetTransferList = new ArrayList<>(); private transient Object txTrack; private transient Map accounts; From b2a252f28e7e57af88b4e9fb12059668ae43b8d7 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 8 Dec 2020 22:23:29 +0800 Subject: [PATCH 218/304] update contract transfer back tx --- .../callable/ContractTxCallableV8.java | 18 +- .../tx/multyasset/ContractMultyAssetTest.java | 219 ++++++++++++++---- 2 files changed, 184 insertions(+), 53 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java index 3937fe6537..e9d78d0772 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java @@ -205,18 +205,21 @@ private void handleFailedContract(ContractResult contractResult) throws IOExcept BigInteger value = contractData.getValue(); byte[] contractAddress = contractData.getContractAddress(); - Map multyAssetMap = new HashMap<>(); + //Map multyAssetMap = new HashMap<>(); int assetChainId, assetId; - String assetKey; + //String assetKey; CoinData orginTxCoinData = orginTx.getCoinDataInstance(); List fromList = orginTxCoinData.getFrom(); - List toList = orginTxCoinData.getTo(); + //List toList = orginTxCoinData.getTo(); for(CoinFrom from : fromList) { assetChainId = from.getAssetsChainId(); assetId = from.getAssetsId(); - assetKey = assetChainId + "_" + assetId; + //assetKey = assetChainId + "_" + assetId; if (CHAIN_ID != assetChainId || ASSET_ID != assetId) { - multyAssetMap.put(assetKey, from.getAddress()); + //multyAssetMap.put(assetKey, from.getAddress()); + // 多个账户向合约转入多个资产,合约执行失败后,退还转入的资产金额 + ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, from.getAddress(), from.getAmount(), assetChainId, assetId); + contractResult.getContractTransferList().add(tx); } else if (from.getAmount().compareTo(value) >= 0){ orginTx.setValueSender(from.getAddress()); } @@ -230,8 +233,7 @@ private void handleFailedContract(ContractResult contractResult) throws IOExcept ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, sender, value, CHAIN_ID, ASSET_ID); contractResult.getContractTransferList().add(tx); } - //TODO pierre 多个账户向合约转入多个资产,合约执行失败后,退还转入的资产金额 - int toSize = toList.size(); + /*int toSize = toList.size(); if (toSize > 0) { for (CoinTo coin : toList) { assetChainId = coin.getAssetsChainId(); @@ -247,7 +249,7 @@ private void handleFailedContract(ContractResult contractResult) throws IOExcept contractResult.getContractTransferList().add(tx); } } - } + }*/ contractResult.setMergedTransferList(contractTransferHandler.contractTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); contractResult.setMergerdMultyAssetTransferList(contractTransferHandler.contractMultyAssetTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index b6a3bc18fe..d2a3dd0227 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -63,10 +63,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static io.nuls.contract.constant.ContractCmdConstant.CALL; import static io.nuls.contract.constant.ContractCmdConstant.CREATE; @@ -80,7 +77,8 @@ public class ContractMultyAssetTest extends BaseQuery { protected long gasLimit = 200000L; protected long gasPrice = 25L; protected long minutes_3 = 60 * 3; - protected String otherContract = "tNULSeBaN5npy43YB6GpdXie83a4mt9Zb2Ut1w"; + protected String otherContract = "tNULSeBaN8oAwguKBxE2sZSQvTCMJW1kFnF9mk"; + protected String offlineContract = "tNULSeBaN9hZLrqjvCrmHrdvKZPfBh9A2uneZc"; /** * 创建合约 @@ -107,8 +105,8 @@ public void createContract() throws Exception { @Test public void assetRegisterTest() throws Exception { Map params = new HashMap<>(); - params.put("assetSymbol", "MTA"); - params.put("assetName", "MTA"); + params.put("assetSymbol", "MTAX"); + params.put("assetName", "MTAX"); params.put("initNumber", 100000000); params.put("decimalPlace", 8); params.put("txCreatorAddress", sender); @@ -235,7 +233,7 @@ public void transferInOfmanyAccountCall() throws Exception { String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); - String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; + String contractAddress = offlineContract; String remark = ""; this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, @@ -245,22 +243,50 @@ public void transferInOfmanyAccountCall() throws Exception { } /** - * 多账户调用合约 - 转入(A账户支出,合约记录B账户) + * 多账户调用合约 - 转入其他资产,如 2-2, 2-3 */ @Test - public void transferInOfmanyAccountCall_1() throws Exception { + public void transferInOfmanyAccountCallII() throws Exception { NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; - BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); - String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; + BigInteger value = BigInteger.ZERO; + String contractAddress = offlineContract; String remark = ""; + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[]{ + new ProgramMultyAssetValue(BigInteger.valueOf(2_0000_0000L), 2, 2), + new ProgramMultyAssetValue(BigInteger.valueOf(3_0000_0000L), 2, 3) + }; this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, - "_payable", "", remark, null, null, null, true); + "_payableMultyAsset", "", remark, null, null, multyAssetValues, true); + + } + + /** + * 多账户调用合约 - 同时转入NULS资产和其他资产,如 2-1, 2-2, 2-3 + */ + @Test + public void transferInOfmanyAccountCallIII() throws Exception { + NulsSDKBootStrap.init(chainId, "http://localhost:18004/"); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + String contractAddress = offlineContract; + String remark = ""; + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[]{ + new ProgramMultyAssetValue(BigInteger.valueOf(2_0000_0000L), 2, 2), + new ProgramMultyAssetValue(BigInteger.valueOf(3_0000_0000L), 2, 3) + }; + this.callTxOfflineII(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "receiveAllAssetsFailed", "", remark, null, null, multyAssetValues, true); } @@ -277,7 +303,7 @@ public void transferOutOfmanyAccountCall() throws Exception { String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; BigInteger value = BigInteger.ZERO; - String contractAddress = "tNULSeBaNAVAKkKhA2AoHk7eoVXbqtVVA8tu5Y"; + String contractAddress = offlineContract; String methodName = "transferNuls"; String methodDesc = ""; String remark = ""; @@ -288,16 +314,122 @@ public void transferOutOfmanyAccountCall() throws Exception { } protected void callTxOffline(String feeAccount, String feeAccountPri, - String sender, String senderPri, + String contractSender, String contractSenderPri, BigInteger value, String contractAddress, String methodName, String methodDesc, String remark, Object[] args, String[] argsType, ProgramMultyAssetValue[] multyAssetValues, boolean isBroadcastTx) throws Exception{ + List txSingers = new ArrayList<>(); + SignDto dto1 = new SignDto(); + dto1.setAddress(contractSender); + dto1.setPriKey(contractSenderPri); + SignDto dto2 = new SignDto(); + dto2.setAddress(feeAccount); + dto2.setPriKey(feeAccountPri); + txSingers.add(dto1); + txSingers.add(dto2); + //ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + //byte[] senderBytes = AddressTool.getAddress(sender); + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + + List froms = new ArrayList<>(); + List tos = new ArrayList<>(); + if (value.compareTo(BigInteger.ZERO) > 0) { + String payAccount = feeAccount; + //String payAccount = contractSender; + ContractBalance payAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), chainId, assetId, value, RPCUtil.decode(payAccountBalance.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, chainId, assetId, value); + tos.add(coinTo); + } + if (multyAssetValues != null) { + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + int assetChainId = multyAssetValue.getAssetChainId(); + int assetId = multyAssetValue.getAssetId(); + BigInteger _value = multyAssetValue.getValue(); + ContractBalance account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, feeAccount); + CoinFrom coinFrom = new CoinFrom(feeAccountBytes, assetChainId, assetId, _value, RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, assetChainId, assetId, _value); + tos.add(coinTo); + } + } + this.callTxOfflineBase(txSingers, froms, tos, feeAccount, contractSender, value, contractAddress, methodName, methodDesc, remark, + args, argsType, isBroadcastTx); } - //TODO pierre 设置CoinData - protected void callTxOfflineBase(List froms, List tos, + /** + * 两个账户支出同一个资产 + */ + protected void callTxOfflineII(String feeAccount, String feeAccountPri, + String contractSender, String contractSenderPri, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, + Object[] args, String[] argsType, ProgramMultyAssetValue[] multyAssetValues, boolean isBroadcastTx) throws Exception{ + List txSingers = new ArrayList<>(); + SignDto dto1 = new SignDto(); + dto1.setAddress(contractSender); + dto1.setPriKey(contractSenderPri); + SignDto dto2 = new SignDto(); + dto2.setAddress(feeAccount); + dto2.setPriKey(feeAccountPri); + // importPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78", password);//27 tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24 + SignDto dto3 = new SignDto(); + dto3.setAddress("tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24"); + dto3.setPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78"); + txSingers.add(dto1); + txSingers.add(dto2); + txSingers.add(dto3); + //ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + //byte[] senderBytes = AddressTool.getAddress(sender); + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + + List froms = new ArrayList<>(); + List tos = new ArrayList<>(); + if (value.compareTo(BigInteger.ZERO) > 0) { + String payAccount = feeAccount; + //String payAccount = contractSender; + ContractBalance payAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), chainId, assetId, value, RPCUtil.decode(payAccountBalance.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, chainId, assetId, value); + tos.add(coinTo); + } + if (multyAssetValues != null) { + String payAccount; + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + BigInteger _value = multyAssetValue.getValue(); + BigInteger divide = _value.divide(BigInteger.valueOf(2)); + int assetChainId = multyAssetValue.getAssetChainId(); + int assetId = multyAssetValue.getAssetId(); + + payAccount = feeAccount; + ContractBalance account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), assetChainId, assetId, _value.subtract(divide), RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + + + payAccount = "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24"; + account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, payAccount); + coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), assetChainId, assetId, divide, RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + + CoinTo coinTo = new CoinTo(contractAddressBytes, assetChainId, assetId, _value); + tos.add(coinTo); + } + } + this.callTxOfflineBase(txSingers, froms, tos, feeAccount, contractSender, value, contractAddress, methodName, methodDesc, remark, + args, argsType, isBroadcastTx); + + } + + + protected void callTxOfflineBase(List txSingers, List froms, List tos, String feeAccount, String contractSender, BigInteger value, String contractAddress, @@ -336,53 +468,50 @@ protected void callTxOfflineBase(List froms, List tos, tx.setTime(System.currentTimeMillis() / 1000); // 计算CoinData CoinData coinData = new CoinData(); - ContractBalance feeAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, feeAccount); - ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + coinData.setFrom(froms); + coinData.setTo(tos); long gasUsed = callContractData.getGasLimit(); BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, callContractData.getPrice())); - // 总花费 - BigInteger sendValue = callContractData.getValue(); - if (senderBalance.getBalance().compareTo(sendValue) < 0) { - // Insufficient balance - throw new RuntimeException("Insufficient balance to transfer to contract"); - } + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); BigInteger feeValue = imputedValue; - if (value.compareTo(BigInteger.ZERO) > 0) { + CoinFrom feeAccountFrom = null; + for (CoinFrom from : froms) { + int assetChainId = from.getAssetsChainId(); + int assetId = from.getAssetsId(); + if (Arrays.equals(from.getAddress(), feeAccountBytes) && assetChainId == this.chainId && assetId == this.assetId) { + from.setAmount(from.getAmount().add(feeValue)); + feeAccountFrom = from; + break; + } + } + if (feeAccountFrom == null) { + ContractBalance feeAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, feeAccount); + feeAccountFrom = new CoinFrom(feeAccountBytes, chainId, assetId, feeValue, RPCUtil.decode(feeAccountBalance.getNonce()), (byte) 0); + coinData.addFrom(feeAccountFrom); + } + /*if (value.compareTo(BigInteger.ZERO) > 0) { CoinFrom coinFrom = new CoinFrom(callContractData.getSender(), chainId, assetId, sendValue, RPCUtil.decode(senderBalance.getNonce()), (byte) 0); coinData.addFrom(coinFrom); CoinTo coinTo = new CoinTo(callContractData.getContractAddress(), chainId, assetId, value); coinData.addTo(coinTo); - } - CoinFrom feeCoinFrom = new CoinFrom(AddressTool.getAddress(feeAccount), chainId, assetId, feeValue, RPCUtil.decode(feeAccountBalance.getNonce()), (byte) 0); - coinData.addFrom(feeCoinFrom); + }*/ tx.setCoinData(coinData.serialize()); tx.setTxData(callContractData.serialize()); - BigInteger txSizeFee = TransactionFeeCalculator.getNormalUnsignedTxFee(tx.getSize() + 260); - feeValue = feeValue.add(txSizeFee); - feeCoinFrom.setAmount(feeValue); - if (feeAccountBalance.getBalance().compareTo(feeValue) < 0) { + BigInteger txSizeFee = TransactionFeeCalculator.getNormalUnsignedTxFee(tx.getSize() + 130 * froms.size()); + feeAccountFrom.setAmount(feeAccountFrom.getAmount().add(txSizeFee)); + /*if (feeAccountBalance.getBalance().compareTo(feeValue) < 0) { // Insufficient balance throw new RuntimeException("Insufficient balance to pay fee"); - } + }*/ tx.setCoinData(coinData.serialize()); // 签名 - List signDtoList = new ArrayList<>(); - /*SignDto signDto = new SignDto(); - signDto.setAddress(sender); - signDto.setPriKey(senderPri); - signDtoList.add(signDto); - signDto = new SignDto(); - signDto.setAddress(feeAccount); - signDto.setPriKey(feeAccountPri); - signDtoList.add(signDto);*/ - byte[] txBytes = tx.serialize(); String txHex = HexUtil.encode(txBytes); - Result signTxR = NulsSDKTool.sign(signDtoList, txHex); + Result signTxR = NulsSDKTool.sign(txSingers, txHex); Assert.assertTrue(JSONUtils.obj2PrettyJson(signTxR), signTxR.isSuccess()); Map resultData = signTxR.getData(); From 77979a5d658e7e38866dbaa42c4fe39a094f863e Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 9 Dec 2020 11:51:30 +0800 Subject: [PATCH 219/304] update ChainAssetCmd --- module.ncf | 73 +++++++++---------- .../nuls/ledger/rpc/call/CallRpcService.java | 6 ++ .../rpc/call/impl/CallRpcServiceImpl.java | 36 +++++++++ .../io/nuls/ledger/rpc/cmd/ChainAssetCmd.java | 16 ++-- .../contract/model/bo/ContractResult.java | 1 + 5 files changed, 86 insertions(+), 46 deletions(-) diff --git a/module.ncf b/module.ncf index 176254c9eb..15ec586188 100644 --- a/module.ncf +++ b/module.ncf @@ -1,21 +1,21 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs -logLevel=DEBUG -dataPath=../../../../data +logPath=E:/work/src/nuls-v2/Logs +logLevel=INFO +dataPath=E:/work/src/nuls-v2/data #默认本链ID chainId=2 #地址前缀 addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -23,24 +23,25 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=2.7.0-a4354e9 [network] port=18001 crossPort=18002 #魔法参数 -packetMagic=202001173 +packetMagic=20200120 #种子节点 -selfSeedIps=192.168.1.39:18001,192.168.1.40:18001,192.168.1.70:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.39:18002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update +dependent=protocol-update,smart-contract [block] #区块最大字节数 @@ -50,7 +51,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=1 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -58,8 +59,8 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block_dev.json -dependent=cross-chain,protocol-update,smart-contract +genesisBlockPath=genesis-block.json +dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 @@ -78,67 +79,62 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract - -[ledger] -dependent=protocol-update - [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv dependent=protocol-update -[chain-manager] -dependent=smart-contract,protocol-update - [public-service] #public-service模块对外的rpc端口号 rpcPort=18003 #数据库url地址 -databaseUrl=192.168.1.40 +databaseUrl=127.0.0.1 #数据库端口号 databasePort=27017 #连接池最大数 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 -#连接最大持续时间 -socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -dependent=smart-contract,cross-chain,chain-manager +developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri +ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE +mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm +businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL +teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH +communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS +dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.39:18002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dataPath=../../../../../data -logPath=../../../../../Logs +dependent=protocol-update,smart-contract + +[chain-manager] dependent=protocol-update,smart-contract [nuls-api] @@ -149,10 +145,9 @@ serverPort=18004 dependent=smart-contract,cross-chain [protocol-update] -continuousIntervalCountMinimum=2 #每隔多少个区块统计一次协议占比 interval=10 dependent=smart-contract,cross-chain -[cmd-client] -clientVersion=2.7.0 +[transaction] +dependent=protocol-update,smart-contract \ No newline at end of file diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/CallRpcService.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/CallRpcService.java index 47aa39bddb..8c37f7f754 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/CallRpcService.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/CallRpcService.java @@ -29,6 +29,9 @@ import io.nuls.core.constant.ErrorCode; import io.nuls.core.exception.NulsException; +import java.util.List; +import java.util.Map; + /** * @author lan * @description 调用外部区块模块接口 @@ -36,6 +39,7 @@ **/ public interface CallRpcService { long getBlockLatestHeight(int chainId); + /** * 交易签名 * transaction signature @@ -46,6 +50,8 @@ public interface CallRpcService { * @param tx */ ErrorCode transactionSignature(int chainId, String address, String password, Transaction tx) throws NulsException; + ErrorCode newTx(Transaction tx); + List> getRegisteredChainInfoList(int chainId); } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/impl/CallRpcServiceImpl.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/impl/CallRpcServiceImpl.java index 6aaf9a86be..31a6386297 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/impl/CallRpcServiceImpl.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/call/impl/CallRpcServiceImpl.java @@ -38,6 +38,7 @@ import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.core.rpc.util.RpcCall; import io.nuls.ledger.config.LedgerConfig; import io.nuls.ledger.constant.CmdConstant; import io.nuls.ledger.constant.LedgerErrorCode; @@ -129,4 +130,39 @@ public ErrorCode transactionSignature(int chainId, String address, String passwo } return null; } + + @Override + public List> getRegisteredChainInfoList(int chainId) { + try { + Map map = (Map) RpcCall.request(ModuleE.CC.abbr, "getRegisteredChainInfoList", new HashMap()); + List> resultList = (List>) map.get("list"); + + List> assetList = new ArrayList<>(); + for (Map resultMap : resultList) { + int id = (Integer) resultMap.get("chainId"); + if (id != chainId) { + List> list = (List>) resultMap.get("assetInfoList"); + if (list != null) { + for (Map assetMap : list) { + assetMap.put("assetChainId", id); + assetMap.put("assetSymbol", assetMap.get("symbol")); + assetMap.put("decimalPlace", assetMap.get("decimalPlaces")); + assetMap.put("assetAddress", ""); + assetMap.put("initNumber", 0); + assetMap.put("assetType", 1); + + assetMap.remove("symbol"); + assetMap.remove("usable"); + assetMap.remove("decimalPlaces"); + } + assetList.addAll(list); + } + } + } + return assetList; + } catch (NulsException e) { + LoggerUtil.COMMON_LOG.error(e); + } + return null; + } } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java index a047efb959..41f7b561b4 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/ChainAssetCmd.java @@ -34,6 +34,7 @@ import io.nuls.ledger.constant.LedgerErrorCode; import io.nuls.ledger.manager.LedgerChainManager; import io.nuls.ledger.model.po.LedgerAsset; +import io.nuls.ledger.rpc.call.CallRpcService; import io.nuls.ledger.service.ChainAssetsService; import io.nuls.ledger.storage.AssetRegMngRepository; import io.nuls.ledger.storage.CrossChainAssetRegMngRepository; @@ -61,7 +62,7 @@ public class ChainAssetCmd extends BaseLedgerCmd { @Autowired LedgerChainManager ledgerChainManager; @Autowired - CrossChainAssetRegMngRepository crossChainAssetRegMngRepository; + CallRpcService callRpcService; @CmdAnnotation(cmd = CmdConstant.CMD_GET_ASSETS_BY_ID, version = 1.0, description = "查询链下指定资产集合的金额信息") @@ -149,13 +150,14 @@ public Response getAllCrossChainAssets(Map params) { int chainId = Integer.parseInt(params.get("chainId").toString()); // 获取所有注册的链内资产 List localAssetList = assetRegMngRepository.getAllRegLedgerAssets(chainId); - List> localAssets = localAssetList.stream().map(asset -> asset.toMap()).collect(Collectors.toList()); - localAssets.add(ledgerChainManager.getLocalChainDefaultAsset()); + List> assets = localAssetList.stream().map(asset -> asset.toMap()).collect(Collectors.toList()); + assets.add(ledgerChainManager.getLocalChainDefaultAsset()); // 获取所有登记的跨链资产 - List ledgerAssetList = crossChainAssetRegMngRepository.getAllCrossChainAssets(chainId); - List> assets = ledgerAssetList.stream().map(asset -> asset.toMap()).collect(Collectors.toList()); - // 合并集合 - assets.addAll(localAssets); + List> crossAssetList = callRpcService.getRegisteredChainInfoList(chainId); + if (crossAssetList != null) { + assets.addAll(crossAssetList); + } + rtMap.put("assets", assets); } catch (Exception e) { LoggerUtil.COMMON_LOG.error(e); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java index dc9d4f4c73..5ac222a0ba 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java @@ -88,6 +88,7 @@ public class ContractResult { private List transfers = new ArrayList<>(); private List mergedTransferList = new ArrayList<>(); private List mergerdMultyAssetTransferList = new ArrayList<>(); + private transient List contractTransferList = new ArrayList<>(); private List contractTransferTxStringList = new ArrayList<>(); /** From 46008955c2a78ffeeff118e92e33d1e7a00253b8 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 10 Dec 2020 11:11:47 +0800 Subject: [PATCH 220/304] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81JVM=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/start-temp | 17 +++++++++++++++++ module/nuls-smart-contract/module.ncf | 1 + 2 files changed, 18 insertions(+) diff --git a/build/start-temp b/build/start-temp index f23c84b107..3303498602 100644 --- a/build/start-temp +++ b/build/start-temp @@ -18,6 +18,23 @@ JOPT_METASPACESIZE="%JOPT_METASPACESIZE%" # %JOPT_METASPACESIZE 注入 JOPT_MAXMETASPACESIZE="%JOPT_MAXMETASPACESIZE%" # %JOPT_MAXMETASPACESIZE 注入 JAVA_OPTS="%JAVA_OPTS%" # %JAVA_OPTS 注入 +xmx=`echo $JOPT_XMX | awk -F, '{print $1}'` +if [ "$xmx" == "dynamic" ]; +then + totalMem=`free | awk '/Mem/ {print $2}'` + if [ "$totalMem" -lt 8010000 ] + then + JOPT_XMX=3072 + else + if [ "$totalMem" -lt 16000000 ]; + then + JOPT_XMX=5120 + else + JOPT_XMX=8192 + fi + fi +fi + getModuleItem(){ while read line do diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 47736016cd..82512b89b3 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -4,6 +4,7 @@ MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 JOPT_XMS=3096 JOPT_XMX=dynamic +JAVA_OPTS=-XX:NewRatio=2 [Core] Managed=1 From ae7e4dc5ad00b0d9b3882afff0602c6c9babbd5a Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 10 Dec 2020 11:20:32 +0800 Subject: [PATCH 221/304] nrc721 support coding in contract module --- .../contract/constant/ContractConstant.java | 6 + .../nuls/contract/helper/ContractHelper.java | 69 ++++++----- .../contract/model/dto/ContractResultDto.java | 34 ++++-- .../dto/ContractToken721TransferDto.java | 109 ++++++++++++++++++ .../model/dto/ContractTokenTransferDto.java | 7 ++ .../model/dto/ContractTokenTransferInfo.java | 83 +++++++++++++ .../rpc/resource/ContractResource.java | 95 +++++++++------ .../io/nuls/contract/util/ContractUtil.java | 48 ++++++++ 8 files changed, 372 insertions(+), 79 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index 4bdc379606..bfcac261ef 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -93,6 +93,12 @@ public interface ContractConstant { String CONTRACT_EVENT_ADDRESS = "contractAddress"; String CONTRACT_EVENT_DATA = "payload"; + String FROM = "from"; + String TO = "to"; + String VALUE = "value"; + String TOKEN_ID = "tokenId"; + int TOKEN_TYPE_NRC20 = 1; + int TOKEN_TYPE_NRC721 = 2; /** * NRC20 */ diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 5993dd0299..e02d5f5263 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -331,7 +331,10 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract List methods = this.getAllMethods(chainId, createContractData.getCode()); Map contractMethodsMap = new HashMap<>(); boolean isNrc20 = this.checkNrc20Contract(methods, contractMethodsMap); - boolean isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); + boolean isNrc721 = false; + if (!isNrc20) { + isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); + } if(isNrc20) { contractResult.setTokenType(TokenTypeStatus.NRC20.status()); } else if(isNrc721) { @@ -340,7 +343,7 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract boolean isAcceptDirectTransfer = this.checkAcceptDirectTransfer(methods); contractResult.setNrc20(isNrc20); contractResult.setAcceptDirectTransfer(isAcceptDirectTransfer); - if (isNrc20) { + if (isNrc20 || isNrc721) { // NRC20 tokenName 验证代币名称格式 ProgramResult programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_NAME, null, null); if (programResult.isSuccess()) { @@ -368,40 +371,42 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract } } - programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_DECIMALS, null, null); - BigInteger decimalsBig = BigInteger.ZERO; - if (programResult.isSuccess()) { - String decimals = programResult.getResult(); - if (StringUtils.isNotBlank(decimals)) { - try { - decimalsBig = new BigInteger(decimals); - if (decimalsBig.compareTo(BigInteger.ZERO) < 0 || decimalsBig.compareTo(MAXIMUM_DECIMALS) > 0) { - contractResult.setError(true); - contractResult.setErrorMessage("The value of decimals ranges from 0 to 18."); - return getFailed(); + if (isNrc20) { + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_DECIMALS, null, null); + BigInteger decimalsBig = BigInteger.ZERO; + if (programResult.isSuccess()) { + String decimals = programResult.getResult(); + if (StringUtils.isNotBlank(decimals)) { + try { + decimalsBig = new BigInteger(decimals); + if (decimalsBig.compareTo(BigInteger.ZERO) < 0 || decimalsBig.compareTo(MAXIMUM_DECIMALS) > 0) { + contractResult.setError(true); + contractResult.setErrorMessage("The value of decimals ranges from 0 to 18."); + return getFailed(); + } + contractResult.setTokenDecimals(decimalsBig.intValue()); + } catch (Exception e) { + Log.error("Get nrc20 decimals error.", e); + // skip it } - contractResult.setTokenDecimals(decimalsBig.intValue()); - } catch (Exception e) { - Log.error("Get nrc20 decimals error.", e); - // skip it } } - } - programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_TOTAL_SUPPLY, null, null); - if (programResult.isSuccess()) { - String totalSupply = programResult.getResult(); - if (StringUtils.isNotBlank(totalSupply)) { - try { - BigInteger totalSupplyBig = new BigInteger(totalSupply); - if (totalSupplyBig.compareTo(BigInteger.ZERO) <= 0 || totalSupplyBig.compareTo(MAXIMUM_TOTAL_SUPPLY.multiply(BigInteger.TEN.pow(decimalsBig.intValue()))) > 0) { - contractResult.setErrorMessage("The value of totalSupply ranges from 1 to 2^256 - 1."); - contractResult.setError(true); - return getFailed(); + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_TOTAL_SUPPLY, null, null); + if (programResult.isSuccess()) { + String totalSupply = programResult.getResult(); + if (StringUtils.isNotBlank(totalSupply)) { + try { + BigInteger totalSupplyBig = new BigInteger(totalSupply); + if (totalSupplyBig.compareTo(BigInteger.ZERO) <= 0 || totalSupplyBig.compareTo(MAXIMUM_TOTAL_SUPPLY.multiply(BigInteger.TEN.pow(decimalsBig.intValue()))) > 0) { + contractResult.setErrorMessage("The value of totalSupply ranges from 1 to 2^256 - 1."); + contractResult.setError(true); + return getFailed(); + } + contractResult.setTokenTotalSupply(totalSupplyBig); + } catch (Exception e) { + Log.error("Get nrc20 totalSupply error.", e); + // skip it } - contractResult.setTokenTotalSupply(totalSupplyBig); - } catch (Exception e) { - Log.error("Get nrc20 totalSupply error.", e); - // skip it } } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 0ee7020489..54031c6ccb 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -46,6 +46,8 @@ import java.util.LinkedList; import java.util.List; +import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC20; +import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC721; import static io.nuls.contract.util.ContractUtil.bigInteger2String; /** @@ -89,6 +91,8 @@ public class ContractResultDto { private List debugEvents; @ApiModelProperty(description = "合约token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractTokenTransferDto.class)) private List tokenTransfers; + @ApiModelProperty(description = "合约NRC721-token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractToken721TransferDto.class)) + private List token721Transfers; @ApiModelProperty(description = "合约调用外部命令的调用记录列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractInvokeRegisterCmdDto.class)) private List invokeRegisterCmds; @ApiModelProperty(description = "合约生成交易的序列化字符串列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) @@ -181,14 +185,6 @@ private void makeInvokeRegisterCmds(List invokeRegiste } } - public ContractResultDto(int chainId, ContractResult contractExecuteResult, ContractBaseTransaction tx, ContractTokenTransferInfoPo transferInfoPo) throws NulsException { - this(chainId, contractExecuteResult, tx); - if (transferInfoPo != null) { - this.tokenTransfers = new ArrayList<>(); - this.tokenTransfers.add(new ContractTokenTransferDto(transferInfoPo)); - } - } - public List getTokenTransfers() { return tokenTransfers == null ? new ArrayList<>() : tokenTransfers; } @@ -197,18 +193,32 @@ public void setTokenTransfers(List tokenTransfers) { this.tokenTransfers = tokenTransfers; } + public List getToken721Transfers() { + return token721Transfers == null ? new ArrayList<>() : token721Transfers; + } + + public void setToken721Transfers(List token721Transfers) { + this.token721Transfers = token721Transfers; + } + private void makeTokenTransfers(int chainId, List tokenTransferEvents) { List result = new ArrayList<>(); + List result721 = new ArrayList<>(); if (tokenTransferEvents != null && tokenTransferEvents.size() > 0) { - ContractTokenTransferInfoPo po; + ContractTokenTransferInfo info; for (String event : tokenTransferEvents) { - po = ContractUtil.convertJsonToTokenTransferInfoPo(chainId, event); - if (po != null) { - result.add(new ContractTokenTransferDto(po)); + info = ContractUtil.convertJsonToTokenTransferInfo(chainId, event); + if (info != null) { + if (TOKEN_TYPE_NRC20 == info.getTokenType()) { + result.add(new ContractTokenTransferDto(info)); + } else if (TOKEN_TYPE_NRC721 == info.getTokenType()) { + result721.add(new ContractToken721TransferDto(info)); + } } } } this.tokenTransfers = result; + this.token721Transfers = result721; } public List getTransfers() { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java new file mode 100644 index 0000000000..f10d6e76a6 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java @@ -0,0 +1,109 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + + +import io.nuls.contract.model.po.ContractAddressInfoPo; +import io.nuls.contract.util.ContractUtil; +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractToken721TransferDto { + @ApiModelProperty(description = "合约地址") + private String contractAddress; + @ApiModelProperty(description = "付款方") + private String from; + @ApiModelProperty(description = "收款方") + private String to; + @ApiModelProperty(description = "tokenId") + private String tokenId; + @ApiModelProperty(description = "token名称") + private String name; + @ApiModelProperty(description = "token符号") + private String symbol; + + public ContractToken721TransferDto(ContractTokenTransferInfo info) { + this.contractAddress = info.getContractAddress(); + this.from = info.getFrom(); + this.to = info.getTo(); + this.tokenId = ContractUtil.bigInteger2String(info.getValue()); + } + + public void setNrc721Info(ContractAddressInfoPo po) { + this.name = po.getNrc20TokenName(); + this.symbol = po.getNrc20TokenSymbol(); + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getTokenId() { + return tokenId; + } + + public void setTokenId(String tokenId) { + this.tokenId = tokenId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java index cba2851902..1215952165 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java @@ -65,6 +65,13 @@ public ContractTokenTransferDto(ContractTokenTransferInfoPo po) { this.decimals = po.getDecimals(); } + public ContractTokenTransferDto(ContractTokenTransferInfo info) { + this.contractAddress = info.getContractAddress(); + this.from = info.getFrom(); + this.to = info.getTo(); + this.value = ContractUtil.bigInteger2String(info.getValue()); + } + public void setNrc20Info(ContractAddressInfoPo po) { this.name = po.getNrc20TokenName(); this.symbol = po.getNrc20TokenSymbol(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java new file mode 100644 index 0000000000..362b5985a3 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java @@ -0,0 +1,83 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.contract.model.dto; + +import java.io.Serializable; +import java.math.BigInteger; + +/** + * @author: PierreLuo + * @date: 2018/7/23 + */ +public class ContractTokenTransferInfo implements Serializable { + + private String from; + private String to; + private BigInteger value; + private String contractAddress; + // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 + private int tokenType; + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public BigInteger getValue() { + return value; + } + + public void setValue(BigInteger value) { + this.value = value; + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public int getTokenType() { + return tokenType; + } + + public void setTokenType(int tokenType) { + this.tokenType = tokenType; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index b2a153ca1d..4053c4ef86 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -554,9 +554,7 @@ public Response previewCall(Map params) { } ContractResult contractResult = result.getData(); ContractResultDto contractResultDto = new ContractResultDto(chainId, contractResult, gasLimit); - List tokenTransfers = contractResultDto.getTokenTransfers(); - List realTokenTransfers = this.filterRealTokenTransfers(chainId, tokenTransfers); - contractResultDto.setTokenTransfers(realTokenTransfers); + this.filterRealTokenTransfers(chainId, contractResultDto); return success(contractResultDto); } catch (Exception e) { Log.error(e); @@ -1135,9 +1133,7 @@ public Response contractResultList(Map params) { if (contractResultDto == null) { continue; } - List tokenTransfers = contractResultDto.getTokenTransfers(); - List realTokenTransfers = this.filterRealTokenTransfers(chainId, tokenTransfers); - contractResultDto.setTokenTransfers(realTokenTransfers); + this.filterRealTokenTransfers(chainId, contractResultDto); resultMap.put(hash, contractResultDto); } return success(resultMap); @@ -1197,9 +1193,7 @@ public Response contractResult(Map params) { resultMap.put("msg", msg); } if (flag && contractResultDto != null) { - List tokenTransfers = contractResultDto.getTokenTransfers(); - List realTokenTransfers = this.filterRealTokenTransfers(chainId, tokenTransfers); - contractResultDto.setTokenTransfers(realTokenTransfers); + this.filterRealTokenTransfers(chainId, contractResultDto); resultMap.put("data", contractResultDto); } if (!flag) { @@ -1225,33 +1219,66 @@ private ContractResultDto makeContractResultDto(int chainId, ContractBaseTransac return contractResultDto; } - private List filterRealTokenTransfers(int chainId, List tokenTransfers) { - if (tokenTransfers == null || tokenTransfers.isEmpty()) { - return tokenTransfers; - } - List resultDto = new ArrayList<>(); - Map cache = MapUtil.createHashMap(tokenTransfers.size()); - for (ContractTokenTransferDto tokenTransfer : tokenTransfers) { - try { - if (StringUtils.isBlank(tokenTransfer.getName())) { - String contractAddress = tokenTransfer.getContractAddress(); - ContractAddressInfoPo po = cache.get(contractAddress); - if (po == null) { - po = contractHelper.getContractAddressInfo( - chainId, AddressTool.getAddress(contractAddress)).getData(); - cache.put(contractAddress, po); + private void filterRealTokenTransfers(int chainId, ContractResultDto contractResultDto) { + List tokenTransfers = contractResultDto.getTokenTransfers(); + List token721Transfers = contractResultDto.getToken721Transfers(); + Map cache = MapUtil.createHashMap(tokenTransfers.size() + token721Transfers.size()); + do { + if (tokenTransfers == null || tokenTransfers.isEmpty()) { + break; + } + List resultDto = new ArrayList<>(); + for (ContractTokenTransferDto tokenTransfer : tokenTransfers) { + try { + if (StringUtils.isBlank(tokenTransfer.getName())) { + String contractAddress = tokenTransfer.getContractAddress(); + ContractAddressInfoPo po = cache.get(contractAddress); + if (po == null) { + po = contractHelper.getContractAddressInfo( + chainId, AddressTool.getAddress(contractAddress)).getData(); + cache.put(contractAddress, po); + } + if (po == null || !po.isNrc20()) { + continue; + } + tokenTransfer.setNrc20Info(po); + resultDto.add(tokenTransfer); } - if (po == null || !po.isNrc20()) { - continue; + } catch (Exception e) { + Log.error(e); + } + } + contractResultDto.setTokenTransfers(resultDto); + } while (false); + + do { + if (token721Transfers == null || token721Transfers.isEmpty()) { + break; + } + List result721Dto = new ArrayList<>(); + for (ContractToken721TransferDto token721Transfer : token721Transfers) { + try { + if (StringUtils.isBlank(token721Transfer.getName())) { + String contractAddress = token721Transfer.getContractAddress(); + ContractAddressInfoPo po = cache.get(contractAddress); + if (po == null) { + po = contractHelper.getContractAddressInfo( + chainId, AddressTool.getAddress(contractAddress)).getData(); + cache.put(contractAddress, po); + } + if (po == null || TOKEN_TYPE_NRC721 != po.getTokenType()) { + continue; + } + token721Transfer.setNrc721Info(po); + result721Dto.add(token721Transfer); } - tokenTransfer.setNrc20Info(po); - resultDto.add(tokenTransfer); + } catch (Exception e) { + Log.error(e); } - } catch (Exception e) { - Log.error(e); } - } - return resultDto; + contractResultDto.setToken721Transfers(result721Dto); + } while (false); + } @CmdAnnotation(cmd = CONTRACT_TX, version = 1.0, description = "合约交易/contract tx") @@ -1290,9 +1317,7 @@ public Response contractTx(Map params) { // 计算交易实际发生的金额 calTransactionValue(txDto); if (contractResultDto != null) { - List tokenTransfers = contractResultDto.getTokenTransfers(); - List realTokenTransfers = this.filterRealTokenTransfers(chainId, tokenTransfers); - contractResultDto.setTokenTransfers(realTokenTransfers); + this.filterRealTokenTransfers(chainId, contractResultDto); txDto.setContractResult(contractResultDto); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index 5f8ef29401..a0542c010b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -35,6 +35,7 @@ import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.model.bo.*; +import io.nuls.contract.model.dto.ContractTokenTransferInfo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.*; import io.nuls.contract.model.txdata.CallContractData; @@ -309,6 +310,53 @@ public static ContractTokenTransferInfoPo convertJsonToTokenTransferInfoPo(int c } } + public static ContractTokenTransferInfo convertJsonToTokenTransferInfo(int chainId, String event) { + if (isBlank(event)) { + return null; + } + ContractTokenTransferInfo info; + try { + Map eventMap = JSONUtils.json2map(event); + String eventName = (String) eventMap.get(CONTRACT_EVENT); + String contractAddress = (String) eventMap.get(CONTRACT_EVENT_ADDRESS); + info = new ContractTokenTransferInfo(); + info.setContractAddress(contractAddress); + if (NRC20_EVENT_TRANSFER.equals(eventName)) { + boolean isNRC20, isNRC721 = false; + Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); + isNRC20 = data.containsKey(VALUE); + if (!isNRC20) { + isNRC721 = data.containsKey(TOKEN_ID); + } + if (!isNRC20 && !isNRC721) { + return null; + } + String from = (String) data.get(FROM); + String to = (String) data.get(TO); + String value = (String) data.get(VALUE); + String tokenId = (String) data.get(TOKEN_ID); + if (AddressTool.validAddress(chainId, from)) { + info.setFrom(from); + } + if (AddressTool.validAddress(chainId, to)) { + info.setTo(to); + } + if (isNRC20) { + info.setTokenType(TOKEN_TYPE_NRC20); + info.setValue(isBlank(value) ? BigInteger.ZERO : new BigInteger(value)); + } else if (isNRC721) { + info.setTokenType(TOKEN_TYPE_NRC721); + info.setValue(isBlank(tokenId) ? BigInteger.ZERO : new BigInteger(tokenId)); + } + return info; + } + return null; + } catch (Exception e) { + Log.error(e); + return null; + } + } + public static boolean isContractTransaction(Transaction tx) { if (tx == null) { return false; From c8c59d488df4eb03d784fc48addb1f17092484f3 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 10 Dec 2020 13:44:15 +0800 Subject: [PATCH 222/304] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81JVM=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/start-temp.bat | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/start-temp.bat b/build/start-temp.bat index 4b226ae17e..bcf38454cb 100644 --- a/build/start-temp.bat +++ b/build/start-temp.bat @@ -87,6 +87,10 @@ rem # %JAVA_OPTS reject SET JAVA_OPT=%JAVA_OPTS% set JAR_FILE=%MODULE_PATH%%APP_NAME%-%VERSION%.jar +if %JOPT_XMX% == dynamic ( + SET JOPT_XMX=6144 +) + REM echo "%JAR_FILE% > %LOG_PATH%log.log" SET CLASSPATH="" for /f %%i in (dependent.conf) do ( From 933642eabbd61c7407613d7229a95732cc88b3e5 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 10 Dec 2020 14:51:49 +0800 Subject: [PATCH 223/304] =?UTF-8?q?=E8=B0=83=E6=95=B4window=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/start-temp.bat | 5 +++-- module/nuls-smart-contract/module.ncf | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build/start-temp.bat b/build/start-temp.bat index bcf38454cb..da7d73eac4 100644 --- a/build/start-temp.bat +++ b/build/start-temp.bat @@ -87,8 +87,9 @@ rem # %JAVA_OPTS reject SET JAVA_OPT=%JAVA_OPTS% set JAR_FILE=%MODULE_PATH%%APP_NAME%-%VERSION%.jar +set XMX=%JOPT_XMX% if %JOPT_XMX% == dynamic ( - SET JOPT_XMX=6144 + SET XMX=6144 ) REM echo "%JAR_FILE% > %LOG_PATH%log.log" @@ -100,7 +101,7 @@ for /f %%i in (dependent.conf) do ( SET CLASSPATH=-classpath %CLASSPATH%%JAR_FILE% REM ;%JAR_FILE% REM SET CPOPT=-cp "%JAR_FILE%" -SET JAVA_OPT=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -Xms%JOPT_XMS%m -Xmx%JOPT_XMX%m -XX:MetaspaceSize=%JOPT_METASPACESIZE%m -XX:MaxMetaspaceSize=%JOPT_MAXMETASPACESIZE%m -XX:+ParallelRefProcEnabled -XX:+TieredCompilation -XX:+ExplicitGCInvokesConcurrent +SET JAVA_OPT=-server %JAVA_OPT% -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -Xms%JOPT_XMS%m -Xmx%XMX%m -XX:MetaspaceSize=%JOPT_METASPACESIZE%m -XX:MaxMetaspaceSize=%JOPT_MAXMETASPACESIZE%m -XX:+ParallelRefProcEnabled -XX:+TieredCompilation -XX:+ExplicitGCInvokesConcurrent SET JAVA_OOM_DUMP=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="%LOG_PATH%\oom-%START_DATE%.hprof" -Dlog.path="%LOG_PATH%" -DdataPath="%DATA_PATH%" -Dlog.level=%LOG_LEVEL% -Dactive.config="%CONFIG_FILE%" SET JAVA_OPT=%JAVA_OPT% %JAVA_GC_LOG% %JAVA_OOM_DUMP% -Dapp.name=%APP_NAME% diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 82512b89b3..9c5bc72cc0 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,7 +2,7 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=3096 +JOPT_XMS=3072 JOPT_XMX=dynamic JAVA_OPTS=-XX:NewRatio=2 From f4f99a26bc5e63572a7521299be3c8d685de38cf Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 10 Dec 2020 18:18:50 +0800 Subject: [PATCH 224/304] nrc721 parse --- .../contract/constant/ContractConstant.java | 2 ++ .../processor/CreateContractTxProcessor.java | 17 +++++++++--- .../rpc/resource/ContractResource.java | 9 ++++--- .../io/nuls/contract/util/ContractUtil.java | 26 ++++++++++++++----- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index bfcac261ef..631b1653c3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -121,6 +121,8 @@ public interface ContractConstant { String NRC721_SAFETRANSFERFROM = "safeTransferFrom"; String NRC721_SAFETRANSFERFROM_DATA = "safeTransferFrom-data"; String NRC721_STANDARD_FILE = "nrc721.json"; + String NRC721_EVENT_TRANSFER = "Transfer"; + String NRC721_EVENT_APPROVAL = "Approval"; int DEFAULT_MAX_VIEW_GAS = 100000000; String SYS_FILE_ENCODING = "file.encoding"; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java index 3de8df8701..c55eef8f5f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java @@ -245,19 +245,27 @@ public Result onCommitV8(int chainId, ContractWrapperTransaction tx) throws Exce info.setBlockHeight(blockHeight); boolean isNrc20Contract = contractResult.isNrc20(); + boolean isNrc721Contract = ContractConstant.TOKEN_TYPE_NRC721 == contractResult.getTokenType(); boolean acceptDirectTransfer = contractResult.isAcceptDirectTransfer(); info.setAcceptDirectTransfer(acceptDirectTransfer); info.setNrc20(isNrc20Contract); info.setTokenType(contractResult.getTokenType()); - // 获取 token tracker - if (isNrc20Contract) { - // NRC20 token 标准方法获取名称数据 + do { + if (!isNrc20Contract && !isNrc721Contract) { + break; + } + // 获取 token tracker + // 处理NRC20/NRC721 token数据 String tokenName = contractResult.getTokenName(); String tokenSymbol = contractResult.getTokenSymbol(); int tokenDecimals = contractResult.getTokenDecimals(); BigInteger tokenTotalSupply = contractResult.getTokenTotalSupply(); info.setNrc20TokenName(tokenName); info.setNrc20TokenSymbol(tokenSymbol); + if (!isNrc20Contract) { + break; + } + // 处理NRC20 token数据 info.setDecimals(tokenDecimals); info.setTotalSupply(tokenTotalSupply); byte[] newestStateRoot = blockHeader.getStateRoot(); @@ -294,7 +302,8 @@ public Result onCommitV8(int chainId, ContractWrapperTransaction tx) throws Exce } } // end code by pierre - } + } while (false); + return contractAddressStorageService.saveContractAddress(chainId, contractAddress, info); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 4053c4ef86..10435e5a8b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -1080,11 +1080,14 @@ public Response contractInfo(Map params) { dto.setBlockHeight(po.getBlockHeight()); dto.setTokenType(po.getTokenType()); dto.setNrc20(po.isNrc20()); - if (po.isNrc20()) { + boolean isNrc721 = ContractConstant.TOKEN_TYPE_NRC721 == po.getTokenType(); + if (po.isNrc20() || isNrc721) { dto.setNrc20TokenName(po.getNrc20TokenName()); dto.setNrc20TokenSymbol(po.getNrc20TokenSymbol()); - dto.setDecimals(po.getDecimals()); - dto.setTotalSupply(ContractUtil.bigInteger2String(po.getTotalSupply())); + if (po.isNrc20()) { + dto.setDecimals(po.getDecimals()); + dto.setTotalSupply(ContractUtil.bigInteger2String(po.getTotalSupply())); + } } dto.setStatus(status.name()); dto.setMethod(methods); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index a0542c010b..d88827489f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -322,19 +322,15 @@ public static ContractTokenTransferInfo convertJsonToTokenTransferInfo(int chain info = new ContractTokenTransferInfo(); info.setContractAddress(contractAddress); if (NRC20_EVENT_TRANSFER.equals(eventName)) { - boolean isNRC20, isNRC721 = false; + boolean isNRC20; Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); isNRC20 = data.containsKey(VALUE); if (!isNRC20) { - isNRC721 = data.containsKey(TOKEN_ID); - } - if (!isNRC20 && !isNRC721) { return null; } String from = (String) data.get(FROM); String to = (String) data.get(TO); String value = (String) data.get(VALUE); - String tokenId = (String) data.get(TOKEN_ID); if (AddressTool.validAddress(chainId, from)) { info.setFrom(from); } @@ -344,7 +340,25 @@ public static ContractTokenTransferInfo convertJsonToTokenTransferInfo(int chain if (isNRC20) { info.setTokenType(TOKEN_TYPE_NRC20); info.setValue(isBlank(value) ? BigInteger.ZERO : new BigInteger(value)); - } else if (isNRC721) { + } + return info; + } else if (NRC721_EVENT_TRANSFER.equals(eventName)) { + boolean isNRC721; + Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); + isNRC721 = data.containsKey(TOKEN_ID); + if (!isNRC721) { + return null; + } + String from = (String) data.get(FROM); + String to = (String) data.get(TO); + String tokenId = (String) data.get(TOKEN_ID); + if (AddressTool.validAddress(chainId, from)) { + info.setFrom(from); + } + if (AddressTool.validAddress(chainId, to)) { + info.setTo(to); + } + if (isNRC721) { info.setTokenType(TOKEN_TYPE_NRC721); info.setValue(isBlank(tokenId) ? BigInteger.ZERO : new BigInteger(tokenId)); } From c3ccdc3093e9b65412b2b89c1efafb0b9c375792 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 10 Dec 2020 18:20:11 +0800 Subject: [PATCH 225/304] update validation of call in nuls-api --- .../provider/api/jsonrpc/controller/ContractController.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index ca5972cf6c..e88d342ad0 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -762,6 +762,10 @@ public RpcResult validateContractCall(List params) { if (!Context.isChainExist(chainId)) { return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); } + Object multyAssetValues = null; + if (params.size() > 9) { + multyAssetValues = params.get(9); + } Result mapResult = contractTools.validateContractCall(chainId, params.get(1), params.get(2), @@ -771,7 +775,7 @@ public RpcResult validateContractCall(List params) { params.get(6), params.get(7), params.get(8), - params.get(9) + multyAssetValues ); return ResultUtil.getJsonRpcResult(mapResult); } From 1fad30df554dabfbb914334cee6a3de36cf07ccb Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 11 Dec 2020 10:43:30 +0800 Subject: [PATCH 226/304] update nuls api --- .../api/constant/CommandConstant.java | 2 ++ .../controller/ContractController.java | 35 ++++++++++++++++--- .../api/resources/ContractResource.java | 22 +++++++++--- .../model/form/contract/ContractCall.java | 10 ++++++ .../form/contract/ImputedGasContractCall.java | 10 ++++++ .../nuls/provider/rpctools/ContractTools.java | 31 +++++++++++++++- 6 files changed, 100 insertions(+), 10 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java index 8ca472664b..2773a60520 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java @@ -60,6 +60,8 @@ public interface CommandConstant { String CONSTRUCTOR = "sc_constructor"; //验证创建合约 String VALIDATE_CREATE = "sc_validate_create"; + //调用合约 + String CALL = "sc_call"; //验证调用合约 String VALIDATE_CALL = "sc_validate_call"; //验证删除合约 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index e88d342ad0..cae90c89b1 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -152,7 +152,8 @@ public RpcResult contractCreate(List params) { @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), - @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true) + @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "txHash", description = "调用合约的交易hash") @@ -200,7 +201,7 @@ public RpcResult contractCall(List params) { return RpcResult.paramError("methodName is empty"); } - CallContractReq req = new CallContractReq(); + /*CallContractReq req = new CallContractReq(); req.setChainId(config.getChainId()); req.setSender(sender); req.setPassword(password); @@ -219,7 +220,25 @@ public RpcResult contractCall(List params) { dataMap.put("txHash", rpcResult.getResult()); rpcResult.setResult(dataMap); } - return rpcResult; + return rpcResult;*/ + Object multyAssetValues = null; + if (params.size() > 11) { + multyAssetValues = params.get(11); + } + Result mapResult = contractTools.contractCall(chainId, + sender, + password, + value, + gasLimit, + price, + contractAddress, + methodName, + methodDesc, + args, + remark, + multyAssetValues + ); + return ResultUtil.getJsonRpcResult(mapResult); } catch (Exception e) { Log.error(e); return RpcResult.failed(CommonCodeConstanst.DATA_ERROR, e.getMessage()); @@ -849,7 +868,8 @@ public RpcResult imputedContractCreateGas(List params) { @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), - @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true) + @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1") @@ -865,13 +885,18 @@ public RpcResult imputedContractCallGas(List params) { if (!Context.isChainExist(chainId)) { return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); } + Object multyAssetValues = null; + if (params.size() > 7) { + multyAssetValues = params.get(7); + } Result mapResult = contractTools.imputedContractCallGas(chainId, params.get(1), params.get(2), params.get(3), params.get(4), params.get(5), - params.get(6) + params.get(6), + multyAssetValues ); return ResultUtil.getJsonRpcResult(mapResult); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index 945c6fa585..b741c4cc15 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -125,7 +125,7 @@ public RpcClientResult callContract(ContractCall call) { if (call.getPrice() < 0) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), String.format("price [%s] is invalid", call.getPrice()))); } - CallContractReq req = new CallContractReq(); + /*CallContractReq req = new CallContractReq(); req.setChainId(config.getChainId()); req.setSender(call.getSender()); req.setPassword(call.getPassword()); @@ -141,8 +141,21 @@ public RpcClientResult callContract(ContractCall call) { RpcClientResult clientResult = ResultUtil.getRpcClientResult(result); if(clientResult.isSuccess()) { return clientResult.resultMap().map("txHash", clientResult.getData()).mapToData(); - } - return clientResult; + }*/ + Result mapResult = contractTools.contractCall(config.getChainId(), + call.getSender(), + call.getPassword(), + call.getValue(), + call.getGasLimit(), + call.getPrice(), + call.getContractAddress(), + call.getMethodName(), + call.getMethodDesc(), + call.getArgs(), + call.getRemark(), + call.getMultyAssetValues() + ); + return ResultUtil.getRpcClientResult(mapResult); } @@ -539,7 +552,8 @@ public RpcClientResult imputedContractCallGas(ImputedGasContractCall form) { form.getContractAddress(), form.getMethodName(), form.getMethodDesc(), - form.getArgs()); + form.getArgs(), + form.getMultyAssetValues()); return ResultUtil.getRpcClientResult(mapResult); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java index c6a0801353..d24e7ef5c1 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java @@ -38,6 +38,8 @@ public class ContractCall extends ContractBase { private String contractAddress; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0") private BigInteger value; + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + private String[][] multyAssetValues; @ApiModelProperty(description = "方法名", required = true) private String methodName; @ApiModelProperty(description = "方法描述,若合约内方法没有重载,则此参数可以为空", required = false) @@ -45,6 +47,14 @@ public class ContractCall extends ContractBase { @ApiModelProperty(description = "参数列表", required = false) private Object[] args; + public String[][] getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(String[][] multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } + public String getContractAddress() { return contractAddress; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java index 7487c61e99..f55b583892 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java @@ -43,6 +43,8 @@ public class ImputedGasContractCall extends Base { private String sender; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0", required = false) private BigInteger value; + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + private String[][] multyAssetValues; @ApiModelProperty(description = "智能合约地址", required = true) private String contractAddress; @ApiModelProperty(description = "方法名称", required = true) @@ -52,6 +54,14 @@ public class ImputedGasContractCall extends Base { @ApiModelProperty(description = "参数列表", required = false) private Object[] args; + public String[][] getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(String[][] multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } + public String[][] getArgs(String[] types) { return ContractUtil.twoDimensionalArray(args, types); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java index a0b690faad..e17fc5bf96 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java @@ -125,6 +125,34 @@ public Result validateContractCreate(int chainId, Object sender, Object gas } } + public Result contractCall(int chainId, Object sender, Object password, Object value, Object gasLimit, Object price, + Object contractAddress, Object methodName, Object methodDesc, Object args, Object remark, Object multyAssetValues) { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + params.put("sender", sender); + params.put("password", password); + params.put("value", value); + params.put("gasLimit", gasLimit); + params.put("price", price); + params.put("contractAddress", contractAddress); + params.put("methodName", methodName); + params.put("methodDesc", methodDesc); + params.put("args", args); + params.put("remark", remark); + params.put("multyAssetValues", multyAssetValues); + Map map = new HashMap(4); + try { + return callRpc(ModuleE.SC.abbr, CALL, params,(Function, Result>) res->{ + return new Result(res); + }); + } catch (NulsRuntimeException e) { + map.put("success", false); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + return new Result(map); + } + } + public Result validateContractCall(int chainId, Object sender, Object value, Object gasLimit, Object price, Object contractAddress, Object methodName, Object methodDesc, Object args, Object multyAssetValues) { Map params = new HashMap<>(); @@ -190,7 +218,7 @@ public Result imputedContractCreateGas(int chainId, Object sender, Object c } public Result imputedContractCallGas(int chainId, Object sender, Object value, - Object contractAddress, Object methodName, Object methodDesc, Object args) { + Object contractAddress, Object methodName, Object methodDesc, Object args, Object multyAssetValues) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); params.put("sender", sender); @@ -199,6 +227,7 @@ public Result imputedContractCallGas(int chainId, Object sender, Object val params.put("methodName", methodName); params.put("methodDesc", methodDesc); params.put("args", args); + params.put("multyAssetValues", multyAssetValues); try { return callRpc(ModuleE.SC.abbr, IMPUTED_CALL_GAS, params,(Function, Result>) res->{ if(res == null){ From 596d47172075c19165accb417853a46419e5a8ad Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 11 Dec 2020 11:42:14 +0800 Subject: [PATCH 227/304] fix bug about token cross chain --- .../main/java/io/nuls/contract/helper/ContractHelper.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 5993dd0299..1d362bfd23 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -50,6 +50,7 @@ import io.nuls.contract.vm.program.*; import io.nuls.core.basic.Result; import io.nuls.core.basic.VarInt; +import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; @@ -727,7 +728,14 @@ public ContractResult makeFailedContractResult(int chainId, ContractWrapperTrans return contractResult; } + /** + * 提取合约多资产转入的信息 + */ public void extractAssetInfoFromCallTransaction(CallContractData contractData, Transaction tx) throws NulsException { + // 过滤特殊的交易,token跨链转入交易(to中包含其他资产) + if (CROSS_CHAIN == tx.getType()) { + return; + } CoinData coinData = tx.getCoinDataInstance(); List list = extractMultyAssetInfoFromCallTransaction(coinData); contractData.setMultyAssetValues(list); From b6d09d93b82df53cdbe50a247c05d1c32ac28f96 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 11 Dec 2020 21:02:14 +0800 Subject: [PATCH 228/304] recovery package count (#614) --- .../io/nuls/transaction/service/impl/TxServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index f0be0ba438..d677596a98 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -658,7 +658,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi boolean stopInvokeContract = false; int packageContractTxMaxCount; - /*Random random = new Random(); + Random random = new Random(); int availableProcessors = Runtime.getRuntime().availableProcessors(); if (availableProcessors <= 4) { packageContractTxMaxCount = 20 + random.nextInt(10); @@ -666,8 +666,8 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi packageContractTxMaxCount = 50 + random.nextInt(10); } else { packageContractTxMaxCount = 100 + random.nextInt(20); - }*/ - packageContractTxMaxCount = 15; + } + //packageContractTxMaxCount = 15; for (int index = 0; ; index++) { long currentTimeMillis = NulsDateUtils.getCurrentTimeMillis(); From fc572c334449ab4fc7709785123712e3e06affab Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 14 Dec 2020 13:49:58 +0800 Subject: [PATCH 229/304] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=9A=84=E5=BB=B6=E8=BF=9F=E5=9D=97=E6=95=B0?= =?UTF-8?q?=20(#615)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java | 2 +- module/nuls-protocol-update/src/main/resources/versions.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java index ca049d7b10..db5aae7d18 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/MessageUtil.java @@ -560,7 +560,7 @@ private static boolean handleOtherChainCrossTransferTx(Chain chain, Transaction } } TransactionCall.sendTx(chain, RPCUtil.encode(packCtx.serialize())); - chain.getLogger().debug("跨链转账交易验证完成,发送给交易模块处理,hash:{}", crossTxHashHex); + chain.getLogger().info("跨链转账交易验证完成,发送给交易模块处理,hash:{}", crossTxHashHex); } catch (NulsException | IOException e) { chain.getLogger().error(e); return false; diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index d3c765202a..f19f5d3e2f 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -37,6 +37,6 @@ { "version": "8", "effectiveRatio": "80", - "continuousIntervalCount": "10" + "continuousIntervalCount": "20" } ] \ No newline at end of file From 437864c9a195a5cb0c4fc14e7d3bba2f1737c5d8 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 14 Dec 2020 18:15:38 +0800 Subject: [PATCH 230/304] update test case --- .../io/nuls/contract/tx/base/BaseQuery.java | 48 +- .../tx/contractvm/ContractVmV8SendTxTest.java | 31 +- .../nrc721/ContractNRC721TokenSendTxTest.java | 11 +- .../ContractMultyAssetOfflineTest.java | 424 ++++++++++++++++++ 4 files changed, 495 insertions(+), 19 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 674f9e9f1b..7d28f8c7b1 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -165,6 +165,50 @@ public void transfer() { System.out.println(transferService.transfer(builder.build(new TransferReq())).getData()); } + @Test + public void transferMultyAsset() { + TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(2, 3) + .addForm(sender, password, BigInteger.valueOf(39_1000_0000_0000L)) + .addTo(toAddress, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress0, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress1, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress2, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress3, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress4, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress5, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress6, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress7, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress8, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress9, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress10, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress11, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress12, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress13, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress14, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress15, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress16, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress17, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress18, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress19, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress20, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress21, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress22, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress23, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress24, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress25, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress26, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress27, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress28, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress29, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress30, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress31, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress32, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress33, BigInteger.valueOf(1000000000000L)) + .addTo(toAddress34, BigInteger.valueOf(1000000000000L)) + .addTo("tNULSeBaMrNuXBLLUS1zJSERqbf3jm5c633fiS", BigInteger.valueOf(3_1000_0000_0000L)); + System.out.println(transferService.transfer(builder.build(new TransferReq())).getData()); + } + @Before public void before() throws Exception { NoUse.mockModule(); @@ -188,7 +232,7 @@ public void getBalance() throws Exception { System.out.println("---------------------------------------------------"); //this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + this.getBalanceByAccount("tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp"); } protected void getBalanceByAccount(String account) throws Exception { @@ -206,6 +250,8 @@ protected void getBalanceByAccount(String account) throws Exception { System.out.println(String.format("NULS balance: %s", JSONUtils.obj2PrettyJson(balance0))); Map balance1 = LedgerCall.getBalanceAndNonce(chain, chainId, 2, account); System.out.println(String.format("MTA balance: %s", JSONUtils.obj2PrettyJson(balance1))); + Map balance2 = LedgerCall.getBalanceAndNonce(chain, chainId, 3, account); + System.out.println(String.format("MTA balance: %s", JSONUtils.obj2PrettyJson(balance2))); } @Test diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java index 47dca81a4b..78a5ba0fea 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractvm/ContractVmV8SendTxTest.java @@ -150,6 +150,7 @@ public class ContractVmV8SendTxTest extends BaseQuery { protected String contractA = ""; protected String contractB = ""; protected boolean createContract = true; + int multyAssetId = 2; @Before public void createAndInit() throws Exception { @@ -181,8 +182,8 @@ public void createAndInit() throws Exception { } else { //contractA = "tNULSeBaMy6NZRUzvKSMpKjw87ABAgietZ2THh"; //contractB = "tNULSeBaN8Ytuc6AuwD37gGozqrPSVi8qCLmqy"; - contractA = "tNULSeBaMwPWQbZWZvQDd8FGSB4sNUPVLBmkAh"; - contractB = "tNULSeBaN76yL5YGd46spCx2srGykNtoRPavqw"; + contractA = "tNULSeBaN2XQNq6Z83Ner1rf2u61ovyYACRKXW"; + contractB = "tNULSeBaMydn9HiYWf9KovR3Bmr1ePZGTsGPoa"; } JSONUtils.getInstance().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } @@ -196,6 +197,14 @@ public void testContractResultDto() throws Exception { System.out.println(JSONUtils.obj2PrettyJson(dto)); } + @Test + public void testSome() throws Exception { + test3(); + test9(); + test13(); + test14(); + } + @Test public void testFull() throws Exception { test1(); @@ -311,46 +320,46 @@ public void test9v2() throws Exception { @Test public void test11() throws Exception { - this.testAsset(contractA, sender, "test11", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); + this.testAsset(contractA, sender, "test11", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, new String[]{contractA, contractB, sender}, 0, 30, 70, 0, 0, 0); } @Test public void test12() throws Exception { - this.testAsset(contractA, sender, "test12", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 20, 10, 70, 0, 0, 0); + this.testAsset(contractA, sender, "test12", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, new String[]{contractA, contractB, sender}, 20, 10, 70, 0, 0, 0); } @Test public void test13() throws Exception { - this.testAsset(contractA, sender, "test13", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 20, 10, 60, 0, 0, 10); + this.testAsset(contractA, sender, "test13", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, new String[]{contractA, contractB, sender}, 20, 10, 60, 0, 0, 10); } @Test public void test14() throws Exception { - this.testAsset(contractA, sender, "test14", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, new String[]{contractA, contractB, sender}, 0, 30, 50, 0, 0, 20); + this.testAsset(contractA, sender, "test14", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, new String[]{contractA, contractB, sender}, 0, 30, 50, 0, 0, 20); } @Test public void test16() throws Exception { String errorMsgKey = "not enough balance"; - this.testFailed(contractA, sender, "test16", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); + this.testFailed(contractA, sender, "test16", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, errorMsgKey); } @Test public void test17() throws Exception { String errorMsgKey = "not enough balance"; - this.testFailed(contractA, sender, "test17", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); + this.testFailed(contractA, sender, "test17", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, errorMsgKey); } @Test public void test18() throws Exception { String errorMsgKey = "not enough balance"; - this.testFailed(contractA, sender, "test18", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); + this.testFailed(contractA, sender, "test18", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, errorMsgKey); } @Test public void test19() throws Exception { String errorMsgKey = "Cannot transfer the locked amount to the contract address"; - this.testFailed(contractA, sender, "test19", new String[]{}, BigInteger.valueOf(100L), chainId, 2, true, errorMsgKey); + this.testFailed(contractA, sender, "test19", new String[]{}, BigInteger.valueOf(100L), chainId, multyAssetId, true, errorMsgKey); } protected BigInteger[][] balanceList(int assetChainId, int assetId, LinkedHashMap[] contracts, String... addresses) { @@ -541,7 +550,7 @@ protected void testFailed(String contract, String sender, String method, String[ System.out.println("errorMsg: " + programResult.getErrorMessage()); Assert.assertFalse(String.format("测试方法[%s]expect failed, errorMsg: %s, stackTrace: %s", method, programResult.getErrorMessage(), programResult.getStackTrace()), programResult.isSuccess()); } catch (Throwable e) { - if (e.getMessage().contains(errorMsgKey)) { + if (e.getMessage() != null && e.getMessage().contains(errorMsgKey)) { System.out.println(String.format("method [%s] 测试通过,期望: %s", method, errorMsgKey)); } else { System.err.println(String.format("method [%s] 测试失败, error: %s", method, e.getMessage())); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc721/ContractNRC721TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc721/ContractNRC721TokenSendTxTest.java index 8e91555455..a17162f913 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc721/ContractNRC721TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc721/ContractNRC721TokenSendTxTest.java @@ -25,12 +25,9 @@ package io.nuls.contract.tx.nrc721; -import io.nuls.contract.mock.basetest.ContractTest; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; -import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; -import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; @@ -38,14 +35,13 @@ import org.junit.Assert; import org.junit.Test; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; -import java.math.BigDecimal; -import java.math.BigInteger; import java.util.HashMap; import java.util.Map; -import static io.nuls.contract.constant.ContractCmdConstant.*; +import static io.nuls.contract.constant.ContractCmdConstant.CREATE; /** * @author: PierreLuo @@ -59,7 +55,8 @@ public class ContractNRC721TokenSendTxTest extends BaseQuery { @Test public void createContract() throws Exception { //sender = toAddress32; - InputStream in = new FileInputStream(ContractTest.class.getResource("/NRC721Metadata-test.jar").getFile()); + //InputStream in = new FileInputStream(ContractTest.class.getResource("/NRC721Metadata-test.jar").getFile()); + InputStream in = new FileInputStream(new File("/Users/pierreluo/IdeaProjects/NRC721Metadata/target/NRC721Metadata-test.jar")); byte[] contractCode = IOUtils.toByteArray(in); String remark = "create contract test - 空气币"; String name = "KQB"; diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java new file mode 100644 index 0000000000..566d0d47d3 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java @@ -0,0 +1,424 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.tx.offline; + +import io.nuls.base.RPCUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.TransactionFeeCalculator; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.rpc.call.LedgerCall; +import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; +import io.nuls.core.basic.Result; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.model.LongUtils; +import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.v2.NulsSDKBootStrap; +import io.nuls.v2.model.dto.SignDto; +import io.nuls.v2.util.NulsSDKTool; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.*; + +import static io.nuls.contract.constant.ContractCmdConstant.CALL; +import static io.nuls.contract.constant.ContractCmdConstant.CREATE; + +/** + * @author: PierreLuo + * @date: 2020-10-30 + */ +public class ContractMultyAssetOfflineTest { + + protected int chainId = 2; + protected int assetId = 1; + protected long gasLimit = 200000L; + protected long gasPrice = 25L; + protected long minutes_3 = 60 * 3; + protected String offlineContract = "tNULSeBaN5ZoJhP84ePhDsSENXMs5NzK24JjLX"; + // "http://localhost:18004/" + protected String apiURL = "http://beta.api.nuls.io/"; + + + + /** + * 多账户调用合约 - 转入 + */ + @Test + public void transferInOfmanyAccountCall() throws Exception { + NulsSDKBootStrap.init(chainId, apiURL); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + String contractAddress = offlineContract; + String remark = ""; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "_payable", "", remark, null, null, null, true); + + } + + /** + * 多账户调用合约 - 转入其他资产,如 2-2, 2-3 + */ + @Test + public void transferInOfmanyAccountCallII() throws Exception { + NulsSDKBootStrap.init(chainId, apiURL); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = BigInteger.ZERO; + String contractAddress = offlineContract; + String remark = ""; + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[]{ + new ProgramMultyAssetValue(BigInteger.valueOf(2_0000_0000L), 5, 1), + new ProgramMultyAssetValue(BigInteger.valueOf(3_0000_0000L), 55, 1) + }; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "_payableMultyAsset", "", remark, null, null, multyAssetValues, true); + + } + + /** + * 多账户调用合约 - 同时转入NULS资产和其他资产,如 2-1, 2-2, 2-3 + */ + @Test + public void transferInOfmanyAccountCallIII() throws Exception { + NulsSDKBootStrap.init(chainId, apiURL); + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + String contractAddress = offlineContract; + String remark = ""; + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[]{ + new ProgramMultyAssetValue(BigInteger.valueOf(2_0000_0000L), 5, 1), + new ProgramMultyAssetValue(BigInteger.valueOf(3_0000_0000L), 55, 1) + }; + this.callTxOfflineII(feeAccount, feeAccountPri, sender, senderPri, + value, + contractAddress, + "receiveAllAssets", "", remark, null, null, multyAssetValues, true); + + } + + /** + * 多账户调用合约 - 转出 + */ + @Test + public void transferOutOfmanyAccountCall() throws Exception { + NulsSDKBootStrap.init(chainId, apiURL); + //importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG + //importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = BigInteger.ZERO; + String contractAddress = offlineContract; + String methodName = "transferNuls"; + String methodDesc = ""; + String remark = ""; + // 转出 0.1 NULS + Object[] args = new Object[]{"tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", new BigDecimal("0.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger()}; + String[] argsType = new String[]{"Address", "BigInteger"}; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, null, true); + } + + /** + * 多账户调用合约 - 转出其他资产 + */ + @Test + public void transferOutOfmanyAccountOfOtherAssetCall() throws Exception { + NulsSDKBootStrap.init(chainId, apiURL); + //importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG + //importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD + String feeAccount = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; + String feeAccountPri = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + String sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + String senderPri = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + BigInteger value = BigInteger.ZERO; + String contractAddress = offlineContract; + String methodName = "transferDesignatedAsset"; + String methodDesc = ""; + String remark = ""; + // 转出 0.1 NULS + Object[] args = new Object[]{"tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", new BigDecimal("3").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 55, 1}; + String[] argsType = new String[]{"Address", "BigInteger", "int", "int"}; + this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, null, true); + } + + protected void callTxOffline(String feeAccount, String feeAccountPri, + String contractSender, String contractSenderPri, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, + Object[] args, String[] argsType, ProgramMultyAssetValue[] multyAssetValues, boolean isBroadcastTx) throws Exception{ + List txSingers = new ArrayList<>(); + SignDto dto1 = new SignDto(); + dto1.setAddress(contractSender); + dto1.setPriKey(contractSenderPri); + SignDto dto2 = new SignDto(); + dto2.setAddress(feeAccount); + dto2.setPriKey(feeAccountPri); + txSingers.add(dto1); + txSingers.add(dto2); + //ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + //byte[] senderBytes = AddressTool.getAddress(sender); + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + + List froms = new ArrayList<>(); + List tos = new ArrayList<>(); + if (value.compareTo(BigInteger.ZERO) > 0) { + String payAccount = feeAccount; + //String payAccount = contractSender; + ContractBalance payAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), chainId, assetId, value, RPCUtil.decode(payAccountBalance.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, chainId, assetId, value); + tos.add(coinTo); + } + if (multyAssetValues != null) { + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + int assetChainId = multyAssetValue.getAssetChainId(); + int assetId = multyAssetValue.getAssetId(); + BigInteger _value = multyAssetValue.getValue(); + ContractBalance account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, feeAccount); + CoinFrom coinFrom = new CoinFrom(feeAccountBytes, assetChainId, assetId, _value, RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, assetChainId, assetId, _value); + tos.add(coinTo); + } + } + this.callTxOfflineBase(txSingers, froms, tos, feeAccount, contractSender, value, contractAddress, methodName, methodDesc, remark, + args, argsType, isBroadcastTx); + + } + + private ContractBalance getUnConfirmedBalanceAndNonce(int chainId, int assetId, String payAccount) { + Result accountBalance = NulsSDKTool.getAccountBalance(payAccount, chainId, assetId); + Map dataMap = (Map) accountBalance.getData(); + ContractBalance contractBalance = ContractBalance.newInstance(); + contractBalance.setBalance(new BigInteger(dataMap.get("available").toString())); + contractBalance.setFreeze(new BigInteger(dataMap.get("freeze").toString())); + contractBalance.setNonce(dataMap.get("nonce").toString()); + return contractBalance; + } + + /** + * 两个账户支出同一个资产 + */ + protected void callTxOfflineII(String feeAccount, String feeAccountPri, + String contractSender, String contractSenderPri, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, + Object[] args, String[] argsType, ProgramMultyAssetValue[] multyAssetValues, boolean isBroadcastTx) throws Exception{ + List txSingers = new ArrayList<>(); + SignDto dto1 = new SignDto(); + dto1.setAddress(contractSender); + dto1.setPriKey(contractSenderPri); + SignDto dto2 = new SignDto(); + dto2.setAddress(feeAccount); + dto2.setPriKey(feeAccountPri); + // importPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78", password);//27 tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24 + SignDto dto3 = new SignDto(); + dto3.setAddress("tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24"); + dto3.setPriKey("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78"); + txSingers.add(dto1); + txSingers.add(dto2); + txSingers.add(dto3); + //ContractBalance senderBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, sender); + //byte[] senderBytes = AddressTool.getAddress(sender); + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + + List froms = new ArrayList<>(); + List tos = new ArrayList<>(); + if (value.compareTo(BigInteger.ZERO) > 0) { + String payAccount = feeAccount; + //String payAccount = contractSender; + ContractBalance payAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), chainId, assetId, value, RPCUtil.decode(payAccountBalance.getNonce()), (byte) 0); + froms.add(coinFrom); + CoinTo coinTo = new CoinTo(contractAddressBytes, chainId, assetId, value); + tos.add(coinTo); + } + if (multyAssetValues != null) { + String payAccount; + for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { + BigInteger _value = multyAssetValue.getValue(); + BigInteger divide = _value.divide(BigInteger.valueOf(2)); + int assetChainId = multyAssetValue.getAssetChainId(); + int assetId = multyAssetValue.getAssetId(); + + payAccount = feeAccount; + ContractBalance account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, payAccount); + CoinFrom coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), assetChainId, assetId, _value.subtract(divide), RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + + + payAccount = "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24"; + account = getUnConfirmedBalanceAndNonce(assetChainId, assetId, payAccount); + coinFrom = new CoinFrom(AddressTool.getAddress(payAccount), assetChainId, assetId, divide, RPCUtil.decode(account.getNonce()), (byte) 0); + froms.add(coinFrom); + + CoinTo coinTo = new CoinTo(contractAddressBytes, assetChainId, assetId, _value); + tos.add(coinTo); + } + } + this.callTxOfflineBase(txSingers, froms, tos, feeAccount, contractSender, value, contractAddress, methodName, methodDesc, remark, + args, argsType, isBroadcastTx); + + } + + + protected void callTxOfflineBase(List txSingers, List froms, List tos, + String feeAccount, + String contractSender, + BigInteger value, String contractAddress, + String methodName, String methodDesc, + String remark, + Object[] args, String[] argsType, boolean isBroadcastTx) throws Exception{ + // 生成参数的二维数组 + String[][] finalArgs = null; + if (args != null && args.length > 0) { + if(argsType == null || argsType.length != args.length) { + Assert.assertTrue("size of 'argsType' array not match 'args' array", false); + } + finalArgs = ContractUtil.twoDimensionalArray(args, argsType); + } + + // 组装交易的txData + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + byte[] senderBytes = AddressTool.getAddress(contractSender); + CallContractData callContractData = new CallContractData(); + callContractData.setContractAddress(contractAddressBytes); + callContractData.setSender(senderBytes); + callContractData.setValue(value); + callContractData.setPrice(25); + callContractData.setGasLimit(gasLimit); + callContractData.setMethodName(methodName); + callContractData.setMethodDesc(methodDesc); + if (finalArgs != null) { + callContractData.setArgsCount((short) finalArgs.length); + callContractData.setArgs(finalArgs); + } + + CallContractTransaction tx = new CallContractTransaction(); + if (StringUtils.isNotBlank(remark)) { + tx.setRemark(remark.getBytes(StandardCharsets.UTF_8)); + } + tx.setTime(System.currentTimeMillis() / 1000); + // 计算CoinData + CoinData coinData = new CoinData(); + coinData.setFrom(froms); + coinData.setTo(tos); + + long gasUsed = callContractData.getGasLimit(); + BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, callContractData.getPrice())); + byte[] feeAccountBytes = AddressTool.getAddress(feeAccount); + BigInteger feeValue = imputedValue; + CoinFrom feeAccountFrom = null; + for (CoinFrom from : froms) { + int assetChainId = from.getAssetsChainId(); + int assetId = from.getAssetsId(); + if (Arrays.equals(from.getAddress(), feeAccountBytes) && assetChainId == this.chainId && assetId == this.assetId) { + from.setAmount(from.getAmount().add(feeValue)); + feeAccountFrom = from; + break; + } + } + if (feeAccountFrom == null) { + ContractBalance feeAccountBalance = getUnConfirmedBalanceAndNonce(chainId, assetId, feeAccount); + feeAccountFrom = new CoinFrom(feeAccountBytes, chainId, assetId, feeValue, RPCUtil.decode(feeAccountBalance.getNonce()), (byte) 0); + coinData.addFrom(feeAccountFrom); + } + /*if (value.compareTo(BigInteger.ZERO) > 0) { + CoinFrom coinFrom = new CoinFrom(callContractData.getSender(), chainId, assetId, sendValue, RPCUtil.decode(senderBalance.getNonce()), (byte) 0); + coinData.addFrom(coinFrom); + + CoinTo coinTo = new CoinTo(callContractData.getContractAddress(), chainId, assetId, value); + coinData.addTo(coinTo); + }*/ + + tx.setCoinData(coinData.serialize()); + tx.setTxData(callContractData.serialize()); + + BigInteger txSizeFee = TransactionFeeCalculator.getNormalUnsignedTxFee(tx.getSize() + 130 * froms.size()); + feeAccountFrom.setAmount(feeAccountFrom.getAmount().add(txSizeFee)); + /*if (feeAccountBalance.getBalance().compareTo(feeValue) < 0) { + // Insufficient balance + throw new RuntimeException("Insufficient balance to pay fee"); + }*/ + tx.setCoinData(coinData.serialize()); + // 签名 + byte[] txBytes = tx.serialize(); + String txHex = HexUtil.encode(txBytes); + Result signTxR = NulsSDKTool.sign(txSingers, txHex); + + Assert.assertTrue(JSONUtils.obj2PrettyJson(signTxR), signTxR.isSuccess()); + Map resultData = signTxR.getData(); + String signedTxHex = (String) resultData.get("txHex"); + System.out.println(String.format("signedTxHex: %s", signedTxHex)); + + // 在线接口 - 广播交易 + if (!isBroadcastTx) { + return; + } + Result broadcaseTxR = NulsSDKTool.broadcast(signedTxHex); + Assert.assertTrue(JSONUtils.obj2PrettyJson(broadcaseTxR), broadcaseTxR.isSuccess()); + Map data = broadcaseTxR.getData(); + String hash = (String) data.get("hash"); + System.out.println(String.format("hash: %s", hash)); + } + +} From 84b8c6f02dc50ba5e3f6823d37fe784625df71d7 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 18 Dec 2020 16:53:40 +0800 Subject: [PATCH 231/304] add log trace --- .../vm/program/impl/ProgramExecutorImpl.java | 1 + .../datasource/rocksdb/RocksDbDataSource.java | 48 ++++++++++--------- .../java/org/ethereum/db/RepositoryImpl.java | 5 ++ 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index dbc70df708..735e6fbc6e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -320,6 +320,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { if ("".equals(methodName)) { return revert("can't invoke method"); } + //TODO pierre 耗时 AccountState accountState = repository.getAccountState(contractAddressBytes); if (accountState == null) { return revert(String.format("contract[%s] does not exist", contractAddress)); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java index 6eb84857e8..14e4e93947 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java @@ -188,17 +188,17 @@ public String getName() { @Override public byte[] get(byte[] key) { - //long startTime = System.nanoTime(); + long startTime = System.nanoTime(); resetDbLock.readLock().lock(); try { - //if (logger.isTraceEnabled()) { - // logger.trace("~> RocksDbDataSource.get(): " + name + ", key: " + toHexString(key)); + //if (Log.isTraceEnabled()) { + // Log.trace("~> RocksDbDataSource.get(): " + name + ", key: " + toHexString(key)); //} try { byte[] ret = rocksDB.get(key); //if (Log.isInfoEnabled()) { - // Log.info("<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", System.nanoTime() - startTime); + Log.info("<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", System.nanoTime() - startTime); //} return ret; } catch (Exception e) { @@ -209,8 +209,8 @@ public byte[] get(byte[] key) { } catch (RocksDBException ex) { // skip it } - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); + //if (Log.isTraceEnabled()) { + // Log.trace("<~ RocksDbDataSource.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length)); //} return ret; } @@ -223,12 +223,12 @@ public byte[] get(byte[] key) { public void put(byte[] key, byte[] value) { resetDbLock.writeLock().lock(); try { - //if (logger.isTraceEnabled()) { - // logger.trace("~> RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //if (Log.isTraceEnabled()) { + // Log.trace("~> RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); //} rocksDB.put(key, value); - //if (logger.isInfoEnabled()) { - // logger.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //if (Log.isInfoEnabled()) { + Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); //} } catch (Exception e) { logger.error("RocksDbDataSource.put() error", e); @@ -241,15 +241,15 @@ public void put(byte[] key, byte[] value) { public void delete(byte[] key) { resetDbLock.writeLock().lock(); try { - //if (logger.isTraceEnabled()) { - // logger.trace("~> RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); + //if (Log.isTraceEnabled()) { + // Log.trace("~> RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); //} rocksDB.delete(key); - //if (logger.isInfoEnabled()) { - // logger.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); + //if (Log.isInfoEnabled()) { + // Log.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(key)); //} } catch (Exception e) { - logger.error("RocksDbDataSource.delete() error", e); + Log.error("RocksDbDataSource.delete() error", e); } finally { resetDbLock.writeLock().unlock(); } @@ -267,8 +267,10 @@ private void updateBatchInternal(Map rows) throws Exception { Set> entrySet = rows.entrySet(); for (Map.Entry entry : entrySet) { if (entry.getValue() == null) { + Log.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(entry.getKey())); batch.delete(entry.getKey()); } else { + Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(entry.getKey()) + ", " + (entry.getValue() == null ? "null" : entry.getValue().length)); batch.put(entry.getKey(), entry.getValue()); } } @@ -287,27 +289,27 @@ private void updateBatchInternal(Map rows) throws Exception { @Override public void updateBatch(Map rows) { - //long startTime = System.nanoTime(); + long startTime = System.nanoTime(); resetDbLock.writeLock().lock(); try { - //if (logger.isTraceEnabled()) { - // logger.trace("~> RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //if (Log.isTraceEnabled()) { + // Log.trace("~> RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); //} try { updateBatchInternal(rows); //if (Log.isInfoEnabled()) { - // Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime); + Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime); //} } catch (Exception e) { - logger.error("Error, retrying one more time...", e); + Log.error("Error, retrying one more time...", e); // try one more time try { updateBatchInternal(rows); - //if (logger.isTraceEnabled()) { - // logger.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); + //if (Log.isTraceEnabled()) { + // Log.trace("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size()); //} } catch (Exception e1) { - logger.error("Error", e); + Log.error("Error", e); throw new RuntimeException(e); } } diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index a636d51db4..95f408f796 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -17,6 +17,7 @@ */ package org.ethereum.db; +import io.nuls.base.basic.AddressTool; import org.ethereum.config.SystemProperties; import org.ethereum.core.AccountState; import org.ethereum.core.Block; @@ -74,6 +75,7 @@ public synchronized boolean isExist(byte[] addr) { @Override public synchronized AccountState getAccountState(byte[] addr) { + System.out.println(String.format("DB get AccountState - addr: %s", AddressTool.getStringAddressByBytes(addr))); return accountStateCache.get(addr); } @@ -132,6 +134,7 @@ public synchronized void saveCode(byte[] addr, byte[] code) { @Override public synchronized byte[] getCode(byte[] addr) { + System.out.println(String.format("DB get code - addr: %s", AddressTool.getStringAddressByBytes(addr))); byte[] codeHash = getCodeHash(addr); return codeHash == null || FastByteComparisons.equal(codeHash, HashUtil.EMPTY_DATA_HASH) ? ByteUtil.EMPTY_BYTE_ARRAY : codeCache.get(codeKey(codeHash, addr)); @@ -150,6 +153,7 @@ public byte[] getCodeHash(byte[] addr) { @Override public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value) { + System.out.println(String.format("DB put - addr: %s, put key: %s, put value: %s", AddressTool.getStringAddressByBytes(addr), key.toString(), value.toString())); getOrCreateAccountState(addr); Source contractStorage = storageCache.get(addr); @@ -158,6 +162,7 @@ public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value @Override public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { + System.out.println(String.format("DB get - addr: %s, get key: %s", AddressTool.getStringAddressByBytes(addr), key.toString())); AccountState accountState = getAccountState(addr); return accountState == null ? null : storageCache.get(addr).get(key); } From 3c69f69e6ef7e98dc4df7a19a28c179d3f2cea3f Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 19 Dec 2020 17:39:17 +0800 Subject: [PATCH 232/304] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93=E5=A2=9E=E5=8A=A0token?= =?UTF-8?q?=E8=B7=A8=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/CrossTxRehandleMsgHandler.java | 2 +- .../nuls/rpc/cmd/CrossChainTxCmd.java | 2 +- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 43 +++++++++++-------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index e6a3dc6c18..fc793b47c8 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -79,7 +79,7 @@ public void process(int chainId, String nodeId, String messageStr) { return ; } Transaction transaction = tx.getData(); - if(transaction.getType() != TxType.CROSS_CHAIN){ + if(transaction.getType() != TxType.CROSS_CHAIN || transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个跨链交易",ctxHash); return ; } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index 523a7974b2..704c01527d 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -92,7 +92,7 @@ public Response crossTxRehandle(Map params) throws IOException { return failed(tx.getMessage()); } Transaction transaction = tx.getData(); - if(transaction.getType() != TxType.CROSS_CHAIN){ + if(transaction.getType() != TxType.CROSS_CHAIN || transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ return failed("not a cross chain tx"); } long height = Long.parseLong(params.get("blockHeight").toString()); diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 9a03773fc1..2768fcab3f 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -228,8 +228,11 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { try { Map packerInfo = ConsensusCall.getPackerInfo(chain); String password = (String) packerInfo.get(ParamConstant.PARAM_PASSWORD); - String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); - List packers = (List) packerInfo.get(ParamConstant.PARAM_PACK_ADDRESS_LIST); + List localPackers = (List) packerInfo.get(ParamConstant.PARAM_ADDRESS + "es"); + + List packAddressList = (List) packerInfo.get(ParamConstant.PARAM_PACK_ADDRESS_LIST); + + NulsHash convertHash = hash; if (!config.isMainNet()) { //txData中存储来源链交易hash和nuls主链交易hash,如果发起链是nuls主链,来源链hash和nuls主链hash相同。 @@ -239,7 +242,7 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { } CtxStatusPO ctxStatusPO = new CtxStatusPO(ctx, TxStatusEnum.UNCONFIRM.getStatus()); //如果本节点是共识节点,则需要签名并做拜占庭,否则只需广播本地收集到的签名信息 - if (!StringUtils.isBlank(address) && chain.getVerifierList().contains(address)) { + if (!localPackers.isEmpty()) { BroadCtxSignMessage message = new BroadCtxSignMessage(); message.setLocalHash(hash); TransactionSignature transactionSignature = new TransactionSignature(); @@ -249,22 +252,28 @@ public static void localCtxByzantine(Transaction ctx, Chain chain) { List p2PHKSignatures = new ArrayList<>(); transactionSignature.setP2PHKSignatures(p2PHKSignatures); } - if (config.isMainNet()) { - if (ctx.getType() == TxType.CROSS_CHAIN && ctx.getCoinDataInstance().getFromAddressList().contains(address)) { - message.setSignature(transactionSignature.getP2PHKSignatures().get(0).serialize()); + //循环本地所有打包地址 + for (String packerAddress : localPackers) { + if (!chain.getVerifierList().contains(packerAddress)) { + continue; + } + if (config.isMainNet()) { + if (ctx.getType() == TxType.CROSS_CHAIN && ctx.getCoinDataInstance().getFromAddressList().contains(packerAddress)) { + message.setSignature(transactionSignature.getP2PHKSignatures().get(0).serialize()); + } else { + P2PHKSignature p2PHKSignature = AccountCall.signDigest(packerAddress, password, hash.getBytes()); + transactionSignature.getP2PHKSignatures().add(p2PHKSignature); + message.setSignature(p2PHKSignature.serialize()); + } } else { - P2PHKSignature p2PHKSignature = AccountCall.signDigest(address, password, hash.getBytes()); + P2PHKSignature p2PHKSignature = AccountCall.signDigest(packerAddress, password, convertHash.getBytes()); transactionSignature.getP2PHKSignatures().add(p2PHKSignature); message.setSignature(p2PHKSignature.serialize()); } - } else { - P2PHKSignature p2PHKSignature = AccountCall.signDigest(address, password, convertHash.getBytes()); - transactionSignature.getP2PHKSignatures().add(p2PHKSignature); - message.setSignature(p2PHKSignature.serialize()); + NetWorkCall.broadcast(chainId, message, CommandConstant.BROAD_CTX_SIGN_MESSAGE, false); } - MessageUtil.signByzantineInChain(chain, ctx, transactionSignature, packers,hash); - NetWorkCall.broadcast(chainId, message, CommandConstant.BROAD_CTX_SIGN_MESSAGE, false); - }else{ + MessageUtil.signByzantineInChain(chain, ctx, transactionSignature, packAddressList, hash); + } else { ctxStatusService.save(hash, ctxStatusPO, chainId); } //将收到的签名消息加入消息队列 @@ -382,7 +391,7 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance p2PHKSignatureList.add(p2PHKSignature); signature.setP2PHKSignatures(p2PHKSignatureList); ctx.setTransactionSignature(signature.serialize()); - byzantinePass = MessageUtil.signByzantineInChain(chain, ctx, signature, verifierList,hash); + byzantinePass = MessageUtil.signByzantineInChain(chain, ctx, signature, verifierList, hash); } catch (Exception e) { chain.getLogger().error(e); chain.getLogger().error("签名错误!,hash:{}", hashHex); @@ -395,7 +404,7 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance 保存并广播该交易 */ chain.getWaitBroadSignMap().get(hash).add(new WaitBroadSignMessage(null, message)); - }else{ + } else { ctxStatusService.save(hash, ctxStatusPO, chainId); } if (!config.isMainNet()) { @@ -620,7 +629,7 @@ public static boolean signByzantineVerify(Chain chain, Transaction ctx, List Date: Sat, 19 Dec 2020 17:52:09 +0800 Subject: [PATCH 233/304] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93=E5=A2=9E=E5=8A=A0token?= =?UTF-8?q?=E8=B7=A8=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java | 2 +- .../java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index fc793b47c8..c264e5351f 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -79,7 +79,7 @@ public void process(int chainId, String nodeId, String messageStr) { return ; } Transaction transaction = tx.getData(); - if(transaction.getType() != TxType.CROSS_CHAIN || transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ + if(transaction.getType() != TxType.CROSS_CHAIN && transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ chain.getLogger().error("处理【重新处理跨链交易拜赞庭签名】失败,ctx hash : [{}] 不是一个跨链交易",ctxHash); return ; } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index 704c01527d..daef0858cf 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -92,7 +92,7 @@ public Response crossTxRehandle(Map params) throws IOException { return failed(tx.getMessage()); } Transaction transaction = tx.getData(); - if(transaction.getType() != TxType.CROSS_CHAIN || transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ + if(transaction.getType() != TxType.CROSS_CHAIN && transaction.getType() != TxType.CONTRACT_TOKEN_CROSS_TRANSFER){ return failed("not a cross chain tx"); } long height = Long.parseLong(params.get("blockHeight").toString()); From 059b234edfa04bff979118045782b948e69847c8 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 19 Dec 2020 18:31:14 +0800 Subject: [PATCH 234/304] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93=E5=A2=9E=E5=8A=A0token?= =?UTF-8?q?=E8=B7=A8=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crosschain/nuls/message/CrossTxRehandleMsgHandler.java | 5 +++++ .../io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java index c264e5351f..35a02e306f 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/message/CrossTxRehandleMsgHandler.java @@ -56,6 +56,10 @@ public String getCmd() { @Override public void process(int chainId, String nodeId, String messageStr) { CrossTxRehandleMessage message = RPCUtil.getInstanceRpcStr(messageStr, CrossTxRehandleMessage.class); + process(chainId,message); + } + + public void process(int chainId, CrossTxRehandleMessage message){ String messageHash; try { messageHash = HexUtil.encode(message.serialize()); @@ -103,4 +107,5 @@ public void process(int chainId, String nodeId, String messageStr) { } } + } diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index daef0858cf..8dd86bab35 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -20,6 +20,7 @@ import io.nuls.crosschain.base.constant.CommandConstant; import io.nuls.crosschain.base.message.CrossTxRehandleMessage; import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; +import io.nuls.crosschain.nuls.message.CrossTxRehandleMsgHandler; import io.nuls.crosschain.nuls.model.po.CtxStatusPO; import io.nuls.crosschain.nuls.rpc.call.NetWorkCall; import io.nuls.crosschain.nuls.srorage.ConvertCtxService; @@ -49,6 +50,9 @@ public class CrossChainTxCmd extends BaseCmd { @Autowired private ChainManager chainManager; + @Autowired + CrossTxRehandleMsgHandler crossTxRehandleMsgHandler; + TransferService transferService = ServiceManager.get(TransferService.class); /** @@ -100,6 +104,7 @@ public Response crossTxRehandle(Map params) throws IOException { CrossTxRehandleMessage crossTxRehandleMessage = new CrossTxRehandleMessage(); crossTxRehandleMessage.setCtxHash(transaction.getHash()); crossTxRehandleMessage.setBlockHeight(height); + crossTxRehandleMsgHandler.process(chainId,crossTxRehandleMessage); boolean res = NetWorkCall.broadcast(chainId,crossTxRehandleMessage,CommandConstant.CROSS_TX_REHANDLE_MESSAGE,false); if(res){ return success(Map.of("msg","broadcast success")); From ce51e03edbbe256610a91879dcb0aa65e6bc4f03 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Sat, 19 Dec 2020 19:17:01 +0800 Subject: [PATCH 235/304] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=B7=A8=E9=93=BE=E4=BA=A4=E6=98=93=E5=A2=9E=E5=8A=A0token?= =?UTF-8?q?=E8=B7=A8=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/crosschain/nuls/utils/TxUtil.java | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java index 2768fcab3f..c3ec6a7a90 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/TxUtil.java @@ -361,7 +361,8 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance /* 判断本节点是否为共识节点,如果为共识节点则签名,如果不为共识节点则广播该交易 */ - Map packerInfo; + Map packerInfo = ConsensusCall.getPackerInfo(chain); + List localPackers = (List) packerInfo.get(ParamConstant.PARAM_ADDRESS + "es"); List verifierList = chain.getVerifierList(); if (ctx.getType() == TxType.VERIFIER_INIT) { packerInfo = ConsensusCall.getSeedNodeList(chain); @@ -371,8 +372,7 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance } String password = (String) packerInfo.get(ParamConstant.PARAM_PASSWORD); String address = (String) packerInfo.get(ParamConstant.PARAM_ADDRESS); - BroadCtxSignMessage message = new BroadCtxSignMessage(); - message.setLocalHash(hash); + CtxStatusPO ctxStatusPO = new CtxStatusPO(ctx, TxStatusEnum.UNCONFIRM.getStatus()); boolean byzantinePass = false; //验证人变更,减少的验证人不签名 @@ -382,13 +382,25 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance } if (sign) { chain.getLogger().info("本节点为共识节点,对跨链交易签名,Hash:{}", hashHex); - P2PHKSignature p2PHKSignature; - try { - p2PHKSignature = AccountCall.signDigest(address, password, hash.getBytes()); - message.setSignature(p2PHKSignature.serialize()); - TransactionSignature signature = new TransactionSignature(); - List p2PHKSignatureList = new ArrayList<>(); - p2PHKSignatureList.add(p2PHKSignature); + TransactionSignature signature = new TransactionSignature(); + HashSet messageList = new HashSet<>(); + List p2PHKSignatureList = new ArrayList<>(); + for (var packageAddress : localPackers){ + P2PHKSignature p2PHKSignature; + try { + p2PHKSignature = AccountCall.signDigest(packageAddress, password, hash.getBytes()); + BroadCtxSignMessage message = new BroadCtxSignMessage(); + message.setLocalHash(hash); + message.setSignature(p2PHKSignature.serialize()); + messageList.add(new WaitBroadSignMessage(null, message)); + p2PHKSignatureList.add(p2PHKSignature); + } catch (Exception e) { + chain.getLogger().error(e); + chain.getLogger().error("签名错误!,hash:{}", hashHex); + return; + } + } + try{ signature.setP2PHKSignatures(p2PHKSignatureList); ctx.setTransactionSignature(signature.serialize()); byzantinePass = MessageUtil.signByzantineInChain(chain, ctx, signature, verifierList, hash); @@ -397,13 +409,14 @@ public static void handleNewCtx(Transaction ctx, Chain chain, List cance chain.getLogger().error("签名错误!,hash:{}", hashHex); return; } - if (!chain.getWaitBroadSignMap().keySet().contains(hash)) { - chain.getWaitBroadSignMap().put(hash, new HashSet<>()); - } /* 保存并广播该交易 */ - chain.getWaitBroadSignMap().get(hash).add(new WaitBroadSignMessage(null, message)); + if (!chain.getWaitBroadSignMap().keySet().contains(hash)) { + chain.getWaitBroadSignMap().put(hash, messageList); + }else{ + chain.getWaitBroadSignMap().get(hash).addAll(messageList); + } } else { ctxStatusService.save(hash, ctxStatusPO, chainId); } From 03aff61ba745d35ce79b5b911c12e34cabf9a332 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 24 Dec 2020 10:25:30 +0800 Subject: [PATCH 236/304] add log trace --- .../main/java/io/nuls/contract/vm/Heap.java | 18 +++++++------ .../vm/program/impl/ProgramExecutorImpl.java | 26 ++++++++++++++----- .../datasource/rocksdb/RocksDbDataSource.java | 5 ++-- .../java/org/ethereum/db/RepositoryImpl.java | 19 ++++++++++---- 4 files changed, 47 insertions(+), 21 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index fd8612991e..a45cfbca6a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -260,6 +260,7 @@ public Object getArrayChunk(ObjectRef arrayRef, int chunkNum, boolean write) { value = getArrayInit(arrayRef, chunkNum); } if (value == null) { + //TODO pierre 为什么要去DB中查询 value = getArrayChunkFromState(arrayRef, arrayKey); if (value != null) { arrays.put(arrayKey, value); @@ -638,7 +639,7 @@ public ObjectRef loadContract(byte[] address, ClassCode contractCode, Repository public Map contractState() { Map contractState = new LinkedHashMap<>(1024); - //Log.info("=-=-=-=-=-= contractState - objectRefCount: {}, hashCode: {}", this.objectRefCount, this.objectRefCount.hashCode()); + Log.info("=-=-=-=-=-= contractState - objectRefCount: {}, hashCode: {}", this.objectRefCount, this.objectRefCount.hashCode()); contractState.put(OBJECT_REF_COUNT, new DataWord(this.objectRefCount.getValue())); Set stateObjectRefs = new LinkedHashSet<>(1024); String className = this.contract.getVariableType().getType(); @@ -646,22 +647,23 @@ public Map contractState() { stateObjectRefs(stateObjectRefs, staticObjectRef); stateObjectRefs(stateObjectRefs, this.contract); List clearList = new ArrayList<>(); - //int j = 0; + int j = 0; for (ObjectRef objectRef : stateObjectRefs) { - //j++; + j++; + Log.debug("Per[{}] objectRef: {}", j, objectRef); if (!this.changes.contains(objectRef)) { - //Log.warn("[{}]null changes objectRef: {}", j, objectRef); + Log.warn("[{}]null changes objectRef: {}", j, objectRef); continue; } Map fields = getFieldsInit(objectRef); if (fields == null) { - //Log.info("[{}]null fields objectRef: {}", j, objectRef); + Log.info("[{}]null fields objectRef: {}", j, objectRef); continue; } String key = JsonUtils.encode(objectRef, classNames); String value = JsonUtils.encode(fields, classNames); - //Log.info("[{}]modified objectRef: {}, fields: {}", j, objectRef, fields); - //Log.info("[{}]modified key: {}, value: {}", j, key, value); + Log.info("[{}]modified objectRef: {}, fields: {}", j, objectRef, fields); + Log.info("[{}]modified key: {}, value: {}", j, key, value); contractState.put(new DataWord(key), new DataWord(value)); if (objectRef.isArray()) { for (String k : fields.keySet()) { @@ -677,7 +679,7 @@ public Map contractState() { clazz = ObjectRef.class; } String arrayValue = JsonUtils.encodeArray(object, clazz, classNames); - //Log.info("[{}]modified arrayKey: {}, arrayValue: {}", j, arrayKey, arrayValue); + Log.info("[{}]modified arrayKey: {}, arrayValue: {}", j, arrayKey, arrayValue); contractState.put(new DataWord(arrayKey), new DataWord(arrayValue)); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 735e6fbc6e..9546006ddc 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -320,7 +320,6 @@ private ProgramResult execute(ProgramInvoke programInvoke) { if ("".equals(methodName)) { return revert("can't invoke method"); } - //TODO pierre 耗时 AccountState accountState = repository.getAccountState(contractAddressBytes); if (accountState == null) { return revert(String.format("contract[%s] does not exist", contractAddress)); @@ -340,6 +339,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done + Log.debug("++++++++++++++++++++"); + Log.warn(programInvoke.toString()); + Log.info("this.contractObjectRefCount: {}", this.contractObjectRefCount); + Log.info("vm.heap.objectRefCount: {}", vm.heap.objectRefCount); boolean isUpgradedV240 = ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) >= ContractContext.UPDATE_VERSION_V240; if(isUpgradedV240) { if(contractObjects == null) { @@ -349,7 +352,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { Map> objectRefMapMap = contractObjects.get(contractAddress); if(objectRefMapMap != null) { if(programInvoke.isInternalCall()) { - //Log.info("共享heap.objects"); + Log.info("共享heap.objects"); vm.heap.objects = objectRefMapMap; } } else { @@ -363,7 +366,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { Map arraysMap = contractArrays.get(contractAddress); if(arraysMap != null) { if(programInvoke.isInternalCall()) { - //Log.info("共享heap.arrays"); + Log.info("共享heap.arrays"); vm.heap.arrays = arraysMap; } } else { @@ -371,18 +374,18 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } } if(contractChanges == null) { - //Log.info("新建map和heap.changes"); + Log.info("新建map和heap.changes"); contractChanges = new HashMap<>(); contractChanges.put(contractAddress, vm.heap.changes); } else { Set changesObjectRefs = contractChanges.get(contractAddress); if(changesObjectRefs != null) { if(programInvoke.isInternalCall()) { - //Log.info("共享heap.changes: {}", changesObjectRefs.hashCode()); + Log.info("共享heap.changes: {}", changesObjectRefs.hashCode()); vm.heap.changes = changesObjectRefs; } } else { - //Log.info("新增heap.changes"); + Log.info("新增heap.changes"); contractChanges.put(contractAddress, vm.heap.changes); } } @@ -439,15 +442,24 @@ private ProgramResult execute(ProgramInvoke programInvoke) { // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done if(isUpgradedV240) { if(contractObjectRefCount == null) { + Log.info("新建map和heap.objectRefCount"); + contractObjectRefCount = new HashMap<>(); contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); } else { BigIntegerWrapper objectRefCount = contractObjectRefCount.get(contractAddress); if(objectRefCount != null) { if(programInvoke.isInternalCall()) { + Log.info("共享heap.objectRefCount: {}", objectRefCount.hashCode()); + vm.heap.objectRefCount = objectRefCount; + } else { + Log.info("问题heap.objectRefCount"); } + } else { + Log.info("新增heap.objectRefCount"); + contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); } } @@ -544,8 +556,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { for (Map.Entry entry : contractState.entrySet()) { DataWord key = entry.getKey(); DataWord value = entry.getValue(); + Log.info("add storage row, key: {}, value: {}", key.asString(), value.asString()); repository.addStorageRow(contractAddressBytes, key, value); } + Log.debug("---------------------"); logTime("add contract state"); if (programInvoke.isCreate()) { diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java index 14e4e93947..3718b4223a 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java @@ -40,6 +40,7 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import static org.ethereum.db.RepositoryImpl.threadLocal; import static org.ethereum.util.ByteUtil.toHexString; /** @@ -198,7 +199,7 @@ public byte[] get(byte[] key) { byte[] ret = rocksDB.get(key); //if (Log.isInfoEnabled()) { - Log.info("<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", System.nanoTime() - startTime); + Log.info("[{}]<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", threadLocal.get(), System.nanoTime() - startTime); //} return ret; } catch (Exception e) { @@ -298,7 +299,7 @@ public void updateBatch(Map rows) { try { updateBatchInternal(rows); //if (Log.isInfoEnabled()) { - Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime); + Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime + "\n"); //} } catch (Exception e) { Log.error("Error, retrying one more time...", e); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index 95f408f796..8b344f8903 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -18,6 +18,7 @@ package org.ethereum.db; import io.nuls.base.basic.AddressTool; +import io.nuls.contract.util.Log; import org.ethereum.config.SystemProperties; import org.ethereum.core.AccountState; import org.ethereum.core.Block; @@ -75,7 +76,7 @@ public synchronized boolean isExist(byte[] addr) { @Override public synchronized AccountState getAccountState(byte[] addr) { - System.out.println(String.format("DB get AccountState - addr: %s", AddressTool.getStringAddressByBytes(addr))); + Log.debug(String.format("[%s]DB get AccountState - addr: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr))); return accountStateCache.get(addr); } @@ -134,7 +135,7 @@ public synchronized void saveCode(byte[] addr, byte[] code) { @Override public synchronized byte[] getCode(byte[] addr) { - System.out.println(String.format("DB get code - addr: %s", AddressTool.getStringAddressByBytes(addr))); + Log.warn(String.format("DB get code - addr: %s", AddressTool.getStringAddressByBytes(addr))); byte[] codeHash = getCodeHash(addr); return codeHash == null || FastByteComparisons.equal(codeHash, HashUtil.EMPTY_DATA_HASH) ? ByteUtil.EMPTY_BYTE_ARRAY : codeCache.get(codeKey(codeHash, addr)); @@ -153,18 +154,26 @@ public byte[] getCodeHash(byte[] addr) { @Override public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value) { - System.out.println(String.format("DB put - addr: %s, put key: %s, put value: %s", AddressTool.getStringAddressByBytes(addr), key.toString(), value.toString())); + Log.warn(String.format("DB put - addr: %s, put key: %s, put value: %s", AddressTool.getStringAddressByBytes(addr), key.toString(), value.toString())); getOrCreateAccountState(addr); Source contractStorage = storageCache.get(addr); contractStorage.put(key, value.isZero() ? null : value); } + public static ThreadLocal threadLocal = new ThreadLocal<>(); + static { + threadLocal.set(0); + } @Override public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { - System.out.println(String.format("DB get - addr: %s, get key: %s", AddressTool.getStringAddressByBytes(addr), key.toString())); + threadLocal.set(threadLocal.get() + 1); AccountState accountState = getAccountState(addr); - return accountState == null ? null : storageCache.get(addr).get(key); + DataWord dataWord = accountState == null ? null : storageCache.get(addr).get(key); + Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), + dataWord == null ? null : dataWord.asString())); + return dataWord; + //return accountState == null ? null : storageCache.get(addr).get(key); } @Override From 01a17b571f19b704c0a1d192ad3ea306131115d6 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 24 Dec 2020 10:28:29 +0800 Subject: [PATCH 237/304] update 3g mem of contract module --- module/nuls-smart-contract/module.ncf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 9c5bc72cc0..3d5d667bdc 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -3,7 +3,7 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 JOPT_XMS=3072 -JOPT_XMX=dynamic +JOPT_XMX=3072 JAVA_OPTS=-XX:NewRatio=2 [Core] From 3879532543af054ae27d5973ae2efda831a5f516 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 29 Dec 2020 11:11:39 +0800 Subject: [PATCH 238/304] contract db query optimize --- genesis-block.json | 31787 +++++++++++++++- module.ncf | 91 +- .../contract/model/dto/ContractResultDto.java | 2 - .../main/java/io/nuls/contract/vm/Heap.java | 40 +- .../java/org/ethereum/db/RepositoryImpl.java | 3 +- .../contract/mock/basetest/ContractTest.java | 4 + .../nuls/contract/mock/basetest/MockBase.java | 24 +- .../contract/mock/booltest/BooleanTest.java | 4 + .../mock/contractvm/ContractVmTest.java | 10 +- .../mock/contractvm/ContractVmV8Test.java | 10 +- .../nuls/contract/mock/depth/DepthTest.java | 4 + .../nuls/contract/mock/nrc721/NRC721Test.java | 4 + .../StorageStructureContract.java | 333 + 13 files changed, 31024 insertions(+), 1292 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 15ec586188..f66f5247c0 100644 --- a/module.ncf +++ b/module.ncf @@ -1,47 +1,46 @@ [global] encoding=UTF-8 language=en -logPath=E:/work/src/nuls-v2/Logs +logPath=../../../../Logs logLevel=INFO -dataPath=E:/work/src/nuls-v2/data +dataPath=../../../../data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=2.7.0-a4354e9 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -64,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -79,26 +78,36 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain +[ledger] +dependent=protocol-update + +[transaction] +dependent=protocol-update,smart-contract + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -107,47 +116,49 @@ databasePort=27017 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri -ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE -mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm -businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL -teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH -communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] +dataPath=../../../../../data +logPath=../../../../../Logs #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip -serverIp=0.0.0.0 +serverIp=127.0.0.1 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.7.0 + diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 54031c6ccb..00625a05b7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -28,12 +28,10 @@ import io.nuls.contract.model.bo.ContractMergedTransfer; import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; import io.nuls.contract.model.bo.ContractResult; -import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.ContractBaseTransaction; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.vm.program.ProgramInvokeRegisterCmd; -import io.nuls.contract.vm.program.ProgramMethodArg; import io.nuls.core.constant.TxType; import io.nuls.core.exception.NulsException; import io.nuls.core.model.LongUtils; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index a45cfbca6a..f60fe8a8c8 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -44,6 +44,8 @@ import java.math.BigInteger; import java.util.*; +import static org.ethereum.db.RepositoryImpl.threadLocal; + public class Heap { public static final Map> INIT_OBJECTS = new HashMap<>(1024); @@ -250,16 +252,20 @@ public Object putArrayInit(ObjectRef arrayRef, Integer key) { } public Object getArrayChunk(ObjectRef arrayRef, int chunkNum, boolean write) { + return this.getArrayChunk(arrayRef, chunkNum, write, true); + } + + public Object getArrayChunk(ObjectRef arrayRef, int chunkNum, boolean write, boolean loadDB) { getFields(arrayRef); String key = Integer.toString(chunkNum); String arrayKey = arrayRef.getRef() + "_" + key; - Object value = null; + Object value; if (write) { value = putArrayInit(arrayRef, chunkNum); } else { value = getArrayInit(arrayRef, chunkNum); } - if (value == null) { + if (value == null && loadDB) { //TODO pierre 为什么要去DB中查询 value = getArrayChunkFromState(arrayRef, arrayKey); if (value != null) { @@ -290,6 +296,7 @@ public Object getArrayChunkFromState(ObjectRef arrayRef, String arrayKey) { if (this.repository == null) { return null; } + Log.error("[{}]!!!!!!!getArrayChunkFromState, arrayRef: {}, arrayKey: {}", threadLocal.get(), arrayRef.toString(), arrayKey.toString()); DataWord dataWord = this.repository.getStorageValue(this.address, new DataWord(arrayKey)); if (dataWord == null) { return null; @@ -327,6 +334,10 @@ public void putArray(ObjectRef arrayRef, int index, Object value) { } public void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) { + this.arraycopy(src, srcPos, dest, destPos, length, true); + } + + public void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, boolean loadDB) { if (length < 1) { return; } @@ -343,24 +354,28 @@ public void arraycopy(Object src, int srcPos, Object dest, int destPos, int leng int index = Math.max(srcIndex, destIndex); int copyLength = 1024 - index; copyLength = Math.min(copyLength, length); - arrayChunkCopy(src, srcChunk, srcIndex, dest, destChunk, destIndex, copyLength); + arrayChunkCopy(src, srcChunk, srcIndex, dest, destChunk, destIndex, copyLength, loadDB); srcPos += copyLength; destPos += copyLength; length -= copyLength; } } - public void arrayChunkCopy(Object src, int srcChunk, int srcPos, Object dest, int destChunk, int destPos, int length) { + //public void arrayChunkCopy(Object src, int srcChunk, int srcPos, Object dest, int destChunk, int destPos, int length) { + // this.arrayChunkCopy(src, srcChunk, srcPos, dest, destChunk, destPos, length, true); + //} + + public void arrayChunkCopy(Object src, int srcChunk, int srcPos, Object dest, int destChunk, int destPos, int length, boolean loadDB) { Object srcArray = src; if (src instanceof ObjectRef) { - srcArray = getArrayChunk((ObjectRef) src, srcChunk, false); + srcArray = getArrayChunk((ObjectRef) src, srcChunk, false, loadDB); } else { srcPos = srcChunk * 1024 + srcPos; } Object destArray = dest; if (dest instanceof ObjectRef) { ObjectRef destObjectRef = (ObjectRef) dest; - destArray = getArrayChunk(destObjectRef, destChunk, true); + destArray = getArrayChunk(destObjectRef, destChunk, true, loadDB); change(destObjectRef); } else { destPos = destChunk * 1024 + destPos; @@ -377,6 +392,17 @@ public ObjectRef newArray(char[] chars) { return objectRef; } + // add by pierre at 2020-12-28 + public ObjectRef newArrayWithoutDB(char[] chars) { + if (chars == null) { + return null; + } + ObjectRef objectRef = newArray(VariableType.CHAR_ARRAY_TYPE, chars.length); + arraycopy(chars, 0, objectRef, 0, chars.length, false); + return objectRef; + } + // end code by pierre + public ObjectRef newArray(byte[] bytes) { if (bytes == null) { return null; @@ -406,7 +432,7 @@ public ObjectRef newString(String str) { } ObjectRef objectRef = newObjectRef(VariableType.STRING_TYPE.getDesc()); putField(objectRef, Constants.HASH, str.hashCode()); - putField(objectRef, Constants.VALUE, newArray(str.toCharArray())); + putField(objectRef, Constants.VALUE, newArrayWithoutDB(str.toCharArray())); return objectRef; } diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index 8b344f8903..a482f1d515 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -167,11 +167,12 @@ public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value } @Override public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { - threadLocal.set(threadLocal.get() + 1); + AccountState accountState = getAccountState(addr); DataWord dataWord = accountState == null ? null : storageCache.get(addr).get(key); Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), dataWord == null ? null : dataWord.asString())); + threadLocal.set(threadLocal.get() + 1); return dataWord; //return accountState == null ? null : storageCache.get(addr).get(key); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/ContractTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/ContractTest.java index d79c033a4d..1d21f29df6 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/ContractTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/ContractTest.java @@ -348,4 +348,8 @@ public static void sleep() { } } + @Override + protected void protocolUpdate() { + + } } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java index 47652f2fd4..b1699bd146 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/basetest/MockBase.java @@ -24,7 +24,10 @@ package io.nuls.contract.mock.basetest; import com.fasterxml.jackson.core.JsonProcessingException; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.base.Base; +import io.nuls.contract.config.ContractConfig; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.manager.CmdRegisterManager; import io.nuls.contract.model.bo.Chain; @@ -33,6 +36,7 @@ import io.nuls.contract.util.Log; import io.nuls.contract.util.VMContext; import io.nuls.contract.util.VMContextMock; +import io.nuls.contract.vm.VMFactory; import io.nuls.contract.vm.natives.io.nuls.contract.sdk.NativeAddress; import io.nuls.contract.vm.program.*; import io.nuls.contract.vm.program.impl.ProgramExecutorImpl; @@ -48,28 +52,40 @@ * @author: PierreLuo * @date: 2019-06-11 */ -public class MockBase extends Base { +public abstract class MockBase extends Base { protected static final String ADDRESS = "tNULSeBaN7vAqBANTtVxsiFsam4NcRUbqrCpzK"; protected static final String SENDER = "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"; protected ProgramExecutor programExecutor; private VMContext vmContext; private CmdRegisterManager cmdRegisterManager; + protected static String dataPath = "./data"; @BeforeClass public static void initClass() { Log.info("init log."); - RocksDBService.init("./data"); + RocksDBService.init(dataPath); } + protected abstract void protocolUpdate(); + @Before public void setUp() { + // 加载协议升级的数据 + ContractContext.CHAIN_ID = chainId; + ContractContext.ASSET_ID = assetId; + Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(2); configBean.setAssetId(1); configBean.setMaxViewGas(100000000L); chain.setConfig(configBean); + + ContractConfig contractConfig = new ContractConfig(); + contractConfig.setDataPath(dataPath); + SpringLiteContext.putBean(ContractConfig.class.getName(), contractConfig); + vmContext = new VMContextMock(); programExecutor = new ProgramExecutorImpl(vmContext, chain); chain.setProgramExecutor(programExecutor); @@ -79,6 +95,8 @@ public void setUp() { chainManager.getChainMap().put(chain.getChainId(), chain); BeanUtilTest.setBean(cmdRegisterManager, chainManager); SpringLiteContext.putBean(CmdRegisterManager.class.getName(), cmdRegisterManager); + + protocolUpdate(); } protected byte[] create(byte[] prevStateRoot, String sender, byte[] contractCode, String... args) { @@ -170,7 +188,7 @@ private Object[] execute(String contractAddress, byte[] preStateRoot, String sen programCall.setContractAddress(contractAddress == null ? NativeAddress.toBytes(ADDRESS) : NativeAddress.toBytes(contractAddress)); programCall.setSender(NativeAddress.toBytes(sender)); programCall.setPrice(1); - programCall.setGasLimit(1000000); + programCall.setGasLimit(10000000); programCall.setNumber(1); programCall.setValue(value == null ? BigInteger.ZERO : value); programCall.setMethodName(methodName); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/booltest/BooleanTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/booltest/BooleanTest.java index 9a0631cfb8..a4571e644f 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/booltest/BooleanTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/booltest/BooleanTest.java @@ -72,4 +72,8 @@ public void testCall() throws JsonProcessingException { Log.info("\n"); } + @Override + protected void protocolUpdate() { + + } } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java index 7893dd5d5c..82881cb6fe 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmTest.java @@ -260,14 +260,15 @@ public class ContractVmTest extends MockBase { String contractB = "tNULSeBaN1gZJobF3bxuLwXxvvAosdwQTVxWFn"; byte[] prevStateRoot; - @Before - public void createAndInit() throws Exception { - // 加载协议升级的数据 - ContractContext.CHAIN_ID = 2; + @Override + protected void protocolUpdate() { short version = 5; ProtocolGroupManager.setLoadProtocol(false); ProtocolGroupManager.updateProtocol(chainId, version); + } + @Before + public void createAndInit() throws Exception { // -------------------------------------------------------------------------------------// InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-testA-testA.jar").getFile()); InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-testB-testB.jar").getFile()); @@ -610,4 +611,5 @@ private void testFull() throws Exception { //Assert.assertTrue(String.format("测试方法[test14]View期望map1a=105, 实际map1a=%s", a), "105".equals(a)); //// -------------------------------------------------------------------------------------// } + } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java index 82186eed31..d26e57d99d 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/contractvm/ContractVmV8Test.java @@ -144,18 +144,18 @@ public class ContractVmV8Test extends MockBase { String contractB = "tNULSeBaN1gZJobF3bxuLwXxvvAosdwQTVxWFn"; byte[] prevStateRoot; - @Before - public void createAndInit() throws Exception { - // 加载协议升级的数据 - ContractContext.CHAIN_ID = chainId; - ContractContext.ASSET_ID = assetId; + @Override + protected void protocolUpdate() { short version = 8; ProtocolGroupManager.setLoadProtocol(false); ProtocolGroupManager.updateProtocol(chainId, version); if (version >= 8) { VMFactory.reInitVM_v8(); } + } + @Before + public void createAndInit() throws Exception { // -------------------------------------------------------------------------------------// //InputStream inA = new FileInputStream(getClass().getResource("/contract-vm-v8-testA-1.0-SNAPSHOT.jar").getFile()); //InputStream inB = new FileInputStream(getClass().getResource("/contract-vm-v8-testB-1.0-SNAPSHOT.jar").getFile()); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/depth/DepthTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/depth/DepthTest.java index f3fc3477de..859126e4ec 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/depth/DepthTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/depth/DepthTest.java @@ -77,4 +77,8 @@ public void testContractMethod() throws IOException { Log.info("\n"); } + @Override + protected void protocolUpdate() { + + } } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/nrc721/NRC721Test.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/nrc721/NRC721Test.java index 898ebd55db..668f9e6979 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/nrc721/NRC721Test.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/nrc721/NRC721Test.java @@ -470,4 +470,8 @@ public void testFull() throws Exception { Log.info("\n"); } + @Override + protected void protocolUpdate() { + + } } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java new file mode 100644 index 0000000000..9119ada97d --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java @@ -0,0 +1,333 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.mock.storagestructure; + +import com.fasterxml.jackson.core.JsonProcessingException; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.mock.basetest.MockBase; +import io.nuls.contract.util.Log; +import io.nuls.contract.vm.VMFactory; +import io.nuls.contract.vm.program.ProgramResult; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.parse.JSONUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.TimeUnit; + +/** + * @author: PierreLuo + * @date: 2020-12-15 + */ +public class StorageStructureContract extends MockBase { + + @Override + protected void protocolUpdate() { + short version = 8; + ProtocolGroupManager.setLoadProtocol(false); + ProtocolGroupManager.updateProtocol(chainId, version); + if (version >= 8) { + VMFactory.reInitVM_v8(); + } + } + + /* + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"a"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "setMapValue", new String[]{"c31", "c31"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"c30"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"c31"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + */ + + @Test + public void testCreate() throws IOException, InterruptedException { + InputStream in = new FileInputStream(new File("/Users/pierreluo/IdeaProjects/storage-structure-contract/target/storage-structure-contract-1.0-SNAPSHOT.jar")); + byte[] contractCode = IOUtils.toByteArray(in); + + byte[] prevStateRoot = HexUtil.decode("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"); + byte[] stateRoot = super.create(prevStateRoot, SENDER, contractCode); + + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + @Test + public void testListAdd() throws Exception { + byte[] prevStateRoot = HexUtil.decode("32b05b57e5ddc8eabba05a9a7b006b3cd4c8d8d7662cb0553c3c05e471cd61fe"); + Object[] objects = super.call(prevStateRoot, SENDER, "addList", new String[]{"a", "1310"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(3); + } + @Test + public void getListByIndex() throws Exception { + byte[] prevStateRoot = HexUtil.decode("3f7a4dbed0dfd416b51217480350ba8428ee4a20f9837d9be92f5a74d5fb34e0"); + Object[] objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"0"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"310"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"1210"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + @Test + public void testMapAdd() throws Exception { + byte[] prevStateRoot = HexUtil.decode("978b6d7889168f85322f8ca246e2c362242a76fac96b7d86cbdbcee4fe655399"); + Object[] objects = super.call(prevStateRoot, SENDER, "addMap", new String[]{"b", "2000"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(6); + } + + @Test + public void getMapValue() throws Exception { + byte[] prevStateRoot = HexUtil.decode("7945b873f1b21c0b622c6488780c45e2fca37642ef28c1e02ac50afc05697229"); + Object[] objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b1211"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + /*prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b121"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b1211"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b1999"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1);*/ + } + + + + @Test + public void setLongStr() throws Exception { + byte[] prevStateRoot = HexUtil.decode("7945b873f1b21c0b622c6488780c45e2fca37642ef28c1e02ac50afc05697229"); + Object[] objects = super.call(prevStateRoot, SENDER, "setLongStr", new String[]{"504b0304140008080800038b2d4d000000000000000000000000090004004d4554412d494e462ffeca00000300504b0708000000000200000000000000504b0304140008080800038b2d4d000000000000000000000000140000004d4554412d494e462f4d414e49464553542e4d46f34dcccb4c4b2d2ed10d4b2d2acecccfb35230d433e0e5722e4a4d2c494dd175aa040958e819c41b9a982868f8172526e7a42a38e71715e417259600d56bf272f1720100504b07089e7c76534400000045000000504b03040a0000080000fb8a2d4d0000000000000000000000001b00000074657374636f6e74726163742f6d756c74797472616e736665722f504b0304140008080800fb8a2d4d0000000000000000000000003200000074657374636f6e74726163742f6d756c74797472616e736665722f546573744d756c74795472616e736665722e636c6173739d56eb7313d715ffad257997454e8cea00f210aa262d91658cb00c989a94c498180cb6f143d8d86d4256d25a5a4bda95b52b83d31749daa4e933e9234ddf8f90a68fb40d2d96dd64265f3ac34cfb0ff463ff857eea97cc747acedd95ac48824e6a8ff69e7b9ebf73ef3967f7efff79e73d00c7f08e8a53585590df85fb505050e4d5e48725a3a442c62a3fd6149479b515382cacc85857710dd75584b0a1e219d8323eabe073bcff7c00fcf7daab3758f005667d51c18d1af75905cf0a5a1a1c8082e75cfa6f7fbda1e079155fc29715bcc0be5f64435ba5685f51f09282af32f36b8ce2eb0abec19b6ff2e65b0a5ee6cd2b0abeade03b2abe8beff1e35505dfe7f535053f50f043267fa4e0c7327e22e3a712fca656d425842657b5752d5ed0cc6c7cde291b66f694844e7ba398b20a12bac62cd37634d359d00a15d256327ada286a055b8234e"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(3); + } + + @Test + public void getLongStr() throws Exception { + byte[] prevStateRoot = HexUtil.decode("74b149e895922084d4e96f2eaaa4a65376e03768c6d9c2afc092331ae9616bb8"); + Object[] objects = super.call(prevStateRoot, SENDER, "getLongStr", new String[]{}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + + @Test + public void testMapInitial() throws Exception { + byte[] prevStateRoot = HexUtil.decode("7260585b3902b0cc30a235fc9b6b75b99d41829a21a3109cc29f9d7b08b89bf0"); + Object[] objects = super.call(prevStateRoot, SENDER, "mapInit", new String[]{}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(3); + } + + @Test + public void testMapInsert() throws Exception { + byte[] prevStateRoot = HexUtil.decode("ba41dfe0b28c679a569a4f60847b74984f3510fa597fb086025798209d4b4efd"); + Object[] objects = super.call(prevStateRoot, SENDER, "getStr", new String[]{}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"c31"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "setMapValue", new String[]{"c31", "c31-insert"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"c31"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + @Test + public void testIntUpdate() throws Exception { + byte[] prevStateRoot = HexUtil.decode("a75ed8e32a66957170fdad8105939903f36f9d0248a5e615e1d8c84c3cd794ec"); + Object[] objects = super.call(prevStateRoot, SENDER, "getAstr", new String[]{}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "setA", new String[]{"88"}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getAstr", new String[]{}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + @Test + public void testIntFind() throws Exception { + byte[] prevStateRoot = HexUtil.decode("81679624169423a3e480dae47f0e78c4935b83d94c35a6d741efa0af8e4b554f"); + Object[] objects = super.call(prevStateRoot, SENDER, "getAstr", new String[]{}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + + prevStateRoot = stateRoot; + objects = super.call(prevStateRoot, SENDER, "getAstr", new String[]{}); + stateRoot = (byte[]) objects[0]; + programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(1); + } + + @Test + public void callMuchMint() throws JsonProcessingException { + byte[] prevStateRoot = HexUtil.decode("52517a7c3889a129cea32531cdc45109a5228d31e51bdfcd55394fa580d11ab4"); + int size = 10000; + for(int i=1;i<=size;i++) { + Object[] objects = super.call(prevStateRoot, SENDER, "mint", new String[]{toAddress0, String.valueOf(i)}); + prevStateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(String.format("%s cost: %s", i, programResult.getGasUsed())); + } + Log.info("stateRoot: " + HexUtil.encode(prevStateRoot)); + } + + @Test + public void testView() throws JsonProcessingException { + byte[] prevStateRoot = HexUtil.decode("54803e34c33c92544ad8846bf4404944ae31e80143e4036359f8c60698bbc167"); + String balanceOf = super.view(prevStateRoot, "balanceOf", new String[]{toAddress0}); + Log.info("view result: " + balanceOf); + } + + +} From 988a51a8b78fe36b934b988cc3ea650385037838 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 29 Dec 2020 14:39:50 +0800 Subject: [PATCH 239/304] update log --- .../src/main/java/org/ethereum/db/RepositoryImpl.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index a482f1d515..7a472a8877 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -32,6 +32,7 @@ import javax.annotation.Nullable; import java.math.BigInteger; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; /** * Created by Anton Nashatyrev on 07.10.2016. @@ -161,10 +162,7 @@ public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value contractStorage.put(key, value.isZero() ? null : value); } - public static ThreadLocal threadLocal = new ThreadLocal<>(); - static { - threadLocal.set(0); - } + public static AtomicInteger threadLocal = new AtomicInteger(0); @Override public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { @@ -172,7 +170,7 @@ public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { DataWord dataWord = accountState == null ? null : storageCache.get(addr).get(key); Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), dataWord == null ? null : dataWord.asString())); - threadLocal.set(threadLocal.get() + 1); + threadLocal.incrementAndGet(); return dataWord; //return accountState == null ? null : storageCache.get(addr).get(key); } From bc2c062ed534c40929264870c636ea63aef98c0d Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 29 Dec 2020 15:40:53 +0800 Subject: [PATCH 240/304] remove log trace --- .../src/main/java/io/nuls/contract/vm/Heap.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index f60fe8a8c8..6508f45c6d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -676,14 +676,14 @@ public Map contractState() { int j = 0; for (ObjectRef objectRef : stateObjectRefs) { j++; - Log.debug("Per[{}] objectRef: {}", j, objectRef); + //Log.debug("Per[{}] objectRef: {}", j, objectRef); if (!this.changes.contains(objectRef)) { - Log.warn("[{}]null changes objectRef: {}", j, objectRef); + //Log.warn("[{}]null changes objectRef: {}", j, objectRef); continue; } Map fields = getFieldsInit(objectRef); if (fields == null) { - Log.info("[{}]null fields objectRef: {}", j, objectRef); + //Log.info("[{}]null fields objectRef: {}", j, objectRef); continue; } String key = JsonUtils.encode(objectRef, classNames); From b74a685f43708a34afea303d9ad83628e69c0be4 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 30 Dec 2020 09:43:00 +0800 Subject: [PATCH 241/304] add txType --- .../java/io/nuls/core/constant/TxType.java | 150 +- genesis-block.json | 31787 +++++++++++++++- module.ncf | 65 +- 3 files changed, 30735 insertions(+), 1267 deletions(-) diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java index 5b0d754a34..29b0591fa9 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java @@ -1,7 +1,5 @@ package io.nuls.core.constant; -import org.junit.rules.Verifier; - /** * 交易类型 * @@ -27,7 +25,7 @@ public class TxType { */ public static final int ACCOUNT_ALIAS = 3; /** - * 新建共识节点 + * 新建共识节点` */ public static final int REGISTER_AGENT = 4; /** @@ -139,11 +137,153 @@ public class TxType { */ public static final int LEDGER_ASSET_REG_TRANSFER = 27; + + /** + * 追加节点保证金 + * Additional agent margin + * */ + public static final int APPEND_AGENT_DEPOSIT = 28; + /** - * 注册跨链变更(新注册/注销链,新注册/注销资产) + * 撤销节点保证金 + * Cancel agent deposit + * */ + public static final int REDUCE_AGENT_DEPOSIT = 29; + + /** + * 喂价交易 */ - public static final int REGISTERED_CHAIN_CHANGE = 60; + public static final int QUOTATION = 30; + + /** + * 最终喂价交易 + */ + public static final int FINAL_QUOTATION = 31; + + /** + * 批量退出staking交易 + */ + public static final int BATCH_WITHDRAW = 32; + + /** + * 合并活期staking记录 + */ + public static final int BATCH_STAKING_MERGE = 33; + + /** + * 创建交易对 + */ + public static final int COIN_TRADING = 228; + + /** + * 挂单委托 + */ + public static final int TRADING_ORDER = 229; + + /** + * 挂单撤销 + */ + public static final int TRADING_ORDER_CANCEL = 230; + + /** + * 挂单成交 + */ + public static final int TRADING_DEAL = 231; + + /** + * 修改交易对 + */ + public static final int EDIT_COIN_TRADING = 232; + + /** + * 撤单交易确认 + */ + public static final int ORDER_CANCEL_CONFIRM = 233; + + /** + * 确认 虚拟银行变更交易 + */ + public static final int CONFIRM_CHANGE_VIRTUAL_BANK = 40; + + /** + * 虚拟银行变更交易 + */ + public static final int CHANGE_VIRTUAL_BANK = 41; + /** + * 链内充值交易 + */ + public static final int RECHARGE = 42; + + /** + * 提现交易 + */ + public static final int WITHDRAWAL = 43; + + /** + * 确认提现成功状态交易 + */ + public static final int CONFIRM_WITHDRAWAL = 44; + + /** + * 发起提案交易 + */ + public static final int PROPOSAL = 45; + + /** + * 对提案进行投票交易 + */ + public static final int VOTE_PROPOSAL = 46; + + /** + * 异构链交易手续费补贴 + */ + public static final int DISTRIBUTION_FEE = 47; + + /** + * 虚拟银行初始化异构链 + */ + public static final int INITIALIZE_HETEROGENEOUS = 48; + /** + * 异构链合约资产注册等待 + */ + public static final int HETEROGENEOUS_CONTRACT_ASSET_REG_PENDING = 49; + /** + * 异构链合约资产注册完成 + */ + public static final int HETEROGENEOUS_CONTRACT_ASSET_REG_COMPLETE = 50; + /** + * 确认提案执行交易 + */ + public static final int CONFIRM_PROPOSAL = 51; + /** + * 重置异构链(合约)虚拟银行 + */ + public static final int RESET_HETEROGENEOUS_VIRTUAL_BANK = 52; + /** + * 确认重置异构链(合约)虚拟银行 + */ + public static final int CONFIRM_HETEROGENEOUS_RESET_VIRTUAL_BANK = 53; + /** + * 异构链充值待确认交易 + */ + public static final int RECHARGE_UNCONFIRMED = 54; + /** + * 异构链提现已发布到异构链网络 + */ + public static final int WITHDRAWAL_HETEROGENEOUS_SEND = 55; + /** + * 追加提现手续费 + */ + public static final int WITHDRAWAL_ADDITIONAL_FEE = 56; + /** + * 异构链主资产注册 + */ + public static final int HETEROGENEOUS_MAIN_ASSET_REG = 57; + /** + * 已注册跨链的链信息变更 + */ + public static final int REGISTERED_CHAIN_CHANGE = 60; /** * 重置跨链模块存储的本链验证人列表 * 本交易必须由种子节点发出,节点收到本交易后从共识模块获取到最新的共识节点出块地址列表,覆盖跨链模块本地存储的本链验证人列表。 diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 15ec586188..659750f30a 100644 --- a/module.ncf +++ b/module.ncf @@ -5,37 +5,37 @@ logPath=E:/work/src/nuls-v2/Logs logLevel=INFO dataPath=E:/work/src/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=2.7.0-a4354e9 +packageVersion=%PACKAGE_VERSION% [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 @@ -64,13 +64,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -79,12 +79,12 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain @@ -92,13 +92,12 @@ dependent=protocol-update,smart-contract,cross-chain [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -107,27 +106,29 @@ databasePort=27017 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri -ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE -mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm -businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL -teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH -communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS -dependent=smart-contract,cross-chain +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +dependent=smart-contract,cross-chain,chain-manager,protocol-update [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 @@ -141,12 +142,12 @@ dependent=protocol-update,smart-contract #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain [transaction] From 79b96d3148b5d0c13e31d66000232dd3a8f589e0 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 30 Dec 2020 11:34:09 +0800 Subject: [PATCH 242/304] contract db query optimize testing --- .../src/main/java/io/nuls/contract/vm/Heap.java | 2 +- .../src/main/java/org/ethereum/db/RepositoryImpl.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 6508f45c6d..05d550c55d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -265,7 +265,7 @@ public Object getArrayChunk(ObjectRef arrayRef, int chunkNum, boolean write, boo } else { value = getArrayInit(arrayRef, chunkNum); } - if (value == null && loadDB) { + if (value == null && chunkNum != 0 && loadDB) { //TODO pierre 为什么要去DB中查询 value = getArrayChunkFromState(arrayRef, arrayKey); if (value != null) { diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index 7a472a8877..eb1fade813 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -170,6 +170,13 @@ public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { DataWord dataWord = accountState == null ? null : storageCache.get(addr).get(key); Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), dataWord == null ? null : dataWord.asString())); + try { + if (dataWord == null) { + throw new Exception("empty dataWord!"); + } + } catch (Exception e) { + Log.error(e); + } threadLocal.incrementAndGet(); return dataWord; //return accountState == null ? null : storageCache.get(addr).get(key); From 3d35990a85d5d440e2f7a5c033c9375d10dcdf45 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 31 Dec 2020 10:58:44 +0800 Subject: [PATCH 243/304] update cross token system contract --- config/nuls.beta.ncf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index 993af813e8..800b25646a 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -94,7 +94,7 @@ deflationTimeInterval=2592000 #合约视图方法调用最大消耗的Gas maxViewGas=100000000 systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=tNULSeBaN7uzhZpsoRrNnLGuznogReEQPejiM1 [public-service] #public-service模块对外的rpc端口号 From 1a66be70092968f2153aa32b9be622a8f252e6a5 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 31 Dec 2020 11:49:38 +0800 Subject: [PATCH 244/304] =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=B8=BB=E7=BD=91?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- genesis-block.json | 31787 +++++++++++++++++++++++++++++++++++++++++-- module.ncf | 84 +- 2 files changed, 30601 insertions(+), 1270 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 15ec586188..6de704c11b 100644 --- a/module.ncf +++ b/module.ncf @@ -1,47 +1,46 @@ [global] encoding=UTF-8 language=en -logPath=E:/work/src/nuls-v2/Logs +logPath=/Users/niels/workspace/nuls-v2/logs logLevel=INFO -dataPath=E:/work/src/nuls-v2/data +dataPath=/Users/niels/workspace/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=2.7.0-a4354e9 [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] keystoreFolder=/keystore/backup -dependent=protocol-update,smart-contract +dependent=protocol-update [block] #区块最大字节数 @@ -64,13 +63,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -79,26 +78,31 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN5MkYxC7ivr23SbRnHrsmJDg86R7Kv +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update +[chain-manager] +dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -107,47 +111,47 @@ databasePort=27017 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri -ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE -mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm -businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL -teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH -communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM +teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L +communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[chain-manager] -dependent=protocol-update,smart-contract - [nuls-api] #httpServer的启动ip -serverIp=0.0.0.0 +serverIp=127.0.0.1 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain [protocol-update] #每隔多少个区块统计一次协议占比 -interval=10 +interval=1000 dependent=smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract \ No newline at end of file +[cmd-client] +clientVersion=2.5.0 + From 7b587ef31eafdf94d9a5361789ed9c2b62303159 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Thu, 31 Dec 2020 16:37:37 +0800 Subject: [PATCH 245/304] es commit --- .../io/nuls/poc/model/bo/round/MeetingRound.java | 13 +++++++++---- .../nuls/poc/service/impl/AgentServiceImpl.java | 15 ++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/round/MeetingRound.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/round/MeetingRound.java index 93f26e05ad..4af249041f 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/round/MeetingRound.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/round/MeetingRound.java @@ -100,6 +100,7 @@ public class MeetingRound { * */ @ApiModelProperty(description = "当前节点出块信息") private MeetingMember myMember; + private List myMemberList = new ArrayList<>(); public MeetingRound getPreRound() { return preRound; @@ -203,9 +204,9 @@ private boolean validAccount(Chain chain,String address) { } /** - * 根据节点地址获取节点对应的打包信息 - * Get the packing information corresponding to the node according to the address of the node - */ + * 根据节点地址获取节点对应的打包信息 + * Get the packing information corresponding to the node according to the address of the node + */ public MeetingMember getMemberByAgentAddress(byte[] address) { for (MeetingMember member : memberList) { if (Arrays.equals(address, member.getAgent().getAgentAddress())) { @@ -236,12 +237,16 @@ public MeetingMember getMyMember() { return myMember; } + public List getLocalMembers(){ + return myMemberList; + } + public void calcLocalPacker(List localAddressList,Chain chain) { for (byte[] address:localAddressList) { MeetingMember member = getMember(address,chain); if (null != member) { myMember = member; - break; + myMemberList.add(member); } } if(myMember != null && !chain.isPacker()){ diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java index 1689193bb2..494a4d49a6 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java @@ -576,13 +576,18 @@ public Result getPackerInfo(Map params) { } try { MeetingRound round = roundManager.getCurrentRound(chain); - MeetingMember member = null; - if(round != null){ - member = round.getMyMember(); + List members = null; + if (round != null) { + members = round.getLocalMembers(); } Map resultMap = new HashMap<>(4); - if (member != null) { - resultMap.put("address", AddressTool.getStringAddressByBytes(member.getAgent().getPackingAddress())); + if (members != null) { + List localPackAddressList = new ArrayList<>(); + for (MeetingMember meetingMember : members) { + localPackAddressList.add(AddressTool.getStringAddressByBytes(meetingMember.getAgent().getPackingAddress())); + } + resultMap.put("addresses", localPackAddressList); + resultMap.put("address", localPackAddressList.get(0)); resultMap.put("password", chain.getConfig().getPassword()); } List packAddressList = new ArrayList<>(); From 738c96e2f6ff77b232f3d3e65d8118e796a23c19 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Thu, 31 Dec 2020 17:08:04 +0800 Subject: [PATCH 246/304] version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 6533b66871..cae9add96b 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.8.0 \ No newline at end of file +2.8.2 \ No newline at end of file From 38e14ae5e756f1617624a80c8dc88cc58d26e016 Mon Sep 17 00:00:00 2001 From: niels1286 Date: Mon, 4 Jan 2021 10:31:33 +0800 Subject: [PATCH 247/304] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/transaction/model/bo/Chain.java | 10 ++++++++++ .../rpc/upgrade/TxVersionChangeInvoker.java | 17 ++++++++++------- .../transaction/service/impl/TxServiceImpl.java | 12 ++++++++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java index 6d42a3dc2b..7b1532f174 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java @@ -113,6 +113,8 @@ public class Chain { * 执行协议升级的处理 */ private AtomicBoolean protocolUpgrade; + private AtomicBoolean canProtocolUpgrade; + private Set contractGenerateTxTypes; @@ -249,6 +251,14 @@ public AtomicBoolean getProtocolUpgrade() { return protocolUpgrade; } + public AtomicBoolean getCanProtocolUpgrade() { + return canProtocolUpgrade; + } + + public void setCanProtocolUpgrade(AtomicBoolean canProtocolUpgrade) { + this.canProtocolUpgrade = canProtocolUpgrade; + } + public AtomicBoolean getPackableState() { return packableState; } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java index fad30ca7c1..2e3feef7bf 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java @@ -41,7 +41,9 @@ public void process(int chainId) { chain.getProtocolUpgrade().set(true); try { //等待正在处理的交易处理结束(打包过程中的交易、新交易) - Thread.sleep(3000L); + while (!chain.getCanProtocolUpgrade().get()) { + Thread.sleep(100L); + } } catch (InterruptedException e) { chain.getLogger().error(e); } @@ -52,9 +54,9 @@ public void process(int chainId) { while (hasNext) { //从队尾开始取 Transaction tx = packablePool.pollLast(chain); - if(null != tx) { + if (null != tx) { addBack(chain, tx); - }else{ + } else { hasNext = false; } } @@ -65,16 +67,17 @@ public void process(int chainId) { chain.getLogger().info("Version Change process, chainId:[{}]", chainId); } - private void addBack(Chain chain, Transaction tx){ + private void addBack(Chain chain, Transaction tx) { addBack(chain, new TransactionNetPO(tx)); } /** * 加回到新交易队列 + * * @param chain * @param txNet */ - private void addBack(Chain chain, TransactionNetPO txNet){ + private void addBack(Chain chain, TransactionNetPO txNet) { try { Transaction tx = txNet.getTx(); //执行交易基础验证 @@ -82,8 +85,8 @@ private void addBack(Chain chain, TransactionNetPO txNet){ if (null == txRegister) { throw new NulsException(TxErrorCode.TX_TYPE_INVALID); } - TxService txService = SpringLiteContext.getBean(TxService.class); - txService.baseValidateTx(chain,tx, txRegister); + TxService txService = SpringLiteContext.getBean(TxService.class); + txService.baseValidateTx(chain, tx, txRegister); chain.getUnverifiedQueue().addFirst(txNet); } catch (NulsException e) { chain.getLogger().warn("TxVersionChangeInvoker verify failed", e); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index d677596a98..1c4c7ff9de 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -469,7 +469,7 @@ private void validateCoinFromBase(Chain chain, TxRegister txRegister, List(), null, chain.getBestBlockHeight() + 1); + TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + chain.getCanProtocolUpgrade().set(true); + return txPackage; } //如果本地最新区块+1 大于当前在打包区块的高度, 说明本地最新区块已更新,需要重新打包,把取出的交易放回到打包队列 if (blockHeight < chain.getBestBlockHeight() + 1) { @@ -1197,7 +1200,7 @@ private Map processContractResult(Chain chain, List packingTxL while (iterator.hasNext()) { TxPackageWrapper txPackageWrapper = iterator.next(); if (TxManager.isUnSystemSmartContract(chain, txPackageWrapper.getTx().getType())) { - if (setLimitedRollbackOriginTx.contains(txPackageWrapper.getTx().getHash().toHex())) { + if (setLimitedRollbackOriginTx.contains(txPackageWrapper.getTx().getHash().toHex())) { // 有加回次数限制的交易 addOrphanTxSet(chain, orphanTxSet, txPackageWrapper); } else { @@ -1846,6 +1849,7 @@ public void clearInvalidTx(Chain chain, Transaction tx, boolean changeStatus) { } long MAX_GAS_COST_IN_BLOCK = 13000000L; + @Override public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxDataSize, long blockTime, String packingAddress, String preStateRoot) { chain.getPackageLock().lock(); @@ -2622,7 +2626,7 @@ public Boolean call() { } private Map processContractResultV8(Chain chain, List packingTxList, Set orphanTxSet, List contractGenerateTxs, List originTxList, - long blockHeight, boolean contractBefore, String stateRoot) throws IOException { + long blockHeight, boolean contractBefore, String stateRoot) throws IOException { boolean hasTxbackPackablePool = false; /**当contractBefore通知失败,或者contractBatchEnd失败则需要将智能合约交易还回待打包队列*/ From e37af881009627f00cb562587cdb680d08a597c6 Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Mon, 4 Jan 2021 11:07:27 +0800 Subject: [PATCH 248/304] update --- .../transaction/service/impl/TxServiceImpl.java | 16 +++++++++++++--- .../nuls/transaction/task/NetTxProcessTask.java | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 1c4c7ff9de..64ca65d54b 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -954,6 +954,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi //孤儿交易加回待打包队列去 putBackPackablePool(chain, orphanTxSet); if (chain.getProtocolUpgrade().get()) { + chain.getCanProtocolUpgrade().set(false); //协议升级直接打空块,取出的交易,倒序放入新交易处理队列 int size = packingTxList.size(); for (int i = size - 1; i >= 0; i--) { @@ -967,7 +968,9 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi baseValidateTx(chain, tx, txRegister); chain.getUnverifiedQueue().addLast(new TransactionNetPO(txPackageWrapper.getTx())); } - return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + chain.getCanProtocolUpgrade().set(true); + return txPackage; } //检测预留传输时间 long current = NulsDateUtils.getCurrentTimeMillis(); @@ -1947,12 +1950,16 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData throw new NulsException(TxErrorCode.PACKAGE_TIME_OUT); } if (chain.getProtocolUpgrade().get()) { + chain.getCanProtocolUpgrade().set(false); nulsLogger.info("Protocol Upgrade Package stop -chain:{} -best block height", chain.getChainId(), chain.getBestBlockHeight()); backTempPackablePool(chain, currentBatchPackableTxs); //放回可打包交易和孤儿 putBackPackablePool(chain, packingTxList, orphanTxSet); //直接打空块 - return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + chain.getCanProtocolUpgrade().set(true); + return txPackage; + } //如果本地最新区块+1 大于当前在打包区块的高度, 说明本地最新区块已更新,需要重新打包,把取出的交易放回到打包队列 if (blockHeight < chain.getBestBlockHeight() + 1) { @@ -2229,6 +2236,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData //孤儿交易加回待打包队列去 putBackPackablePool(chain, orphanTxSet); if (chain.getProtocolUpgrade().get()) { + chain.getCanProtocolUpgrade().set(false); //协议升级直接打空块,取出的交易,倒序放入新交易处理队列 int size = packingTxList.size(); for (int i = size - 1; i >= 0; i--) { @@ -2242,7 +2250,9 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData baseValidateTx(chain, tx, txRegister); chain.getUnverifiedQueue().addLast(new TransactionNetPO(txPackageWrapper.getTx())); } - return new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); + chain.getCanProtocolUpgrade().set(true); + return txPackage; } //检测预留传输时间 long current = NulsDateUtils.getCurrentTimeMillis(); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/task/NetTxProcessTask.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/task/NetTxProcessTask.java index 172f250625..d833afcbcc 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/task/NetTxProcessTask.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/task/NetTxProcessTask.java @@ -80,7 +80,7 @@ private void process() { } if (chain.getProtocolUpgrade().get()) { chain.getLogger().info("Protocol upgrade pause process new tx.."); - Thread.sleep(3000L); + Thread.sleep(10000L); continue; } List txNetList = new ArrayList<>(TxConstant.NET_TX_PROCESS_NUMBER_ONCE); From 26233a50cd6f7adbdae854f6635d101ead923536 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 5 Jan 2021 14:47:08 +0800 Subject: [PATCH 249/304] support multy asset with contract in nuls api module --- module/nuls-api/documents/eg_jsonrpc.json | 12 +- module/nuls-api/documents/eg_restful.json | 12 +- module/nuls-api/documents/nuls-api_JSONRPC.md | 510 +++++++++------ .../documents/nuls-api_Postman_JSONRPC.json | 2 +- .../documents/nuls-api_Postman_RESTFUL.json | 2 +- module/nuls-api/documents/nuls-api_RESTFUL.md | 581 +++++++++++++----- module/nuls-api/pom.xml | 2 +- .../controller/ContractController.java | 30 +- .../api/resources/ContractResource.java | 13 +- .../ContractMultyAssetMergedTransferDto.java | 110 ++++ .../provider/model/dto/ContractResultDto.java | 22 +- .../dto/ContractToken721TransferDto.java | 95 +++ .../model/dto/MultyAssetOutputDto.java | 88 +++ .../model/form/contract/ContractCall.java | 2 +- .../form/contract/ContractCallOffline.java | 10 + .../form/contract/ContractValidateCall.java | 2 +- .../form/contract/ImputedGasContractCall.java | 2 +- .../io/nuls/provider/utils/ApiDocTool.java | 3 +- .../java/io/nuls/provider/utils/Utils.java | 15 + .../ContractMultyAssetMergedTransferDto.java | 2 + .../model/dto/MultyAssetOutputDto.java | 2 + 21 files changed, 1162 insertions(+), 355 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractMultyAssetMergedTransferDto.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractToken721TransferDto.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/MultyAssetOutputDto.java diff --git a/module/nuls-api/documents/eg_jsonrpc.json b/module/nuls-api/documents/eg_jsonrpc.json index 1c7aeb683c..1cbe2e729d 100644 --- a/module/nuls-api/documents/eg_jsonrpc.json +++ b/module/nuls-api/documents/eg_jsonrpc.json @@ -190,7 +190,7 @@ "response" : {"jsonrpc":"2.0","id":"1234","result":{"txHash":"0b8a56835e47ab67c57d1a3e7c9102315b0b219af4c3a7c0fa820d16f09a12f3","contractAddress":"tNULSeBaMx2zjgThursB6k9XsST7VvZmr2vB3J"}} }, "contractCall": { - "request": {"jsonrpc":"2.0","method":"contractCall","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","nuls123456",0,200000,30,"tNULSeBaMx2zjgThursB6k9XsST7VvZmr2vB3J","transfer",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","4000"],"remark-jsonrpc-call"],"id":1234}, + "request": {"jsonrpc":"2.0","method":"contractCall","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","nuls123456",0,200000,30,"tNULSeBaMx2zjgThursB6k9XsST7VvZmr2vB3J","transfer",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","4000"],"remark-jsonrpc-call",null],"id":1234}, "response" : {"jsonrpc":"2.0","id":"1234","result":{"txHash":"1e9d4676e09a7ead64a400971625c0cc0cd0991086bc969fe27a433bb6e6efb9"}} }, "contractDelete": { @@ -215,11 +215,11 @@ }, "getContractTxResult": { "request": {"jsonrpc":"2.0","method":"getContractTxResult","params":[2,"b8db1792fbfb6630a5106a1a92ee182aaa694aa1142454e81e4d8286e19ffc11"],"id":1234}, - "response" : {"jsonrpc":"2.0","id":"1234","result":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","result":"multyForAddress: 888634777633","gasLimit":200000,"gasUsed":20038,"price":25,"totalFee":"5100000","txSizeFee":"100000","actualContractFee":"500950","refundFee":"4499050","value":10000000000,"stackTrace":null,"transfers":[{"txHash":"4877f6a865dea5b4ac82a8370d73e62da15bc7acb2145a03822dddfdab329d2b","from":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","value":"200000000","outputs":[{"to":"tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL","value":"100000000"},{"to":"tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL","value":"100000000"}],"orginTxHash":"b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789"}],"events":["{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}"],"debugEvents": [],"tokenTransfers":[{"contractAddress":"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA","from":"TTasNs8MGGGaFT9hd9DLmkammYYv69vs","to":"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG","value":"1000","name":"a","symbol":"a","decimals":8}],"invokeRegisterCmds":[{"cmdName":"cs_createContractAgent","args":{"contractBalance":"2030000000000","commissionRate":"100","chainId":2,"deposit":"2000000000000","contractAddress":"tNULSeBaMzZedU4D3xym1JcyNa5sqtuFku8AKm","contractNonce":"0000000000000000","blockTime":1562564381,"packingAddress":"tNULSeBaMtEPLXxUgyfnBt9bpb5Xv84dyJV98p","contractSender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"},"cmdRegisterMode":"NEW_TX","newTxHash":"a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba"}],"contractTxList":["12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000","1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00"],"remark":"call"}} + "response" : {"jsonrpc":"2.0","id":"1234","result":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","result":"multyForAddress: 888634777633","gasLimit":200000,"gasUsed":20038,"price":25,"totalFee":"5100000","txSizeFee":"100000","actualContractFee":"500950","refundFee":"4499050","value":10000000000,"stackTrace":null,"transfers":[{"txHash":"4877f6a865dea5b4ac82a8370d73e62da15bc7acb2145a03822dddfdab329d2b","from":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","value":"200000000","outputs":[{"to":"tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL","value":"100000000"},{"to":"tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL","value":"100000000"}],"orginTxHash":"b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789"}],"multyAssetTransfers":[{"txHash":"21c7af81c5130f43a363152d3b81f96004fbaaeaeab8e50c988c04015f78770b","from":"tNULSeBaN31HBrLhXsWDkSz1bjhw5qGBcjafVJ","value":"200000000","assetChainId":5,"assetId":1,"outputs":[{"to":"tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24","value":"200000000","assetChainId":5,"assetId":1,"lockTime":0}],"orginTxHash":"755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f63623176"}],"events":["{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA","from":"TTasNs8MGGGaFT9hd9DLmkammYYv69vs","to":"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG","value":"1000","name":"a","symbol":"a","decimals":8}],"token721Transfers":[{"contractAddress":"NULSd6Hgrsk44itdzFqjgkgAF6nFM82WdpqrQ","from":"NULSd6Hgd3ACi95QvpLBfp3jgJP3YFmEpbgoG","to":"NULSd6HgcbwRjN8AxpPK8TvJWtzBzMQ1zDhVd","tokenId":"13450","name":"nft","symbol":"NFT"}],"invokeRegisterCmds":[{"cmdName":"cs_createContractAgent","args":{"contractBalance":"2030000000000","commissionRate":"100","chainId":2,"deposit":"2000000000000","contractAddress":"tNULSeBaMzZedU4D3xym1JcyNa5sqtuFku8AKm","contractNonce":"0000000000000000","blockTime":1562564381,"packingAddress":"tNULSeBaMtEPLXxUgyfnBt9bpb5Xv84dyJV98p","contractSender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"},"cmdRegisterMode":"NEW_TX","newTxHash":"a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba"}],"contractTxList":["12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000","12009cbbf25f0037755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f6362317602000265f22046ba64eb216854390877d0f52348ded8be8c011702000265f22046ba64eb216854390877d0f52348ded8be0500010000c2eb0b00000000000000000000000000000000000000000000000000000000080000000000000000000117020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a990500010000c2eb0b00000000000000000000000000000000000000000000000000000000000000000000000000","1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00"],"remark":"call"}} }, "getContractTxResultList": { "request": {"jsonrpc":"2.0","method":"getContractTxResultList","params":[2,["c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d","48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87","2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2"]],"id":1234}, - "response" : {"jsonrpc":"2.0","id":"1234","result":{"c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":null,"gasLimit":20000,"gasUsed":13429,"price":30,"totalFee":"1300000","txSizeFee":"700000","actualContractFee":"402870","refundFee":"197130","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}"],"debugEvents": [],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":null,"to":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":"800000","name":"io","symbol":"IO","decimals":1}],"invokeRegisterCmds":[],"contractTxList":[],"remark":"create"},"48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":9444,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"283320","refundFee":"5716680","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents": [],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","to":"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","value":"4000","name":"io","symbol":"IO","decimals":1}],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"},"2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":5836,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"175080","refundFee":"5824920","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents": [],"tokensfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"}}} + "response" : {"jsonrpc":"2.0","id":"1234","result":{"c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":null,"gasLimit":20000,"gasUsed":13429,"price":30,"totalFee":"1300000","txSizeFee":"700000","actualContractFee":"402870","refundFee":"197130","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":null,"to":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":"800000","name":"io","symbol":"IO","decimals":1}],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"create"},"48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":9444,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"283320","refundFee":"5716680","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","to":"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","value":"4000","name":"io","symbol":"IO","decimals":1}],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"},"2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":5836,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"175080","refundFee":"5824920","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents":[],"tokenTransfers":[],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"}}} }, "getContractConstructor": { "request": {"jsonrpc":"2.0","method":"getContractConstructor","params":[2,"504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000"],"id":1234}, @@ -238,7 +238,7 @@ "response" : [{"jsonrpc":"2.0","id":"1234","result":{"success":true}},"校验失败示例请参考[validateContractDelete] - 验证删除合约"] }, "validateContractCall": { - "request": {"jsonrpc":"2.0","method":"validateContractCall","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG",80000000000,200000,30,"tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa","multyForAddress",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","400000000","tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29","900000000","tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf","800000000"]],"id":1234}, + "request": {"jsonrpc":"2.0","method":"validateContractCall","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG",80000000000,200000,30,"tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa","multyForAddress",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","400000000","tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29","900000000","tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf","800000000"],null],"id":1234}, "response" : [{"jsonrpc":"2.0","id":"1234","result":{"success":true}},"校验失败示例请参考[validateContractDelete] - 验证删除合约"] }, "validateContractDelete": { @@ -250,7 +250,7 @@ "response" : {"jsonrpc":"2.0","id":"1234","result":{"gasLimit":20143}} }, "imputedContractCallGas": { - "request": {"jsonrpc":"2.0","method":"imputedContractCallGas","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG",80000000000,"tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa","multyForAddress",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","400000000","tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29","900000000","tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf","8045645645"]],"id":1234}, + "request": {"jsonrpc":"2.0","method":"imputedContractCallGas","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG",80000000000,"tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa","multyForAddress",null,["tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","400000000","tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29","900000000","tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf","8045645645"],null],"id":1234}, "response" : {"jsonrpc":"2.0","id":"1234","result":{"gasLimit":44691}} }, "invokeView": { @@ -262,7 +262,7 @@ "response" : {"jsonrpc":"2.0","id":"1234","result":{"txHex":"0f00212d375d0e6f66666c696e6520637265617465fd7a19020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000219465936f10d20dd74de26ce391f9764acfcd445fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000096f66665f6e72633230154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000","contractAddress":"tNULSeBaMxHqD1Vdcmyx4P43GMCPGcRiFzqjie","hash":"2ca7d4e9f2ffcb92e1d134ea4a544ffb947f4c9154ff73223834d87bba9734ba"}} }, "contractCallOffline": { - "request": {"jsonrpc":"2.0","method":"contractCallOffline","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","999999998523475","9c0aea02bed90ddd",0,"tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG",14166,"transfer",null,["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",3800],["Address","BigInteger"],"remark_call_test"],"id":1234}, + "request": {"jsonrpc":"2.0","method":"contractCallOffline","params":[2,"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","999999998523475","9c0aea02bed90ddd",0,"tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG",14166,"transfer",null,["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",3800],["Address","BigInteger"],"remark_call_test",null],"id":1234}, "response" : {"jsonrpc":"2.0","id":"1234","result":{"txHex":"1000f22d375d1072656d61726b5f63616c6c5f7465737497020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917000000000000000000000000000000000000000000000000000000000000000056370000000000001900000000000000087472616e7366657200020126744e554c536542614d6e7273364a4b724379365451647a594a5a6b4d5a4a446e673751417344010433383030480117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010006ee060000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000","hash":"b5d6e09a8ecee2c1e4fd1d9c6a9704fb84a9fbe1bd069762d684c7b29b1e4668"}} }, "contractDeleteOffline": { diff --git a/module/nuls-api/documents/eg_restful.json b/module/nuls-api/documents/eg_restful.json index edb4f23ac9..63dc67cfc2 100644 --- a/module/nuls-api/documents/eg_restful.json +++ b/module/nuls-api/documents/eg_restful.json @@ -205,7 +205,7 @@ "response" : {"success":true,"data":{"txHash":"98dad7871ef9c02f19ba15929e2620e9465a410904ed8960b5893c9f3c4eb8fe","contractAddress":"tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K"}} }, "/api/contract/call": { - "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","gasLimit":20000,"price":25,"password":"nuls123456","remark":null,"contractAddress":"tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K","value":0,"methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, + "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","gasLimit":20000,"price":25,"password":"nuls123456","remark":null,"contractAddress":"tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K","value":0,"multyAssetValues":null,"methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, "requestPath": "/api/contract/call", "response" : {"success":true,"data":{"txHash":"f7b04c3d0863d79b08d6bd2758899fce8b5a4f09d2142a12bf2545ff978e0250"}} }, @@ -237,12 +237,12 @@ "/api/contract/result/{hash}": { "request": {}, "requestPath": "/api/contract/result/f0a5fc5d20c39355e35f1fe8011b1a28e7c65d8566ae8d76b297a22d1110851d", - "response" : {"success":true,"data":{"flag":true,"data":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","result":"multyForAddress: 888634777633","gasLimit":200000,"gasUsed":20038,"price":25,"totalFee":"5100000","txSizeFee":"100000","actualContractFee":"500950","refundFee":"4499050","value":10000000000,"stackTrace":null,"transfers":[{"txHash":"4877f6a865dea5b4ac82a8370d73e62da15bc7acb2145a03822dddfdab329d2b","from":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","value":"200000000","outputs":[{"to":"tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL","value":"100000000"},{"to":"tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL","value":"100000000"}],"orginTxHash":"b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789"}],"events":["{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}"],"debugEvents": [],"tokenTransfers":[{"contractAddress":"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA","from":"TTasNs8MGGGaFT9hd9DLmkammYYv69vs","to":"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG","value":"1000","name":"a","symbol":"a","decimals":8}],"invokeRegisterCmds":[{"cmdName":"cs_createContractAgent","args":{"contractBalance":"2030000000000","commissionRate":"100","chainId":2,"deposit":"2000000000000","contractAddress":"tNULSeBaMzZedU4D3xym1JcyNa5sqtuFku8AKm","contractNonce":"0000000000000000","blockTime":1562564381,"packingAddress":"tNULSeBaMtEPLXxUgyfnBt9bpb5Xv84dyJV98p","contractSender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"},"cmdRegisterMode":"NEW_TX","newTxHash":"a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba"}],"contractTxList":["12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000","1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00"],"remark":"call"}}} + "response" : {"success":true, "data": {"flag": true, "data": {"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","result":"multyForAddress: 888634777633","gasLimit":200000,"gasUsed":20038,"price":25,"totalFee":"5100000","txSizeFee":"100000","actualContractFee":"500950","refundFee":"4499050","value":10000000000,"stackTrace":null,"transfers":[{"txHash":"4877f6a865dea5b4ac82a8370d73e62da15bc7acb2145a03822dddfdab329d2b","from":"tNULSeBaN1rhd9k9eqNkvwC9HXBWLQ79dRuy81","value":"200000000","outputs":[{"to":"tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL","value":"100000000"},{"to":"tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL","value":"100000000"}],"orginTxHash":"b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789"}],"multyAssetTransfers":[{"txHash":"21c7af81c5130f43a363152d3b81f96004fbaaeaeab8e50c988c04015f78770b","from":"tNULSeBaN31HBrLhXsWDkSz1bjhw5qGBcjafVJ","value":"200000000","assetChainId":5,"assetId":1,"outputs":[{"to":"tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24","value":"200000000","assetChainId":5,"assetId":1,"lockTime":0}],"orginTxHash":"755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f63623176"}],"events":["{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA","from":"TTasNs8MGGGaFT9hd9DLmkammYYv69vs","to":"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG","value":"1000","name":"a","symbol":"a","decimals":8}],"token721Transfers":[{"contractAddress":"NULSd6Hgrsk44itdzFqjgkgAF6nFM82WdpqrQ","from":"NULSd6Hgd3ACi95QvpLBfp3jgJP3YFmEpbgoG","to":"NULSd6HgcbwRjN8AxpPK8TvJWtzBzMQ1zDhVd","tokenId":"13450","name":"nft","symbol":"NFT"}],"invokeRegisterCmds":[{"cmdName":"cs_createContractAgent","args":{"contractBalance":"2030000000000","commissionRate":"100","chainId":2,"deposit":"2000000000000","contractAddress":"tNULSeBaMzZedU4D3xym1JcyNa5sqtuFku8AKm","contractNonce":"0000000000000000","blockTime":1562564381,"packingAddress":"tNULSeBaMtEPLXxUgyfnBt9bpb5Xv84dyJV98p","contractSender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"},"cmdRegisterMode":"NEW_TX","newTxHash":"a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba"}],"contractTxList":["12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000","12009cbbf25f0037755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f6362317602000265f22046ba64eb216854390877d0f52348ded8be8c011702000265f22046ba64eb216854390877d0f52348ded8be0500010000c2eb0b00000000000000000000000000000000000000000000000000000000080000000000000000000117020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a990500010000c2eb0b00000000000000000000000000000000000000000000000000000000000000000000000000","1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00"],"remark":"call"}}} }, "/api/contract/result/list": { "request": {"hashList":["c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d","48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87","2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2"]}, "requestPath": "/api/contract/result/list", - "response" : {"success":true,"data":{"c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":null,"gasLimit":20000,"gasUsed":13429,"price":30,"totalFee":"1300000","txSizeFee":"700000","actualContractFee":"402870","refundFee":"197130","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}"],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":null,"to":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":"800000","name":"io","symbol":"IO","decimals":1}],"invokeRegisterCmds":[],"contractTxList":[],"remark":"create"},"48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":9444,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"283320","refundFee":"5716680","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","to":"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","value":"4000","name":"io","symbol":"IO","decimals":1}],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"},"2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":5836,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"175080","refundFee":"5824920","value":"0","stackTrace":null,"transfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"tokenTransfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"}}} + "response" : {"success":true,"data":{"c2460b94430074dd98e497ed9d48afb8f44d1323b73ca2086f5abaa0684b760d":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":null,"gasLimit":20000,"gasUsed":13429,"price":30,"totalFee":"1300000","txSizeFee":"700000","actualContractFee":"402870","refundFee":"197130","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":null,"to":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":"800000","name":"io","symbol":"IO","decimals":1}],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"create"},"48b2f348f201f9d10848f4031a746919470b679f621327b0e0edf50a339f2e87":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":9444,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"283320","refundFee":"5716680","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents":[],"tokenTransfers":[{"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","from":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","to":"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM","value":"4000","name":"io","symbol":"IO","decimals":1}],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"},"2e99610b7d295790b636fcdb8acf72d70fcae61c873df0984ef248bbbaa6daa2":{"success":true,"errorMessage":null,"contractAddress":"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL","result":"true","gasLimit":200000,"gasUsed":5836,"price":30,"totalFee":"6100000","txSizeFee":"100000","actualContractFee":"175080","refundFee":"5824920","value":"0","stackTrace":null,"transfers":[],"multyAssetTransfers":[],"events":["{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}"],"debugEvents":[],"tokenTransfers":[],"token721Transfers":[],"invokeRegisterCmds":[],"contractTxList":[],"remark":"call"}}} }, "/api/contract/constructor": { "request": {"contractCode":"504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000"}, @@ -265,7 +265,7 @@ "response" : [{"success":true,"data":{"success":true}},"校验失败示例请参考[/api/contract/validate/call] - 验证调用合约"] }, "/api/contract/validate/call": { - "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":0,"gasLimit":20000,"price":25,"contractAddress":"tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K","methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, + "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":0,"multyAssetValues":null,"gasLimit":20000,"price":25,"contractAddress":"tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K","methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, "requestPath": "/api/contract/validate/call", "response" : [{"success":true,"data":{"success":true}},{"success":true,"data":{"msg":"Data error;contract error - contract[tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K] has stopped","success":false,"code":"err_0014"}}] }, @@ -280,7 +280,7 @@ "response" : {"success":true,"data":{"gasLimit":20143}} }, "/api/contract/imputedgas/call": { - "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":0,"contractAddress":"tNULSeBaNAKfKnLMR5XG5qtwXt5JS1b3QosZxg","methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, + "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","value":0,"multyAssetValues":null,"contractAddress":"tNULSeBaNAKfKnLMR5XG5qtwXt5JS1b3QosZxg","methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",990]}, "requestPath": "/api/contract/imputedgas/call", "response" : {"success":true,"data":{"gasLimit":17538}} }, @@ -295,7 +295,7 @@ "response" : {"success":true,"data":{"txHex":"0f008629375d0e28292072657475726e20766f6964fd8119020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b316000000001072665f6e726332305f6f66666c696e65154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000","contractAddress":"tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG","hash":"9443656bab59f52441286e1d859855be28cbe155973c712c07385a21b7212152"}} }, "/api/contract/call/offline": { - "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","senderBalance":"999999998523475","nonce":"9c0aea02bed90ddd","contractAddress":"tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG","gasLimit":14166,"value":0,"methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",3800],"argsType":["Address","BigInteger"],"remark":"remark_call_test"}, + "request": {"sender":"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG","senderBalance":"999999998523475","nonce":"9c0aea02bed90ddd","contractAddress":"tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG","gasLimit":14166,"value":0,"multyAssetValues":null,"methodName":"transfer","methodDesc":null,"args":["tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",3800],"argsType":["Address","BigInteger"],"remark":"remark_call_test"}, "requestPath": "/api/contract/call/offline", "response" : {"success":true,"data":{"txHex":"1000be2a375d1072656d61726b5f63616c6c5f7465737497020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917000000000000000000000000000000000000000000000000000000000000000056370000000000001900000000000000087472616e7366657200020126744e554c536542614d6e7273364a4b724379365451647a594a5a6b4d5a4a446e673751417344010433383030480117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010006ee060000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000","hash":"aa69824582c6a3c1a4d486bbd38377a4c4a0ec4ea75a898fc70d109364a41bbf"}} }, diff --git a/module/nuls-api/documents/nuls-api_JSONRPC.md b/module/nuls-api/documents/nuls-api_JSONRPC.md index 4dd7e533e8..7f285baad8 100644 --- a/module/nuls-api/documents/nuls-api_JSONRPC.md +++ b/module/nuls-api/documents/nuls-api_JSONRPC.md @@ -982,6 +982,21 @@ _**详细描述: 根据私钥获取账户地址格式**_ } ``` +### 1.21 查询钱包内创建的账户列表 +#### Cmd: getAddressList +_**详细描述: 查询钱包内创建的账户列表**_ + +#### 参数列表 +无参数 + +#### 返回值 +无返回值 +#### Example request data: +无 + +#### Example response data: +略 + ### 2.1 获取本节点的网络状态信息 #### Cmd: getNetworkInfo _**详细描述: 获取本节点的网络状态信息**_ @@ -1881,20 +1896,20 @@ _**详细描述: 广播离线组装的交易(不验证),成功返回true,失败 } ``` -### 3.6 单笔转账(只能转账本链资产) +### 3.6 单笔链内转账 #### Cmd: transfer _**详细描述: 发起单账户单资产的转账交易**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------- |:------:| ------ |:----:| -| chainId | int | 链id | 是 | -| assetId | int | 资产id | 是 | -| address | string | 转出账户地址 | 是 | -| toAddress | string | 转入账户地址 | 是 | -| password | string | 转出账户密码 | 是 | -| amount | string | 转出金额 | 是 | -| remark | string | 备注 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------ |:------:| ------ |:----:| +| assetChainId | int | 资产链id | 是 | +| assetId | int | 资产id | 是 | +| address | string | 转出账户地址 | 是 | +| toAddress | string | 转入账户地址 | 是 | +| password | string | 转出账户密码 | 是 | +| amount | string | 转出金额 | 是 | +| remark | string | 备注 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1923,50 +1938,58 @@ _**详细描述: 发起单账户单资产的转账交易**_ } ``` -### 3.6.1 单笔转账(能转账任意链资产) +### 3.7 单笔转账 #### Cmd: transferOtherChainAsset -_**详细描述: 发起单账户单资产的转账交易**_ +_**详细描述: 发起单账户单资产的转账交易,转账资产为链内的其他平行链资产**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------- |:------:| ------ |:----:| -| chainId | int | 链id | 是 | -| assetChainId | int | 资产链id | 是 | -| assetId | int | 资产id | 是 | -| address | string | 转出账户地址 | 是 | -| toAddress | string | 转入账户地址 | 是 | -| password | string | 转出账户密码 | 是 | -| amount | string | 转出金额 | 是 | -| remark | string | 备注 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------ |:------:| ------ |:----:| +| chainId | int | 链id | 是 | +| assetChainId | int | 资产链id | 是 | +| assetId | int | 资产id | 是 | +| address | string | 转出账户地址 | 是 | +| toAddress | string | 转入账户地址 | 是 | +| password | string | 转出账户密码 | 是 | +| amount | string | 转出金额 | 是 | +| remark | string | 备注 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: - -```json -{ - "jsonrpc" : "2.0", - "method" : "transfer", - "params" : [ 2, 1, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], - "id" : 1234 -} -``` +无 #### Example response data: +略 -```json -{ - "jsonrpc" : "2.0", - "id" : "1234", - "result" : { - "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" - } -} -``` +### 3.8 单笔跨链转账 +#### Cmd: crossTransfer +_**详细描述: 发起单账户单资产的跨链转账交易**_ -### 3.7 离线组装转账交易 +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------ |:------:| ------ |:----:| +| assetChainId | int | 资产链id | 是 | +| assetId | int | 资产id | 是 | +| address | string | 转出账户地址 | 是 | +| toAddress | string | 转入账户地址 | 是 | +| password | string | 转出账户密码 | 是 | +| amount | string | 转出金额 | 是 | +| remark | string | 备注 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ---- |:------:| ------ | +| hash | string | 交易hash | +#### Example request data: +无 + +#### Example response data: +略 + +### 3.9 离线组装转账交易 #### Cmd: createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ @@ -2030,7 +2053,41 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 } ``` -### 3.8 计算离线创建转账交易所需手续费 +### 3.10 离线组装转账交易 +#### Cmd: createCrossTxOffline +_**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的跨链转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,加上跨链转账手续费(NULS)**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| +| transferDto | transferdto | 转账交易表单 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ------------ | +| hash | string | 交易hash | +| txHex | string | 交易序列化16进制字符串 | +#### Example request data: +无 + +#### Example response data: +略 + +### 3.11 计算离线创建转账交易所需手续费 #### Cmd: calcTransferTxFee _**详细描述: 计算离线创建转账交易所需手续费**_ @@ -2071,7 +2128,31 @@ _**详细描述: 计算离线创建转账交易所需手续费**_ } ``` -### 3.9 离线组装转账交易 +### 3.12 计算离线创建跨链转账交易所需手续费 +#### Cmd: calcCrossTxFee +_**详细描述: 计算离线创建跨链转账交易所需手续费**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:----------------:| ------- |:----:| +| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ----- | +| value | string | 交易手续费 | +#### Example request data: +无 + +#### Example response data: +略 + +### 3.13 离线组装转账交易 #### Cmd: createMultiSignTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ @@ -2136,7 +2217,7 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 } ``` -### 3.10 计算离线创建转账交易所需手续费 +### 3.14 计算离线创建转账交易所需手续费 #### Cmd: calcMultiSignTransferTxFee _**详细描述: 计算离线创建转账交易所需手续费**_ @@ -2228,19 +2309,20 @@ _**详细描述: 发布合约**_ _**详细描述: 调用合约**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------- |:----------:| ---------------------------------------- |:----:| -| chainId | int | 链id | 是 | -| sender | string | 交易创建者账户地址 | 是 | -| password | string | 调用者账户密码 | 是 | -| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | -| gasLimit | long | GAS限制 | 是 | -| price | long | GAS单价 | 是 | -| contractAddress | string | 合约地址 | 是 | -| methodName | string | 合约方法 | 是 | -| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -| args | object[] | 参数列表 | 否 | -| remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:| +| chainId | int | 链id | 是 | +| sender | string | 交易创建者账户地址 | 是 | +| password | string | 调用者账户密码 | 是 | +| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | +| gasLimit | long | GAS限制 | 是 | +| price | long | GAS单价 | 是 | +| contractAddress | string | 合约地址 | 是 | +| methodName | string | 合约方法 | 是 | +| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +| args | object[] | 参数列表 | 否 | +| remark | string | 交易备注 | 否 | +| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2252,7 +2334,7 @@ _**详细描述: 调用合约**_ { "jsonrpc" : "2.0", "method" : "contractCall", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", 0, 200000, 30, "tNULSeBaMx2zjgThursB6k9XsST7VvZmr2vB3J", "transfer", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "4000" ], "remark-jsonrpc-call" ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", 0, 200000, 30, "tNULSeBaMx2zjgThursB6k9XsST7VvZmr2vB3J", "transfer", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "4000" ], "remark-jsonrpc-call", null ], "id" : 1234 } ``` @@ -2632,46 +2714,66 @@ _**详细描述: 获取智能合约执行结果**_ | hash | string | 交易hash | 是 | #### 返回值 -| 字段名 | 字段类型 | 参数描述 | -| ----------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- | -| success | boolean | 合约执行是否成功 | -| errorMessage | string | 执行失败信息 | -| contractAddress | string | 合约地址 | -| result | string | 合约执行结果 | -| gasLimit | long | GAS限制 | -| gasUsed | long | 已使用GAS | -| price | long | GAS单价 | -| totalFee | string | 交易总手续费 | -| txSizeFee | string | 交易大小手续费 | -| actualContractFee | string | 实际执行合约手续费 | -| refundFee | string | 合约返回的手续费 | -| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | -| stackTrace | string | 异常堆栈踪迹 | -| transfers | list<object> | 合约转账列表(从合约转出) | -|         txHash | string | 合约生成交易:合约转账交易hash | -|         from | string | 转出的合约地址 | -|         value | string | 转账金额 | -|         outputs | list<object> | 转入的地址列表 | -|                 to | string | 转入地址 | -|                 value | string | 转入金额 | -|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | -| events | list<string> | 合约事件列表 | -| debugEvents | list<string> | 调式合约事件列表 | -| tokenTransfers | list<object> | 合约token转账列表 | -|         contractAddress | string | 合约地址 | -|         from | string | 付款方 | -|         to | string | 收款方 | -|         value | string | 转账金额 | -|         name | string | token名称 | -|         symbol | string | token符号 | -|         decimals | long | token支持的小数位数 | -| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | -|         cmdName | string | 命令名称 | -|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | -|         cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | -|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | -| contractTxList | list<string> | 合约生成交易的序列化字符串列表 | -| remark | string | 备注 | +| 字段名 | 字段类型 | 参数描述 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- | +| success | boolean | 合约执行是否成功 | +| errorMessage | string | 执行失败信息 | +| contractAddress | string | 合约地址 | +| result | string | 合约执行结果 | +| gasLimit | long | GAS限制 | +| gasUsed | long | 已使用GAS | +| price | long | GAS单价 | +| totalFee | string | 交易总手续费 | +| txSizeFee | string | 交易大小手续费 | +| actualContractFee | string | 实际执行合约手续费 | +| refundFee | string | 合约返回的手续费 | +| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | +| stackTrace | string | 异常堆栈踪迹 | +| transfers | list<object> | 合约转账列表(从合约转出主资产) | +|         txHash | string | 合约生成交易:合约转账交易hash | +|         from | string | 转出的合约地址 | +|         value | string | 转账金额 | +|         outputs | list<object> | 转入的地址列表 | +|                 to | string | 转入地址 | +|                 value | string | 转入金额 | +|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) | +|         txHash | string | 合约生成交易:合约转账交易hash | +|         from | string | 转出的合约地址 | +|         value | string | 转账金额 | +|         assetChainId | int | 转账金额资产链ID | +|         assetId | int | 转账金额资产ID | +|         outputs | list<object> | 转入的地址列表 | +|                 to | string | 转入地址 | +|                 value | string | 转入金额 | +|                 assetChainId | int | 转入金额资产链ID | +|                 assetId | int | 转入金额资产ID | +|                 lockTime | long | 转入金额锁定时间 | +|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +| events | list<string> | 合约事件列表 | +| debugEvents | list<string> | 调式合约事件列表 | +| tokenTransfers | list<object> | 合约token转账列表 | +|         contractAddress | string | 合约地址 | +|         from | string | 付款方 | +|         to | string | 收款方 | +|         value | string | 转账金额 | +|         name | string | token名称 | +|         symbol | string | token符号 | +|         decimals | long | token支持的小数位数 | +| token721Transfers | list<object> | 合约NRC721-token转账列表 | +|         contractAddress | string | 合约地址 | +|         from | string | 付款方 | +|         to | string | 收款方 | +|         tokenId | string | tokenId | +|         name | string | token名称 | +|         symbol | string | token符号 | +| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | +|         cmdName | string | 命令名称 | +|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | +|         cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | +|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | +| contractTxList | list<string> | 合约生成交易的序列化字符串列表 | +| remark | string | 备注 | #### Example request data: ```json @@ -2716,6 +2818,21 @@ _**详细描述: 获取智能合约执行结果**_ } ], "orginTxHash" : "b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789" } ], + "multyAssetTransfers" : [ { + "txHash" : "21c7af81c5130f43a363152d3b81f96004fbaaeaeab8e50c988c04015f78770b", + "from" : "tNULSeBaN31HBrLhXsWDkSz1bjhw5qGBcjafVJ", + "value" : "200000000", + "assetChainId" : 5, + "assetId" : 1, + "outputs" : [ { + "to" : "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "value" : "200000000", + "assetChainId" : 5, + "assetId" : 1, + "lockTime" : 0 + } ], + "orginTxHash" : "755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f63623176" + } ], "events" : [ "{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}" ], "debugEvents" : [ ], "tokenTransfers" : [ { @@ -2727,6 +2844,14 @@ _**详细描述: 获取智能合约执行结果**_ "symbol" : "a", "decimals" : 8 } ], + "token721Transfers" : [ { + "contractAddress" : "NULSd6Hgrsk44itdzFqjgkgAF6nFM82WdpqrQ", + "from" : "NULSd6Hgd3ACi95QvpLBfp3jgJP3YFmEpbgoG", + "to" : "NULSd6HgcbwRjN8AxpPK8TvJWtzBzMQ1zDhVd", + "tokenId" : "13450", + "name" : "nft", + "symbol" : "NFT" + } ], "invokeRegisterCmds" : [ { "cmdName" : "cs_createContractAgent", "args" : { @@ -2743,7 +2868,7 @@ _**详细描述: 获取智能合约执行结果**_ "cmdRegisterMode" : "NEW_TX", "newTxHash" : "a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba" } ], - "contractTxList" : [ "12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000", "1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00" ], + "contractTxList" : [ "12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000", "12009cbbf25f0037755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f6362317602000265f22046ba64eb216854390877d0f52348ded8be8c011702000265f22046ba64eb216854390877d0f52348ded8be0500010000c2eb0b00000000000000000000000000000000000000000000000000000000080000000000000000000117020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a990500010000c2eb0b00000000000000000000000000000000000000000000000000000000000000000000000000", "1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00" ], "remark" : "call" } } @@ -2760,47 +2885,67 @@ _**详细描述: 获取智能合约执行结果列表**_ | hashList | list<string> | 交易hash列表 | 是 | #### 返回值 -| 字段名 | 字段类型 | 参数描述 | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- | -| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 | -|         success | boolean | 合约执行是否成功 | -|         errorMessage | string | 执行失败信息 | -|         contractAddress | string | 合约地址 | -|         result | string | 合约执行结果 | -|         gasLimit | long | GAS限制 | -|         gasUsed | long | 已使用GAS | -|         price | long | GAS单价 | -|         totalFee | string | 交易总手续费 | -|         txSizeFee | string | 交易大小手续费 | -|         actualContractFee | string | 实际执行合约手续费 | -|         refundFee | string | 合约返回的手续费 | -|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | -|         stackTrace | string | 异常堆栈踪迹 | -|         transfers | list<object> | 合约转账列表(从合约转出) | -|                 txHash | string | 合约生成交易:合约转账交易hash | -|                 from | string | 转出的合约地址 | -|                 value | string | 转账金额 | -|                 outputs | list<object> | 转入的地址列表 | -|                         to | string | 转入地址 | -|                         value | string | 转入金额 | -|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | -|         events | list<string> | 合约事件列表 | -|         debugEvents | list<string> | 调式合约事件列表 | -|         tokenTransfers | list<object> | 合约token转账列表 | -|                 contractAddress | string | 合约地址 | -|                 from | string | 付款方 | -|                 to | string | 收款方 | -|                 value | string | 转账金额 | -|                 name | string | token名称 | -|                 symbol | string | token符号 | -|                 decimals | long | token支持的小数位数 | -|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | -|                 cmdName | string | 命令名称 | -|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | -|                 cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | -|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | -|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 | -|         remark | string | 备注 | +| 字段名 | 字段类型 | 参数描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- | +| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 | +|         success | boolean | 合约执行是否成功 | +|         errorMessage | string | 执行失败信息 | +|         contractAddress | string | 合约地址 | +|         result | string | 合约执行结果 | +|         gasLimit | long | GAS限制 | +|         gasUsed | long | 已使用GAS | +|         price | long | GAS单价 | +|         totalFee | string | 交易总手续费 | +|         txSizeFee | string | 交易大小手续费 | +|         actualContractFee | string | 实际执行合约手续费 | +|         refundFee | string | 合约返回的手续费 | +|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | +|         stackTrace | string | 异常堆栈踪迹 | +|         transfers | list<object> | 合约转账列表(从合约转出主资产) | +|                 txHash | string | 合约生成交易:合约转账交易hash | +|                 from | string | 转出的合约地址 | +|                 value | string | 转账金额 | +|                 outputs | list<object> | 转入的地址列表 | +|                         to | string | 转入地址 | +|                         value | string | 转入金额 | +|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) | +|                 txHash | string | 合约生成交易:合约转账交易hash | +|                 from | string | 转出的合约地址 | +|                 value | string | 转账金额 | +|                 assetChainId | int | 转账金额资产链ID | +|                 assetId | int | 转账金额资产ID | +|                 outputs | list<object> | 转入的地址列表 | +|                         to | string | 转入地址 | +|                         value | string | 转入金额 | +|                         assetChainId | int | 转入金额资产链ID | +|                         assetId | int | 转入金额资产ID | +|                         lockTime | long | 转入金额锁定时间 | +|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +|         events | list<string> | 合约事件列表 | +|         debugEvents | list<string> | 调式合约事件列表 | +|         tokenTransfers | list<object> | 合约token转账列表 | +|                 contractAddress | string | 合约地址 | +|                 from | string | 付款方 | +|                 to | string | 收款方 | +|                 value | string | 转账金额 | +|                 name | string | token名称 | +|                 symbol | string | token符号 | +|                 decimals | long | token支持的小数位数 | +|         token721Transfers | list<object> | 合约NRC721-token转账列表 | +|                 contractAddress | string | 合约地址 | +|                 from | string | 付款方 | +|                 to | string | 收款方 | +|                 tokenId | string | tokenId | +|                 name | string | token名称 | +|                 symbol | string | token符号 | +|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | +|                 cmdName | string | 命令名称 | +|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | +|                 cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | +|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | +|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 | +|         remark | string | 备注 | #### Example request data: ```json @@ -2834,6 +2979,7 @@ _**详细描述: 获取智能合约执行结果列表**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}" ], "debugEvents" : [ ], "tokenTransfers" : [ { @@ -2845,6 +2991,7 @@ _**详细描述: 获取智能合约执行结果列表**_ "symbol" : "IO", "decimals" : 1 } ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "create" @@ -2864,6 +3011,7 @@ _**详细描述: 获取智能合约执行结果列表**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}" ], "debugEvents" : [ ], "tokenTransfers" : [ { @@ -2875,6 +3023,7 @@ _**详细描述: 获取智能合约执行结果列表**_ "symbol" : "IO", "decimals" : 1 } ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "call" @@ -2894,9 +3043,11 @@ _**详细描述: 获取智能合约执行结果列表**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}" ], "debugEvents" : [ ], - "tokensfers" : [ ], + "tokenTransfers" : [ ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "call" @@ -3127,17 +3278,18 @@ _**详细描述: 验证发布合约**_ _**详细描述: 验证调用合约**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------- |:----------:| ---------------------------------------- |:----:| -| chainId | int | 链id | 是 | -| sender | string | 交易创建者账户地址 | 是 | -| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | -| gasLimit | long | GAS限制 | 是 | -| price | long | GAS单价 | 是 | -| contractAddress | string | 合约地址 | 是 | -| methodName | string | 合约方法 | 是 | -| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -| args | object[] | 参数列表 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:| +| chainId | int | 链id | 是 | +| sender | string | 交易创建者账户地址 | 是 | +| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | +| gasLimit | long | GAS限制 | 是 | +| price | long | GAS单价 | 是 | +| contractAddress | string | 合约地址 | 是 | +| methodName | string | 合约方法 | 是 | +| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +| args | object[] | 参数列表 | 否 | +| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3151,7 +3303,7 @@ _**详细描述: 验证调用合约**_ { "jsonrpc" : "2.0", "method" : "validateContractCall", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", 80000000000, 200000, 30, "tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa", "multyForAddress", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "400000000", "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", "900000000", "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", "800000000" ] ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", 80000000000, 200000, 30, "tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa", "multyForAddress", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "400000000", "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", "900000000", "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", "800000000" ], null ], "id" : 1234 } ``` @@ -3260,15 +3412,16 @@ _**详细描述: 估算发布合约交易的GAS**_ _**详细描述: 估算调用合约交易的GAS**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------- |:----------:| ---------------------------------------- |:----:| -| chainId | int | 链id | 是 | -| sender | string | 交易创建者账户地址 | 是 | -| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | -| contractAddress | string | 合约地址 | 是 | -| methodName | string | 合约方法 | 是 | -| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -| args | object[] | 参数列表 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:| +| chainId | int | 链id | 是 | +| sender | string | 交易创建者账户地址 | 是 | +| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | +| contractAddress | string | 合约地址 | 是 | +| methodName | string | 合约方法 | 是 | +| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +| args | object[] | 参数列表 | 否 | +| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3280,7 +3433,7 @@ _**详细描述: 估算调用合约交易的GAS**_ { "jsonrpc" : "2.0", "method" : "imputedContractCallGas", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", 80000000000, "tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa", "multyForAddress", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "400000000", "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", "900000000", "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", "8045645645" ] ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", 80000000000, "tNULSeBaNA4yaXmfaQVXpX3QWPcUaHRRryoXHa", "multyForAddress", null, [ "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", "400000000", "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", "900000000", "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", "8045645645" ], null ], "id" : 1234 } ``` @@ -3391,20 +3544,21 @@ _**详细描述: 离线 - 发布合约交易**_ _**详细描述: 离线 - 调用合约**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------- |:----------:| ---------------------------------------- |:----:| -| chainId | int | 链id | 是 | -| sender | string | 交易创建者账户地址 | 是 | -| senderBalance | biginteger | 账户余额 | 是 | -| nonce | string | 账户nonce值 | 是 | -| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | -| contractAddress | string | 合约地址 | 是 | -| gasLimit | long | 设置合约执行消耗的gas上限 | 是 | -| methodName | string | 合约方法 | 是 | -| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -| args | object[] | 参数列表 | 否 | -| argsType | string[] | 参数类型列表 | 否 | -| remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------- |:----------:| ----------------------------------------------------------------------------------- |:----:| +| chainId | int | 链id | 是 | +| sender | string | 交易创建者账户地址 | 是 | +| senderBalance | biginteger | 账户余额 | 是 | +| nonce | string | 账户nonce值 | 是 | +| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 | +| contractAddress | string | 合约地址 | 是 | +| gasLimit | long | 设置合约执行消耗的gas上限 | 是 | +| methodName | string | 合约方法 | 是 | +| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +| args | object[] | 参数列表 | 否 | +| argsType | string[] | 参数类型列表 | 否 | +| remark | string | 交易备注 | 否 | +| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\,\]] | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3417,7 +3571,7 @@ _**详细描述: 离线 - 调用合约**_ { "jsonrpc" : "2.0", "method" : "contractCallOffline", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", 0, "tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG", 14166, "transfer", null, [ "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", 3800 ], [ "Address", "BigInteger" ], "remark_call_test" ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", 0, "tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG", 14166, "transfer", null, [ "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", 3800 ], [ "Address", "BigInteger" ], "remark_call_test", null ], "id" : 1234 } ``` diff --git a/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json b/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json index f30a027683..dd10c46fc4 100644 --- a/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json +++ b/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json @@ -1 +1 @@ -{"info":{"_postman_id":"691721c4-3e36-481f-a8e4-ff0004127ad7","name":"nuls-api-JSONRPC","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产 - info","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"info\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - createAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccount\",\n\"params\":[chainId, count, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| -------- |\n| 返回值 | list<string> | 返回账户地址集合 |\n"},"response":[]},{"name":"修改账户密码 - updatePassword","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"updatePassword\",\n\"params\":[chainId, address, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - getPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKey\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - importPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importPriKey\",\n\"params\":[chainId, priKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| priKey | string | 账户明文私钥 | 是 |\n| password | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore导入账户 - importKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importKeystore\",\n\"params\":[chainId, , password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| keyStoreJson | map | keyStoreJson | 是 |\n| password | string | keystore密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出账户keystore信息 - exportKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"exportKeystore\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| -------- |\n| result | string | keystore |\n"},"response":[]},{"name":"查询账户余额 - getAccountBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAccountBalance\",\n\"params\":[chainId, assetChainId, assetId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| assetChainId | int | 资产的链ID | 是 |\n| assetId | int | 资产ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| totalBalance | string | 总余额 |\n| balance | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| freeze | string | 总锁定余额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"设置账户别名 - setAlias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"setAlias\",\n\"params\":[chainId, address, alias, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| alias | string | 别名 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"验证地址是否正确 - validateAddress","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateAddress\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------- |\n| value | string | boolean |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - getAddressByPublicKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPublicKey\",\n\"params\":[chainId, publicKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - createAccountOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccountOffline\",\n\"params\":[chainId, count, prefix, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| prefix | string | 地址前缀 | 否 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------- |:------:| ------ |\n| address | string | 账户地址 |\n| pubKey | string | 公钥 |\n| prikey | string | 明文私钥 |\n| encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - getPriKeyOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKeyOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - resetPasswordOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"resetPasswordOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - multiSign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSign\",\n\"params\":[chainId, address, priKey, encryptedPrivateKey, password, txHex],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| signDtoList | list | 摘要签名表单 | 是 |\n|         address | string | 地址 | 是 |\n|         priKey | string | 明文私钥 | 否 |\n|         encryptedPrivateKey | string | 加密私钥 | 否 |\n|         password | string | 密码 | 否 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - priKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"priKeySign\",\n\"params\":[chainId, txHex, address, privateKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| privateKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - encryptedPriKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"encryptedPriKeySign\",\n\"params\":[chainId, txHex, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - createMultiSignAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAccount\",\n\"params\":[pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| ------ |:----:|\n| pubKeys | list<string> | 账户公钥集合 | 是 |\n| minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - createAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAliasTx\",\n\"params\":[address, alias, nonce, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| 创建别名交易 | aliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - createMultiSignAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAliasTx\",\n\"params\":[address, alias, nonce, remark, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| 多签账户离线创建设置别名交易 | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - getAddressByPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPriKey\",\n\"params\":[priKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| 原始私钥 | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"获取本节点的网络状态信息 - getNetworkInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getNetworkInfo\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:-----------:| ------ |\n| 返回值 | networkinfo | 返回网络状态 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - getHeaderByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - getHeaderByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - getBestBlockHeader","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlockHeader\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - getBestBlock","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlock\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - getBlockByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - getBlockByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - getBlockSerializationByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - getBlockSerializationByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"获取最新主链高度 - getLatestHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getLatestHeight\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| -------- |\n| 返回值 | long | 获取最新主链高度 |\n"},"response":[]},{"name":"根据hash获取交易 - getTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTx\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - validateTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| -------- |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - broadcastTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - broadcastTxWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithNoContractValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithoutAnyValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer\",\n\"params\":[chainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createTransferTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcTransferTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"离线组装转账交易 - createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignTransferTxOffline\",\n\"params\":[pubKeys, minSigns, inputs, outputs, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:|\n| transferDto | multisigntransferdto | 转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcMultiSignTransferTxFee\",\n\"params\":[pubKeyCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - contractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreate\",\n\"params\":[chainId, sender, password, alias, gasLimit, price, contractCode, args, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n| alias | string | 合约别名 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - contractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCall\",\n\"params\":[chainId, sender, password, value, gasLimit, price, contractAddress, methodName, methodDesc, args, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ---------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 调用者账户密码 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - contractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDelete\",\n\"params\":[chainId, sender, password, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 交易账户密码 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransfer\",\n\"params\":[chainId, fromAddress, password, toAddress, contractAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contract\",\n\"params\":[chainId, fromAddress, password, toAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - getTokenBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTokenBalance\",\n\"params\":[chainId, contractAddress, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - getContract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContract\",\n\"params\":[chainId, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - getContractTxResult","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResult\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - getContractTxResultList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResultList\",\n\"params\":[chainId, hashList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - getContractConstructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractConstructor\",\n\"params\":[chainId, contractCode],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| -------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取合约方法信息 - getContractMethod","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethod\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取合约方法参数类型 - getContractMethodArgsTypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethodArgsTypes\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - validateContractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCreate\",\n\"params\":[chainId, sender, gasLimit, price, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - validateContractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCall\",\n\"params\":[chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ---------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - validateContractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractDelete\",\n\"params\":[chainId, sender, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - imputedContractCreateGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCreateGas\",\n\"params\":[chainId, sender, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - imputedContractCallGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCallGas\",\n\"params\":[chainId, sender, value, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ---------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - invokeView","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"invokeView\",\n\"params\":[chainId, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:--------:| -------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线 - 发布合约交易 - contractCreateOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreateOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, alias, contractCode, gasLimit, args, argsType, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| alias | string | 合约别名 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线 - 调用合约 - contractCallOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCallOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, value, contractAddress, gasLimit, methodName, methodDesc, args, argsType, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ---------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 删除合约 - contractDeleteOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDeleteOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 合约token转账 - tokentransferOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransferOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, contractAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contractOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contractOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入的合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - createAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgent\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - stopAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgent\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - depositToAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgent\",\n\"params\":[chainId, address, agentHash, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdraw\",\n\"params\":[chainId, address, txHash, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| WithdrawForm | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - getDepositList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getDepositList\",\n\"params\":[chainId, agentHash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| chainId | int | 链ID | 是 |\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - getRandomSeedByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByCount\",\n\"params\":[chainId, height, count, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - getRandomSeedByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByHeight\",\n\"params\":[chainId, startHeight, endHeight, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - getRandomRawSeedsByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByCount\",\n\"params\":[chainId, height, count],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - getRandomRawSeedsByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByHeight\",\n\"params\":[chainId, startHeight, endHeight],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点 - createAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点 - stopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识 - depositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识 - withdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户创建共识节点 - multiSignCreateAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignCreateAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点 - multiSignStopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignStopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignStopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识 - multiSignDepositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignDepositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识 - multiSignWithdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignWithdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignWithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file +{"info":{"_postman_id":"b622391c-b3a9-41cc-8427-0328dc4f6829","name":"nuls-api-JSONRPC","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产 - info","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"info\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - createAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccount\",\n\"params\":[chainId, count, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| -------- |\n| 返回值 | list<string> | 返回账户地址集合 |\n"},"response":[]},{"name":"修改账户密码 - updatePassword","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"updatePassword\",\n\"params\":[chainId, address, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - getPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKey\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - importPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importPriKey\",\n\"params\":[chainId, priKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| priKey | string | 账户明文私钥 | 是 |\n| password | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore导入账户 - importKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importKeystore\",\n\"params\":[chainId, , password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| keyStoreJson | map | keyStoreJson | 是 |\n| password | string | keystore密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出账户keystore信息 - exportKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"exportKeystore\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| -------- |\n| result | string | keystore |\n"},"response":[]},{"name":"查询账户余额 - getAccountBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAccountBalance\",\n\"params\":[chainId, assetChainId, assetId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| assetChainId | int | 资产的链ID | 是 |\n| assetId | int | 资产ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| totalBalance | string | 总余额 |\n| balance | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| freeze | string | 总锁定余额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"设置账户别名 - setAlias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"setAlias\",\n\"params\":[chainId, address, alias, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| alias | string | 别名 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"验证地址是否正确 - validateAddress","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateAddress\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------- |\n| value | string | boolean |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - getAddressByPublicKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPublicKey\",\n\"params\":[chainId, publicKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - createAccountOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccountOffline\",\n\"params\":[chainId, count, prefix, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| prefix | string | 地址前缀 | 否 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------- |:------:| ------ |\n| address | string | 账户地址 |\n| pubKey | string | 公钥 |\n| prikey | string | 明文私钥 |\n| encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - getPriKeyOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKeyOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - resetPasswordOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"resetPasswordOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - multiSign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSign\",\n\"params\":[chainId, address, priKey, encryptedPrivateKey, password, txHex],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| signDtoList | list | 摘要签名表单 | 是 |\n|         address | string | 地址 | 是 |\n|         priKey | string | 明文私钥 | 否 |\n|         encryptedPrivateKey | string | 加密私钥 | 否 |\n|         password | string | 密码 | 否 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - priKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"priKeySign\",\n\"params\":[chainId, txHex, address, privateKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| privateKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - encryptedPriKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"encryptedPriKeySign\",\n\"params\":[chainId, txHex, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - createMultiSignAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAccount\",\n\"params\":[pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| ------ |:----:|\n| pubKeys | list<string> | 账户公钥集合 | 是 |\n| minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - createAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAliasTx\",\n\"params\":[address, alias, nonce, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| 创建别名交易 | aliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - createMultiSignAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAliasTx\",\n\"params\":[address, alias, nonce, remark, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| 多签账户离线创建设置别名交易 | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - getAddressByPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPriKey\",\n\"params\":[priKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| 原始私钥 | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"查询钱包内创建的账户列表 - getAddressList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressList\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n无返回值\n"},"response":[]},{"name":"获取本节点的网络状态信息 - getNetworkInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getNetworkInfo\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:-----------:| ------ |\n| 返回值 | networkinfo | 返回网络状态 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - getHeaderByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - getHeaderByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - getBestBlockHeader","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlockHeader\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - getBestBlock","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlock\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - getBlockByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - getBlockByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - getBlockSerializationByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - getBlockSerializationByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"获取最新主链高度 - getLatestHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getLatestHeight\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| -------- |\n| 返回值 | long | 获取最新主链高度 |\n"},"response":[]},{"name":"根据hash获取交易 - getTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTx\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - validateTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| -------- |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - broadcastTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - broadcastTxWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithNoContractValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithoutAnyValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔链内转账 - transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - transferOtherChainAsset","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transferOtherChainAsset\",\n\"params\":[chainId, assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔跨链转账 - crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"crossTransfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createTransferTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装转账交易 - createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createCrossTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcTransferTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcCrossTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"离线组装转账交易 - createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignTransferTxOffline\",\n\"params\":[pubKeys, minSigns, inputs, outputs, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:|\n| transferDto | multisigntransferdto | 转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcMultiSignTransferTxFee\",\n\"params\":[pubKeyCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - contractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreate\",\n\"params\":[chainId, sender, password, alias, gasLimit, price, contractCode, args, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n| alias | string | 合约别名 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - contractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCall\",\n\"params\":[chainId, sender, password, value, gasLimit, price, contractAddress, methodName, methodDesc, args, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 调用者账户密码 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - contractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDelete\",\n\"params\":[chainId, sender, password, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 交易账户密码 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransfer\",\n\"params\":[chainId, fromAddress, password, toAddress, contractAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contract\",\n\"params\":[chainId, fromAddress, password, toAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - getTokenBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTokenBalance\",\n\"params\":[chainId, contractAddress, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - getContract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContract\",\n\"params\":[chainId, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - getContractTxResult","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResult\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - getContractTxResultList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResultList\",\n\"params\":[chainId, hashList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - getContractConstructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractConstructor\",\n\"params\":[chainId, contractCode],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| -------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取合约方法信息 - getContractMethod","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethod\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取合约方法参数类型 - getContractMethodArgsTypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethodArgsTypes\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - validateContractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCreate\",\n\"params\":[chainId, sender, gasLimit, price, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - validateContractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCall\",\n\"params\":[chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - validateContractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractDelete\",\n\"params\":[chainId, sender, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - imputedContractCreateGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCreateGas\",\n\"params\":[chainId, sender, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - imputedContractCallGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCallGas\",\n\"params\":[chainId, sender, value, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - invokeView","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"invokeView\",\n\"params\":[chainId, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:--------:| -------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线 - 发布合约交易 - contractCreateOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreateOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, alias, contractCode, gasLimit, args, argsType, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| alias | string | 合约别名 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线 - 调用合约 - contractCallOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCallOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, value, contractAddress, gasLimit, methodName, methodDesc, args, argsType, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ----------------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 删除合约 - contractDeleteOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDeleteOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 合约token转账 - tokentransferOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransferOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, contractAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contractOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contractOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入的合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - createAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgent\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - stopAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgent\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - depositToAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgent\",\n\"params\":[chainId, address, agentHash, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdraw\",\n\"params\":[chainId, address, txHash, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| WithdrawForm | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - getDepositList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getDepositList\",\n\"params\":[chainId, agentHash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| chainId | int | 链ID | 是 |\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - getRandomSeedByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByCount\",\n\"params\":[chainId, height, count, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - getRandomSeedByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByHeight\",\n\"params\":[chainId, startHeight, endHeight, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - getRandomRawSeedsByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByCount\",\n\"params\":[chainId, height, count],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - getRandomRawSeedsByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByHeight\",\n\"params\":[chainId, startHeight, endHeight],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点 - createAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点 - stopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识 - depositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识 - withdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户创建共识节点 - multiSignCreateAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignCreateAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点 - multiSignStopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignStopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignStopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识 - multiSignDepositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignDepositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识 - multiSignWithdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignWithdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignWithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file diff --git a/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json b/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json index 239e1cc241..05b64e85ec 100644 --- a/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json +++ b/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json @@ -1 +1 @@ -{"info":{"_postman_id":"275daed2-2780-401e-bcfa-d4bbe28870e1","name":"nuls-api-RESTFUL","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息 - /api/info","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/info","protocol":"http","host":["localhost"],"port":"18004","path":["api/info"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - /api/account","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account","protocol":"http","host":["localhost"],"port":"18004","path":["api/account"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------------------ |:----:|\n| count | string | 新建账户数量,取值[1-10000] | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:---------------:| ---- |\n| list | list<string> | 账户地址 |\n"},"response":[]},{"name":"修改账户密码 - /api/account/password/{address}","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountupdatepasswordform | 账户密码信息表单 | 是 |\n|         password | string | 原始密码 | 是 |\n|         newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - /api/account/prikey/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/prikey/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/prikey/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountpasswordform | 账户密码信息表单 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - /api/account/import/pri","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null,\n \"password\" : null,\n \"overwrite\" : false\n}"},"url":{"raw":"http://localhost:18004/api/account/import/pri","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/pri"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:|\n| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 |\n|         priKey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keyStore导入账户 - /api/account/import/keystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account/import/keystore","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------:| ---------- |:----:|\n| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore文件路径导入账户 - /api/account/import/keystore/path","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"path\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/path","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/path"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------------:| -------------------- |:----:|\n| form | accountkeystoreimportform | 根据keystore文件路径导入账户表单 | 是 |\n|         path | string | 本地keystore文件路径 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore字符串导入账户 - /api/account/import/keystore/json","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"keystore\" : {\n \"address\" : null,\n \"encryptedPrivateKey\" : null,\n \"pubKey\" : null,\n \"prikey\" : null\n },\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/json","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/json"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:|\n| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 |\n|         keystore | object | keystore字符串 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 encryptedPrivateKey | string | 加密后的私钥 | 是 |\n|                 pubKey | string | 公钥 | 是 |\n|                 prikey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出AccountKeyStore文件到指定目录 - /api/account/export/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"path\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/export/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/export/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:---------------------:| -------------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountkeystorebackup | keystone导出信息表单 | 是 |\n|         password | string | 密码 | 是 |\n|         path | string | 文件路径 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------- |\n| path | string | 导出的文件路径 |\n"},"response":[]},{"name":"账户设置别名 - /api/account/alias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/alias","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/alias"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| -------- |:----:|\n| form | setaliasform | 账户设置别名表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"查询账户余额 - /api/accountledger/balance/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"assetChainId\" : 0,\n \"assetId\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/balance/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/balance/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------:| ------ |:----:|\n| balanceDto | balanceform | 账户余额表单 | 是 |\n|         assetChainId | int | 资产的链ID | 是 |\n|         assetId | int | 资产ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| total | string | 总余额 |\n| freeze | string | 锁定金额 |\n| available | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"验证地址格式是否正确 - /api/account/address/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"address\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:-------------------:| -------- |:----:|\n| form | validateaddressform | 账户设置别名表单 | 是 |\n|         chainId | int | 链ID | 是 |\n|         address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | true |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - /api/account/address/publickey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"publicKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/publickey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/publickey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:--------------------:| ------------ |:----:|\n| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 |\n|         chainId | int | 链ID | 是 |\n|         publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - /api/account/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"count\" : 0,\n \"prefix\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | accountcreateform | 离线批量创建账户表单 | 是 |\n|         count | int | 新建账户数量 | 是 |\n|         prefix | string | 地址前缀 | 否 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------- |:---------------:| ------------ |\n| list | list<object> | 账户keystore列表 |\n|         address | string | 账户地址 |\n|         pubKey | string | 公钥 |\n|         prikey | string | 明文私钥 |\n|         encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - /api/account/priKey/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-------------:| ------------ |:----:|\n| form | getprikeyform | 离线获取账户明文私钥表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - /api/account/password/offline/","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"oldPassword\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/offline/","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/offline/"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | resetpasswordform | 离线修改账户密码表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         oldPassword | string | 账户原密码 | 是 |\n|         newPassword | string | 账户新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - /api/account/multi/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"dtoList\" : [ {\n \"address\" : null,\n \"priKey\" : null,\n \"encryptedPrivateKey\" : null,\n \"password\" : null\n } ],\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/multi/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multi/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| form | multisignform | 多账户摘要签名表单 | 是 |\n|         dtoList | list<object> | keystore集合 | 是 |\n|                 address | string | 地址 | 是 |\n|                 priKey | string | 明文私钥 | 否 |\n|                 encryptedPrivateKey | string | 加密私钥 | 否 |\n|                 password | string | 密码 | 否 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - /api/account/priKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------------:| ----------- |:----:|\n| form | prikeysignform | 明文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - /api/account/encryptedPriKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/encryptedPriKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/encryptedPriKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - /api/account/multiSign/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:--------------------------:| -------- |:----:|\n| form | multisignaccountcreateform | 创建多签账户表单 | 是 |\n|         pubKeys | list<string> | 账户公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - /api/account/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| dto | aliasdto | 创建多签账户表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - /api/account/multiSign/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| dto | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - /api/account/address/priKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/priKey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/priKey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| form | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - /api/block/header/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - /api/block/header/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - /api/block/header/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - /api/block/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - /api/block/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - /api/block/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - /api/block/serialization/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - /api/block/serialization/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据hash获取交易 - /api/tx/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/tx/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/tx/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - /api/accountledger/transaction/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 验证交易是否正确 | txform | 验证交易是否正确表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - /api/accountledger/transaction/broadcast","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcast","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcast"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易 | txform | 广播交易表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - /api/accountledger/transaction/broadcastWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastWithNoContractValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastWithNoContractValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------- |:----:|\n| 广播交易(不验证合约) | txform | 广播交易(不验证合约)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - /api/accountledger/transaction/broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastTxWithoutAnyValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastTxWithoutAnyValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易(不验证) | txform | 广播交易(不验证)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - /api/accountledger/transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:------------:| ------ |:----:|\n| 单笔转账 | transferform | 单笔转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - /api/accountledger/createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - /api/accountledger/calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"多签账户离线组装转账交易 - /api/accountledger/createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0,\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createMultiSignTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createMultiSignTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ---------- |:----:|\n| transferDto | multisigntransferdto | 多签账户转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建多签账户转账交易所需手续费 - /api/accountledger/calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeyCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcMultiSignTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcMultiSignTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ------------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 多签账户转账交易手续费表单 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - /api/contract/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractCode\" : null,\n \"alias\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:--------------:| -------------------- |:----:|\n| 发布合约 | contractcreate | 发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         alias | string | 合约别名 | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - /api/contract/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractAddress\" : null,\n \"value\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------:| -------------------------- |:----:|\n| 调用合约 | contractcall | 调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - /api/contract/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null,\n \"password\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:--------------:| --------- |:----:|\n| 删除合约 | contractdelete | 删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - /api/contract/tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ------------ |:----:|\n| token转账 | contracttokentransfer | token转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:----------------:| --------- |:----:|\n| 向合约地址转账 | contracttransfer | 向合约地址转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - /api/contract/balance/token/{contractAddress}/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/balance/token/{contractAddress}/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/balance/token/{contractAddress}/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - /api/contract/info/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/info/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/info/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| address | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - /api/contract/result/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/result/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - /api/contract/result/list","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"hashList\" : [ ]\n}"},"url":{"raw":"http://localhost:18004/api/contract/result/list","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/list"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:----------------------:| -------------- |:----:|\n| 获取智能合约执行结果列表 | contractresultlistform | 获取智能合约执行结果列表表单 | 是 |\n|         hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - /api/contract/constructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractCode\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/constructor","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/constructor"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| -------------------- |:----:|\n| 获取合约代码构造函数 | contractcode | 获取合约代码构造函数表单 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取已发布合约指定函数的信息 - /api/contract/method","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的信息 | contractmethodform | 获取已发布合约指定函数的信息表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取已发布合约指定函数的参数类型列表 - /api/contract/method/argstypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method/argstypes","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method/argstypes"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的参数类型列表 | contractmethodform | 获取已发布合约指定函数的参数类型表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - /api/contract/validate/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------------:| -------------------- |:----:|\n| 验证发布合约 | contractvalidatecreate | 验证发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - /api/contract/validate/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : 0,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:--------------------:| -------------------------- |:----:|\n| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - /api/contract/validate/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------:| -------- |:----:|\n| 验证删除合约 | contractvalidatedelete | 验证删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - /api/contract/imputedgas/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------------------:| -------------------- |:----:|\n| 估算发布合约交易的GAS | imputedgascontractcreate | 估算发布合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - /api/contract/imputedgas/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : null,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------:| -------------------------- |:----:|\n| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - /api/contract/view","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/view","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/view"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------:| ------------------------ |:----:|\n| 调用合约不上链方法 | contractviewcall | 调用合约不上链方法表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线组装 - 发布合约的交易 - /api/contract/create/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"alias\" : null,\n \"contractCode\" : null,\n \"gasLimit\" : 0,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:---------------------:| -------------------- |:----:|\n| 发布合约离线交易 | contractcreateoffline | 发布合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         alias | string | 合约别名 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线组装 - 调用合约的交易 - /api/contract/call/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"value\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-------------------:| -------------------------- |:----:|\n| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 删除合约交易 - /api/contract/delete/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ---------- |:----:|\n| 删除合约离线交易 | contractdeleteoffline | 删除合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 合约token转账交易 - /api/contract/tokentransfer/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------------:| ------------- |:----:|\n| token转账离线交易 | contracttokentransferoffline | token转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:-----------------------:| ------------- |:----:|\n| 向合约地址转账离线交易 | contracttransferoffline | 向合约地址转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - /api/consensus/agent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - /api/consensus/agent/stop","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - /api/consensus/deposit","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"agentHash\" : null,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - /api/consensus/withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"txHash\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| 退出共识 | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - /api/consensus/list/deposit/{agentHash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/consensus/list/deposit/{agentHash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/list/deposit/{agentHash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - /api/consensus/random/seed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------:| ------------------------- |:----:|\n| RandomSeedCountForm | randomseedcountform | 随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - /api/consensus/random/seed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:--------------------:| ------------------------- |:----:|\n| RandomSeedHeightForm | randomseedheightform | 随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - /api/consensus/random/rawseed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------------------:| -------- |:----:|\n| RandomRawSeedCountForm | randomrawseedcountform | 原始随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - /api/consensus/random/rawseed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-----------------------:| -------- |:----:|\n| RandomRawSeedHeightForm | randomrawseedheightform | 原始随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点交易 - /api/consensus/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点交易 - /api/consensus/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : [ {\n \"depositHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n } ]\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识交易 - /api/consensus/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识交易 - /api/consensus/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"多签账户离线组装 - 创建共识节点交易 - /api/consensus/multiSign/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识交易 - /api/consensus/multiSign/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识交易 - /api/consensus/multiSign/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| WithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点交易 - /api/consensus/multiSign/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| StopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file +{"info":{"_postman_id":"283152a3-df99-4770-b17b-c416dcbf4e38","name":"nuls-api-RESTFUL","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息 - /api/info","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/info","protocol":"http","host":["localhost"],"port":"18004","path":["api/info"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - /api/account","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account","protocol":"http","host":["localhost"],"port":"18004","path":["api/account"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------------------ |:----:|\n| count | string | 新建账户数量,取值[1-10000] | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:---------------:| ---- |\n| list | list<string> | 账户地址 |\n"},"response":[]},{"name":"修改账户密码 - /api/account/password/{address}","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountupdatepasswordform | 账户密码信息表单 | 是 |\n|         password | string | 原始密码 | 是 |\n|         newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - /api/account/prikey/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/prikey/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/prikey/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountpasswordform | 账户密码信息表单 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - /api/account/import/pri","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null,\n \"password\" : null,\n \"overwrite\" : false\n}"},"url":{"raw":"http://localhost:18004/api/account/import/pri","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/pri"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:|\n| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 |\n|         priKey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keyStore导入账户 - /api/account/import/keystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account/import/keystore","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------:| ---------- |:----:|\n| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore文件路径导入账户 - /api/account/import/keystore/path","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"path\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/path","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/path"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------------:| -------------------- |:----:|\n| form | accountkeystoreimportform | 根据keystore文件路径导入账户表单 | 是 |\n|         path | string | 本地keystore文件路径 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore字符串导入账户 - /api/account/import/keystore/json","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"keystore\" : {\n \"address\" : null,\n \"encryptedPrivateKey\" : null,\n \"pubKey\" : null,\n \"prikey\" : null\n },\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/json","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/json"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:|\n| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 |\n|         keystore | object | keystore字符串 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 encryptedPrivateKey | string | 加密后的私钥 | 是 |\n|                 pubKey | string | 公钥 | 是 |\n|                 prikey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出AccountKeyStore文件到指定目录 - /api/account/export/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"path\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/export/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/export/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:---------------------:| -------------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountkeystorebackup | keystone导出信息表单 | 是 |\n|         password | string | 密码 | 是 |\n|         path | string | 文件路径 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------- |\n| path | string | 导出的文件路径 |\n"},"response":[]},{"name":"账户设置别名 - /api/account/alias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/alias","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/alias"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| -------- |:----:|\n| form | setaliasform | 账户设置别名表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"查询账户余额 - /api/accountledger/balance/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"assetChainId\" : 0,\n \"assetId\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/balance/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/balance/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------:| ------ |:----:|\n| balanceDto | balanceform | 账户余额表单 | 是 |\n|         assetChainId | int | 资产的链ID | 是 |\n|         assetId | int | 资产ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| total | string | 总余额 |\n| freeze | string | 锁定金额 |\n| available | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"验证地址格式是否正确 - /api/account/address/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"address\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:-------------------:| -------- |:----:|\n| form | validateaddressform | 账户设置别名表单 | 是 |\n|         chainId | int | 链ID | 是 |\n|         address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | true |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - /api/account/address/publickey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"publicKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/publickey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/publickey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:--------------------:| ------------ |:----:|\n| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 |\n|         chainId | int | 链ID | 是 |\n|         publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - /api/account/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"count\" : 0,\n \"prefix\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | accountcreateform | 离线批量创建账户表单 | 是 |\n|         count | int | 新建账户数量 | 是 |\n|         prefix | string | 地址前缀 | 否 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------- |:---------------:| ------------ |\n| list | list<object> | 账户keystore列表 |\n|         address | string | 账户地址 |\n|         pubKey | string | 公钥 |\n|         prikey | string | 明文私钥 |\n|         encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - /api/account/priKey/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-------------:| ------------ |:----:|\n| form | getprikeyform | 离线获取账户明文私钥表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - /api/account/password/offline/","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"oldPassword\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/offline/","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/offline/"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | resetpasswordform | 离线修改账户密码表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         oldPassword | string | 账户原密码 | 是 |\n|         newPassword | string | 账户新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - /api/account/multi/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"dtoList\" : [ {\n \"address\" : null,\n \"priKey\" : null,\n \"encryptedPrivateKey\" : null,\n \"password\" : null\n } ],\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/multi/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multi/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| form | multisignform | 多账户摘要签名表单 | 是 |\n|         dtoList | list<object> | keystore集合 | 是 |\n|                 address | string | 地址 | 是 |\n|                 priKey | string | 明文私钥 | 否 |\n|                 encryptedPrivateKey | string | 加密私钥 | 否 |\n|                 password | string | 密码 | 否 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - /api/account/priKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------------:| ----------- |:----:|\n| form | prikeysignform | 明文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - /api/account/encryptedPriKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/encryptedPriKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/encryptedPriKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"多账号密文私钥摘要签名 - /api/account/encryptedPriKeys/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/encryptedPriKeys/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/encryptedPriKeys/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - /api/account/multiSign/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:--------------------------:| -------- |:----:|\n| form | multisignaccountcreateform | 创建多签账户表单 | 是 |\n|         pubKeys | list<string> | 账户公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - /api/account/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| dto | aliasdto | 创建多签账户表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - /api/account/multiSign/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| dto | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - /api/account/address/priKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/priKey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/priKey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| form | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - /api/block/header/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - /api/block/header/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - /api/block/header/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - /api/block/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - /api/block/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - /api/block/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - /api/block/serialization/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - /api/block/serialization/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据hash获取交易 - /api/tx/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/tx/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/tx/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - /api/accountledger/transaction/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 验证交易是否正确 | txform | 验证交易是否正确表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - /api/accountledger/transaction/broadcast","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcast","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcast"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易 | txform | 广播交易表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - /api/accountledger/transaction/broadcastWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastWithNoContractValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastWithNoContractValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------- |:----:|\n| 广播交易(不验证合约) | txform | 广播交易(不验证合约)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - /api/accountledger/transaction/broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastTxWithoutAnyValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastTxWithoutAnyValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易(不验证) | txform | 广播交易(不验证)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - /api/accountledger/transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| ------ |:----:|\n| 单笔转账 | transferform | 单笔转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产链ID | 否 |\n|         assetId | int | 资产ID | 否 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"跨链转账 - /api/accountledger/crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/crossTransfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/crossTransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------------:| --------- |:----:|\n| 跨链转账 | crosstransferform | 跨链转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产chainId | 是 |\n|         assetId | int | 资产Id | 是 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - /api/accountledger/createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装跨链转账交易 - /api/accountledger/createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createCrossTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createCrossTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 跨链转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - /api/accountledger/calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - /api/accountledger/calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcCrossTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcCrossTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"多签账户离线组装转账交易 - /api/accountledger/createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0,\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createMultiSignTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createMultiSignTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ---------- |:----:|\n| transferDto | multisigntransferdto | 多签账户转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建多签账户转账交易所需手续费 - /api/accountledger/calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeyCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcMultiSignTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcMultiSignTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ------------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 多签账户转账交易手续费表单 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - /api/contract/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractCode\" : null,\n \"alias\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:--------------:| -------------------- |:----:|\n| 发布合约 | contractcreate | 发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         alias | string | 合约别名 | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - /api/contract/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractAddress\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:------------:| ------------------------------------------------------------------------- |:----:|\n| 调用合约 | contractcall | 调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - /api/contract/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null,\n \"password\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:--------------:| --------- |:----:|\n| 删除合约 | contractdelete | 删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - /api/contract/tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ------------ |:----:|\n| token转账 | contracttokentransfer | token转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:----------------:| --------- |:----:|\n| 向合约地址转账 | contracttransfer | 向合约地址转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - /api/contract/balance/token/{contractAddress}/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/balance/token/{contractAddress}/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/balance/token/{contractAddress}/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - /api/contract/info/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/info/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/info/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| address | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - /api/contract/result/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/result/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - /api/contract/result/list","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"hashList\" : [ ]\n}"},"url":{"raw":"http://localhost:18004/api/contract/result/list","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/list"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:----------------------:| -------------- |:----:|\n| 获取智能合约执行结果列表 | contractresultlistform | 获取智能合约执行结果列表表单 | 是 |\n|         hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - /api/contract/constructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractCode\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/constructor","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/constructor"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| -------------------- |:----:|\n| 获取合约代码构造函数 | contractcode | 获取合约代码构造函数表单 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取已发布合约指定函数的信息 - /api/contract/method","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的信息 | contractmethodform | 获取已发布合约指定函数的信息表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取已发布合约指定函数的参数类型列表 - /api/contract/method/argstypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method/argstypes","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method/argstypes"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的参数类型列表 | contractmethodform | 获取已发布合约指定函数的参数类型表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - /api/contract/validate/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------------:| -------------------- |:----:|\n| 验证发布合约 | contractvalidatecreate | 验证发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - /api/contract/validate/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : 0,\n \"multyAssetValues\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:--------------------:| ------------------------------------------------------------------------- |:----:|\n| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - /api/contract/validate/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------:| -------- |:----:|\n| 验证删除合约 | contractvalidatedelete | 验证删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - /api/contract/imputedgas/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------------------:| -------------------- |:----:|\n| 估算发布合约交易的GAS | imputedgascontractcreate | 估算发布合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - /api/contract/imputedgas/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:----------------------:| ------------------------------------------------------------------------- |:----:|\n| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - /api/contract/view","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/view","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/view"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------:| ------------------------ |:----:|\n| 调用合约不上链方法 | contractviewcall | 调用合约不上链方法表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线组装 - 发布合约的交易 - /api/contract/create/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"alias\" : null,\n \"contractCode\" : null,\n \"gasLimit\" : 0,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:---------------------:| -------------------- |:----:|\n| 发布合约离线交易 | contractcreateoffline | 发布合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         alias | string | 合约别名 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线组装 - 调用合约的交易 - /api/contract/call/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:-------------------:| ----------------------------------------------------------------------------------- |:----:|\n| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 删除合约交易 - /api/contract/delete/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ---------- |:----:|\n| 删除合约离线交易 | contractdeleteoffline | 删除合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 合约token转账交易 - /api/contract/tokentransfer/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------------:| ------------- |:----:|\n| token转账离线交易 | contracttokentransferoffline | token转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:-----------------------:| ------------- |:----:|\n| 向合约地址转账离线交易 | contracttransferoffline | 向合约地址转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - /api/consensus/agent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - /api/consensus/agent/stop","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - /api/consensus/deposit","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"agentHash\" : null,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - /api/consensus/withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"txHash\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| 退出共识 | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - /api/consensus/list/deposit/{agentHash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/consensus/list/deposit/{agentHash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/list/deposit/{agentHash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - /api/consensus/random/seed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------:| ------------------------- |:----:|\n| RandomSeedCountForm | randomseedcountform | 随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - /api/consensus/random/seed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:--------------------:| ------------------------- |:----:|\n| RandomSeedHeightForm | randomseedheightform | 随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - /api/consensus/random/rawseed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------------------:| -------- |:----:|\n| RandomRawSeedCountForm | randomrawseedcountform | 原始随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - /api/consensus/random/rawseed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-----------------------:| -------- |:----:|\n| RandomRawSeedHeightForm | randomrawseedheightform | 原始随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点交易 - /api/consensus/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点交易 - /api/consensus/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : [ {\n \"depositHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n } ]\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识交易 - /api/consensus/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识交易 - /api/consensus/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"多签账户离线组装 - 创建共识节点交易 - /api/consensus/multiSign/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识交易 - /api/consensus/multiSign/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识交易 - /api/consensus/multiSign/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| WithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点交易 - /api/consensus/multiSign/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| StopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file diff --git a/module/nuls-api/documents/nuls-api_RESTFUL.md b/module/nuls-api/documents/nuls-api_RESTFUL.md index 7dd962fbc6..903dfe6838 100644 --- a/module/nuls-api/documents/nuls-api_RESTFUL.md +++ b/module/nuls-api/documents/nuls-api_RESTFUL.md @@ -785,6 +785,7 @@ _**详细描述: 创建的账户不会保存到钱包中,接口直接返回账 ```json { + "chainId" : 0, "count" : 0, "prefix" : null, "password" : null @@ -1078,7 +1079,9 @@ _**详细描述: 密文私钥摘要签名**_ "txHex" : null, "address" : null, "encryptedPriKey" : null, - "password" : null + "password" : null, + "chainId" : 0, + "prefix" : null } ``` @@ -1090,6 +1093,8 @@ _**详细描述: 密文私钥摘要签名**_ |         address | string | 账户地址 | 是 | |         encryptedPriKey | string | 账户密文私钥 | 是 | |         password | string | 账户密码 | 是 | +|         chainId | int | 地址链ID | 是 | +|         prefix | string | 地址前缀 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1124,7 +1129,52 @@ _**request form data:**_ } ``` -### 1.19 创建多签账户 +### 1.19 多账号密文私钥摘要签名 +#### Cmd: /api/account/encryptedPriKeys/sign +_**详细描述: 多账号密文私钥摘要签名**_ +#### HttpMethod: POST + +#### Form json data: + +```json +{ + "txHex" : null, + "address" : null, + "encryptedPriKey" : null, + "password" : null, + "chainId" : 0, + "prefix" : null +} +``` + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:| +| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | +|         chainId | int | 地址链ID | 是 | +|         prefix | string | 地址前缀 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ------------- | +| hash | string | 交易hash | +| txHex | string | 签名后的交易16进制字符串 | +#### Example request data: + +_**request path:**_ +略 + +_**request form data:**_ +无 + +#### Example response data: +略 + +### 1.20 创建多签账户 #### Cmd: /api/account/multiSign/create _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多签账户创建交易时需要的最小签名数**_ #### HttpMethod: POST @@ -1174,7 +1224,7 @@ _**request form data:**_ } ``` -### 1.20 离线创建设置别名交易 +### 1.21 离线创建设置别名交易 #### Cmd: /api/account/aliasTx/create _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多签账户创建交易时需要的最小签名数**_ #### HttpMethod: POST @@ -1232,7 +1282,7 @@ _**request form data:**_ } ``` -### 1.21 多签账户离线创建设置别名交易 +### 1.22 多签账户离线创建设置别名交易 #### Cmd: /api/account/multiSign/aliasTx/create _**详细描述: 多签账户离线创建设置别名交易**_ #### HttpMethod: POST @@ -1296,7 +1346,7 @@ _**request form data:**_ } ``` -### 1.22 根据私钥获取账户地址格式 +### 1.23 根据私钥获取账户地址格式 #### Cmd: /api/account/address/priKey _**详细描述: 根据私钥获取账户地址格式**_ #### HttpMethod: POST @@ -2286,20 +2336,24 @@ _**详细描述: 发起单账户单资产的转账交易**_ "address" : null, "toAddress" : null, "password" : null, + "assetChainId" : 0, + "assetId" : 0, "amount" : null, "remark" : null } ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- |:------------:| ------ |:----:| -| 单笔转账 | transferform | 单笔转账表单 | 是 | -|         address | string | 账户地址 | 是 | -|         toAddress | string | 账户地址 | 是 | -|         password | string | 账户密码 | 是 | -|         amount | biginteger | 金额 | 是 | -|         remark | string | 备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:------------:| ------ |:----:| +| 单笔转账 | transferform | 单笔转账表单 | 是 | +|         address | string | 账户地址 | 是 | +|         toAddress | string | 账户地址 | 是 | +|         password | string | 账户密码 | 是 | +|         assetChainId | int | 资产链ID | 否 | +|         assetId | int | 资产ID | 否 | +|         amount | biginteger | 金额 | 是 | +|         remark | string | 备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2333,7 +2387,53 @@ _**request form data:**_ } ``` -### 3.7 离线组装转账交易 +### 3.7 跨链转账 +#### Cmd: /api/accountledger/crossTransfer +_**详细描述: 发起单账户单资产的跨链转账交易**_ +#### HttpMethod: POST + +#### Form json data: + +```json +{ + "address" : null, + "toAddress" : null, + "password" : null, + "assetChainId" : 0, + "assetId" : 0, + "amount" : null, + "remark" : null +} +``` + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:-----------------:| --------- |:----:| +| 跨链转账 | crosstransferform | 跨链转账表单 | 是 | +|         address | string | 账户地址 | 是 | +|         toAddress | string | 账户地址 | 是 | +|         password | string | 账户密码 | 是 | +|         assetChainId | int | 资产chainId | 是 | +|         assetId | int | 资产Id | 是 | +|         amount | biginteger | 金额 | 是 | +|         remark | string | 备注 | 否 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ------ | +| value | string | 交易hash | +#### Example request data: + +_**request path:**_ +略 + +_**request form data:**_ +无 + +#### Example response data: +略 + +### 3.8 离线组装转账交易 #### Cmd: /api/accountledger/createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### HttpMethod: POST @@ -2424,7 +2524,70 @@ _**request form data:**_ } ``` -### 3.8 计算离线创建转账交易所需手续费 +### 3.9 离线组装跨链转账交易 +#### Cmd: /api/accountledger/createCrossTxOffline +_**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,再加上跨链转账的NULS手续费**_ +#### HttpMethod: POST + +#### Form json data: + +```json +{ + "inputs" : [ { + "address" : null, + "assetChainId" : 0, + "assetId" : 0, + "amount" : null, + "nonce" : null + } ], + "outputs" : [ { + "address" : null, + "assetChainId" : 0, + "assetId" : 0, + "amount" : null, + "lockTime" : 0 + } ], + "time" : 0, + "remark" : null +} +``` + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| +| transferDto | transferdto | 跨链转账交易表单 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ------------ | +| hash | string | 交易hash | +| txHex | string | 交易序列化16进制字符串 | +#### Example request data: + +_**request path:**_ +略 + +_**request form data:**_ +无 + +#### Example response data: +略 + +### 3.10 计算离线创建转账交易所需手续费 #### Cmd: /api/accountledger/calcTransferTxFee _**详细描述: 计算离线创建转账交易所需手续费**_ #### HttpMethod: POST @@ -2483,7 +2646,49 @@ _**request form data:**_ } ``` -### 3.9 多签账户离线组装转账交易 +### 3.11 计算离线创建跨链转账交易所需手续费 +#### Cmd: /api/accountledger/calcCrossTxFee +_**详细描述: 计算离线创建跨链转账交易所需手续费**_ +#### HttpMethod: POST + +#### Form json data: + +```json +{ + "addressCount" : 0, + "fromLength" : 0, + "toLength" : 0, + "remark" : null, + "price" : null +} +``` + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:----------------:| ------- |:----:| +| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ----- | +| value | string | 交易手续费 | +#### Example request data: + +_**request path:**_ +略 + +_**request form data:**_ +无 + +#### Example response data: +略 + +### 3.12 多签账户离线组装转账交易 #### Cmd: /api/accountledger/createMultiSignTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### HttpMethod: POST @@ -2578,7 +2783,7 @@ _**request form data:**_ } ``` -### 3.10 计算离线创建多签账户转账交易所需手续费 +### 3.13 计算离线创建多签账户转账交易所需手续费 #### Cmd: /api/accountledger/calcMultiSignTransferTxFee _**详细描述: 计算离线创建多签账户转账交易所需手续费**_ #### HttpMethod: POST @@ -2723,6 +2928,7 @@ _**详细描述: 调用合约**_ "remark" : null, "contractAddress" : null, "value" : null, + "multyAssetValues" : null, "methodName" : null, "methodDesc" : null, "args" : null @@ -2730,19 +2936,20 @@ _**详细描述: 调用合约**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:------------:| -------------------------- |:----:| -| 调用合约 | contractcall | 调用合约表单 | 是 | -|         sender | string | 交易创建者 | 是 | -|         gasLimit | long | 最大gas消耗 | 是 | -|         price | long | 执行合约单价 | 是 | -|         password | string | 交易创建者账户密码 | 是 | -|         remark | string | 备注 | 否 | -|         contractAddress | string | 智能合约地址 | 是 | -|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 | -|         methodName | string | 方法名 | 是 | -|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -|         args | object[] | 参数列表 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------------------------------------------------------- |:------------:| ------------------------------------------------------------------------- |:----:| +| 调用合约 | contractcall | 调用合约表单 | 是 | +|         sender | string | 交易创建者 | 是 | +|         gasLimit | long | 最大gas消耗 | 是 | +|         price | long | 执行合约单价 | 是 | +|         password | string | 交易创建者账户密码 | 是 | +|         remark | string | 备注 | 否 | +|         contractAddress | string | 智能合约地址 | 是 | +|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 | +|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | +|         methodName | string | 方法名 | 是 | +|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +|         args | object[] | 参数列表 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2764,6 +2971,7 @@ _**request form data:**_ "remark" : null, "contractAddress" : "tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K", "value" : 0, + "multyAssetValues" : null, "methodName" : "transfer", "methodDesc" : null, "args" : [ "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", 990 ] @@ -3190,46 +3398,66 @@ _**详细描述: 获取智能合约执行结果**_ | hash | string | 交易hash | 是 | #### 返回值 -| 字段名 | 字段类型 | 参数描述 | -| ----------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- | -| success | boolean | 合约执行是否成功 | -| errorMessage | string | 执行失败信息 | -| contractAddress | string | 合约地址 | -| result | string | 合约执行结果 | -| gasLimit | long | GAS限制 | -| gasUsed | long | 已使用GAS | -| price | long | GAS单价 | -| totalFee | string | 交易总手续费 | -| txSizeFee | string | 交易大小手续费 | -| actualContractFee | string | 实际执行合约手续费 | -| refundFee | string | 合约返回的手续费 | -| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | -| stackTrace | string | 异常堆栈踪迹 | -| transfers | list<object> | 合约转账列表(从合约转出) | -|         txHash | string | 合约生成交易:合约转账交易hash | -|         from | string | 转出的合约地址 | -|         value | string | 转账金额 | -|         outputs | list<object> | 转入的地址列表 | -|                 to | string | 转入地址 | -|                 value | string | 转入金额 | -|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | -| events | list<string> | 合约事件列表 | -| debugEvents | list<string> | 调式合约事件列表 | -| tokenTransfers | list<object> | 合约token转账列表 | -|         contractAddress | string | 合约地址 | -|         from | string | 付款方 | -|         to | string | 收款方 | -|         value | string | 转账金额 | -|         name | string | token名称 | -|         symbol | string | token符号 | -|         decimals | long | token支持的小数位数 | -| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | -|         cmdName | string | 命令名称 | -|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | -|         cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | -|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | -| contractTxList | list<string> | 合约生成交易的序列化字符串列表 | -| remark | string | 备注 | +| 字段名 | 字段类型 | 参数描述 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- | +| success | boolean | 合约执行是否成功 | +| errorMessage | string | 执行失败信息 | +| contractAddress | string | 合约地址 | +| result | string | 合约执行结果 | +| gasLimit | long | GAS限制 | +| gasUsed | long | 已使用GAS | +| price | long | GAS单价 | +| totalFee | string | 交易总手续费 | +| txSizeFee | string | 交易大小手续费 | +| actualContractFee | string | 实际执行合约手续费 | +| refundFee | string | 合约返回的手续费 | +| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | +| stackTrace | string | 异常堆栈踪迹 | +| transfers | list<object> | 合约转账列表(从合约转出主资产) | +|         txHash | string | 合约生成交易:合约转账交易hash | +|         from | string | 转出的合约地址 | +|         value | string | 转账金额 | +|         outputs | list<object> | 转入的地址列表 | +|                 to | string | 转入地址 | +|                 value | string | 转入金额 | +|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) | +|         txHash | string | 合约生成交易:合约转账交易hash | +|         from | string | 转出的合约地址 | +|         value | string | 转账金额 | +|         assetChainId | int | 转账金额资产链ID | +|         assetId | int | 转账金额资产ID | +|         outputs | list<object> | 转入的地址列表 | +|                 to | string | 转入地址 | +|                 value | string | 转入金额 | +|                 assetChainId | int | 转入金额资产链ID | +|                 assetId | int | 转入金额资产ID | +|                 lockTime | long | 转入金额锁定时间 | +|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +| events | list<string> | 合约事件列表 | +| debugEvents | list<string> | 调式合约事件列表 | +| tokenTransfers | list<object> | 合约token转账列表 | +|         contractAddress | string | 合约地址 | +|         from | string | 付款方 | +|         to | string | 收款方 | +|         value | string | 转账金额 | +|         name | string | token名称 | +|         symbol | string | token符号 | +|         decimals | long | token支持的小数位数 | +| token721Transfers | list<object> | 合约NRC721-token转账列表 | +|         contractAddress | string | 合约地址 | +|         from | string | 付款方 | +|         to | string | 收款方 | +|         tokenId | string | tokenId | +|         name | string | token名称 | +|         symbol | string | token符号 | +| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | +|         cmdName | string | 命令名称 | +|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | +|         cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | +|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | +| contractTxList | list<string> | 合约生成交易的序列化字符串列表 | +| remark | string | 备注 | #### Example request data: _**request path:**_ @@ -3272,6 +3500,21 @@ _**request form data:**_ } ], "orginTxHash" : "b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e6789" } ], + "multyAssetTransfers" : [ { + "txHash" : "21c7af81c5130f43a363152d3b81f96004fbaaeaeab8e50c988c04015f78770b", + "from" : "tNULSeBaN31HBrLhXsWDkSz1bjhw5qGBcjafVJ", + "value" : "200000000", + "assetChainId" : 5, + "assetId" : 1, + "outputs" : [ { + "to" : "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "value" : "200000000", + "assetChainId" : 5, + "assetId" : 1, + "lockTime" : 0 + } ], + "orginTxHash" : "755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f63623176" + } ], "events" : [ "{\"contractAddress\":\"TTb1LZLo6izPGmXa9dGPmb5D2vpLpNqA\",\"blockNumber\":1343847,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"TTasNs8MGGGaFT9hd9DLmkammYYv69vs\",\"to\":\"TTau7kAxyhc4yMomVJ2QkMVECKKZK1uG\",\"value\":\"1000\"}}" ], "debugEvents" : [ ], "tokenTransfers" : [ { @@ -3283,6 +3526,14 @@ _**request form data:**_ "symbol" : "a", "decimals" : 8 } ], + "token721Transfers" : [ { + "contractAddress" : "NULSd6Hgrsk44itdzFqjgkgAF6nFM82WdpqrQ", + "from" : "NULSd6Hgd3ACi95QvpLBfp3jgJP3YFmEpbgoG", + "to" : "NULSd6HgcbwRjN8AxpPK8TvJWtzBzMQ1zDhVd", + "tokenId" : "13450", + "name" : "nft", + "symbol" : "NFT" + } ], "invokeRegisterCmds" : [ { "cmdName" : "cs_createContractAgent", "args" : { @@ -3299,7 +3550,7 @@ _**request form data:**_ "cmdRegisterMode" : "NEW_TX", "newTxHash" : "a8eae11b52990e39c9d3233ba1d2c8827336d261c0f14aca43dd4f06435dfaba" } ], - "contractTxList" : [ "12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000", "1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00" ], + "contractTxList" : [ "12002fbb225d0037b5473eefecd1c70ac4276f70062a92bdbfe8f779cbe48de2d0315686cc7e678902000253472f4702eb83b71871a4c4e0c71526bb86b8afd0011702000253472f4702eb83b71871a4c4e0c71526bb86b8af0200010000c2eb0b0000000000000000000000000000000000000000000000000000000008000000000000000000021702000194f6239c075d184e265eaea97a67eeced51725160200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000017020001ce8ffa95606f0bfd2778cff2eff8fe8999e20c440200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000", "12009cbbf25f0037755cdeabb704a77038d44c741b6c2b5635a60ffa58f652162559763f6362317602000265f22046ba64eb216854390877d0f52348ded8be8c011702000265f22046ba64eb216854390877d0f52348ded8be0500010000c2eb0b00000000000000000000000000000000000000000000000000000000080000000000000000000117020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a990500010000c2eb0b00000000000000000000000000000000000000000000000000000000000000000000000000", "1400bf6b285d006600204aa9d1010000000000000000000000000000000000000000000000000000020002f246b18e8c697f00ed9bd22696998e469d3f824b020001d7424d91c83566eb94233b5416f2aa77709c03e1020002f246b18e8c697f00ed9bd22696998e469d3f824b648c0117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000080000000000000000000117020002f246b18e8c697f00ed9bd22696998e469d3f824b0200010000204aa9d1010000000000000000000000000000000000000000000000000000ffffffffffffffff00" ], "remark" : "call" } } @@ -3326,47 +3577,67 @@ _**详细描述: 获取智能合约执行结果列表**_ |         hashList | list<string> | 交易hash列表 | 是 | #### 返回值 -| 字段名 | 字段类型 | 参数描述 | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------- | -| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 | -|         success | boolean | 合约执行是否成功 | -|         errorMessage | string | 执行失败信息 | -|         contractAddress | string | 合约地址 | -|         result | string | 合约执行结果 | -|         gasLimit | long | GAS限制 | -|         gasUsed | long | 已使用GAS | -|         price | long | GAS单价 | -|         totalFee | string | 交易总手续费 | -|         txSizeFee | string | 交易大小手续费 | -|         actualContractFee | string | 实际执行合约手续费 | -|         refundFee | string | 合约返回的手续费 | -|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | -|         stackTrace | string | 异常堆栈踪迹 | -|         transfers | list<object> | 合约转账列表(从合约转出) | -|                 txHash | string | 合约生成交易:合约转账交易hash | -|                 from | string | 转出的合约地址 | -|                 value | string | 转账金额 | -|                 outputs | list<object> | 转入的地址列表 | -|                         to | string | 转入地址 | -|                         value | string | 转入金额 | -|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | -|         events | list<string> | 合约事件列表 | -|         debugEvents | list<string> | 调式合约事件列表 | -|         tokenTransfers | list<object> | 合约token转账列表 | -|                 contractAddress | string | 合约地址 | -|                 from | string | 付款方 | -|                 to | string | 收款方 | -|                 value | string | 转账金额 | -|                 name | string | token名称 | -|                 symbol | string | token符号 | -|                 decimals | long | token支持的小数位数 | -|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | -|                 cmdName | string | 命令名称 | -|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | -|                 cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | -|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | -|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 | -|         remark | string | 备注 | +| 字段名 | 字段类型 | 参数描述 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- | +| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 | +|         success | boolean | 合约执行是否成功 | +|         errorMessage | string | 执行失败信息 | +|         contractAddress | string | 合约地址 | +|         result | string | 合约执行结果 | +|         gasLimit | long | GAS限制 | +|         gasUsed | long | 已使用GAS | +|         price | long | GAS单价 | +|         totalFee | string | 交易总手续费 | +|         txSizeFee | string | 交易大小手续费 | +|         actualContractFee | string | 实际执行合约手续费 | +|         refundFee | string | 合约返回的手续费 | +|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 | +|         stackTrace | string | 异常堆栈踪迹 | +|         transfers | list<object> | 合约转账列表(从合约转出主资产) | +|                 txHash | string | 合约生成交易:合约转账交易hash | +|                 from | string | 转出的合约地址 | +|                 value | string | 转账金额 | +|                 outputs | list<object> | 转入的地址列表 | +|                         to | string | 转入地址 | +|                         value | string | 转入金额 | +|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) | +|                 txHash | string | 合约生成交易:合约转账交易hash | +|                 from | string | 转出的合约地址 | +|                 value | string | 转账金额 | +|                 assetChainId | int | 转账金额资产链ID | +|                 assetId | int | 转账金额资产ID | +|                 outputs | list<object> | 转入的地址列表 | +|                         to | string | 转入地址 | +|                         value | string | 转入金额 | +|                         assetChainId | int | 转入金额资产链ID | +|                         assetId | int | 转入金额资产ID | +|                         lockTime | long | 转入金额锁定时间 | +|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) | +|         events | list<string> | 合约事件列表 | +|         debugEvents | list<string> | 调式合约事件列表 | +|         tokenTransfers | list<object> | 合约token转账列表 | +|                 contractAddress | string | 合约地址 | +|                 from | string | 付款方 | +|                 to | string | 收款方 | +|                 value | string | 转账金额 | +|                 name | string | token名称 | +|                 symbol | string | token符号 | +|                 decimals | long | token支持的小数位数 | +|         token721Transfers | list<object> | 合约NRC721-token转账列表 | +|                 contractAddress | string | 合约地址 | +|                 from | string | 付款方 | +|                 to | string | 收款方 | +|                 tokenId | string | tokenId | +|                 name | string | token名称 | +|                 symbol | string | token符号 | +|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 | +|                 cmdName | string | 命令名称 | +|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} | +|                 cmdRegisterMode | string | 注册的命令模式(QUERY\_DATA or NEW\_TX) | +|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\_TX 时,会生成交易) | +|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 | +|         remark | string | 备注 | #### Example request data: _**request path:**_ @@ -3401,7 +3672,9 @@ _**request form data:**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":68,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"value\":\"800000\"}}" ], + "debugEvents" : [ ], "tokenTransfers" : [ { "contractAddress" : "tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL", "from" : null, @@ -3411,6 +3684,7 @@ _**request form data:**_ "symbol" : "IO", "decimals" : 1 } ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "create" @@ -3430,7 +3704,9 @@ _**request form data:**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":71,\"event\":\"TransferEvent\",\"payload\":{\"from\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"to\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}" ], + "debugEvents" : [ ], "tokenTransfers" : [ { "contractAddress" : "tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL", "from" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", @@ -3440,6 +3716,7 @@ _**request form data:**_ "symbol" : "IO", "decimals" : 1 } ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "call" @@ -3459,8 +3736,11 @@ _**request form data:**_ "value" : "0", "stackTrace" : null, "transfers" : [ ], + "multyAssetTransfers" : [ ], "events" : [ "{\"contractAddress\":\"tNULSeBaN5Y2gRias1NMNVmsmXqJbu5Bcp3ZPL\",\"blockNumber\":72,\"event\":\"ApprovalEvent\",\"payload\":{\"owner\":\"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG\",\"spender\":\"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM\",\"value\":\"4000\"}}" ], + "debugEvents" : [ ], "tokenTransfers" : [ ], + "token721Transfers" : [ ], "invokeRegisterCmds" : [ ], "contractTxList" : [ ], "remark" : "call" @@ -3769,6 +4049,7 @@ _**详细描述: 验证调用合约**_ { "sender" : null, "value" : 0, + "multyAssetValues" : null, "gasLimit" : 0, "price" : 0, "contractAddress" : null, @@ -3779,17 +4060,18 @@ _**详细描述: 验证调用合约**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:--------------------:| -------------------------- |:----:| -| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 | -|         sender | string | 交易创建者 | 是 | -|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 | -|         gasLimit | long | 最大gas消耗 | 是 | -|         price | long | 执行合约单价 | 是 | -|         contractAddress | string | 智能合约地址 | 是 | -|         methodName | string | 方法名称 | 是 | -|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -|         args | object[] | 参数列表 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------------------------------------------------------- |:--------------------:| ------------------------------------------------------------------------- |:----:| +| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 | +|         sender | string | 交易创建者 | 是 | +|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 | +|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | +|         gasLimit | long | 最大gas消耗 | 是 | +|         price | long | 执行合约单价 | 是 | +|         contractAddress | string | 智能合约地址 | 是 | +|         methodName | string | 方法名称 | 是 | +|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +|         args | object[] | 参数列表 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3808,6 +4090,7 @@ _**request form data:**_ { "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "value" : 0, + "multyAssetValues" : null, "gasLimit" : 20000, "price" : 25, "contractAddress" : "tNULSeBaMx7J2im9edmmyZofHoTWW6nCTbvy3K", @@ -3951,6 +4234,7 @@ _**详细描述: 估算调用合约交易的GAS**_ { "sender" : null, "value" : null, + "multyAssetValues" : null, "contractAddress" : null, "methodName" : null, "methodDesc" : null, @@ -3959,15 +4243,16 @@ _**详细描述: 估算调用合约交易的GAS**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:----------------------:| -------------------------- |:----:| -| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 | -|         sender | string | 交易创建者 | 是 | -|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 | -|         contractAddress | string | 智能合约地址 | 是 | -|         methodName | string | 方法名称 | 是 | -|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -|         args | object[] | 参数列表 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------------------------------------------------------- |:----------------------:| ------------------------------------------------------------------------- |:----:| +| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 | +|         sender | string | 交易创建者 | 是 | +|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 | +|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\]] | 否 | +|         contractAddress | string | 智能合约地址 | 是 | +|         methodName | string | 方法名称 | 是 | +|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +|         args | object[] | 参数列表 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3984,6 +4269,7 @@ _**request form data:**_ { "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "value" : 0, + "multyAssetValues" : null, "contractAddress" : "tNULSeBaNAKfKnLMR5XG5qtwXt5JS1b3QosZxg", "methodName" : "transfer", "methodDesc" : null, @@ -4148,6 +4434,7 @@ _**详细描述: 离线组装 - 调用合约的交易**_ "contractAddress" : null, "gasLimit" : 0, "value" : null, + "multyAssetValues" : null, "methodName" : null, "methodDesc" : null, "args" : null, @@ -4157,20 +4444,21 @@ _**详细描述: 离线组装 - 调用合约的交易**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:-------------------:| -------------------------- |:----:| -| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 | -|         sender | string | 交易创建者 | 是 | -|         senderBalance | biginteger | 账户余额 | 是 | -|         nonce | string | 账户nonce值 | 是 | -|         contractAddress | string | 智能合约地址 | 是 | -|         gasLimit | long | GAS限制 | 是 | -|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 | -|         methodName | string | 方法名 | 是 | -|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | -|         args | object[] | 参数列表 | 否 | -|         argsType | string[] | 参数类型列表 | 否 | -|         remark | string | 备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------------------------------------------------------------- |:-------------------:| ----------------------------------------------------------------------------------- |:----:| +| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 | +|         sender | string | 交易创建者 | 是 | +|         senderBalance | biginteger | 账户余额 | 是 | +|         nonce | string | 账户nonce值 | 是 | +|         contractAddress | string | 智能合约地址 | 是 | +|         gasLimit | long | GAS限制 | 是 | +|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 | +|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\,\,\,\]] | 否 | +|         methodName | string | 方法名 | 是 | +|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 | +|         args | object[] | 参数列表 | 否 | +|         argsType | string[] | 参数类型列表 | 否 | +|         remark | string | 备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -4192,6 +4480,7 @@ _**request form data:**_ "contractAddress" : "tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG", "gasLimit" : 14166, "value" : 0, + "multyAssetValues" : null, "methodName" : "transfer", "methodDesc" : null, "args" : [ "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", 3800 ], diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 8d6ffb2b21..7b33ecd0c9 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -36,7 +36,7 @@ io.nuls.v2 sdk4j - 1.1.2.RELEASE + 1.1.4.RELEASE io.nuls.v2 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index cae90c89b1..304ef847df 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -20,12 +20,13 @@ package io.nuls.provider.api.jsonrpc.controller; -import io.nuls.base.api.provider.contract.facade.*; -import io.nuls.provider.api.config.Config; -import io.nuls.provider.api.config.Context; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.ServiceManager; import io.nuls.base.api.provider.contract.ContractProvider; +import io.nuls.base.api.provider.contract.facade.CreateContractReq; +import io.nuls.base.api.provider.contract.facade.DeleteContractReq; +import io.nuls.base.api.provider.contract.facade.TokenTransferReq; +import io.nuls.base.api.provider.contract.facade.TransferToContractReq; import io.nuls.base.basic.AddressTool; import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.core.annotation.Autowired; @@ -34,6 +35,8 @@ import io.nuls.core.model.FormatValidUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.model.*; +import io.nuls.provider.api.config.Config; +import io.nuls.provider.api.config.Context; import io.nuls.provider.model.dto.*; import io.nuls.provider.model.jsonrpc.RpcErrorCode; import io.nuls.provider.model.jsonrpc.RpcResult; @@ -41,10 +44,12 @@ import io.nuls.provider.rpctools.ContractTools; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.Utils; import io.nuls.provider.utils.VerifyUtils; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.model.annotation.ApiType; +import io.nuls.v2.util.ContractUtil; import io.nuls.v2.util.NulsSDKTool; import java.math.BigInteger; @@ -153,7 +158,7 @@ public RpcResult contractCreate(List params) { @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "txHash", description = "调用合约的交易hash") @@ -763,7 +768,7 @@ public RpcResult validateContractCreate(List params) { @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "success", valueType = boolean.class, description = "验证成功与否"), @@ -869,7 +874,7 @@ public RpcResult imputedContractCreateGas(List params) { @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), - @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", canNull = true) + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1") @@ -1020,7 +1025,8 @@ public RpcResult contractCreateOffline(List params) { @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), @Parameter(parameterName = "argsType", requestType = @TypeDescriptor(value = String[].class), parameterDes = "参数类型列表", canNull = true), - @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true) + @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true), + @Parameter(parameterName = "multyAssetValues", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]]", canNull = true) }) @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "hash", description = "交易hash"), @@ -1069,6 +1075,13 @@ public RpcResult contractCallOffline(List params) { return RpcResult.paramError("methodName is empty"); } + String[][] multyAssetValues = null; + if (params.size() > 8) { + List multyAssetValueList = (List) params.get(8); + Object[] objArray = multyAssetValueList != null ? multyAssetValueList.toArray() : null; + multyAssetValues = ContractUtil.twoDimensionalArray(objArray); + } + // 增加多资产转入的参数 io.nuls.core.basic.Result result = NulsSDKTool.callContractTxOffline( sender, senderBalance, @@ -1080,7 +1093,8 @@ public RpcResult contractCallOffline(List params) { methodDesc, args, argsType, - remark); + remark, + Utils.multyAssetObjectArray(multyAssetValues)); return ResultUtil.getJsonRpcResult(result); } catch (Exception e) { Log.error(e); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index b741c4cc15..e7ed6e54e9 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -23,17 +23,20 @@ */ package io.nuls.provider.api.resources; -import io.nuls.base.api.provider.contract.facade.*; -import io.nuls.provider.api.config.Config; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.ServiceManager; import io.nuls.base.api.provider.contract.ContractProvider; +import io.nuls.base.api.provider.contract.facade.CreateContractReq; +import io.nuls.base.api.provider.contract.facade.DeleteContractReq; +import io.nuls.base.api.provider.contract.facade.TokenTransferReq; +import io.nuls.base.api.provider.contract.facade.TransferToContractReq; import io.nuls.base.basic.AddressTool; import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.model.*; +import io.nuls.provider.api.config.Config; import io.nuls.provider.model.ErrorData; import io.nuls.provider.model.RpcClientResult; import io.nuls.provider.model.dto.*; @@ -41,6 +44,7 @@ import io.nuls.provider.rpctools.ContractTools; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.Utils; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.util.NulsSDKTool; @@ -619,6 +623,8 @@ public RpcClientResult createTxOffline(ContractCreateOffline form) { @Key(name = "txHex", description = "交易序列化字符串") })) public RpcClientResult callTxOffline(ContractCallOffline form) { + // 增加多资产转入参数 + String[][] multyAssetValues = form.getMultyAssetValues(); io.nuls.core.basic.Result result = NulsSDKTool.callContractTxOffline( form.getSender(), form.getSenderBalance(), @@ -630,7 +636,8 @@ public RpcClientResult callTxOffline(ContractCallOffline form) { form.getMethodDesc(), form.getArgs(), form.getArgsType(), - form.getRemark()); + form.getRemark(), + Utils.multyAssetObjectArray(multyAssetValues)); return ResultUtil.getRpcClientResult(result); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractMultyAssetMergedTransferDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractMultyAssetMergedTransferDto.java new file mode 100644 index 0000000000..07fca644d5 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractMultyAssetMergedTransferDto.java @@ -0,0 +1,110 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.provider.model.dto; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.core.rpc.model.TypeDescriptor; + +import java.util.List; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractMultyAssetMergedTransferDto { + @ApiModelProperty(description = "合约生成交易:合约转账交易hash") + private String txHash; + @ApiModelProperty(description = "转出的合约地址") + private String from; + @ApiModelProperty(description = "转账金额") + private String value; + @ApiModelProperty(description = "转账金额资产链ID") + private int assetChainId; + @ApiModelProperty(description = "转账金额资产ID") + private int assetId; + @ApiModelProperty(description = "转入的地址列表", type = @TypeDescriptor(value = List.class, collectionElement = MultyAssetOutputDto.class)) + private List outputs; + @ApiModelProperty(description = "调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来)") + private String orginTxHash; + + public ContractMultyAssetMergedTransferDto() { + } + + public String getTxHash() { + return txHash; + } + + public void setTxHash(String txHash) { + this.txHash = txHash; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public List getOutputs() { + return outputs; + } + + public void setOutputs(List outputs) { + this.outputs = outputs; + } + + public String getOrginTxHash() { + return orginTxHash; + } + + public void setOrginTxHash(String orginTxHash) { + this.orginTxHash = orginTxHash; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java index fe5131352c..4adc28f112 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java @@ -62,14 +62,18 @@ public class ContractResultDto { private String value; @ApiModelProperty(description = "异常堆栈踪迹") private String stackTrace; - @ApiModelProperty(description = "合约转账列表(从合约转出)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMergedTransferDto.class)) + @ApiModelProperty(description = "合约转账列表(从合约转出主资产)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMergedTransferDto.class)) private List transfers; + @ApiModelProperty(description = "合约转账列表(从合约转出其他资产)", type = @TypeDescriptor(value = List.class, collectionElement = ContractMultyAssetMergedTransferDto.class)) + private List multyAssetTransfers; @ApiModelProperty(description = "合约事件列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) private List events; @ApiModelProperty(description = "调式合约事件列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) private List debugEvents; @ApiModelProperty(description = "合约token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractTokenTransferDto.class)) private List tokenTransfers; + @ApiModelProperty(description = "合约NRC721-token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractToken721TransferDto.class)) + private List token721Transfers; @ApiModelProperty(description = "合约调用外部命令的调用记录列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractInvokeRegisterCmdDto.class)) private List invokeRegisterCmds; @ApiModelProperty(description = "合约生成交易的序列化字符串列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) @@ -77,6 +81,22 @@ public class ContractResultDto { @ApiModelProperty(description = "备注") private String remark; + public List getMultyAssetTransfers() { + return multyAssetTransfers; + } + + public void setMultyAssetTransfers(List multyAssetTransfers) { + this.multyAssetTransfers = multyAssetTransfers; + } + + public List getToken721Transfers() { + return token721Transfers; + } + + public void setToken721Transfers(List token721Transfers) { + this.token721Transfers = token721Transfers; + } + public boolean isSuccess() { return success; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractToken721TransferDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractToken721TransferDto.java new file mode 100644 index 0000000000..791531e945 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractToken721TransferDto.java @@ -0,0 +1,95 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.provider.model.dto; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractToken721TransferDto { + @ApiModelProperty(description = "合约地址") + private String contractAddress; + @ApiModelProperty(description = "付款方") + private String from; + @ApiModelProperty(description = "收款方") + private String to; + @ApiModelProperty(description = "tokenId") + private String tokenId; + @ApiModelProperty(description = "token名称") + private String name; + @ApiModelProperty(description = "token符号") + private String symbol; + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getTokenId() { + return tokenId; + } + + public void setTokenId(String tokenId) { + this.tokenId = tokenId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/MultyAssetOutputDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/MultyAssetOutputDto.java new file mode 100644 index 0000000000..11bd4827f7 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/MultyAssetOutputDto.java @@ -0,0 +1,88 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.provider.model.dto; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + * @date: 2019-03-06 + */ +@ApiModel +public class MultyAssetOutputDto { + @ApiModelProperty(description = "转入地址") + private String to; + @ApiModelProperty(description = "转入金额") + private String value; + @ApiModelProperty(description = "转入金额资产链ID") + private int assetChainId; + @ApiModelProperty(description = "转入金额资产ID") + private int assetId; + @ApiModelProperty(description = "转入金额锁定时间") + private long lockTime; + + public MultyAssetOutputDto() { + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public long getLockTime() { + return lockTime; + } + + public void setLockTime(long lockTime) { + this.lockTime = lockTime; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java index d24e7ef5c1..70a806d409 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCall.java @@ -38,7 +38,7 @@ public class ContractCall extends ContractBase { private String contractAddress; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0") private BigInteger value; - @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", required = false) private String[][] multyAssetValues; @ApiModelProperty(description = "方法名", required = true) private String methodName; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCallOffline.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCallOffline.java index d28763dc3b..ed251124d2 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCallOffline.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCallOffline.java @@ -51,6 +51,8 @@ public class ContractCallOffline extends Base { private long gasLimit; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0") private BigInteger value; + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]]", required = false) + private String[][] multyAssetValues; @ApiModelProperty(description = "方法名", required = true) private String methodName; @ApiModelProperty(description = "方法描述,若合约内方法没有重载,则此参数可以为空", required = false) @@ -62,6 +64,14 @@ public class ContractCallOffline extends Base { @ApiModelProperty(description = "备注", required = false) private String remark; + public String[][] getMultyAssetValues() { + return multyAssetValues; + } + + public void setMultyAssetValues(String[][] multyAssetValues) { + this.multyAssetValues = multyAssetValues; + } + public String[][] getArgs(String[] types) { return ContractUtil.twoDimensionalArray(args, types); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java index d0db031045..6871ba0901 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractValidateCall.java @@ -43,7 +43,7 @@ public class ContractValidateCall extends Base { private String sender; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0", required = false) private long value; - @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", required = false) private String[][] multyAssetValues; @ApiModelProperty(description = "最大gas消耗", required = true) private long gasLimit; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java index f55b583892..6a911524e3 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ImputedGasContractCall.java @@ -43,7 +43,7 @@ public class ImputedGasContractCall extends Base { private String sender; @ApiModelProperty(description = "调用者向合约地址转入的主网资产金额,没有此业务时填0", required = false) private BigInteger value; - @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[,,]]", required = false) + @ApiModelProperty(description = "调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]]", required = false) private String[][] multyAssetValues; @ApiModelProperty(description = "智能合约地址", required = true) private String contractAddress; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java index d9d034b39d..87fe7c5f55 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java @@ -67,6 +67,7 @@ public class ApiDocTool { baseType.add(String.class); baseType.add(Object[].class); baseType.add(String[].class); + baseType.add(String[][].class); baseType.add(BigInteger.class); baseType.add(BigDecimal.class); } @@ -454,7 +455,7 @@ private static Object newInstance(Class cls) throws IllegalAccessException, Inst } else if(field.getType() == Set.class) { o1 = new HashSet<>(); } else if(field.getType().isArray()) { - o1 = Array.newInstance(field.getType(), 0); + o1 = Array.newInstance(field.getType().getComponentType(), 0); } else { o1 = field.getType().newInstance(); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java index 587a175118..2bd46a022e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java @@ -16,6 +16,7 @@ import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.model.ObjectUtils; +import io.nuls.v2.model.dto.ProgramMultyAssetValue; import java.io.IOException; import java.lang.reflect.Field; @@ -147,4 +148,18 @@ public static String[][] extractMultyAssetInfoFromCallTransaction(CoinData coinD return array; } + public static List multyAssetObjectArray(String[][] multyAssetValues) { + int length; + if (multyAssetValues == null || (length = multyAssetValues.length) == 0) { + return null; + } + List list = new ArrayList<>(length); + String[] value; + for (int i = 0; i < length; i++) { + value = multyAssetValues[i]; + list.add(new ProgramMultyAssetValue(new BigInteger(value[0]), String.valueOf(value[1]), Integer.valueOf(value[2]), Integer.valueOf(value[3]))); + } + return list; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java index 0b84c8006c..4a64facdd2 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractMultyAssetMergedTransferDto.java @@ -27,6 +27,7 @@ import io.nuls.base.data.NulsHash; import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; import io.nuls.contract.model.bo.MultyAssetOutput; +import io.nuls.core.rpc.model.ApiModel; import io.nuls.core.rpc.model.ApiModelProperty; import io.nuls.core.rpc.model.TypeDescriptor; @@ -38,6 +39,7 @@ /** * @author: PierreLuo */ +@ApiModel public class ContractMultyAssetMergedTransferDto { @ApiModelProperty(description = "合约生成交易:合约转账交易hash") private String txHash; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java index e84f229858..a7617ac05e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/MultyAssetOutputDto.java @@ -25,6 +25,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.contract.model.bo.MultyAssetOutput; +import io.nuls.core.rpc.model.ApiModel; import io.nuls.core.rpc.model.ApiModelProperty; import static io.nuls.contract.util.ContractUtil.bigInteger2String; @@ -33,6 +34,7 @@ * @author: PierreLuo * @date: 2019-03-06 */ +@ApiModel public class MultyAssetOutputDto { @ApiModelProperty(description = "转入地址") private String to; From 1ce20877926e04d79797ccb73344b21d2809eeda Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 5 Jan 2021 16:11:51 +0800 Subject: [PATCH 250/304] update offline contract transaction --- .../provider/api/jsonrpc/controller/ContractController.java | 4 ++-- .../nuls-api/src/main/java/io/nuls/provider/utils/Utils.java | 2 +- .../contract/tx/offline/ContractMultyAssetOfflineTest.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index 304ef847df..8cccc1a4a3 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -1076,8 +1076,8 @@ public RpcResult contractCallOffline(List params) { } String[][] multyAssetValues = null; - if (params.size() > 8) { - List multyAssetValueList = (List) params.get(8); + if (params.size() > 12) { + List multyAssetValueList = (List) params.get(12); Object[] objArray = multyAssetValueList != null ? multyAssetValueList.toArray() : null; multyAssetValues = ContractUtil.twoDimensionalArray(objArray); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java index 2bd46a022e..fa358dd482 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java @@ -157,7 +157,7 @@ public static List multyAssetObjectArray(String[][] mult String[] value; for (int i = 0; i < length; i++) { value = multyAssetValues[i]; - list.add(new ProgramMultyAssetValue(new BigInteger(value[0]), String.valueOf(value[1]), Integer.valueOf(value[2]), Integer.valueOf(value[3]))); + list.add(new ProgramMultyAssetValue(new BigInteger(value[0]), String.valueOf(value[3]), Integer.valueOf(value[1]), Integer.valueOf(value[2]))); } return list; } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java index 566d0d47d3..92413aeeb1 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/offline/ContractMultyAssetOfflineTest.java @@ -75,7 +75,7 @@ public class ContractMultyAssetOfflineTest { protected long gasLimit = 200000L; protected long gasPrice = 25L; protected long minutes_3 = 60 * 3; - protected String offlineContract = "tNULSeBaN5ZoJhP84ePhDsSENXMs5NzK24JjLX"; + protected String offlineContract = "tNULSeBaN31HBrLhXsWDkSz1bjhw5qGBcjafVJ"; // "http://localhost:18004/" protected String apiURL = "http://beta.api.nuls.io/"; From 3e10a7f6e190eae0ccf040424bd9836631144c20 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 6 Jan 2021 15:23:34 +0800 Subject: [PATCH 251/304] add contract time out --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 64ca65d54b..6ddc7561f0 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1662,7 +1662,7 @@ public Boolean call() { if (contractNotify) { Map map = null; try { - map = ContractCall.contractBatchEnd(chain, blockHeight); + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 3); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); From 102b329d5a4a5d974417a424bd98b49ead9344a4 Mon Sep 17 00:00:00 2001 From: Charlie <29900478@qq.com> Date: Wed, 6 Jan 2021 16:58:21 +0800 Subject: [PATCH 252/304] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuls/transaction/service/impl/TxServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 6ddc7561f0..2cd6224802 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -689,6 +689,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi } if (chain.getProtocolUpgrade().get()) { chain.getCanProtocolUpgrade().set(false); + nulsLogger.info("1_chain.getCanProtocolUpgrade().set(false);"); nulsLogger.info("Protocol Upgrade Package stop -chain:{} -best block height", chain.getChainId(), chain.getBestBlockHeight()); backTempPackablePool(chain, currentBatchPackableTxs); //放回可打包交易和孤儿 @@ -696,6 +697,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi //直接打空块 TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); chain.getCanProtocolUpgrade().set(true); + nulsLogger.info("1_chain.getCanProtocolUpgrade().set(true);"); return txPackage; } //如果本地最新区块+1 大于当前在打包区块的高度, 说明本地最新区块已更新,需要重新打包,把取出的交易放回到打包队列 @@ -955,6 +957,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi putBackPackablePool(chain, orphanTxSet); if (chain.getProtocolUpgrade().get()) { chain.getCanProtocolUpgrade().set(false); + nulsLogger.info("2_chain.getCanProtocolUpgrade().set(false);"); //协议升级直接打空块,取出的交易,倒序放入新交易处理队列 int size = packingTxList.size(); for (int i = size - 1; i >= 0; i--) { @@ -970,6 +973,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi } TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); chain.getCanProtocolUpgrade().set(true); + nulsLogger.info("2_chain.getCanProtocolUpgrade().set(true);"); return txPackage; } //检测预留传输时间 @@ -1662,7 +1666,7 @@ public Boolean call() { if (contractNotify) { Map map = null; try { - map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 3); + map = ContractCall.contractBatchEnd(chain, blockHeight); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); @@ -1951,6 +1955,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData } if (chain.getProtocolUpgrade().get()) { chain.getCanProtocolUpgrade().set(false); + nulsLogger.info("3_chain.getCanProtocolUpgrade().set(false);"); nulsLogger.info("Protocol Upgrade Package stop -chain:{} -best block height", chain.getChainId(), chain.getBestBlockHeight()); backTempPackablePool(chain, currentBatchPackableTxs); //放回可打包交易和孤儿 @@ -1958,6 +1963,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData //直接打空块 TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); chain.getCanProtocolUpgrade().set(true); + nulsLogger.info("3_chain.getCanProtocolUpgrade().set(true);"); return txPackage; } @@ -2237,6 +2243,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData putBackPackablePool(chain, orphanTxSet); if (chain.getProtocolUpgrade().get()) { chain.getCanProtocolUpgrade().set(false); + nulsLogger.info("4_chain.getCanProtocolUpgrade().set(false);"); //协议升级直接打空块,取出的交易,倒序放入新交易处理队列 int size = packingTxList.size(); for (int i = size - 1; i >= 0; i--) { @@ -2252,6 +2259,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData } TxPackage txPackage = new TxPackage(new ArrayList<>(), null, chain.getBestBlockHeight() + 1); chain.getCanProtocolUpgrade().set(true); + nulsLogger.info("4_chain.getCanProtocolUpgrade().set(true);"); return txPackage; } //检测预留传输时间 From 98a7490b2eb9612460f9706bb0ad7e038dee9ff5 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 7 Jan 2021 14:27:19 +0800 Subject: [PATCH 253/304] clear old cache --- .../src/main/java/io/nuls/contract/model/bo/Chain.java | 6 ++++++ .../contract/tx/SmartContractVersionChangeInvoker.java | 7 ++++--- .../io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java index ab7ad7d770..5d8d973914 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java @@ -183,6 +183,12 @@ public void setBatchInfo(BatchInfo batchInfo) { Log.error("Setting value error. Unkown blockType! - [{}]", blockType); } + public void clearOldBatchInfo() { + Log.info("clear Old BatchInfo."); + this.batchInfo = null; + this.verifyBatchInfo = null; + } + public BatchInfoV8 getBatchInfoV8() { Integer blockType = currentThreadBlockType.get(); if(blockType == null) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index 3f3025fc6d..764daeb647 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -43,10 +43,10 @@ public void process(int currentChainId) { ChainManager.chainHandle(currentChainId); Short currentVersion = ProtocolGroupManager.getCurrentVersion(currentChainId); Log.info("触发协议升级,chainId: [{}], 版本为: [{}]", currentChainId, currentVersion); + ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { - this.loadV8(currentVersion); + this.loadV8(chainManager.getChainMap().get(currentChainId), currentVersion); } - ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); // 缓存token注册资产的资产ID和token合约地址 Map chainMap = chainManager.getChainMap(); for (Chain chain : chainMap.values()) { @@ -75,10 +75,11 @@ public void process(int currentChainId) { } } - private void loadV8(int currentVersion) { + private void loadV8(Chain chain, int currentVersion) { if (isloadV8) { return; } + chain.clearOldBatchInfo(); Log.info("版本[{}]协议升级成功,重新初始化智能合约VM", currentVersion); VMFactory.reInitVM_v8(); isloadV8 = true; diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index d677596a98..dd43e11c2a 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1654,9 +1654,9 @@ public Boolean call() { List scNewList = new ArrayList<>(); String scStateRoot = preStateRoot; if (contractNotify) { - Map map = null; + Map map; try { - map = ContractCall.contractBatchEnd(chain, blockHeight); + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 10); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); From 8dc9c1e9a66acb206849b235e7dc7dddfb8fc754 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 7 Jan 2021 14:36:39 +0800 Subject: [PATCH 254/304] update --- .../src/main/java/io/nuls/contract/model/bo/Chain.java | 6 ++++++ .../contract/tx/SmartContractVersionChangeInvoker.java | 8 ++++---- .../io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java index ab7ad7d770..5d8d973914 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java @@ -183,6 +183,12 @@ public void setBatchInfo(BatchInfo batchInfo) { Log.error("Setting value error. Unkown blockType! - [{}]", blockType); } + public void clearOldBatchInfo() { + Log.info("clear Old BatchInfo."); + this.batchInfo = null; + this.verifyBatchInfo = null; + } + public BatchInfoV8 getBatchInfoV8() { Integer blockType = currentThreadBlockType.get(); if(blockType == null) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index 3f3025fc6d..da6460b480 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -9,7 +9,6 @@ import io.nuls.contract.util.Log; import io.nuls.contract.vm.VMFactory; import io.nuls.core.basic.VersionChangeInvoker; -import io.nuls.core.core.annotation.Component; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.exception.NulsException; @@ -43,10 +42,10 @@ public void process(int currentChainId) { ChainManager.chainHandle(currentChainId); Short currentVersion = ProtocolGroupManager.getCurrentVersion(currentChainId); Log.info("触发协议升级,chainId: [{}], 版本为: [{}]", currentChainId, currentVersion); + ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { - this.loadV8(currentVersion); + this.loadV8(chainManager.getChainMap().get(currentChainId), currentVersion); } - ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); // 缓存token注册资产的资产ID和token合约地址 Map chainMap = chainManager.getChainMap(); for (Chain chain : chainMap.values()) { @@ -75,10 +74,11 @@ public void process(int currentChainId) { } } - private void loadV8(int currentVersion) { + private void loadV8(Chain chain, int currentVersion) { if (isloadV8) { return; } + chain.clearOldBatchInfo(); Log.info("版本[{}]协议升级成功,重新初始化智能合约VM", currentVersion); VMFactory.reInitVM_v8(); isloadV8 = true; diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 2cd6224802..df6ee110d6 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1664,9 +1664,9 @@ public Boolean call() { List scNewList = new ArrayList<>(); String scStateRoot = preStateRoot; if (contractNotify) { - Map map = null; + Map map; try { - map = ContractCall.contractBatchEnd(chain, blockHeight); + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 10); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); From 7261584812101bef4cac54b436fb3bb6f5f25b60 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 7 Jan 2021 15:28:38 +0800 Subject: [PATCH 255/304] test --- module.ncf | 8 ++------ .../src/main/java/io/nuls/transaction/model/bo/Chain.java | 1 + .../transaction/rpc/upgrade/TxVersionChangeInvoker.java | 1 + .../io/nuls/transaction/service/impl/TxServiceImpl.java | 6 ++---- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/module.ncf b/module.ncf index f66f5247c0..a9140054c2 100644 --- a/module.ncf +++ b/module.ncf @@ -1,9 +1,9 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs +logPath=/Users/pierreluo/IdeaProjects/nuls_newer_2.0/logs logLevel=INFO -dataPath=../../../../data +dataPath=/Users/pierreluo/IdeaProjects/nuls_newer_2.0/data #默认本链ID chainId=1 #地址前缀 @@ -86,8 +86,6 @@ initTime=1594483200 deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [ledger] @@ -129,8 +127,6 @@ communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 dependent=smart-contract,cross-chain [cross-chain] -dataPath=../../../../../data -logPath=../../../../../Logs #跨链节点链接的最小值 minNodeAmount=3 #跨链节点链接的最大值 diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java index 7b1532f174..340573695f 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java @@ -131,6 +131,7 @@ public Chain() { this.orphanList = new LinkedList<>(); this.orphanMap = new ConcurrentHashMap<>(); this.protocolUpgrade = new AtomicBoolean(false); + this.canProtocolUpgrade = new AtomicBoolean(false); this.orphanListDataSize = new AtomicInteger(0); this.contractGenerateTxTypes = new HashSet<>(); } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java index 2e3feef7bf..0ae971bf22 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java @@ -42,6 +42,7 @@ public void process(int chainId) { try { //等待正在处理的交易处理结束(打包过程中的交易、新交易) while (!chain.getCanProtocolUpgrade().get()) { + chain.getLogger().info("GetCanProtocolUpgrade waiting, chainId:[{}]", chainId); Thread.sleep(100L); } } catch (InterruptedException e) { diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index df6ee110d6..26cee8b5a1 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1649,9 +1649,7 @@ public Boolean call() { List txHashList = TransactionCall.txModuleValidator(chain, entry.getKey(), entry.getValue(), blockHeaderStr); if (txHashList != null && txHashList.size() > 0) { - if (logger.isDebugEnabled()) { - logger.debug("batch module verify fail, module-code:{}, return count:{}", entry.getKey(), txHashList.size()); - } + logger.error("batch module verify fail, module-code:{}, return count:{}", entry.getKey(), txHashList.size()); throw new NulsException(TxErrorCode.TX_VERIFY_FAIL); } } @@ -2486,7 +2484,7 @@ public Boolean call() { if (contractNotify) { Map map; try { - map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 3); + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 10); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); From 4e32c0a126dd09b5a550c16bdfb1762286e57796 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 7 Jan 2021 16:03:08 +0800 Subject: [PATCH 256/304] update --- .../src/main/java/io/nuls/transaction/model/bo/Chain.java | 2 +- .../io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java index 340573695f..5372f3385e 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/bo/Chain.java @@ -131,7 +131,7 @@ public Chain() { this.orphanList = new LinkedList<>(); this.orphanMap = new ConcurrentHashMap<>(); this.protocolUpgrade = new AtomicBoolean(false); - this.canProtocolUpgrade = new AtomicBoolean(false); + this.canProtocolUpgrade = new AtomicBoolean(true); this.orphanListDataSize = new AtomicInteger(0); this.contractGenerateTxTypes = new HashSet<>(); } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java index 0ae971bf22..f3bbb87826 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/upgrade/TxVersionChangeInvoker.java @@ -40,6 +40,7 @@ public void process(int chainId) { //设置升级的标志,暂停打包交易(出空块)暂停新交易处理 chain.getProtocolUpgrade().set(true); try { + Thread.sleep(3000L); //等待正在处理的交易处理结束(打包过程中的交易、新交易) while (!chain.getCanProtocolUpgrade().get()) { chain.getLogger().info("GetCanProtocolUpgrade waiting, chainId:[{}]", chainId); From 192a6000f48f872fd727ab14e561d51b96d8bd1b Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Fri, 8 Jan 2021 15:09:18 +0800 Subject: [PATCH 257/304] update db initial --- .../io/nuls/core/rockdb/manager/RocksDBManager.java | 10 +++++++--- .../java/io/nuls/contract/SmartContractBootStrap.java | 11 +++++++---- .../io/nuls/contract/constant/ContractDBConstant.java | 1 + 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java index 3dfb358050..6f12a15a76 100644 --- a/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java +++ b/common/nuls-core-rockdb/src/main/java/io/nuls/core/rockdb/manager/RocksDBManager.java @@ -70,10 +70,10 @@ public class RocksDBManager { * @throws Exception 数据库打开连接异常 */ public static void init(final String path) throws Exception { - init(path, null); + init(path, null, null); } - public static void init(final String path, Options options) throws Exception { + public static void init(final String path, Options options, Set skipTables) throws Exception { synchronized (RocksDBManager.class) { File dir = DBUtils.loadDataPath(path); dataPath = dir.getPath(); @@ -82,7 +82,11 @@ public static void init(final String path, Options options) throws Exception { RocksDB db; String dbPath = null; for (File tableFile : tableFiles) { - //缓存中已存在的数据库连接不再重复打开 + // 跳过初始化 + if (skipTables != null && skipTables.contains(tableFile.getName())) { + continue; + } + // 缓存中已存在的数据库连接不再重复打开 if (!tableFile.isDirectory() || TABLES.get(tableFile.getName()) != null) { continue; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java index a523eec8d0..774f414ddc 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java @@ -27,7 +27,7 @@ import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; -import io.nuls.core.rockdb.service.RocksDBService; +import io.nuls.core.rockdb.manager.RocksDBManager; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.modulebootstrap.Module; @@ -38,11 +38,12 @@ import io.nuls.core.rpc.util.NulsDateUtils; import java.io.File; -import java.io.IOException; import java.lang.reflect.Field; import java.nio.charset.Charset; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import static io.nuls.contract.constant.ContractConstant.*; import static java.nio.charset.StandardCharsets.UTF_8; @@ -183,8 +184,10 @@ private void initNRC721Standard() { * 初始化数据库 * Initialization database */ - private void initDB() throws IOException { - RocksDBService.init(ContractContext.DATA_PATH); + private void initDB() throws Exception { + Set skipTables = new HashSet<>(); + skipTables.add(ContractDBConstant.DB_NAME_CONTRACT + "_" + contractConfig.getChainConfig().getChainId()); + RocksDBManager.init(ContractContext.DATA_PATH, null, skipTables); ContractUtil.createTable(ContractDBConstant.DB_NAME_CONGIF); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractDBConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractDBConstant.java index 94dcdb87c8..811ef2e39e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractDBConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractDBConstant.java @@ -39,6 +39,7 @@ public interface ContractDBConstant { */ String DB_NAME_CONGIF = "contract_config"; + String DB_NAME_CONTRACT = "contract"; String DB_NAME_CONTRACT_ADDRESS = "contract_address"; String DB_NAME_CONTRACT_EXECUTE_RESULT = "contract_execute_result"; From e391f82db98a689b7c252e94e4422f9c3abea31a Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 11 Jan 2021 13:55:49 +0800 Subject: [PATCH 258/304] fix bug --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index dd43e11c2a..41401765b6 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -935,7 +935,7 @@ public TxPackage getPackableTxs(Chain chain, long endtimestamp, long maxTxDataSi } } //将智能合约生成的返还GAS的tx加到队尾 - if (contractGenerateTxs.size() > 0) { + if (!hasTxbackPackablePool && contractGenerateTxs.size() > 0) { String csTxStr = contractGenerateTxs.get(contractGenerateTxs.size() - 1); if (TxUtil.extractTxTypeFromTx(csTxStr) == TxType.CONTRACT_RETURN_GAS) { packableTxs.add(csTxStr); @@ -2209,7 +2209,7 @@ public TxPackage getPackableTxsV8(Chain chain, long endtimestamp, long maxTxData } } //将智能合约生成的返还GAS的tx加到队尾 - if (contractGenerateTxs.size() > 0) { + if (!hasTxbackPackablePool && contractGenerateTxs.size() > 0) { String csTxStr = contractGenerateTxs.get(contractGenerateTxs.size() - 1); if (TxUtil.extractTxTypeFromTx(csTxStr) == TxType.CONTRACT_RETURN_GAS) { packableTxs.add(csTxStr); From 1facb04393aa4b5cb5e038fd1735789ff104c6f0 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Mon, 11 Jan 2021 17:19:09 +0800 Subject: [PATCH 259/304] fix bug about conflict contract transaction --- .../tx/pocm/ContractPOCMSendTxTest.java | 36 ++++++++++++------- .../service/impl/TxServiceImpl.java | 4 ++- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index 8e36a60d07..e8301a4a3d 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -82,11 +82,11 @@ public void createConsensusEnhancementContract() throws Exception { @Test public void createAgent()throws Exception{ Map params = new HashMap<>(); - params.put("agentAddress",sender); + params.put("agentAddress","tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); params.put(Constants.CHAIN_ID,2); params.put("deposit","2000000000000"); params.put("commissionRate",10); - params.put("packingAddress","tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe"); + params.put("packingAddress","tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD"); params.put("password","nuls123456"); params.put("rewardAddress",sender); Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_createAgent", params); @@ -101,7 +101,7 @@ public void depositAgent()throws Exception{ Map params = new HashMap<>(); params.put(Constants.CHAIN_ID,2); params.put("address",sender); - params.put("agentHash","08423ef3f75ad4426f285e950626aeeeeaba07df3dd05161f31c4f49103ef5d4"); + params.put("agentHash","4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835"); params.put("deposit","30000000000000"); params.put("password", "nuls123456"); Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_depositToAgent", params); @@ -116,12 +116,21 @@ public void withdraw()throws Exception{ Mapparams = new HashMap<>(); params.put(Constants.CHAIN_ID,2); params.put("address", sender); - params.put("txHash","b7bf0b75b972e040f2a071e5ef3825a7dee69d864a300e75d8200d7f0c596cdd"); + params.put("txHash","055f0a738da18818c6fed2b9ae29e5c300b4f327676f7a59aeaa7afdfaa264b2"); params.put("password", "nuls123456"); Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_withdraw", params); System.out.println(cmdResp.getResponseData()); } + @Test + public void getAgentInfo()throws Exception{ + Mapparams = new HashMap<>(); + params.put(Constants.CHAIN_ID,2); + params.put("agentHash","4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_getAgentInfo", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + /** * 流程 - 创建TOKEN, POCM, 添加节点,抵押,退出 */ @@ -137,13 +146,16 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin openConsensus"); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "openConsensus", null, "remark"); Log.info("begin addOtherAgent"); - this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("08423ef3f75ad4426f285e950626aeeeeaba07df3dd05161f31c4f49103ef5d4").toArray()); + this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835").toArray()); Log.info("begin depositForOwn {}", sender);*/ - String nrc20Locked = "tNULSeBaN2VmScSuWZt9VWHRrwcFPGQ3MUQ9um"; + String nrc20Locked = "tNULSeBaN2raFV6Z31pTy5oFc2yNL9gQhwnv6a"; contractAddress_nrc20 = nrc20Locked; - contractAddress = "tNULSeBaN2hxBq9S6Qn1iRjNLHERcZjizE1R8d"; + contractAddress = "tNULSeBaNAEiicCEsWR3f4HoZdhtWkVXdWqvpa"; String pocm = contractAddress; + //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "removeAgent", null, "remark", List.of("4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835").toArray()); + //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "addOtherAgent", null, "remark", List.of("4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835").toArray()); + //Log.info("begin quit {}", sender); //this.invokeCall(sender, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); //Log.info("begin quit {}", toAddress5); @@ -151,11 +163,11 @@ public void testConsensusDepositOthersProcessor() throws Exception { //Log.info("begin quit {}", toAddress6); //this.invokeCall(toAddress6, BigInteger.ZERO, contractAddress, "quit", null, "remark", "0"); // - this.invokeCall(sender, BigInteger.valueOf(3000_00000000L), contractAddress, "depositForOwn", null, "remark"); - Log.info("begin depositForOwn {}", toAddress5); - this.invokeCall(toAddress5, BigInteger.valueOf(2100_00000000L), contractAddress, "depositForOwn", null, "remark"); - Log.info("begin depositForOwn {}", toAddress6); - this.invokeCall(toAddress6, BigInteger.valueOf(1200_00000000L), contractAddress, "depositForOwn", null, "remark"); + this.invokeCall(sender, BigInteger.valueOf(150000_00000000L), contractAddress, "depositForOwn", null, "remark"); + //Log.info("begin depositForOwn {}", toAddress5); + //this.invokeCall(toAddress5, BigInteger.valueOf(2100_00000000L), contractAddress, "depositForOwn", null, "remark"); + //Log.info("begin depositForOwn {}", toAddress6); + //this.invokeCall(toAddress6, BigInteger.valueOf(1200_00000000L), contractAddress, "depositForOwn", null, "remark"); /*TimeUnit.SECONDS.sleep(30); Log.info("begin quit {}", sender); diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 41401765b6..125c64d833 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1246,6 +1246,8 @@ private boolean processContractTxs(Chain chain, String moduleCode, List //都执行通过 return false; } + chain.getLogger().warn("Package module verify failed -txModuleValidator Exception:{}, module-code:{}, count:{} , return count:{}", + BaseConstant.TX_VALIDATOR, moduleCode, verifyList.size(), txHashList.size()); if (batchVerify) { //如果是验证区块交易,有不通过的 直接返回 return true; @@ -1282,7 +1284,7 @@ private boolean processContractTxs(Chain chain, String moduleCode, List } } Iterator itcs = verifyList.iterator(); - while (its.hasNext()) { + while (itcs.hasNext()) { Transaction tx = TxUtil.getInstanceRpcStr(itcs.next(), Transaction.class); if (hash.equals(tx.getHash().toHex())) { itcs.remove(); From e761f034ea5aa7212706446e272ee452b7446b2f Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 12 Jan 2021 10:42:45 +0800 Subject: [PATCH 260/304] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/nuls/crosschain/nuls/CrossChainBootStrap.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java index 763e6c0a58..c5a7b04ade 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/CrossChainBootStrap.java @@ -161,11 +161,11 @@ public void onDependenciesReady(Module module){ chainManager.setRegisteredCrossChainList(registeredChainMessage.getChainInfoList()); } } - chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() == 9) - .forEach(chainInfo -> { - Log.info("chain id {} 验证人列表:{}",chainInfo.getChainId(),chainInfo.getVerifierList()); - // Log.info("当前高度:{}",chainManager.getChainHeaderMap().get(1).getHeight()); - });; +// chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() == 9) +// .forEach(chainInfo -> { +// Log.info("chain id {} 验证人列表:{}",chainInfo.getChainId(),chainInfo.getVerifierList()); +// // Log.info("当前高度:{}",chainManager.getChainHeaderMap().get(1).getHeight()); +// });; /* * 如果为账户模块启动,向账户模块发送链前缀 */ From 659b34de7425f031146699e97aab9e0336d59f45 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 12 Jan 2021 11:30:16 +0800 Subject: [PATCH 261/304] fix bug about setContractGenerateTxTypes --- .../constant/ContractCmdConstant.java | 1 - .../contract/rpc/call/TransactionCall.java | 14 ++++++++ .../io/nuls/contract/rpc/cmd/ContractCmd.java | 30 ----------------- .../tx/SmartContractVersionChangeInvoker.java | 25 ++++++++++++++- .../transaction/TransactionBootstrap.java | 10 ------ .../io/nuls/transaction/constant/TxCmd.java | 2 ++ .../transaction/rpc/call/ContractCall.java | 25 --------------- .../transaction/rpc/cmd/TransactionCmd.java | 32 +++++++++++++++++++ 8 files changed, 72 insertions(+), 67 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java index 21d70751fa..3c09846a5d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java @@ -45,7 +45,6 @@ public interface ContractCmdConstant { String INITIAL_ACCOUNT_TOKEN = "sc_initial_account_token"; String REGISTER_CMD_FOR_CONTRACT = "sc_register_cmd_for_contract"; String TRIGGER_PAYABLE_FOR_CONSENSUS_CONTRACT = "sc_trigger_payable_for_consensus_contract"; - String GET_TX_TYPE_LIST_FROM_CONTRACT_GENERATED = "sc_get_tx_type_list_from_contract_generated"; /** * user cmd diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/TransactionCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/TransactionCall.java index e0f37f9fd9..7b19286a76 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/TransactionCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/TransactionCall.java @@ -30,6 +30,8 @@ import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import java.util.HashMap; import java.util.List; @@ -98,5 +100,17 @@ public static boolean baseValidateTx(int chainId, String txData) throws NulsExce } } + public static boolean setContractGenerateTxTypes(int chainId, List txTypeList) throws NulsException { + try { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("txTypeList", txTypeList); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.TX.abbr, "tx_setContractGenerateTxTypes", params); + return cmdResp.isSuccess(); + } catch (Exception e) { + throw new NulsException(e); + } + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java index 91971b0318..1cb1c51a05 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java @@ -644,36 +644,6 @@ public Response getCrossTokenSystemContract(Map params) { } } - @CmdAnnotation(cmd = GET_TX_TYPE_LIST_FROM_CONTRACT_GENERATED, version = 1.0, description = "通知当前批次结束并返回结果/batch end") - @Parameters(value = { - @Parameter(parameterName = "chainId", parameterType = "int", parameterDes = "链id") - }) - @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { - @Key(name = "list", valueType = List.class, valueElement = String.class, description = "智能合约模块会新生成的交易类型列表(合约返回GAS交易除外)") - })) - public Response getTxTypeListFromContractGenerated(Map params) { - try { - Integer chainId = (Integer) params.get("chainId"); - ChainManager.chainHandle(chainId); - Log.info("The generated list of transaction types is sent to the transaction module"); - Map resultMap = MapUtil.createHashMap(2); - List list = List.of( - TxType.CONTRACT_TRANSFER, - TxType.CONTRACT_CREATE_AGENT, - TxType.CONTRACT_DEPOSIT, - TxType.CONTRACT_CANCEL_DEPOSIT, - TxType.CONTRACT_STOP_AGENT); - if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_V250) { - list.add(TxType.CONTRACT_TOKEN_CROSS_TRANSFER); - } - resultMap.put("list", list); - return success(resultMap); - } catch (Exception e) { - Log.error(e); - return failed(e.getMessage()); - } - } - private String extractMsg(Result result) { if(result == null) { return EMPTY; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index 764daeb647..409786553c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -6,13 +6,15 @@ import io.nuls.contract.model.bo.Chain; import io.nuls.contract.model.bo.ContractTokenAssetsInfo; import io.nuls.contract.rpc.call.LedgerCall; +import io.nuls.contract.rpc.call.TransactionCall; import io.nuls.contract.util.Log; import io.nuls.contract.vm.VMFactory; import io.nuls.core.basic.VersionChangeInvoker; -import io.nuls.core.core.annotation.Component; +import io.nuls.core.constant.TxType; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.exception.NulsException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -47,6 +49,8 @@ public void process(int currentChainId) { if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { this.loadV8(chainManager.getChainMap().get(currentChainId), currentVersion); } + // 向交易模块设置智能合约生成交易类型 + setContractGenerateTxTypes(currentChainId, currentVersion); // 缓存token注册资产的资产ID和token合约地址 Map chainMap = chainManager.getChainMap(); for (Chain chain : chainMap.values()) { @@ -75,6 +79,25 @@ public void process(int currentChainId) { } } + private void setContractGenerateTxTypes(int currentChainId, Short currentVersion) { + List list = List.of( + TxType.CONTRACT_TRANSFER, + TxType.CONTRACT_CREATE_AGENT, + TxType.CONTRACT_DEPOSIT, + TxType.CONTRACT_CANCEL_DEPOSIT, + TxType.CONTRACT_STOP_AGENT); + List resultList = new ArrayList<>(); + resultList.addAll(list); + if(currentVersion >= ContractContext.UPDATE_VERSION_V250) { + resultList.add(TxType.CONTRACT_TOKEN_CROSS_TRANSFER); + } + try { + TransactionCall.setContractGenerateTxTypes(currentChainId, resultList); + } catch (NulsException e) { + Log.warn("获取智能合约生成交易类型异常", e); + } + } + private void loadV8(Chain chain, int currentVersion) { if (isloadV8) { return; diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java index b3a6be5469..9e7350bf2c 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java @@ -31,7 +31,6 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; -import io.nuls.core.exception.NulsException; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; @@ -46,7 +45,6 @@ import io.nuls.transaction.constant.TxDBConstant; import io.nuls.transaction.manager.ChainManager; import io.nuls.transaction.model.bo.Chain; -import io.nuls.transaction.rpc.call.ContractCall; import io.nuls.transaction.utils.DBUtil; import io.nuls.transaction.utils.TxUtil; @@ -118,14 +116,6 @@ public void onDependenciesReady(Module module) { LOG.info("module [{}] is connected, version [{}]", module.getName(), module.getVersion()); if (ModuleE.SC.abbr.equals(module.getName())) { txConfig.setCollectedSmartContractModule(true); - //add at 2019-12-31 增加获取智能合约生成的交易类型 - try { - for(Chain chain : chainManager.getChainMap().values()) { - chain.setContractGenerateTxTypes(ContractCall.getContractGenerateTxTypes(chain)); - } - } catch (NulsException e) { - throw new RuntimeException(e); - } } // end code by pierre if (ModuleE.NW.abbr.equals(module.getName())) { diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxCmd.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxCmd.java index 14ef27d0c4..4286e239cc 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxCmd.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxCmd.java @@ -52,6 +52,8 @@ public final class TxCmd { public static final String TX_BLOCK_HEIGHT = "tx_blockHeight"; public static final String TX_VERIFYTX = "tx_verifyTx"; + public static final String TX_SETCONTRACTGENERATETXTYPES = "tx_setContractGenerateTxTypes"; + /** * 修改节点共识状态 * Modify the node consensus state diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java index 624e984b88..1e155eb2d4 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/ContractCall.java @@ -202,29 +202,4 @@ public static Map contractPackageBatchEnd(Chain chain, long bloc } } - /** - * 获取智能合约模块生成的系统交易类型(包括共识,跨链等;不包含gas返还交易) - * @param chain - * @return - * @throws NulsException - */ - public static Set getContractGenerateTxTypes(Chain chain) throws NulsException { - try { - Map params = new HashMap(TxConstant.INIT_CAPACITY_8); - params.put(Constants.CHAIN_ID, chain.getChainId()); - HashMap result = (HashMap) TransactionCall.requestAndResponse(ModuleE.SC.abbr, "sc_get_tx_type_list_from_contract_generated", params); - List value = (List) result.get("list"); - if(null == value){ - chain.getLogger().error("call sc_get_tx_type_list_from_contract_generated response data is null, error:{}", - TxErrorCode.REMOTE_RESPONSE_DATA_NOT_FOUND.getCode()); - throw new NulsException(TxErrorCode.REMOTE_RESPONSE_DATA_NOT_FOUND); - } - Set contractGenerateTxTypes = new HashSet<>(); - contractGenerateTxTypes.addAll(value); - return contractGenerateTxTypes; - } catch (RuntimeException e) { - chain.getLogger().error(e); - throw new NulsException(TxErrorCode.RPC_REQUEST_FAILD); - } - } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java index 4284724170..afbcf75c4c 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/cmd/TransactionCmd.java @@ -682,6 +682,38 @@ public Response batchVerify(Map params) { } + @CmdAnnotation(cmd = TxCmd.TX_SETCONTRACTGENERATETXTYPES, priority = CmdPriority.HIGH, version = 1.0, description = "设置智能合约模块生成的系统交易类型(包括共识,跨链等;不包含gas返还交易)") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "txTypeList", requestType = @TypeDescriptor(value = List.class, collectionElement = Integer.class), parameterDes = "智能合约模块生成的系统交易类型(包括共识,跨链等;不包含gas返还交易)"), + }) + @ResponseData(description = "无特定返回值,没有错误即设置成功") + public Response setContractGenerateTxTypes(Map params) { + Chain chain = null; + try { + ObjectUtils.canNotEmpty(params.get("chainId"), TxErrorCode.PARAMETER_ERROR.getMsg()); + ObjectUtils.canNotEmpty(params.get("txTypeList"), TxErrorCode.PARAMETER_ERROR.getMsg()); + chain = chainManager.getChain((Integer) params.get("chainId")); + if (null == chain) { + throw new NulsException(TxErrorCode.CHAIN_NOT_FOUND); + } + List txTypeList = (List) params.get("txTypeList"); + if (txTypeList == null) { + txTypeList = new ArrayList<>(); + } + chain.setContractGenerateTxTypes(new HashSet<>(txTypeList)); + chain.getLogger().info("设置智能合约生成交易类型: {}", Arrays.toString(txTypeList.toArray())); + return success(); + } catch (NulsException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(TxErrorCode.SYS_UNKOWN_EXCEPTION); + } + + } + @CmdAnnotation(cmd = TxCmd.TX_CS_STATE, version = 1.0, description = "设置节点打包状态(由共识模块设置)/Set the node packaging state") @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), From 0f31bac370dc0503564520e21db552418a9221f3 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 12 Jan 2021 12:06:28 +0800 Subject: [PATCH 262/304] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=BA=BA=E4=B8=A2=E5=A4=B1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/nuls/poc/service/impl/AgentServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java index 494a4d49a6..c9c4f91541 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java @@ -586,8 +586,10 @@ public Result getPackerInfo(Map params) { for (MeetingMember meetingMember : members) { localPackAddressList.add(AddressTool.getStringAddressByBytes(meetingMember.getAgent().getPackingAddress())); } + if (null != localPackAddressList && !localPackAddressList.isEmpty()) { + resultMap.put("address", localPackAddressList.get(0)); + } resultMap.put("addresses", localPackAddressList); - resultMap.put("address", localPackAddressList.get(0)); resultMap.put("password", chain.getConfig().getPassword()); } List packAddressList = new ArrayList<>(); From 5a6f0b1c37b4665a9c0c0e70c1d08079ea6901b1 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 14 Jan 2021 11:06:57 +0800 Subject: [PATCH 263/304] add time out --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index fce1ba6aee..217c16e39f 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -1533,7 +1533,7 @@ public Map batchVerify(Chain chain, List txStrList, Bloc contractNotify = true; } try { - if (!ContractCall.invokeContract(chain, RPCUtil.encode(tx.serialize()), 1)) { + if (!ContractCall.invokeContract(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 10)) { if (logger.isDebugEnabled()) { logger.debug("batch verify failed. invokeContract fail"); } @@ -2359,7 +2359,7 @@ public Map batchVerifyV8(Chain chain, List txStrList, Bl } try { // 调用执行智能合约 - Map invokeContractRs = ContractCall.invokeContractV8(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 2); + Map invokeContractRs = ContractCall.invokeContractV8(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 10); //boolean success = (boolean) invokeContractRs.get("success"); long gasUsed = Long.valueOf(invokeContractRs.get("gasUsed").toString()); List contractTxList = (List) invokeContractRs.get("txList"); From 31403752412e856baf84d8b9f091e99f785b0922 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 19 Jan 2021 10:29:35 +0800 Subject: [PATCH 264/304] remove test code --- .../main/java/io/nuls/contract/vm/Heap.java | 8 ++--- .../vm/program/impl/ProgramExecutorImpl.java | 33 ++++++++++--------- .../datasource/rocksdb/RocksDbDataSource.java | 24 ++++++-------- .../java/org/ethereum/db/RepositoryImpl.java | 28 ++++++++-------- 4 files changed, 45 insertions(+), 48 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 05d550c55d..1db5071722 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -665,7 +665,7 @@ public ObjectRef loadContract(byte[] address, ClassCode contractCode, Repository public Map contractState() { Map contractState = new LinkedHashMap<>(1024); - Log.info("=-=-=-=-=-= contractState - objectRefCount: {}, hashCode: {}", this.objectRefCount, this.objectRefCount.hashCode()); + //Log.info("=-=-=-=-=-= contractState - objectRefCount: {}, hashCode: {}", this.objectRefCount, this.objectRefCount.hashCode()); contractState.put(OBJECT_REF_COUNT, new DataWord(this.objectRefCount.getValue())); Set stateObjectRefs = new LinkedHashSet<>(1024); String className = this.contract.getVariableType().getType(); @@ -688,8 +688,8 @@ public Map contractState() { } String key = JsonUtils.encode(objectRef, classNames); String value = JsonUtils.encode(fields, classNames); - Log.info("[{}]modified objectRef: {}, fields: {}", j, objectRef, fields); - Log.info("[{}]modified key: {}, value: {}", j, key, value); + //Log.info("[{}]modified objectRef: {}, fields: {}", j, objectRef, fields); + //Log.info("[{}]modified key: {}, value: {}", j, key, value); contractState.put(new DataWord(key), new DataWord(value)); if (objectRef.isArray()) { for (String k : fields.keySet()) { @@ -705,7 +705,7 @@ public Map contractState() { clazz = ObjectRef.class; } String arrayValue = JsonUtils.encodeArray(object, clazz, classNames); - Log.info("[{}]modified arrayKey: {}, arrayValue: {}", j, arrayKey, arrayValue); + //Log.info("[{}]modified arrayKey: {}, arrayValue: {}", j, arrayKey, arrayValue); contractState.put(new DataWord(arrayKey), new DataWord(arrayValue)); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index 9546006ddc..d24324c632 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -339,10 +339,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done - Log.debug("++++++++++++++++++++"); - Log.warn(programInvoke.toString()); - Log.info("this.contractObjectRefCount: {}", this.contractObjectRefCount); - Log.info("vm.heap.objectRefCount: {}", vm.heap.objectRefCount); + //Log.debug("++++++++++++++++++++"); + //Log.warn(programInvoke.toString()); + //Log.info("this.contractObjectRefCount: {}", this.contractObjectRefCount); + //Log.info("vm.heap.objectRefCount: {}", vm.heap.objectRefCount); boolean isUpgradedV240 = ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) >= ContractContext.UPDATE_VERSION_V240; if(isUpgradedV240) { if(contractObjects == null) { @@ -352,7 +352,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { Map> objectRefMapMap = contractObjects.get(contractAddress); if(objectRefMapMap != null) { if(programInvoke.isInternalCall()) { - Log.info("共享heap.objects"); + //Log.info("共享heap.objects"); vm.heap.objects = objectRefMapMap; } } else { @@ -366,7 +366,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { Map arraysMap = contractArrays.get(contractAddress); if(arraysMap != null) { if(programInvoke.isInternalCall()) { - Log.info("共享heap.arrays"); + //Log.info("共享heap.arrays"); vm.heap.arrays = arraysMap; } } else { @@ -374,18 +374,18 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } } if(contractChanges == null) { - Log.info("新建map和heap.changes"); + //Log.info("新建map和heap.changes"); contractChanges = new HashMap<>(); contractChanges.put(contractAddress, vm.heap.changes); } else { Set changesObjectRefs = contractChanges.get(contractAddress); if(changesObjectRefs != null) { if(programInvoke.isInternalCall()) { - Log.info("共享heap.changes: {}", changesObjectRefs.hashCode()); + //Log.info("共享heap.changes: {}", changesObjectRefs.hashCode()); vm.heap.changes = changesObjectRefs; } } else { - Log.info("新增heap.changes"); + //Log.info("新增heap.changes"); contractChanges.put(contractAddress, vm.heap.changes); } } @@ -442,7 +442,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done if(isUpgradedV240) { if(contractObjectRefCount == null) { - Log.info("新建map和heap.objectRefCount"); + //Log.info("新建map和heap.objectRefCount"); contractObjectRefCount = new HashMap<>(); contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); @@ -450,15 +450,16 @@ private ProgramResult execute(ProgramInvoke programInvoke) { BigIntegerWrapper objectRefCount = contractObjectRefCount.get(contractAddress); if(objectRefCount != null) { if(programInvoke.isInternalCall()) { - Log.info("共享heap.objectRefCount: {}", objectRefCount.hashCode()); + //Log.info("共享heap.objectRefCount: {}", objectRefCount.hashCode()); vm.heap.objectRefCount = objectRefCount; - } else { - Log.info("问题heap.objectRefCount"); } + //else { + //Log.info("问题heap.objectRefCount"); + //} } else { - Log.info("新增heap.objectRefCount"); + //Log.info("新增heap.objectRefCount"); contractObjectRefCount.put(contractAddress, vm.heap.objectRefCount); } @@ -556,10 +557,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { for (Map.Entry entry : contractState.entrySet()) { DataWord key = entry.getKey(); DataWord value = entry.getValue(); - Log.info("add storage row, key: {}, value: {}", key.asString(), value.asString()); + //Log.info("add storage row, key: {}, value: {}", key.asString(), value.asString()); repository.addStorageRow(contractAddressBytes, key, value); } - Log.debug("---------------------"); + //Log.debug("---------------------"); logTime("add contract state"); if (programInvoke.isCreate()) { diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java index 3718b4223a..9994ccd813 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/datasource/rocksdb/RocksDbDataSource.java @@ -22,7 +22,6 @@ import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.model.StringUtils; import io.nuls.core.rockdb.manager.RocksDBManager; -import io.nuls.core.rockdb.service.BatchOperation; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rockdb.util.DBUtils; import org.apache.commons.lang3.ArrayUtils; @@ -40,9 +39,6 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -import static org.ethereum.db.RepositoryImpl.threadLocal; -import static org.ethereum.util.ByteUtil.toHexString; - /** * @author Roman Mandeleil * @since 18.01.2015 @@ -91,7 +87,7 @@ public void init(DbSettings settings) { this.settings = settings; resetDbLock.writeLock().lock(); try { - logger.debug("~> RocksDbDataSource.init(): " + name); + //logger.debug("~> RocksDbDataSource.init(): " + name); if (isAlive()) { return; @@ -110,7 +106,7 @@ public void init(DbSettings settings) { alive = true; - logger.debug("<~ RocksDbDataSource.init(): " + name); + //logger.debug("<~ RocksDbDataSource.init(): " + name); } catch (Exception e) { logger.error("RocksDbDataSource.init() error", e); } finally { @@ -133,7 +129,7 @@ private RocksDB createTable(String area) { dir.mkdirs(); } dataPath = dataPath + File.separator + area + File.separator + "rocksdb"; - Log.info("Contract dataPath is " + dataPath); + //Log.info("Contract dataPath is " + dataPath); Options options = new Options(); options.setCreateIfMissing(true); @@ -189,7 +185,7 @@ public String getName() { @Override public byte[] get(byte[] key) { - long startTime = System.nanoTime(); + //long startTime = System.nanoTime(); resetDbLock.readLock().lock(); try { //if (Log.isTraceEnabled()) { @@ -199,7 +195,7 @@ public byte[] get(byte[] key) { byte[] ret = rocksDB.get(key); //if (Log.isInfoEnabled()) { - Log.info("[{}]<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", threadLocal.get(), System.nanoTime() - startTime); + // Log.info("[{}]<~ db.get(): " + name + ", key: " + toHexString(key) + ", " + (ret == null ? "null" : ret.length) + ", cost {}", threadLocal.get(), System.nanoTime() - startTime); //} return ret; } catch (Exception e) { @@ -229,7 +225,7 @@ public void put(byte[] key, byte[] value) { //} rocksDB.put(key, value); //if (Log.isInfoEnabled()) { - Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); + //Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(key) + ", " + (value == null ? "null" : value.length)); //} } catch (Exception e) { logger.error("RocksDbDataSource.put() error", e); @@ -268,10 +264,10 @@ private void updateBatchInternal(Map rows) throws Exception { Set> entrySet = rows.entrySet(); for (Map.Entry entry : entrySet) { if (entry.getValue() == null) { - Log.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(entry.getKey())); + //Log.info("<~ RocksDbDataSource.delete(): " + name + ", key: " + toHexString(entry.getKey())); batch.delete(entry.getKey()); } else { - Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(entry.getKey()) + ", " + (entry.getValue() == null ? "null" : entry.getValue().length)); + //Log.info("<~ RocksDbDataSource.put(): " + name + ", key: " + toHexString(entry.getKey()) + ", " + (entry.getValue() == null ? "null" : entry.getValue().length)); batch.put(entry.getKey(), entry.getValue()); } } @@ -290,7 +286,7 @@ private void updateBatchInternal(Map rows) throws Exception { @Override public void updateBatch(Map rows) { - long startTime = System.nanoTime(); + //long startTime = System.nanoTime(); resetDbLock.writeLock().lock(); try { //if (Log.isTraceEnabled()) { @@ -299,7 +295,7 @@ public void updateBatch(Map rows) { try { updateBatchInternal(rows); //if (Log.isInfoEnabled()) { - Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime + "\n"); + // Log.info("<~ RocksDbDataSource.updateBatch(): " + name + ", " + rows.size() + ", cost {}", System.nanoTime() - startTime + "\n"); //} } catch (Exception e) { Log.error("Error, retrying one more time...", e); diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index eb1fade813..bf463dfb80 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -77,7 +77,7 @@ public synchronized boolean isExist(byte[] addr) { @Override public synchronized AccountState getAccountState(byte[] addr) { - Log.debug(String.format("[%s]DB get AccountState - addr: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr))); + //Log.debug(String.format("[%s]DB get AccountState - addr: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr))); return accountStateCache.get(addr); } @@ -136,7 +136,7 @@ public synchronized void saveCode(byte[] addr, byte[] code) { @Override public synchronized byte[] getCode(byte[] addr) { - Log.warn(String.format("DB get code - addr: %s", AddressTool.getStringAddressByBytes(addr))); + //Log.warn(String.format("DB get code - addr: %s", AddressTool.getStringAddressByBytes(addr))); byte[] codeHash = getCodeHash(addr); return codeHash == null || FastByteComparisons.equal(codeHash, HashUtil.EMPTY_DATA_HASH) ? ByteUtil.EMPTY_BYTE_ARRAY : codeCache.get(codeKey(codeHash, addr)); @@ -155,29 +155,29 @@ public byte[] getCodeHash(byte[] addr) { @Override public synchronized void addStorageRow(byte[] addr, DataWord key, DataWord value) { - Log.warn(String.format("DB put - addr: %s, put key: %s, put value: %s", AddressTool.getStringAddressByBytes(addr), key.toString(), value.toString())); + //Log.warn(String.format("DB put - addr: %s, put key: %s, put value: %s", AddressTool.getStringAddressByBytes(addr), key.toString(), value.toString())); getOrCreateAccountState(addr); Source contractStorage = storageCache.get(addr); contractStorage.put(key, value.isZero() ? null : value); } - public static AtomicInteger threadLocal = new AtomicInteger(0); + //public static AtomicInteger threadLocal = new AtomicInteger(0); @Override public synchronized DataWord getStorageValue(byte[] addr, DataWord key) { AccountState accountState = getAccountState(addr); DataWord dataWord = accountState == null ? null : storageCache.get(addr).get(key); - Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), - dataWord == null ? null : dataWord.asString())); - try { - if (dataWord == null) { - throw new Exception("empty dataWord!"); - } - } catch (Exception e) { - Log.error(e); - } - threadLocal.incrementAndGet(); + //Log.warn(String.format("[%s]DB get - addr: %s, get key: %s, get value: %s", threadLocal.get(), AddressTool.getStringAddressByBytes(addr), key.toString(), + // dataWord == null ? null : dataWord.asString())); + //try { + // if (dataWord == null) { + // throw new Exception("empty dataWord!"); + // } + //} catch (Exception e) { + // Log.error(e); + //} + //threadLocal.incrementAndGet(); return dataWord; //return accountState == null ? null : storageCache.get(addr).get(key); } From 6d4ceeaa49368d0800e85476289e24cf183629ff Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 19 Jan 2021 10:30:41 +0800 Subject: [PATCH 265/304] remove test log --- .../src/main/java/io/nuls/contract/vm/Heap.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 1db5071722..ce737f5cf0 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -44,8 +44,6 @@ import java.math.BigInteger; import java.util.*; -import static org.ethereum.db.RepositoryImpl.threadLocal; - public class Heap { public static final Map> INIT_OBJECTS = new HashMap<>(1024); @@ -296,7 +294,7 @@ public Object getArrayChunkFromState(ObjectRef arrayRef, String arrayKey) { if (this.repository == null) { return null; } - Log.error("[{}]!!!!!!!getArrayChunkFromState, arrayRef: {}, arrayKey: {}", threadLocal.get(), arrayRef.toString(), arrayKey.toString()); + //Log.error("[{}]!!!!!!!getArrayChunkFromState, arrayRef: {}, arrayKey: {}", threadLocal.get(), arrayRef.toString(), arrayKey.toString()); DataWord dataWord = this.repository.getStorageValue(this.address, new DataWord(arrayKey)); if (dataWord == null) { return null; From f628ac5a0f15af0db3530448ce3515bf894fdce2 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 19 Jan 2021 10:34:13 +0800 Subject: [PATCH 266/304] remove unused code --- .../src/main/java/org/ethereum/db/RepositoryImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java index bf463dfb80..c0071e2a86 100644 --- a/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java +++ b/module/nuls-smart-contract/src/main/java/org/ethereum/db/RepositoryImpl.java @@ -17,8 +17,6 @@ */ package org.ethereum.db; -import io.nuls.base.basic.AddressTool; -import io.nuls.contract.util.Log; import org.ethereum.config.SystemProperties; import org.ethereum.core.AccountState; import org.ethereum.core.Block; @@ -32,7 +30,6 @@ import javax.annotation.Nullable; import java.math.BigInteger; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; /** * Created by Anton Nashatyrev on 07.10.2016. From a3e4d0f0c014566e3087479bb2f3957a376d44ca Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 19 Jan 2021 10:36:33 +0800 Subject: [PATCH 267/304] remove test code --- .../src/main/java/io/nuls/contract/vm/Heap.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index ce737f5cf0..167488029e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -264,7 +264,6 @@ public Object getArrayChunk(ObjectRef arrayRef, int chunkNum, boolean write, boo value = getArrayInit(arrayRef, chunkNum); } if (value == null && chunkNum != 0 && loadDB) { - //TODO pierre 为什么要去DB中查询 value = getArrayChunkFromState(arrayRef, arrayKey); if (value != null) { arrays.put(arrayKey, value); @@ -671,9 +670,9 @@ public Map contractState() { stateObjectRefs(stateObjectRefs, staticObjectRef); stateObjectRefs(stateObjectRefs, this.contract); List clearList = new ArrayList<>(); - int j = 0; + //int j = 0; for (ObjectRef objectRef : stateObjectRefs) { - j++; + //j++; //Log.debug("Per[{}] objectRef: {}", j, objectRef); if (!this.changes.contains(objectRef)) { //Log.warn("[{}]null changes objectRef: {}", j, objectRef); From f5442b9934889dc8d5d094e1103776457e1c5ef4 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 26 Jan 2021 15:26:09 +0800 Subject: [PATCH 268/304] extend transaction sync time out --- .../java/io/nuls/transaction/service/impl/TxServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 217c16e39f..f8f6f09111 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -2359,7 +2359,7 @@ public Map batchVerifyV8(Chain chain, List txStrList, Bl } try { // 调用执行智能合约 - Map invokeContractRs = ContractCall.invokeContractV8(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 10); + Map invokeContractRs = ContractCall.invokeContractV8(chain, RPCUtil.encode(tx.serialize()), 1, Constants.TIMEOUT_TIMEMILLIS * 20); //boolean success = (boolean) invokeContractRs.get("success"); long gasUsed = Long.valueOf(invokeContractRs.get("gasUsed").toString()); List contractTxList = (List) invokeContractRs.get("txList"); @@ -2486,7 +2486,7 @@ public Boolean call() { if (contractNotify) { Map map; try { - map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 10); + map = ContractCall.contractBatchEnd(chain, blockHeight, Constants.TIMEOUT_TIMEMILLIS * 20); } catch (NulsException e) { logger.error(e); throw new NulsException(TxErrorCode.CONTRACT_VERIFY_FAIL); From 7ae67a759778465c7a75d756e89a4a160e99a93e Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Tue, 26 Jan 2021 15:27:16 +0800 Subject: [PATCH 269/304] beta setting --- config/nuls.beta.ncf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index 800b25646a..7b49d57396 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -94,7 +94,7 @@ deflationTimeInterval=2592000 #合约视图方法调用最大消耗的Gas maxViewGas=100000000 systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaN7uzhZpsoRrNnLGuznogReEQPejiM1 +crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd [public-service] #public-service模块对外的rpc端口号 @@ -149,6 +149,6 @@ interval=10 [nuls-api] #httpServer的启动ip -server_ip=0.0.0.0 +serverIp=0.0.0.0 #httpServer的启动port serverPort=18004 From 9ab4b068f3412c07c2ca229e2d6eb1aa1cf7b6d4 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 26 Jan 2021 16:36:10 +0800 Subject: [PATCH 270/304] smart contract 5G mem --- build/nulstar/start.sh | 7 +++++++ module/nuls-smart-contract/module.ncf | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build/nulstar/start.sh b/build/nulstar/start.sh index c5f76d7a0c..9203fcb32a 100755 --- a/build/nulstar/start.sh +++ b/build/nulstar/start.sh @@ -8,5 +8,12 @@ if [ ! -f "${CONFIG}" ] ; then echo "Please re-excute the startup program." exit 0 fi +availableMem=`free | awk '/Mem/ {print $7}'` +xmsMem=10000000 +if [ "$availableMem" -lt $xmsMem ] +then + echo "available mem must be equal or greater than ${xmsMem}KB"; + exit 0; +fi LD_LIBRARY_PATH=Libraries/CPP/Nulstar/0.1.0:Libraries/CPP/Qt/5.12.3 `pwd`/Modules/Nulstar/Nulstar/0.1.0/Nulstar & diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index 3d5d667bdc..e1c92869dc 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,8 +2,8 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=3072 -JOPT_XMX=3072 +JOPT_XMS=5120 +JOPT_XMX=5120 JAVA_OPTS=-XX:NewRatio=2 [Core] From 798e478a7d4240ef59c0ddee70cb09cf6537c2e0 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 26 Jan 2021 16:36:24 +0800 Subject: [PATCH 271/304] version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index cae9add96b..642c63c424 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.8.2 \ No newline at end of file +2.8.3 \ No newline at end of file From 9356be1cc9fd1da5a586e83047e5808b4c0d8ef7 Mon Sep 17 00:00:00 2001 From: "lijun.zhou" Date: Tue, 26 Jan 2021 16:56:05 +0800 Subject: [PATCH 272/304] smart contract 3G mem --- build/nulstar/start.sh | 2 +- module/nuls-smart-contract/module.ncf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/nulstar/start.sh b/build/nulstar/start.sh index 9203fcb32a..dd85acf237 100755 --- a/build/nulstar/start.sh +++ b/build/nulstar/start.sh @@ -9,7 +9,7 @@ if [ ! -f "${CONFIG}" ] ; then exit 0 fi availableMem=`free | awk '/Mem/ {print $7}'` -xmsMem=10000000 +xmsMem=8000000 if [ "$availableMem" -lt $xmsMem ] then echo "available mem must be equal or greater than ${xmsMem}KB"; diff --git a/module/nuls-smart-contract/module.ncf b/module/nuls-smart-contract/module.ncf index e1c92869dc..3d5d667bdc 100644 --- a/module/nuls-smart-contract/module.ncf +++ b/module/nuls-smart-contract/module.ncf @@ -2,8 +2,8 @@ APP_NAME=smart-contract MAIN_CLASS=io.nuls.contract.SmartContractBootStrap VERSION=1.0.0 -JOPT_XMS=5120 -JOPT_XMX=5120 +JOPT_XMS=3072 +JOPT_XMX=3072 JAVA_OPTS=-XX:NewRatio=2 [Core] From f8a501cc2f53dd465cddea252155ebd4e39d9065 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Wed, 27 Jan 2021 10:38:28 +0800 Subject: [PATCH 273/304] update config --- config/nuls.beta.ncf | 2 ++ config/nuls.ncf | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index 7b49d57396..9ee78bdbbd 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -115,6 +115,8 @@ mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3 businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS +syncCoinBase=false +syncAddress= [cross-chain] #跨链节点链接的最小值 diff --git a/config/nuls.ncf b/config/nuls.ncf index b487aac13b..fb4bf63400 100644 --- a/config/nuls.ncf +++ b/config/nuls.ncf @@ -115,6 +115,8 @@ mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKK businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +syncCoinBase=false +syncAddress= [cross-chain] #跨链节点链接的最小值 From b3eec3613546a0b175dc5db12518144940515b70 Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 15 Mar 2021 14:15:54 +0800 Subject: [PATCH 274/304] 2.9.0 (#622) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES --- .../src/main/resources/versions.json | 5 + .../nuls/contract/config/ContractContext.java | 4 +- .../nuls/contract/helper/ContractHelper.java | 44 +-- .../java/io/nuls/contract/util/VMContext.java | 15 +- .../main/java/io/nuls/contract/vm/Heap.java | 16 + .../references/Invokespecial.java | 20 ++ .../references/Invokevirtual.java | 44 +++ .../contract/vm/instructions/stack/Pop.java | 9 +- .../io/nuls/contract/vm/util/Constants.java | 8 + .../LoadLargeContractTest.java | 273 ++++++++++++++++++ .../StorageStructureContract.java | 46 +-- .../StorageStructureSendTxTest.java | 112 +++++++ version | 2 +- 13 files changed, 552 insertions(+), 46 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/LoadLargeContractTest.java create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/storagestructure/StorageStructureSendTxTest.java diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index f19f5d3e2f..d2723ca4eb 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -38,5 +38,10 @@ "version": "8", "effectiveRatio": "80", "continuousIntervalCount": "20" + }, + { + "version": "9", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index dd9c4bbc6b..ff87a47ad4 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -59,7 +59,7 @@ public class ContractContext { public static int ASSET_ID = 1; /** - * 代币跨链系统合约地址 + * 代币跨链系统合约地址 */ public static byte[] CROSS_CHAIN_SYSTEM_CONTRACT; @@ -68,4 +68,6 @@ public class ContractContext { public static short UPDATE_VERSION_V250 = 5; public static short UPDATE_VERSION_CONTRACT_ASSET = 8; + + public static short UPDATE_VERSION_CONTRACT_BALANCE = 9; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 6b144f8c23..7265206f58 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -26,6 +26,8 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.*; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.ContractStatus; @@ -162,11 +164,12 @@ public ProgramMethod getMethodInfoByContractAddress(int chainId, byte[] currentS private boolean checkNrc20Contract(List methods) { return checkNrc20Contract(methods, null); } + private boolean checkNrc20Contract(List methods, Map contractMethodsMap) { if (methods == null || methods.size() == 0) { return false; } - if(contractMethodsMap == null) { + if (contractMethodsMap == null) { contractMethodsMap = new HashMap<>(methods.size()); } for (ProgramMethod method : methods) { @@ -216,23 +219,23 @@ private boolean checkNrc721Contract(List methods, Map methods) { } for (ProgramMethod method : methods) { if (BALANCE_TRIGGER_METHOD_NAME.equals(method.getName()) - && BALANCE_TRIGGER_METHOD_DESC.equals(method.getDesc())) { + && BALANCE_TRIGGER_METHOD_DESC.equals(method.getDesc())) { return method.isPayable(); } } @@ -336,9 +339,9 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract if (!isNrc20) { isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); } - if(isNrc20) { + if (isNrc20) { contractResult.setTokenType(TokenTypeStatus.NRC20.status()); - } else if(isNrc721) { + } else if (isNrc721) { contractResult.setTokenType(TokenTypeStatus.NRC721.status()); } boolean isAcceptDirectTransfer = this.checkAcceptDirectTransfer(methods); @@ -416,7 +419,12 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract } public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { - ContractTempBalanceManager tempBalanceManager = getBatchInfoTempBalanceManager(chainId); + ContractTempBalanceManager tempBalanceManager; + if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE) { + tempBalanceManager = getBatchInfoTempBalanceManagerV8(chainId); + } else { + tempBalanceManager = getBatchInfoTempBalanceManager(chainId); + } if (tempBalanceManager != null) { Result balance = tempBalanceManager.getBalance(address, assetChainId, assetId); if (balance.isSuccess()) { @@ -474,7 +482,7 @@ public void createTempBalanceManagerAndCurrentBlockHeader(int chainId, long numb public ContractTempBalanceManager getBatchInfoTempBalanceManagerV8(int chainId) { BatchInfoV8 batchInfo; - if((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { + if ((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { return null; } return batchInfo.getTempBalanceManager(); @@ -482,7 +490,7 @@ public ContractTempBalanceManager getBatchInfoTempBalanceManagerV8(int chainId) public BlockHeader getBatchInfoCurrentBlockHeaderV8(int chainId) { BatchInfoV8 batchInfo; - if((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { + if ((batchInfo = getChain(chainId).getBatchInfoV8()) == null) { return null; } return batchInfo.getCurrentBlockHeader(); @@ -490,7 +498,7 @@ public BlockHeader getBatchInfoCurrentBlockHeaderV8(int chainId) { public ContractTempBalanceManager getBatchInfoTempBalanceManager(int chainId) { BatchInfo batchInfo; - if((batchInfo = getChain(chainId).getBatchInfo()) == null) { + if ((batchInfo = getChain(chainId).getBatchInfo()) == null) { return null; } return batchInfo.getTempBalanceManager(); @@ -498,7 +506,7 @@ public ContractTempBalanceManager getBatchInfoTempBalanceManager(int chainId) { public BlockHeader getBatchInfoCurrentBlockHeader(int chainId) { BatchInfo batchInfo; - if((batchInfo = getChain(chainId).getBatchInfo()) == null) { + if ((batchInfo = getChain(chainId).getBatchInfo()) == null) { return null; } return batchInfo.getCurrentBlockHeader(); @@ -644,7 +652,7 @@ public void rollbackNrc20Events(int chainId, Transaction tx, ContractResult cont continue; } Boolean isNRC20 = isNRC20Map.get(contractAddress); - if(isNRC20 == null) { + if (isNRC20 == null) { byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); Result contractAddressInfoResult = this.getContractAddressInfo(chainId, contractAddressBytes); contractAddressInfo = contractAddressInfoResult.getData(); @@ -661,10 +669,10 @@ public void rollbackNrc20Events(int chainId, Transaction tx, ContractResult cont // 回滚token余额 this.rollbackContractToken(chainId, tokenTransferInfoPo); - if(tokenTransferInfoPo.getFrom() != null) { + if (tokenTransferInfoPo.getFrom() != null) { contractTokenTransferStorageService.deleteTokenTransferInfo(chainId, Arrays.concatenate(tokenTransferInfoPo.getFrom(), txHashBytes, new VarInt(i).encode())); } - if(tokenTransferInfoPo.getTo() != null) { + if (tokenTransferInfoPo.getTo() != null) { contractTokenTransferStorageService.deleteTokenTransferInfo(chainId, Arrays.concatenate(tokenTransferInfoPo.getTo(), txHashBytes, new VarInt(i).encode())); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java index d8830c8c33..866ca9638f 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java @@ -26,6 +26,7 @@ import io.nuls.base.data.BlockHeader; +import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractConfig; import io.nuls.contract.config.ContractContext; import io.nuls.contract.helper.ContractHelper; @@ -142,7 +143,12 @@ public BlockHeaderDto getNewestBlockHeader(int chainId) { * @throws IOException */ public BlockHeaderDto getCurrentBlockHeader(int chainId) { - BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeader(chainId); + BlockHeader blockHeader; + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE ) { + blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + } else { + blockHeader = contractHelper.getBatchInfoCurrentBlockHeader(chainId); + } if (blockHeader == null) { // edit by pierre at 2019-10-24 如果为空,说明是验证合约时,合约虚拟机调用此方法,此时需要手工设置当前打包区块数据,可手工设置的数据有区块高度和区块时间 BlockHeaderDto header = getNewestBlockHeader(chainId); @@ -213,7 +219,12 @@ public static void setNrc721OverloadMethodSafe(ProgramMethod nrc721OverloadMetho } public long getBestHeight(int chainId) { - BlockHeader currentBlockHeader = contractHelper.getBatchInfoCurrentBlockHeader(chainId); + BlockHeader currentBlockHeader; + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE ) { + currentBlockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + } else { + currentBlockHeader = contractHelper.getBatchInfoCurrentBlockHeader(chainId); + } if (currentBlockHeader != null) { return currentBlockHeader.getHeight() - 1; } else { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java index 167488029e..46c6ed7819 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/Heap.java @@ -26,6 +26,8 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.util.Log; import io.nuls.contract.vm.code.ClassCode; import io.nuls.contract.vm.code.FieldCode; @@ -184,6 +186,20 @@ public Map getFieldsFromState(ObjectRef objectRef) { } byte[] value = dataWord.getNoLeadZeroesData(); Map map = (Map) JsonUtils.decode(new String(value), classNames); + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) < ContractContext.UPDATE_VERSION_CONTRACT_BALANCE ) { + return map; + } + if (!VariableType.HASH_MAP_TYPE.getDesc().equals(objectRef.getDesc())) { + return map; + } + Float loadFactor = (Float) map.get("loadFactor"); + ObjectRef tableRef = (ObjectRef) map.get("table"); + int capacity = tableRef == null ? 0 : tableRef.getDimensions()[0]; + if (loadFactor.floatValue() == 0.75 && capacity >= Constants.MAP_MAX_CAPACITY) { + map.put("threshold", capacity); + map.put("loadFactor", 1.0f); + change(objectRef); + } return map; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokespecial.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokespecial.java index 485891a328..90a08cae63 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokespecial.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokespecial.java @@ -24,6 +24,8 @@ */ package io.nuls.contract.vm.instructions.references; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.vm.Frame; import io.nuls.contract.vm.MethodArgs; import io.nuls.contract.vm.ObjectRef; @@ -61,7 +63,25 @@ public static void invokespecial(Frame frame) { return; } + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE) { + if (methodCode.isMethod(GROW_CLASS_NAME, GROW_METHOD_NAME, GROW_METHOD_DESC)) { + // ArrayList 扩容限制 + MethodCode sizeMethod = frame.vm.methodArea.loadMethod(className, Constants.SIZE, Constants.SIZE_DESC); + frame.vm.run(sizeMethod, new Object[]{objectRef}, false); + Object sizeResult = frame.vm.getResultValue(); + int size = (int) sizeResult; + if (size >= Constants.LIST_MAX_CAPACITY) { + frame.throwRuntimeException("Max size of ArrayList is " + Constants.LIST_MAX_CAPACITY); + return; + } + + } + } + frame.vm.run(methodCode, methodArgs.frameArgs, true); } + private static final String GROW_CLASS_NAME = "java/util/ArrayList"; + private static final String GROW_METHOD_NAME = "grow"; + private static final String GROW_METHOD_DESC = "(I)V"; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokevirtual.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokevirtual.java index eee1f1b911..2b99426675 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokevirtual.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/references/Invokevirtual.java @@ -24,6 +24,8 @@ */ package io.nuls.contract.vm.instructions.references; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.vm.Frame; import io.nuls.contract.vm.MethodArgs; import io.nuls.contract.vm.ObjectRef; @@ -76,7 +78,49 @@ public static void invokevirtual(Frame frame) { return; } + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE) { + if (methodCode.isMethod(RESIZE_CLASS_NAME, RESIZE_METHOD_NAME, RESIZE_METHOD_DESC)) { + // HashMap 扩容限制 + MethodCode sizeMethod = frame.vm.methodArea.loadMethod(className, Constants.SIZE, Constants.SIZE_DESC); + frame.vm.run(sizeMethod, methodArgs.frameArgs, false); + Object sizeResult = frame.vm.getResultValue(); + int size = (int) sizeResult; + if (size > Constants.MAP_MAX_CAPACITY) { + frame.throwRuntimeException("Max size of map is " + Constants.MAP_MAX_CAPACITY); + return; + } + if (size > Constants.MAP_MIN_TRIGGER_RESIZE_CAPACITY) { + // 扩容机制 + MethodCode capacityMethod = frame.vm.methodArea.loadMethod(className, CAPACITY_METHOD_NAME, CAPACITY_METHOD_DESC); + frame.vm.run(capacityMethod, methodArgs.frameArgs, false); + Object capacityResult = frame.vm.getResultValue(); + int capacity = (int) capacityResult; + int resizeCount = log2(Constants.MAP_MAX_CAPACITY / capacity) - 1; + if (resizeCount > 0) { + for (int i = 0; i < resizeCount; i++) { + frame.vm.run(methodCode, methodArgs.frameArgs, true); + } + } + } + } + } + frame.vm.run(methodCode, methodArgs.frameArgs, true); } + private static final String RESIZE_CLASS_NAME = "java/util/HashMap"; + private static final String RESIZE_METHOD_NAME = "resize"; + private static final String RESIZE_METHOD_DESC = "()[Ljava/util/HashMap$Node;"; + + private static final String CAPACITY_METHOD_NAME = "capacity"; + private static final String CAPACITY_METHOD_DESC = "()I"; + + static int log2(int digit) { + int count = 0; + while ((digit = digit / 2) != 0) { + count++; + } + return count; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/stack/Pop.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/stack/Pop.java index a63092d765..de031b1658 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/stack/Pop.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/instructions/stack/Pop.java @@ -29,14 +29,17 @@ public class Pop { public static void pop(final Frame frame) { - Object value = frame.operandStack.pop(); + frame.operandStack.pop(); + //Object value = frame.operandStack.pop(); //Log.opcode(frame.getCurrentOpCode(), value); } public static void pop2(final Frame frame) { - Object value1 = frame.operandStack.pop(); - Object value2 = frame.operandStack.pop(); + frame.operandStack.pop(); + frame.operandStack.pop(); + //Object value1 = frame.operandStack.pop(); + //Object value2 = frame.operandStack.pop(); //Log.opcode(frame.getCurrentOpCode(), value1, value2); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Constants.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Constants.java index 8495277da1..02789cef39 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Constants.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Constants.java @@ -92,4 +92,12 @@ public class Constants { public static final String MAP_ENTRY_VALUE_METHOD_DESC = null; + public static final String SIZE = "size"; + + public static final String SIZE_DESC = "()I"; + + public static final int LIST_MAX_CAPACITY = 71140; + public static final int MAP_MAX_CAPACITY = 65536; + public static final int MAP_MIN_TRIGGER_RESIZE_CAPACITY = 3072; + } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/LoadLargeContractTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/LoadLargeContractTest.java new file mode 100644 index 0000000000..976a29a8e8 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/LoadLargeContractTest.java @@ -0,0 +1,273 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.mock.storagestructure; + +import io.nuls.base.basic.AddressTool; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractConfig; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.constant.ContractDBConstant; +import io.nuls.contract.model.bo.Chain; +import io.nuls.contract.model.bo.config.ConfigBean; +import io.nuls.contract.model.po.ContractAddressInfoPo; +import io.nuls.contract.util.ContractDBUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.util.VMContext; +import io.nuls.contract.util.VMContextMock; +import io.nuls.contract.vm.VMFactory; +import io.nuls.contract.vm.program.ProgramExecutor; +import io.nuls.contract.vm.program.impl.ProgramExecutorImpl; +import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rockdb.manager.RocksDBManager; +import io.nuls.core.rockdb.model.Entry; +import io.nuls.core.rockdb.service.RocksDBService; +import org.ethereum.db.RepositoryRoot; +import org.ethereum.vm.DataWord; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; +import java.lang.reflect.Field; +import java.util.*; + +/** + * @author: PierreLuo + * @date: 2021-01-28 + */ +public class LoadLargeContractTest { + + protected ProgramExecutor programExecutor; + private VMContext vmContext; + protected static String dataPath = "/Users/pierreluo/IdeaProjects/nuls_newer_2.0/data_beta_61802"; + protected static int chainId = 2; + protected static int assetId = 1; + + @BeforeClass + public static void initClass() throws Exception { + Log.info("init log."); + Set skipTables = new HashSet<>(); + skipTables.add(ContractDBConstant.DB_NAME_CONTRACT + "_" + chainId); + RocksDBManager.init(dataPath + File.separator + "smart-contract", null, skipTables); + } + + @Before + public void setUp() { + // 加载协议升级的数据 + ContractContext.CHAIN_ID = chainId; + ContractContext.ASSET_ID = assetId; + + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + configBean.setMaxViewGas(100000000L); + chain.setConfig(configBean); + + ContractConfig contractConfig = new ContractConfig(); + contractConfig.setDataPath(dataPath); + SpringLiteContext.putBean(ContractConfig.class.getName(), contractConfig); + + vmContext = new VMContextMock(); + programExecutor = new ProgramExecutorImpl(vmContext, chain); + chain.setProgramExecutor(programExecutor); + protocolUpdate(); + } + + protected void protocolUpdate() { + short version = 9; + ProtocolGroupManager.setLoadProtocol(false); + ProtocolGroupManager.updateProtocol(chainId, version); + if (version >= 8) { + VMFactory.reInitVM_v8(); + } + } + + @Test + public void test() throws Exception { + ProgramExecutor executor = programExecutor.begin(HexUtil.decode("812d5558cdfeba754cf31d5bb833b65646bd8148b5e855cd064da603ef03051b")); + Field field = ProgramExecutorImpl.class.getDeclaredField("repository"); + field.setAccessible(true); + RepositoryRoot root = (RepositoryRoot) field.get(executor); + + String contract = "tNULSeBaMxDoqtuYTWrRdayUJD2Mqx9sw2aL6A"; + checkOne(root, contract); + } + + @Test + public void testAll() throws Exception { + ProgramExecutor executor = programExecutor.begin(HexUtil.decode("812d5558cdfeba754cf31d5bb833b65646bd8148b5e855cd064da603ef03051b")); + Field field = ProgramExecutorImpl.class.getDeclaredField("repository"); + field.setAccessible(true); + RepositoryRoot root = (RepositoryRoot) field.get(executor); + + List contracts = allContracts(); + List correctList = new ArrayList<>(); + List errorList = new ArrayList<>(); + for (ContractAddressInfoPo contractInfo : contracts) { + String contract = AddressTool.getStringAddressByBytes(contractInfo.getContractAddress()); + if (!checkOne(root, contract)) { + errorList.add(contract); + } else { + correctList.add(contract); + } + } + System.out.println("correct: " + Arrays.toString(correctList.toArray())); + System.out.println("error: " + Arrays.toString(errorList.toArray())); + } + + @Test + public void testList() throws Exception { + ProgramExecutor executor = programExecutor.begin(HexUtil.decode("06b8a30da445372e3c5a86aa9171a033393c269da610b6dfdf0c2b4e03856dd0")); + Field field = ProgramExecutorImpl.class.getDeclaredField("repository"); + field.setAccessible(true); + RepositoryRoot root = (RepositoryRoot) field.get(executor); + + String errors = "NULSd6HgkvPrGrBnFAVXUBhBSTE7LqkY5u3g9, NULSd6HgmDR4r87eqfGA4AGt8iKAnrbsjSxri, NULSd6Hgn2dYQJGsFUS7gHNjE1WJ6qssrWAqi, NULSd6HgnBmk2bTEzHxwnnrkcjtnyBcS4Vg3S, NULSd6HgnHpNekxNX4nWdr3eEeJx7MEC4K9Mw, NULSd6HgnTbBoGqcB21cJUVG8zdDy7teGWksM, NULSd6HgpFSmNq8n6UMkprTQydz6KDFP2fXQ8, NULSd6HgprwPitNSX9w3J63h2xo7JtcWrR1gP, NULSd6HgqBJpKWZEfLEZSSUo1k5wS1tgTND1H, NULSd6HgqGyr75doz1JcRNV3N9Wo2Kert7wko, NULSd6HgqJo2X6P2hnexnY4gBvPX7mce3N5GZ, NULSd6HgqMAcVy9zmM1hsa1R95VFq2Lje44YT, NULSd6Hgqih9QqCMT1Z4357aTZ3we7jQJDu3T, NULSd6HgrXc4tbP5YUskoANtHNYZddHcuewpE, NULSd6HgsuqaW7KbHTyDK3AWaPuKUYvJ59xiw, NULSd6HgtBdVXy5HwNEAKXMvbN3MxM1Nf4VS9, NULSd6Hgucy2C5wq8YaqrhAZFguj4d3bCgpfE, NULSd6HgugbpQf76wayhtXyH3obWaLezkTBn5, NULSd6HguqaGqz7Ebvv7DhPdCXdwTF8tEWNQD, NULSd6HguxLQyW4bsNNX9gFhpXs38KsxAEwUt, NULSd6HgvBKiEEs9xtXLb9mGzqhF66S9jZsVK, NULSd6HgvLiBxzAJfz38oCjw74nibNjTjCP7g, NULSd6HgvSbwWG2fFi6DLPpHSKV6XLuEnm3HH, NULSd6HgvaJB79QiRrF8xBtpiR9cE81GxgkcE, NULSd6Hgw3sQnrwtfNhksdn9W3DbQoMdGZRaP, NULSd6HgwDs3jxGLnAE4VJnPxzDmRfXm6V7qb, NULSd6HgwK6i17Co27sWNG1492KbjJRxeZMcK, NULSd6HgwLcQgpfSEAYJDyQ8iYjRVyU8tf6Td, NULSd6HgwYKDK2EW8mhPtxkqCi9PgsKL8uyWw, NULSd6HgwbqTQNa5k35RkEMqCNSe6XbHk9Thz, NULSd6HgwjhaxDFZ6KH7fkohJLwW13DiozLhF, NULSd6Hgwx8p3j7cUKsM2cEtPxZGuRstBqVoN, NULSd6HgyFS6ReN2GM8rdCHKG5WcZPsQuw99e, NULSd6HgyfP1gJSCGUZHrvxEMqYAeFfjtuVJ6, NULSd6HgyviMiAWqKhTJmhjT275QEVTKSaWSj, NULSd6HgywfqAy7QizT6vTBEVzVmapn6Qs3VR, NULSd6HgzE7XxP9CFZRHC7P4qAVQdBqETNex7, NULSd6HgzQkQ2RifH32KU7tJSkWFuB6nDmgbG, NULSd6Hh13dkDiP2P7xzmzVXGfYqucvNiS45m, NULSd6Hh1LJU8VMfApFsQqvpCJqXmpsjLyfV1"; + String[] errorArray = errors.split(","); + List correctList = new ArrayList<>(); + List errorList = new ArrayList<>(); + for (String contract : errorArray) { + contract = contract.trim(); + if (!checkOne(root, contract)) { + errorList.add(contract); + } else { + correctList.add(contract); + } + } + System.out.println("correct: " + Arrays.toString(correctList.toArray())); + System.out.println("error: " + Arrays.toString(errorList.toArray())); + } + + int limitMap = 1; + int limitList = 1; + + boolean checkOne(RepositoryRoot root, String contract) { + try { + StringBuilder sb = new StringBuilder(String.format("contract address: %s", contract)); + byte[] contractBytes = AddressTool.getAddress(contract); + String key = String.format("R_%s,0", contract); + //key = "objectRefCount"; + + DataWord dataWord = getDataWord(root, contractBytes, key); + if (dataWord == null) { + System.err.println(contract + " error: NULL DataWord"); + return false; + } + sb.append("\n" + String.format("DB get - get key: %s, get value: %s", key.toString(), dataWord == null ? null : dataWord.asString())); + Map map = JSONUtils.json2map(dataWord.asString()); + boolean display = false; + for (Map.Entry e : map.entrySet()) { + if (e.getValue() == null) { + continue; + } + String dwKey = e.getKey(); + String value = e.getValue().toString(); + if (value.endsWith(",m")) { + // Map + DataWord dw = getDataWord(root, contractBytes, value); + Map _map = JSONUtils.json2map(dw.asString()); + int mapSize = Integer.parseInt(_map.get("size").toString().substring(2)); + sb.append("\n" + String.format("dwKey: %s, mapSize: %s", dwKey, mapSize)); + if (mapSize >= limitMap) { + display = true; + } + } else if (value.endsWith(",g")) { + // list集合 + DataWord dw = getDataWord(root, contractBytes, value); + Map _map = JSONUtils.json2map(dw.asString()); + int listSize = Integer.parseInt(_map.get("size").toString().substring(2)); + sb.append("\n" + String.format("dwKey: %s, listSize: %s", dwKey, listSize)); + if (listSize >= limitList) { + display = true; + } + } else if (value.endsWith(",Ljava/util/HashSet;")) { + // set集合 + DataWord dw = getDataWord(root, contractBytes, value); + Map _map = JSONUtils.json2map(dw.asString()); + dw = getDataWord(root, contractBytes, _map.get("map").toString()); + _map = JSONUtils.json2map(dw.asString()); + int size = Integer.parseInt(_map.get("size").toString().substring(2)); + sb.append("\n" + String.format("dwKey: %s, setSize: %s", dwKey, size)); + if (size >= limitList) { + display = true; + } + } + } + if (display) { + System.out.println(sb.toString()); + System.out.println(); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + DataWord getDataWord(RepositoryRoot root, byte[] contractBytes, String key) { + if (key.endsWith(",0")) { + String keySub = key.substring(0, key.length() - 1); + DataWord dataWord = getDataWord(root, contractBytes, keySub, 0); + return dataWord; + } else { + return getDataWord(root, contractBytes, key, null); + } + } + + DataWord getDataWord(RepositoryRoot root, byte[] contractBytes, String keySub, Integer index) { + String key; + if (index != null) { + if (index > 50) return null; + key = keySub + index; + } else { + key = keySub; + } + DataWord dataWord = root.getStorageValue(contractBytes, new DataWord(key)); + /*if (dataWord != null && index != null) { + System.out.println(String.format("DB get - get key: %s, get value: %s", key.toString(), dataWord == null ? null : dataWord.asString())); + }*/ + if (dataWord == null && index != null) { + dataWord = getDataWord(root, contractBytes, keySub, index + 1); + } + return dataWord; + } + + List allContracts() { + List> list = RocksDBService.entryList(ContractDBConstant.DB_NAME_CONTRACT_ADDRESS + "_" + chainId); + if (list == null || list.size() == 0) { + return Collections.emptyList(); + } + List resultList = new ArrayList<>(); + ContractAddressInfoPo po; + for (Entry entry : list) { + po = ContractDBUtil.getModel(entry.getValue(), ContractAddressInfoPo.class); + po.setContractAddress(entry.getKey()); + resultList.add(po); + } + return resultList; + } +} diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java index 9119ada97d..39b3e39a26 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/mock/storagestructure/StorageStructureContract.java @@ -48,7 +48,7 @@ public class StorageStructureContract extends MockBase { @Override protected void protocolUpdate() { - short version = 8; + short version = 9; ProtocolGroupManager.setLoadProtocol(false); ProtocolGroupManager.updateProtocol(chainId, version); if (version >= 8) { @@ -106,13 +106,29 @@ public void testCreate() throws IOException, InterruptedException { byte[] stateRoot = super.create(prevStateRoot, SENDER, contractCode); Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + // 32b05b57e5ddc8eabba05a9a7b006b3cd4c8d8d7662cb0553c3c05e471cd61fe TimeUnit.SECONDS.sleep(1); } + @Test + public void testMapAdd() throws Exception { + // eaa90d836849ec31698bdbaa7a7e94fd9a4292e33a0f405565a10128375bc9c8 12288 再添加一个,就触发resize + // 8fd0a0b82976ecdc98d6f14e406b0ec8409d3c64b85da0f98b319944db15ecc6 接eaa, 扩容因子被改变成1 + // 87fa8f0b5f708c909961ab4abab30777c2e1455ca58aa6e5adae5601826501af 接eaa, 被扩容到65536 + // 096917a2d4a70bcdbecef243887f87feeba693d1e8ac518460ae2f8e7b58b243 接87f + byte[] prevStateRoot = HexUtil.decode("6ee749e0360819359387c0c089928b27faaeab91fbd71427afc52c457df47e5c"); + Object[] objects = super.call(prevStateRoot, SENDER, "addMap", new String[]{"q", "1"}); + byte[] stateRoot = (byte[]) objects[0]; + ProgramResult programResult = (ProgramResult) objects[1]; + Log.info(JSONUtils.obj2PrettyJson(programResult)); + Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); + TimeUnit.SECONDS.sleep(6); + } + @Test public void testListAdd() throws Exception { - byte[] prevStateRoot = HexUtil.decode("32b05b57e5ddc8eabba05a9a7b006b3cd4c8d8d7662cb0553c3c05e471cd61fe"); - Object[] objects = super.call(prevStateRoot, SENDER, "addList", new String[]{"a", "1310"}); + byte[] prevStateRoot = HexUtil.decode("1837fbeef99a7671e5ebd2eebcf83bb118a384ebaafb414da18ab9b3ed7fd140"); + Object[] objects = super.call(prevStateRoot, SENDER, "addList", new String[]{"a11-", "1"}); byte[] stateRoot = (byte[]) objects[0]; ProgramResult programResult = (ProgramResult) objects[1]; Log.info(JSONUtils.obj2PrettyJson(programResult)); @@ -121,8 +137,8 @@ public void testListAdd() throws Exception { } @Test public void getListByIndex() throws Exception { - byte[] prevStateRoot = HexUtil.decode("3f7a4dbed0dfd416b51217480350ba8428ee4a20f9837d9be92f5a74d5fb34e0"); - Object[] objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"0"}); + byte[] prevStateRoot = HexUtil.decode("eb38cb09d83bd402b2637d118e5b489f216131daea35a404dab29b1c2afc679f"); + Object[] objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"71139"}); byte[] stateRoot = (byte[]) objects[0]; ProgramResult programResult = (ProgramResult) objects[1]; Log.info(JSONUtils.obj2PrettyJson(programResult)); @@ -130,7 +146,7 @@ public void getListByIndex() throws Exception { TimeUnit.SECONDS.sleep(1); prevStateRoot = stateRoot; - objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"310"}); + objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"32110"}); stateRoot = (byte[]) objects[0]; programResult = (ProgramResult) objects[1]; Log.info(JSONUtils.obj2PrettyJson(programResult)); @@ -138,7 +154,7 @@ public void getListByIndex() throws Exception { TimeUnit.SECONDS.sleep(1); prevStateRoot = stateRoot; - objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"1210"}); + objects = super.call(prevStateRoot, SENDER, "getListByIndex", new String[]{"15210"}); stateRoot = (byte[]) objects[0]; programResult = (ProgramResult) objects[1]; Log.info(JSONUtils.obj2PrettyJson(programResult)); @@ -146,21 +162,10 @@ public void getListByIndex() throws Exception { TimeUnit.SECONDS.sleep(1); } - @Test - public void testMapAdd() throws Exception { - byte[] prevStateRoot = HexUtil.decode("978b6d7889168f85322f8ca246e2c362242a76fac96b7d86cbdbcee4fe655399"); - Object[] objects = super.call(prevStateRoot, SENDER, "addMap", new String[]{"b", "2000"}); - byte[] stateRoot = (byte[]) objects[0]; - ProgramResult programResult = (ProgramResult) objects[1]; - Log.info(JSONUtils.obj2PrettyJson(programResult)); - Log.info("stateRoot: " + HexUtil.encode(stateRoot) + "\n"); - TimeUnit.SECONDS.sleep(6); - } - @Test public void getMapValue() throws Exception { - byte[] prevStateRoot = HexUtil.decode("7945b873f1b21c0b622c6488780c45e2fca37642ef28c1e02ac50afc05697229"); - Object[] objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"b1211"}); + byte[] prevStateRoot = HexUtil.decode("6ee749e0360819359387c0c089928b27faaeab91fbd71427afc52c457df47e5c"); + Object[] objects = super.call(prevStateRoot, SENDER, "getMapValue", new String[]{"p0"}); byte[] stateRoot = (byte[]) objects[0]; ProgramResult programResult = (ProgramResult) objects[1]; Log.info(JSONUtils.obj2PrettyJson(programResult)); @@ -329,5 +334,4 @@ public void testView() throws JsonProcessingException { Log.info("view result: " + balanceOf); } - } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/storagestructure/StorageStructureSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/storagestructure/StorageStructureSendTxTest.java new file mode 100644 index 0000000000..1321d47872 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/storagestructure/StorageStructureSendTxTest.java @@ -0,0 +1,112 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.nuls.contract.tx.storagestructure; + + +import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.Log; +import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.Map; + +import static io.nuls.contract.constant.ContractCmdConstant.*; + +/** + * @author: PierreLuo + * @date: 2019-03-15 + */ +public class StorageStructureSendTxTest extends BaseQuery { + + /** + * 创建合约 + */ + @Test + public void createContract() throws Exception { + //sender = toAddress32; + InputStream in = new FileInputStream(new File("/Users/pierreluo/IdeaProjects/storage-structure-contract/target/storage-structure-contract-1.0-SNAPSHOT.jar")); + byte[] contractCode = IOUtils.toByteArray(in); + String remark = "create"; + Map params = this.makeCreateParams(sender, contractCode, "ss", remark); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Map map = waitGetContractTx(hash); + Assert.assertTrue(JSONUtils.obj2PrettyJson(map), (Boolean) ((Map)(map.get("contractResult"))).get("success")); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(map)); + } + + /** + * map测试 + */ + @Test + public void testMapAdd() throws Exception { + BigInteger value = BigInteger.ZERO; + String methodName = "addMap"; + String methodDesc = ""; + String remark = "testMapAdd"; + long gasLimit = 10000000; + Map params = this.makeCallParams(sender, value, gasLimit, contractAddress, methodName, methodDesc, remark, "e", "1"); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + /** + * list测试 + */ + @Test + public void testListAdd() throws Exception { + BigInteger value = BigInteger.ZERO; + String methodName = "addList"; + String methodDesc = ""; + String remark = "testListAdd"; + long gasLimit = 10000000; + Map params = this.makeCallParams(sender, value, gasLimit, contractAddress, methodName, methodDesc, remark, "d", "1"); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + +} diff --git a/version b/version index 642c63c424..f3ac133c54 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.8.3 \ No newline at end of file +2.9.0 \ No newline at end of file From 0460fc95a12f585cad8e0b32e5876b3c1f2b5ec4 Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Thu, 1 Apr 2021 14:59:48 +0800 Subject: [PATCH 275/304] V2.9.1 (#626) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 --- module.ncf | 4 +- module/nuls-api/documents/nuls-api_JSONRPC.md | 575 ++++++++++++------ module/nuls-api/documents/nuls-api_RESTFUL.md | 530 +++++++++++----- .../java/io/nuls/provider/ApiBootstrap.java | 5 +- .../controller/TransactionController.java | 42 +- .../poc/utils/validator/BlockValidator.java | 20 +- .../test/validater/TotalAmountTest.java | 44 ++ version | 2 +- 8 files changed, 851 insertions(+), 371 deletions(-) create mode 100644 module/nuls-ledger/src/test/java/io/nuls/ledger/test/validater/TotalAmountTest.java diff --git a/module.ncf b/module.ncf index a9140054c2..533d8b66c0 100644 --- a/module.ncf +++ b/module.ncf @@ -1,9 +1,9 @@ [global] encoding=UTF-8 language=en -logPath=/Users/pierreluo/IdeaProjects/nuls_newer_2.0/logs +logPath=/Users/niels/workspace/nuls-v2/Logs logLevel=INFO -dataPath=/Users/pierreluo/IdeaProjects/nuls_newer_2.0/data +dataPath=/Users/niels/workspace/nuls-v2/data #默认本链ID chainId=1 #地址前缀 diff --git a/module/nuls-api/documents/nuls-api_JSONRPC.md b/module/nuls-api/documents/nuls-api_JSONRPC.md index 7f285baad8..7bcf2a643c 100644 --- a/module/nuls-api/documents/nuls-api_JSONRPC.md +++ b/module/nuls-api/documents/nuls-api_JSONRPC.md @@ -8,12 +8,12 @@ ## 设置 -​ `NULS-API`模块默认访问的端口号是18004,可以在nuls.ncf配置文件中做修改,如下: +​ `NULS-API`模块默认访问的端口号是8004,可以在nuls.ncf配置文件中做修改,如下: ``` [nuls-API] #httpServer的启动port -serverPort=18004 +serverPort=8004 ``` ## 说明 @@ -24,27 +24,45 @@ serverPort=18004 `NULS-API`模块提供了若干在线接口和离线接口。 -在线接口:钱包必须正常运行,且能够连接网络中的其他节点,能够正常同步区块和广播数据。在调用在线接口之前,最好是已经同步到最新区块。接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账、获取区块头等。 +#### 在线接口 -离线接口:NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 +即需要访问节点钱包API,才能得到正确的返回结果。访问在线接口有以下几点要求: -### 字段描述 +- 需安装节点钱包且必须正常运行。 +- 节点钱包能够连接网络中的其他节点,能够正常同步区块和广播数据。 +- 在调用在线接口之前,节点钱包最好是已经同步到最新区块。 -**链的chainId:** +在线接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账交易、获取区块头等。 -​ NULS2.0支持多链并行和跨链转账,每条链通过链ID来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 +#### 离线接口 -**链的资产:** +NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 -​ NULS2.0支持每条链除了默认的资产外,可根据业务需要,动态添加资产。每条链的每种资产通过链ID和资产ID的复合主键来区分。例如NULS主网的NULS,chainId=1,assetId=1 +### 字段与业务描述 -**交易的type值:** +#### 链的chainId -​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过type字段来区分不同交易类型,以下是交易类型的枚举值: +​ NULS2.0支持多链并行和跨链转账,每条链通过链ID(chainId)来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 + +#### 链的资产 + +​ NULS2.0还支持多资产,每条链除了默认的资产外,可根据业务需要,动态添加资产。每种资产通过链ID(chainId)和资产ID(assetId)的复合主键来区分。例如NULS主网的NULS资产(chainId=1,assetId=1) + +​ **主资产:每条链的默认资产就是主资产,交易手续费只收取本链主资产。** + +#### 合约资产 + +​ NULS2.0内置智能合约,用户可以通过NULS官方提供的标准NRC20合约模板发布合约资产(token),每发布一个合约资产都有唯一合约地址作为标记。 + +​ 这里需要注意的是合约资产并不等于链的资产,链的资产是会在链上分配有chainId和assetId属性的,而合约资产并没有。 + +#### 交易类型 + +​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过交易类型字段(type)来区分不同交易类型,以下是交易类型的枚举值: ``` int COIN_BASE = 1; // coinBase出块奖励 -int TRANSFER = 2; // 转账 +int TRANSFER = 2; // 普通转账 int ACCOUNT_ALIAS = 3; // 设置账户别名 int REGISTER_AGENT = 4; // 新建共识节点 int DEPOSIT = 5; // 委托参与共识 @@ -67,18 +85,129 @@ int CONTRACT_DEPOSIT = 21; // 合约委托参与共识 int CONTRACT_CANCEL_DEPOSIT = 22; // 合约取消委托共识 int CONTRACT_STOP_AGENT = 23; // 合约注销共识节点 int VERIFIER_CHANGE = 24; // 验证人变更 -int VERIFIER_INIT = 25; //验证人初始化 +int VERIFIER_INIT = 25; // 验证人初始化 +int CONTRACT_TOKEN_CROSS_TRANSFER = 26; // 合约跨链转账 ``` -**交易的from和to:** +#### 转账 + +​ 转账交易分为4种:**普通转账、跨链转账、合约转账、合约跨链转账。**其中普通转账和跨链转账针对是链上资产(分配有chainId和assetId)。后两者针对合约token的转账。 + +​ **普通转账(type=2):**也叫链内转账,交易支持多对多的转账操作。多对多有两层含义,一是资产可以是多个,二是转账地址可以是多个。转账人、转账资产、转账金额都体现在交易的from和to里,后面会详细说明。 + +​ **跨链转账(type=10):**跨链转账是指将链上资产跨链转到别的NULS平行链上去。同普通转账一样,也支持多对多的转账操作,体现在交易的from和to里。 + +​ **合约转账(type=16):**合约转账只支持合约token的链内转账,它实际上是通过调用智能合约完成的。交易的from和to里只包含手续费。 + +​ **合约跨链转账(type=26):**合约的跨链转账,也是通过调用智能合约完成的。但是节点在打包区块解析智能合约后,系统内部生成一个type=10的跨链交易,一同打包到区块内。所以实际上合约跨链转账是通过两个交易来实现。 + +#### 交易的from和to 用转账交易为例:tx.type = 2 -​ from为转账交易的转出方,每一个from视为一个转账人的某一种资产转出多少数量,其中nonce值每次转账后都会改变,可通过调用查询账户余额接口获取当前最新nonce值。 +``` +tx:{ + "hash": "9c10fdf7162b00ac9a0972fcdc81c68d4f41383f025196a4207372e78acc9a3f", //交易ID + "type": 2, + "from": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1 + "assetsId": 1, + "amount": "100000100000", + "nonce": "86f0ae38296c6b9d", + "locked": 0 + } + ], + "to": [ + { + "address": "NULSeBaMnAh6nquK1PARuRzKVk5LcfmFEAu7X", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000000000", + "lockTime": 0 + } + ] +} +``` + +​ **from:**转账交易的转出方,每一个from视为一个地址的某一种资产转出多少数量。通过assetsChainId和assetsId确定某一个具体资产,address为转出地址,amount为转出数量。其中nonce值每次转账后都会改变,防止打包时出现双花,可通过调用查询账户余额接口获取当前最新nonce值。 + +​ **to:**转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime字段为锁定时间。当lockTime=0时,表示资产可以正常使用;当锁定时间大于0时,表示只有当现实时间(时间戳)超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 + +#### 资产的永久锁定与解锁 + +​ NULS里支持特殊的交易将链上的资产永久锁定,通常这种永久锁定交易都是成对出现,再通过另一个交易解除锁定,从而实现一些复杂的业务逻辑。我们用委托参与共识交易(type=5)和退出取消委托共识(type=6)来举例说明。 -​ to为转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime为锁定时间。当锁定时间大于0时,表示现实时间超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 +**委托参与共识交易:** -​ 交易的手续费 = from里本链主资产之和 - to里本链主资产之和 +``` +tx:{ + "hash": "fce936c045d2f200598db030105ecce20fdf09f672897d4e0e18f6d8bd9dc023", //交易ID + "type": 5, + "from": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000100000", + "nonce": "207372e78acc9a3f", + "locked": 0 + } + ], + "to": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000000000", + "lockTime": -1 + } + ] +} +``` + +这个交易里type=5,from和to的地址相同,都是NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS,且to的lockTime = -1。表示自己通过委托共识交易永久锁定了部分资产,去参与共识获得出块奖励。 + +**取消委托共识交易:** + +``` +tx:{ + "hash": "ff6596e2489c591efa94eab27e082f902bc5fefb529416e00cd736a34029c08c", //交易ID + "type": 6, + "from": [ + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 2, + "assetsId": 1, + "amount": "100000000000", //必须和锁定时的金额一致 + "nonce": "0e18f6d8bd9dc023", //必须是锁定交易的hash后8位 + "locked": -1 + } + ], + "to": [ + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 2, + "assetsId": 1, + "amount": "99999900000", + "lockTime": 0 + } + ] +} +``` + +这个交易里from的locked = -1,表示为需要解锁一笔资产。需要注意的是,解锁交易的from必须和之前锁定交易的to保持一致,即assetsChainId、assetsId、amount值一样。nonce值则是之前锁定交易hash的后8位。 + +#### 交易手续费 + +​ 交易手续费 :from里本链主资产之和 - to里本链主资产之和。 + +​ 手续费单价: + +​ 转账交易(type=2):0.001NULS/KB + +​ 其他交易:0.01NULS/KB ## 访问方式 @@ -91,7 +220,7 @@ int VERIFIER_INIT = 25; //验证人初始化 URL: http://${ip}:${port}/jsonrpc - 示例: http://127.0.0.1:18004/jsonrpc + 示例: http://127.0.0.1:8004/jsonrpc 请求数据格式: @@ -185,11 +314,11 @@ _**详细描述: 获取本链相关信息,其中共识资产为本链创建共 _**详细描述: 创建的账户存在于本地钱包内**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- |:------:| ---- |:----:| -| chainId | int | 链ID | 是 | -| count | int | 创建数量 | 是 | -| password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- | :------: | -------------------------------------------------------- | :------: | +| chainId | int | 链ID | 是 | +| count | int | 创建数量 | 是 | +| password | string | 8-20位长度的密码,字母与数字的组合,且密码首位必须是字母 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -255,7 +384,7 @@ _**详细描述: 修改账户密码**_ ### 1.3 导出账户私钥 #### Cmd: getPriKey -_**详细描述: 只能导出本地钱包已存在账户的私钥**_ +_**详细描述: 导出本地钱包已存在账户的私钥**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | @@ -294,11 +423,11 @@ _**详细描述: 只能导出本地钱包已存在账户的私钥**_ _**详细描述: 导入私钥时,需要输入密码给明文私钥加密**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- |:------:| ------ |:----:| -| chainId | int | 链ID | 是 | -| priKey | string | 账户明文私钥 | 是 | -| password | string | 新密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- | :------: | -------------------- | :------: | +| chainId | int | 链ID | 是 | +| priKey | string | 账户明文私钥 | 是 | +| password | string | 新密码,用于加密私钥 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -992,10 +1121,31 @@ _**详细描述: 查询钱包内创建的账户列表**_ #### 返回值 无返回值 #### Example request data: -无 +``` +{ + "jsonrpc":"2.0", + "method":"getAddressList", + "params":[], + "id":1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc": "2.0", + "id": "1234", + "result": [ + "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "tNULSeBaMuJrfBuCWJn9t3WeKo8VGPvScftivi", + "tNULSeBaMnrTyBNxbAnPgyihYLennQcYjh835H", + "tNULSeBaMfRZXhSuWtka6RqmGhS8cfYk7wEtY3", + "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe" + ] +} +``` + + ### 2.1 获取本节点的网络状态信息 #### Cmd: getNetworkInfo @@ -1009,10 +1159,31 @@ _**详细描述: 获取本节点的网络状态信息**_ | --- |:-----------:| ------ | | 返回值 | networkinfo | 返回网络状态 | #### Example request data: -无 +``` +{ +"jsonrpc":"2.0", +"method":"getNetworkInfo", +"params":[], +"id":1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc": "2.0", + "id": "1234", + "result": { + "localBestHeight": 4624308, + "netBestHeight": 4624309, + "timeOffset": -17, + "inCount": 0, + "outCount": 12 + } +} +``` + + ### 2.2 根据区块高度查询区块头 #### Cmd: getHeaderByHeight @@ -1723,7 +1894,7 @@ _**详细描述: 根据hash获取交易**_ "time" : "2019-12-18 14:35:04.004", "blockHeight" : 172, "blockHash" : "d7412d925da4eef1f1d7fdf2e19c24d1d2616e9ae3d75b405ee9e69b51bf0491", - "remark" : "call contract test - 空气币转账", + "remark" : "call contract test", "transactionSignature" : "2103958b790c331954ed367d37bac901de5c2f06ac8368b37d7bd6cd5ae143c1d7e3473045022100fa7c1987316b16fbc156173d2419591e4bc0df15835c096eae5d38f24c34ae7802201ca68cf83b13811f5e4cbd09bd03a53394ef0e90d20cd4a1bb43eb13a6fa441e", "txDataHex" : "020001f7ec6473df12e751d64cf20a8baa7edd50810f810200029fef190beb3651234855ec4348471180ae1881b1000000000000000000000000000000000000000000000000000000000000000080841e00000000001900000000000000087472616e7366657200020126744e554c536542614d72624d52694641556565417436737762347856424e79693831594c32340103383030", "status" : 1, @@ -1959,10 +2130,25 @@ _**详细描述: 发起单账户单资产的转账交易,转账资产为链内 | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: -无 +``` +{ + "jsonrpc" : "2.0", + "method" : "transferOtherChainAsset", + "params" : [ 5, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], + "id" : 1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc" : "2.0", + "id" : "1234", + "result" : { + "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" + } +} +``` ### 3.8 单笔跨链转账 #### Cmd: crossTransfer @@ -1984,33 +2170,49 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: -无 +``` +{ + "jsonrpc" : "2.0", + "method" : "crossTransfer", + "params" : [ 2, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "TNVTseBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "cross transfer tx" ], + "id" : 1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc" : "2.0", + "id" : "1234", + "result" : { + "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" + } +} +``` + + ### 3.9 离线组装转账交易 #### Cmd: createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| -| transferDto | transferdto | 转账交易表单 | 是 | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         time | long | 创建时间 | 否 | -|         remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2030,7 +2232,7 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 "amount" : "100001000000", "nonce" : "0000000000000000" } ], [ { - "address" : "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", + "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "assetChainId" : 2, "assetId" : 1, "amount" : "100000000000", @@ -2058,23 +2260,22 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的跨链转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,加上跨链转账手续费(NULS)**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| -| transferDto | transferdto | 转账交易表单 | 是 | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         time | long | 创建时间 | 否 | -|         remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2082,24 +2283,53 @@ _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于 | hash | string | 交易hash | | txHex | string | 交易序列化16进制字符串 | #### Example request data: -无 +``` +{ + "jsonrpc" : "2.0", + "method" : "createCrossTxOffline", + "params" : [ [ { + "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "assetChainId" : 2, + "assetId" : 1, + "amount" : "100001000000", + "nonce" : "0000000000000000" + } ], [ { + "address" : "TNVTeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", + "assetChainId" : 2, + "assetId" : 1, + "amount" : "100000000000", + "lockTime" : 0 + } ], "remark" ], + "id" : 1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc" : "2.0", + "id" : "1234", + "result" : { + "txHex" : "0200b67f2d5d0672656d61726b008c01170200012a9af4ee49f4cb1ee84eafd42aec41bc04b28f7b02000100402a8648170000000000000000000000000000000000000000000000000000000800000000000000000001170200012a9af4ee49f4cb1ee84eafd42aec41bc04b28f7b0200010000e8764817000000000000000000000000000000000000000000000000000000000000000000000000", + "hash" : "748184df91eda8d09be76e075d553313434c56bfeec3d449abc99ba6c430c00c" + } +} +``` + + ### 3.11 计算离线创建转账交易所需手续费 #### Cmd: calcTransferTxFee -_**详细描述: 计算离线创建转账交易所需手续费**_ +_**详细描述: 计算离线创建转账交易所需手续费,其中手续费单价不填写,默认为0.001NULS**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ |:----------------:| ------- |:----:| -| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | -|         addressCount | int | 转账地址数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | -|         price | biginteger | 手续费单价 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :--------: | ------------ | :------: | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2133,48 +2363,60 @@ _**详细描述: 计算离线创建转账交易所需手续费**_ _**详细描述: 计算离线创建跨链转账交易所需手续费**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ |:----------------:| ------- |:----:| -| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | -|         addressCount | int | 转账地址数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | -|         price | biginteger | 手续费单价 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ------------ | :------: | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | | ----- |:------:| ----- | | value | string | 交易手续费 | #### Example request data: -无 +``` +{ +"jsonrpc":"2.0", +"method":"calcCrossTxFee", +"params":[1, 1, 1,"remark"], +"id":1234 +} +``` #### Example response data: -略 +``` +{ + "jsonrpc": "2.0", + "id": "1234", + "result": { + "value": "1000000" + } +} +``` ### 3.13 离线组装转账交易 #### Cmd: createMultiSignTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:| -| transferDto | multisigntransferdto | 转账交易表单 | 是 | -|         pubKeys | list<string> | 公钥集合 | 是 | -|         minSigns | int | 最小签名数 | 是 | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         remark | string | 交易备注 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | +|         pubKeys | list<string> | 公钥集合 | 是 | +|         minSigns | int | 最小签名数 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         remark | string | 交易备注 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2222,14 +2464,13 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 _**详细描述: 计算离线创建转账交易所需手续费**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:| -| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 | -|         pubKeyCount | int | 多签地址对应公钥数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | -|         price | biginteger | 手续费单价 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ----------------------------------------------------------- | :--------: | -------------------- | :------: | +|         pubKeyCount | int | 多签地址对应公钥数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2260,7 +2501,7 @@ _**详细描述: 计算离线创建转账交易所需手续费**_ ### 4.1 发布合约 #### Cmd: contractCreate -_**详细描述: 发布合约**_ +_**详细描述: 发布智能合约**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | @@ -2286,7 +2527,7 @@ _**详细描述: 发布合约**_ { "jsonrpc" : "2.0", "method" : "contractCreate", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", "jsonrpc_nrc20", 20000, 30, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ], null ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", "jsonrpc_nrc20", 20000, 30, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86e5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b0404806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbeff", [ "io", "IO", 80000, 1 ], null ], "id" : 1234 } ``` @@ -2642,25 +2883,7 @@ _**详细描述: 获取智能合约详细信息**_ "view" : false, "event" : false, "payable" : false - }, { - "name" : "single", - "desc" : "() return String", - "args" : [ ], - "returnArg" : "String", - "view" : false, - "event" : false, - "payable" : false - }, { - "name" : "multy", - "desc" : "() return String", - "args" : [ ], - "returnArg" : "String", - "view" : false, - "event" : false, - "payable" : true - }, { - "name" : "multyForAddress", - "desc" : "(Address add1, BigInteger add1_na, Address add2, BigInteger add2_na, String add3ForString, BigInteger add3_na) return String", + }, "args" : [ { "type" : "Address", "name" : "add1", @@ -3088,7 +3311,7 @@ _**详细描述: 获取合约代码构造函数**_ { "jsonrpc" : "2.0", "method" : "getContractConstructor", - "params" : [ 2, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" ], + "params" : [ 2, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbac199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c223083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" ], "id" : 1234 } ``` @@ -3390,7 +3613,7 @@ _**详细描述: 估算发布合约交易的GAS**_ { "jsonrpc" : "2.0", "method" : "imputedContractCreateGas", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ] ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb90000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ] ], "id" : 1234 } ``` @@ -3520,7 +3743,7 @@ _**详细描述: 离线 - 发布合约交易**_ { "jsonrpc" : "2.0", "method" : "contractCreateOffline", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", "off_nrc20", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", 20245, [ "air", "AIR", 10000, 2 ], [ "String", "String", "BigInteger", "int" ], "offline create" ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", "off_nrc20", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe27841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e03742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", 20245, [ "air", "AIR", 10000, 2 ], [ "String", "String", "BigInteger", "int" ], "offline create" ], "id" : 1234 } ``` @@ -3532,7 +3755,7 @@ _**详细描述: 离线 - 发布合约交易**_ "jsonrpc" : "2.0", "id" : "1234", "result" : { - "txHex" : "0f00212d375d0e6f66666c696e6520637265617465fd7a19020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000219465936f10d20dd74de26ce391f9764acfcd445fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000096f66665f6e72633230154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", + "txHex" : "0f00212d375d0e6f66666c696e6520637265617465fd7a19020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000219465936f10d20dd74de26ce391f9764acfcd445fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1d8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000096f66665f6e72633230154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", "contractAddress" : "tNULSeBaMxHqD1Vdcmyx4P43GMCPGcRiFzqjie", "hash" : "2ca7d4e9f2ffcb92e1d134ea4a544ffb947f4c9154ff73223834d87bba9734ba" } @@ -3728,16 +3951,15 @@ _**详细描述: 离线 - 从账户地址向合约地址转账(主链资产)的 _**详细描述: 创建共识节点**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------------- |:---------------:| ----------- |:----:| -| chainId | int | 链ID | 是 | -| CreateAgentForm | createagentform | 创建共识节点表单 | 是 | -|         agentAddress | string | 节点地址 | 是 | -|         packingAddress | string | 节点出块地址 | 是 | -|         rewardAddress | string | 奖励地址,默认节点地址 | 否 | -|         commissionRate | int | 佣金比例 | 是 | -|         deposit | string | 抵押金额 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ---------------------- | :------: | +| chainId | int | 链ID | 是 | +|         agentAddress | string | 节点地址 | 是 | +|         packingAddress | string | 节点出块地址 | 是 | +|         rewardAddress | string | 奖励地址,默认节点地址 | 否 | +|         commissionRate | int | 佣金比例 | 是 | +|         deposit | string | 抵押金额 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3769,12 +3991,11 @@ _**详细描述: 创建共识节点**_ _**详细描述: 注销共识节点**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:-------------:| -------- |:----:| -| chainId | int | 链ID | 是 | -| StopAgentForm | stopagentform | 注销共识节点表单 | 是 | -|         address | string | 共识节点地址 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | ------------ | :------: | +| chainId | int | 链ID | 是 | +|         address | string | 共识节点地址 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3806,14 +4027,13 @@ _**详细描述: 注销共识节点**_ _**详细描述: 委托参与共识**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- |:-----------:| -------- |:----:| -| chainId | int | 链ID | 是 | -| DepositForm | depositform | 委托参与共识表单 | 是 | -|         address | string | 参与共识账户地址 | 是 | -|         agentHash | string | 共识节点hash | 是 | -|         deposit | string | 参与共识的金额 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- | :------: | ---------------- | :------: | +| chainId | int | 链ID | 是 | +|         address | string | 参与共识账户地址 | 是 | +|         agentHash | string | 共识节点hash | 是 | +|         deposit | string | 参与共识的金额 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3845,13 +4065,12 @@ _**详细描述: 委托参与共识**_ _**详细描述: 退出共识**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:------------:| ------------ |:----:| -| chainId | int | 链ID | 是 | -| WithdrawForm | withdrawform | 退出共识表单 | 是 | -|         address | string | 节点地址 | 是 | -|         txHash | string | 加入共识时的交易hash | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | -------------------- | :------: | +| chainId | int | 链ID | 是 | +|         address | string | 节点地址 | 是 | +|         txHash | string | 加入共识时的交易hash | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -4149,6 +4368,10 @@ _**详细描述: 参与共识所需资产可通过查询链信息接口获取(ag } ``` +``` +createAgent +``` + ### 5.11 离线组装 - 注销共识节点 #### Cmd: stopAgentOffline _**详细描述: 组装交易的StopDepositDto信息,可通过查询节点的委托共识列表获取,input的nonce值可为空**_ diff --git a/module/nuls-api/documents/nuls-api_RESTFUL.md b/module/nuls-api/documents/nuls-api_RESTFUL.md index 903dfe6838..7397c2ce81 100644 --- a/module/nuls-api/documents/nuls-api_RESTFUL.md +++ b/module/nuls-api/documents/nuls-api_RESTFUL.md @@ -8,12 +8,12 @@ ## 设置 -​ `NULS-API`模块默认访问的端口号是18004,可以在nuls.ncf配置文件中做修改,如下: +​ `NULS-API`模块默认访问的端口号是8004,可以在nuls.ncf配置文件中做修改,如下: ``` [nuls-API] #httpServer的启动port -serverPort=18004 +serverPort=8004 ``` ## 说明 @@ -24,23 +24,41 @@ serverPort=18004 `NULS-API`模块提供了若干在线接口和离线接口。 -在线接口:钱包必须正常运行,且能够连接网络中的其他节点,能够正常同步区块和广播数据。在调用在线接口之前,最好是已经同步到最新区块。接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账、获取区块头等。 +#### 在线接口 -离线接口:NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 +即需要访问节点钱包API,才能得到正确的返回结果。访问在线接口有以下几点要求: -### 字段描述 +- 需安装节点钱包且必须正常运行。 +- 节点钱包能够连接网络中的其他节点,能够正常同步区块和广播数据。 +- 在调用在线接口之前,节点钱包最好是已经同步到最新区块。 -**链的chainId:** +在线接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账交易、获取区块头等。 -​ NULS2.0支持多链并行和跨链转账,每条链通过链ID来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 +#### 离线接口 -**链的资产:** +NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 -​ NULS2.0支持每条链除了默认的资产外,可根据业务需要,动态添加资产。每条链的每种资产通过链ID和资产ID的复合主键来区分。例如NULS主网的NULS,chainId=1,assetId=1 +### 字段与业务描述 -**交易的type值:** +#### 链的chainId -​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过type字段来区分不同交易类型,以下是交易类型的枚举值: +​ NULS2.0支持多链并行和跨链转账,每条链通过链ID(chainId)来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 + +#### 链的资产 + +​ NULS2.0还支持多资产,每条链除了默认的资产外,可根据业务需要,动态添加资产。每种资产通过链ID(chainId)和资产ID(assetId)的复合主键来区分。例如NULS主网的NULS资产(chainId=1,assetId=1) + +​ **主资产:每条链的默认资产就是主资产,交易手续费只收取本链主资产。** + +#### 合约资产 + +​ NULS2.0内置智能合约,用户可以通过NULS官方提供的标准NRC20合约模板发布合约资产(token),每发布一个合约资产都有唯一合约地址作为标记。 + +​ 这里需要注意的是合约资产并不等于链的资产,链的资产是会在链上分配有chainId和assetId属性的,而合约资产并没有。 + +#### 交易类型 + +NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过交易类型字段(type)来区分不同交易类型,以下是交易类型的枚举值: ``` int COIN_BASE = 1; // coinBase出块奖励 @@ -68,17 +86,130 @@ int CONTRACT_CANCEL_DEPOSIT = 22; // 合约取消委托共识 int CONTRACT_STOP_AGENT = 23; // 合约注销共识节点 int VERIFIER_CHANGE = 24; // 验证人变更 int VERIFIER_INIT = 25; //验证人初始化 +int CONTRACT_TOKEN_CROSS_TRANSFER = 26; // 合约跨链转账 ``` -**交易的from和to:** +#### 转账 + +​ 转账交易分为4种:**普通转账、跨链转账、合约转账、合约跨链转账。**其中普通转账和跨链转账针对是链上资产(分配有chainId和assetId)。后两者针对合约token的转账。 + +​ **普通转账(type=2):**也叫链内转账,交易支持多对多的转账操作。多对多有两层含义,一是资产可以是多个,二是转账地址可以是多个。转账人、转账资产、转账金额都体现在交易的from和to里,后面会详细说明。 + +​ **跨链转账(type=10):**跨链转账是指将链上资产跨链转到别的NULS平行链上去。同普通转账一样,也支持多对多的转账操作,体现在交易的from和to里。 + +​ **合约转账(type=16):**合约转账只支持合约token的链内转账,它实际上是通过调用智能合约完成的。交易的from和to里只包含手续费。 + +​ **合约跨链转账(type=26):**合约的跨链转账,也是通过调用智能合约完成的。但是节点在打包区块解析智能合约后,系统内部生成一个type=10的跨链交易,一同打包到区块内。所以实际上合约跨链转账是通过两个交易来实现。 + +#### 交易的from和to 用转账交易为例:tx.type = 2 -​ from为转账交易的转出方,每一个from视为一个转账人的某一种资产转出多少数量,其中nonce值每次转账后都会改变,可通过调用查询账户余额接口获取当前最新nonce值。 +``` +tx:{ + "hash": "9c10fdf7162b00ac9a0972fcdc81c68d4f41383f025196a4207372e78acc9a3f", //交易ID + "type": 2, + "from": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1 + "assetsId": 1, + "amount": "100000100000", + "nonce": "86f0ae38296c6b9d", + "locked": 0 + } + ], + "to": [ + { + "address": "NULSeBaMnAh6nquK1PARuRzKVk5LcfmFEAu7X", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000000000", + "lockTime": 0 + } + ] +} +``` + +​ **from:**转账交易的转出方,每一个from视为一个地址的某一种资产转出多少数量。通过assetsChainId和assetsId确定某一个具体资产,address为转出地址,amount为转出数量。其中nonce值每次转账后都会改变,防止打包时出现双花,可通过调用查询账户余额接口获取当前最新nonce值。 + +​ **to:**转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime字段为锁定时间。当lockTime=0时,表示资产可以正常使用;当锁定时间大于0时,表示只有当现实时间(时间戳)超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 + +#### 资产的永久锁定与解锁 + +​ NULS里支持特殊的交易将链上的资产永久锁定,通常这种永久锁定交易都是成对出现,再通过另一个交易解除锁定,从而实现一些复杂的业务逻辑。我们用委托参与共识交易(type=5)和退出取消委托共识(type=6)来举例说明。 + +**委托参与共识交易:** + +``` +tx:{ + "hash": "fce936c045d2f200598db030105ecce20fdf09f672897d4e0e18f6d8bd9dc023", //交易ID + "type": 5, + "from": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000100000", + "nonce": "207372e78acc9a3f", + "locked": 0 + } + ], + "to": [ + { + "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 1, + "assetsId": 1, + "amount": "100000000000", + "lockTime": -1 + } + ] +} +``` + +这个交易里type=5,from和to的地址相同,都是NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS,且to的lockTime = -1。表示自己通过委托共识交易永久锁定了部分资产,去参与共识获得出块奖励。 + +**取消委托共识交易:** + +``` +tx:{ + "hash": "ff6596e2489c591efa94eab27e082f902bc5fefb529416e00cd736a34029c08c", //交易ID + "type": 6, + "from": [ + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 2, + "assetsId": 1, + "amount": "100000000000", //必须和锁定时的金额一致 + "nonce": "0e18f6d8bd9dc023", //必须是锁定交易的hash后8位 + "locked": -1 + } + ], + "to": [ + { + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "assetsChainId": 2, + "assetsId": 1, + "amount": "99999900000", + "lockTime": 0 + } + ] +} +``` + +这个交易里from的locked = -1,表示为需要解锁一笔资产。需要注意的是,解锁交易的from必须和之前锁定交易的to保持一致,即assetsChainId、assetsId、amount值一样。nonce值则是之前锁定交易hash的后8位。 + +#### 交易手续费 + +​ 交易手续费 :from里本链主资产之和 - to里本链主资产之和。 + +​ 手续费单价: + +​ 转账交易(type=2):0.001NULS/KB + +​ 其他交易:0.01NULS/KB -​ to为转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime为锁定时间。当锁定时间大于0时,表示现实时间超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 -​ 交易的手续费 = from里本链主资产之和 - to里本链主资产之和 ## 访问方式 @@ -183,10 +314,11 @@ _**详细描述: 创建的账户存在于本地钱包内**_ #### HttpMethod: POST #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- |:------:| ------------------ |:----:| -| count | string | 新建账户数量,取值[1-10000] | 是 | -| password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- | :------: | -------------------------- | :------: | +| form | | 表单 | -- | +| count | string | 新建账户数量,取值[1-10000] | 是 | +| password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -232,12 +364,12 @@ _**详细描述: 修改账户密码**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ----------------------------------------------------------- |:-------------------------:| -------- |:----:| -| address | string | 账户地址 | 是 | -| form | accountupdatepasswordform | 账户密码信息表单 | 是 | -|         password | string | 原始密码 | 是 | -|         newPassword | string | 新密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ----------------------------------------------------------- | :------: | -------- | :------: | +| address | string | 账户地址 | 是 | +| form | | 表单 | -- | +|         password | string | 原始密码 | 是 | +|         newPassword | string | 新密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -282,11 +414,11 @@ _**详细描述: 只能导出本地钱包已存在账户的私钥**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:-------------------:| -------- |:----:| -| address | string | 账户地址 | 是 | -| form | accountpasswordform | 账户密码信息表单 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | -------- | :------: | +| address | string | 账户地址 | 是 | +| form | | 表单 | -- | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -332,12 +464,12 @@ _**详细描述: 导入私钥时,需要输入密码给明文私钥加密**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:| -| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 | -|         priKey | string | 私钥 | 是 | -|         password | string | 密码 | 是 | -|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- | :------: | --------------------------------------------- | :------: | +| form | | 表单 | -- | +|         priKey | string | 私钥 | 是 | +|         password | string | 密码 | 是 | +|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -375,10 +507,10 @@ _**详细描述: 根据keyStore导入账户**_ #### HttpMethod: POST #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:-----------:| ---------- |:----:| -| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 | -|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :---------: | ------------ | :------: | +| form | | 表单 | -- | +|         keystore | inputstream | keystore文件 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -465,15 +597,15 @@ _**详细描述: 根据keystore字符串导入账户**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:| -| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 | -|         keystore | object | keystore字符串 | 是 | -|                 address | string | 账户地址 | 是 | -|                 encryptedPrivateKey | string | 加密后的私钥 | 是 | -|                 pubKey | string | 公钥 | 是 | -|                 prikey | string | 私钥 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ------------------------------ | :------: | +| form | | 根据keystore字符串导入账户表单 | -- | +|         keystore | object | keystore字符串 | 是 | +|                 address | string | 账户地址 | 是 | +|                 encryptedPrivateKey | string | 加密后的私钥 | 是 | +|                 pubKey | string | 公钥 | 是 | +|                 prikey | string | 私钥 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -525,12 +657,12 @@ _**详细描述: 账户备份,导出AccountKeyStore文件到指定目录**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:---------------------:| -------------- |:----:| -| address | string | 账户地址 | 是 | -| form | accountkeystorebackup | keystone导出信息表单 | 是 | -|         password | string | 密码 | 是 | -|         path | string | 文件路径 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | -------- | :------: | +| address | string | 账户地址 | 是 | +| form | | 表单 | -- | +|         password | string | 密码 | 是 | +|         path | string | 文件路径 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -577,12 +709,12 @@ _**详细描述: 别名格式为1-20位小写字母和数字的组合,设置 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:------------:| -------- |:----:| -| form | setaliasform | 账户设置别名表单 | 是 | -|         address | string | 账户地址 | 是 | -|         alias | string | 别名 | 是 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | -------- | :------: | +| form | -- | 表单 | -- | +|         address | string | 账户地址 | 是 | +|         alias | string | 别名 | 是 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -629,11 +761,11 @@ _**详细描述: 根据资产链ID和资产ID,查询本链账户对应资产 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ |:-----------:| ------ |:----:| -| balanceDto | balanceform | 账户余额表单 | 是 | -|         assetChainId | int | 资产的链ID | 是 | -|         assetId | int | 资产ID | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ---------- | :------: | +| balanceDto | -- | 表单 | -- | +|         assetChainId | int | 资产的链ID | 是 | +|         assetId | int | 资产ID | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -691,11 +823,11 @@ _**详细描述: 验证地址格式是否正确**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------- |:-------------------:| -------- |:----:| -| form | validateaddressform | 账户设置别名表单 | 是 | -|         chainId | int | 链ID | 是 | -|         address | string | 账户地址 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------- | :------: | -------- | :------: | +| form | -- | 表单 | -- | +|         chainId | int | 链ID | 是 | +|         address | string | 账户地址 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -741,11 +873,11 @@ _**详细描述: 根据账户公钥生成账户地址**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- |:--------------------:| ------------ |:----:| -| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 | -|         chainId | int | 链ID | 是 | -|         publicKey | string | 账户公钥 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- | :------: | -------- | :------: | +| form | -- | 表单 | -- | +|         chainId | int | 链ID | 是 | +|         publicKey | string | 账户公钥 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -793,12 +925,12 @@ _**详细描述: 创建的账户不会保存到钱包中,接口直接返回账 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:-----------------:| ---------- |:----:| -| form | accountcreateform | 离线批量创建账户表单 | 是 | -|         count | int | 新建账户数量 | 是 | -|         prefix | string | 地址前缀 | 否 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :------: | ------------ | :------: | +| form | -- | 表单 | -- | +|         count | int | 新建账户数量 | 是 | +|         prefix | string | 地址前缀 | 否 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -853,12 +985,12 @@ _**详细描述: 离线获取账户明文私钥**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:-------------:| ------------ |:----:| -| form | getprikeyform | 离线获取账户明文私钥表单 | 是 | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ------------ | :------: | +| form | -- | 表单 | -- | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -907,13 +1039,13 @@ _**详细描述: 离线修改账户密码**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:-----------------:| ---------- |:----:| -| form | resetpasswordform | 离线修改账户密码表单 | 是 | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         oldPassword | string | 账户原密码 | 是 | -|         newPassword | string | 账户新密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ------------ | :------: | +| form | -- | 表单 | -- | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         oldPassword | string | 账户原密码 | 是 | +|         newPassword | string | 账户新密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -966,15 +1098,15 @@ _**详细描述: 用于签名离线组装的多账户转账交易,调用接口 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:| -| form | multisignform | 多账户摘要签名表单 | 是 | -|         dtoList | list<object> | keystore集合 | 是 | -|                 address | string | 地址 | 是 | -|                 priKey | string | 明文私钥 | 否 | -|                 encryptedPrivateKey | string | 加密私钥 | 否 | -|                 password | string | 密码 | 否 | -|         txHex | string | 交易序列化Hex字符串 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :-------------: | ------------------- | :------: | +| form | -- | 表单 | -- | +|         dtoList | list<object> | keystore集合 | 是 | +|                 address | string | 地址 | 是 | +|                 priKey | string | 明文私钥 | 否 | +|                 encryptedPrivateKey | string | 加密私钥 | 否 | +|                 password | string | 密码 | 否 | +|         txHex | string | 交易序列化Hex字符串 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1028,12 +1160,12 @@ _**详细描述: 明文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------- |:--------------:| ----------- |:----:| -| form | prikeysignform | 明文私钥摘要签名表单 | 是 | -|         txHex | string | 交易序列化Hex字符串 | 是 | -|         address | string | 账户地址 | 是 | -|         priKey | string | 账户明文私钥 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------- | :------: | ------------------- | :------: | +| form | -- | 表单 | -- | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         priKey | string | 账户明文私钥 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1049,6 +1181,7 @@ _**request form data:**_ ```json { + "chainId":1, "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", "priKey" : "c55c80b0afcbebea36bc2cc1f07a1946935fe578c0c8c35190180f99619d5f48" @@ -1061,7 +1194,7 @@ _**request form data:**_ { "success" : true, "data" : { - "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0fbc5fe9335ab91ae925ded6bed", + "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0ae925ded6bed", "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" } } @@ -1086,15 +1219,15 @@ _**详细描述: 密文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:| -| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 | -|         txHex | string | 交易序列化Hex字符串 | 是 | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         password | string | 账户密码 | 是 | -|         chainId | int | 地址链ID | 是 | -|         prefix | string | 地址前缀 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | ------------------- | :------: | +| form | -- | 表单 | -- | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | +|         chainId | int | 地址链ID | 是 | +|         prefix | string | 地址前缀 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1110,6 +1243,7 @@ _**request form data:**_ ```json { + "chainId":1, "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", "encryptedPriKey" : "54793157409d0414248ef290eac96270c1a0115d712e845f0eb372bb977cbc0cafe39d598175473fa1bd5329dd1fae95", @@ -1148,15 +1282,16 @@ _**详细描述: 多账号密文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:| -| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 | -|         txHex | string | 交易序列化Hex字符串 | 是 | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         password | string | 账户密码 | 是 | -|         chainId | int | 地址链ID | 是 | -|         prefix | string | 地址前缀 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ | :------: | -------------------- | :------: | +| form | -- | 密文私钥摘要签名表单 | -- | +|     chainId | int | 地址链ID | | +|     txHex | string | 交易序列化Hex字符串 | 是 | +|    prefix | string | 地址前缀 | 是 | +| signDtoList | | | | +|           address | string | 账户地址 | 是 | +|            encryptedPriKey | string | 账户密文私钥 | 是 | +|           password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1166,13 +1301,37 @@ _**详细描述: 多账号密文私钥摘要签名**_ #### Example request data: _**request path:**_ -略 +/api/account/encryptedPriKeys/sign _**request form data:**_ -无 + +``` +{ + "chainId":1, + "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", + "prefix":"tNULS", + "signDtoList":[ + { + "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", + "encryptedPriKey" : "54793157409d0414248ef290eac96270c1a0115d712e845f0eb372bb977cbc0cafe39d598175473fa1bd5329dd1fae95", + "password" : "abcd1234" + } + ] +} +``` #### Example response data: -略 +``` +{ + "success" : true, + "data" : { + "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0fbc5fe9335ab91ae925ded6bed", + "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" + } +} +``` + + ### 1.20 创建多签账户 #### Cmd: /api/account/multiSign/create @@ -1189,11 +1348,11 @@ _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- |:--------------------------:| -------- |:----:| -| form | multisignaccountcreateform | 创建多签账户表单 | 是 | -|         pubKeys | list<string> | 账户公钥集合 | 是 | -|         minSigns | int | 最小签名数 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- | :-------------: | ---------------- | :------: | +| form | -- | 创建多签账户表单 | 是 | +|         pubKeys | list<string> | 账户公钥集合 | 是 | +|         minSigns | int | 最小签名数 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2425,13 +2584,33 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ #### Example request data: _**request path:**_ -略 +/api/accountledger/crossTransfer _**request form data:**_ -无 + +``` +{ + "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "toAddress" : "TNVTeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", + "password" : "nuls123456", + "amount" : 10000000000, + "assetChainId":2, + "assetId":1, + "remark" : "remark" +} +``` #### Example response data: -略 +``` +{ + "success" : true, + "data" : { + "value" : "89368623898cde34fe81b5ede6fe5bed75ffb61021ec6caa01a9a5dcd9262d69" + } +} +``` + + ### 3.8 离线组装转账交易 #### Cmd: /api/accountledger/createTransferTxOffline @@ -2579,13 +2758,42 @@ _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于 #### Example request data: _**request path:**_ -略 +/api/accountledger/createCrossTxOffline _**request form data:**_ -无 + +``` +{ + "inputs" : [ { + "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", + "assetChainId" : 2, + "assetId" : 1, + "amount" : 1100000, + "nonce" : "0000000000000000" + } ], + "outputs" : [ { + "address" : "TNVTeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "assetChainId" : 2, + "assetId" : 1, + "amount" : "1000000", + "lockTime" : 0 + } ], + "remark" : null +} +``` #### Example response data: -略 +``` +{ + "success" : true, + "data" : { + "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", + "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" + } +} +``` + + ### 3.10 计算离线创建转账交易所需手续费 #### Cmd: /api/accountledger/calcTransferTxFee @@ -2680,13 +2888,31 @@ _**详细描述: 计算离线创建跨链转账交易所需手续费**_ #### Example request data: _**request path:**_ -略 +/api/accountledger/calcCrossTxFee _**request form data:**_ -无 + +``` +{ + "addressCount" : 6, + "fromLength" : 6, + "toLength" : 2, + "remark" : "remark", + "price" : "100000" +} +``` #### Example response data: -略 +``` +{ + "success" : true, + "data" : { + "value" : 2000000 + } +} +``` + + ### 3.12 多签账户离线组装转账交易 #### Cmd: /api/accountledger/createMultiSignTransferTxOffline @@ -2894,7 +3120,7 @@ _**request form data:**_ "price" : 25, "password" : "nuls123456", "remark" : "restful-nrc20-remark", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a26923f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e6377505aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "alias" : "restful_nrc20", "args" : [ "io", "IO", 80000, 1 ] } @@ -3793,7 +4019,7 @@ _**request form data:**_ ```json { - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ab46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf5d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301084035c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" } ``` @@ -4022,7 +4248,7 @@ _**request form data:**_ "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "gasLimit" : 20000, "price" : 25, - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e33734a552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c14959666d8f2f52d12542f89d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a039742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "args" : [ "io", "IO", 80000, 1 ] } ``` @@ -4207,7 +4433,7 @@ _**request form data:**_ ```json { "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebe9b930eb64e2706114a2639488f97d6152c9b0587a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd9804b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "args" : [ "io", "IO", 80000, 1 ] } ``` @@ -4398,7 +4624,7 @@ _**request form data:**_ "alias" : "rf_nrc20_offline", "senderBalance" : "999999998523475", "nonce" : "9c0aea02bed90ddd", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd726b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d491872d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "gasLimit" : 20245, "args" : [ "air", "AIR", 10000, 2 ], "argsType" : [ "String", "String", "BigInteger", "int" ], @@ -4412,7 +4638,7 @@ _**request form data:**_ { "success" : true, "data" : { - "txHex" : "0f008629375d0e28292072657475726e20766f6964fd8119020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b316000000001072665f6e726332305f6f66666c696e65154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", + "txHex" : "0f008629375d0e28292072657475726e20766f6964fd8119020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e78b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436c156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c723e2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bff16f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b316000000001072665f6e726332305f6f66666c696e65154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", "contractAddress" : "tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG", "hash" : "9443656bab59f52441286e1d859855be28cbe155973c712c07385a21b7212152" } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index 4f9c879645..49b313ef43 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -47,7 +47,7 @@ public static void main(String[] args) { //args = new String[]{"ws://192.168.1.40:7771"}; } else { String arg1 = args[0]; - if(StringUtils.isNotBlank(arg1)) { + if (StringUtils.isNotBlank(arg1)) { arg1 = arg1.trim().toLowerCase(); } if ("offline".equals(arg1)) { @@ -105,7 +105,8 @@ public Module[] declareDependent() { new Module(ModuleE.AC.abbr, ROLE), new Module(ModuleE.TX.abbr, ROLE), new Module(ModuleE.LG.abbr, ROLE), - new Module(ModuleE.CC.abbr, ROLE) + new Module(ModuleE.CC.abbr, ROLE), + new Module(ModuleE.NW.abbr, ROLE) }; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index a0efce1ad5..616125761f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -205,9 +205,9 @@ public RpcResult broadcastTx(List params) { return RpcResult.dataNotFound(); } int type = extractTxTypeFromTx(txHex); - // if(type == CROSS_CHAIN){ - // return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); - // } + // if(type == CROSS_CHAIN){ + // return RpcResult.failed(CommonCodeConstanst.PARAMETER_ERROR,"Cross-chain tx pause support"); + // } Result result = new Result(); switch (type) { case CREATE_CONTRACT: @@ -801,7 +801,6 @@ public RpcResult calcTransferTxFee(List params) { return RpcResult.success(map); } - @RpcMethod("calcCrossTxFee") @ApiOperation(description = "计算离线创建跨链转账交易所需手续费", order = 351) @Parameters({ @@ -811,55 +810,38 @@ public RpcResult calcTransferTxFee(List params) { @Key(name = "value", description = "交易手续费"), })) public RpcResult calcCrossTxFee(List params) { - int assetChainId, assetId, addressCount, fromLength, toLength; + int addressCount, fromLength, toLength; String remark; try { - assetChainId = (int) params.get(0); - } catch (Exception e) { - return RpcResult.paramError("[assetChainId] is inValid"); - } - try { - assetId = (int) params.get(1); - } catch (Exception e) { - return RpcResult.paramError("[assetId] is inValid"); - } - try { - addressCount = (int) params.get(2); + addressCount = (int) params.get(0); } catch (Exception e) { return RpcResult.paramError("[addressCount] is inValid"); } try { - fromLength = (int) params.get(3); + fromLength = (int) params.get(1); } catch (Exception e) { return RpcResult.paramError("[fromLength] is inValid"); } try { - toLength = (int) params.get(4); + toLength = (int) params.get(2); } catch (Exception e) { return RpcResult.paramError("[toLength] is inValid"); } try { - remark = (String) params.get(5); + remark = (String) params.get(3); } catch (Exception e) { return RpcResult.paramError("[remark] is inValid"); } -// try { -// price = (String) params.get(4); -// } catch (Exception e) { -// return RpcResult.paramError("[price] is inValid"); -// } -// if (!ValidateUtil.validateBigInteger(price)) { -// return RpcResult.paramError("[price] is inValid"); -// } + CrossTransferTxFeeDto dto = new CrossTransferTxFeeDto(); - dto.setAssetChainId(assetChainId); - dto.setAssetId(assetId); dto.setAddressCount(addressCount); dto.setFromLength(fromLength); dto.setToLength(toLength); dto.setRemark(remark); - Map map = NulsSDKTool.calcCrossTransferTxFee(dto); + BigInteger fee = NulsSDKTool.calcCrossTransferNulsTxFee(dto); + Map map = new HashMap(); + map.put("value", fee.toString()); return RpcResult.success(map); } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java index 0d01d06fc5..7ba8f107a2 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java @@ -67,6 +67,10 @@ public void validate(boolean isDownload, Chain chain, Block block) throws NulsEx chain.getLogger().error("Block Header Verification Error!"); throw new NulsException(ConsensusErrorCode.SIGNATURE_ERROR); } + if (block.getHeader().getTime() - 10 > NulsDateUtils.getCurrentTimeSeconds()) { + chain.getLogger().error("There is a big difference between the block time and the actual time!"); + throw new NulsException(ConsensusErrorCode.ERROR_UNLOCK_TIME); + } RoundValidResult roundValidResult; String blockHeaderHash = blockHeader.getHash().toHex(); try { @@ -220,10 +224,10 @@ private boolean punishValidate(Block block, MeetingRound currentRound, MeetingMe try { Transaction newYellowPunishTX = punishManager.createYellowPunishTx(chain, chain.getNewestHeader(), member, currentRound); boolean isMatch = (yellowPunishTx == null && newYellowPunishTX == null) || (yellowPunishTx != null && newYellowPunishTX != null); - if(!isMatch){ + if (!isMatch) { chain.getLogger().error("The yellow punish tx is wrong! height: " + block.getHeader().getHeight() + " , hash : " + blockHeaderHash); return false; - }else if(yellowPunishTx != null && !yellowPunishTx.getHash().equals(newYellowPunishTX.getHash())){ + } else if (yellowPunishTx != null && !yellowPunishTx.getHash().equals(newYellowPunishTX.getHash())) { chain.getLogger().error("The yellow punish tx's hash is wrong! height: " + block.getHeader().getHeight() + " , hash : " + blockHeaderHash); return false; } @@ -318,7 +322,7 @@ private boolean verifyRedPunish(Chain chain, Transaction tx) throws NulsExceptio roundIndex[i] = blockExtendsData.getRoundIndex(); } //验证三次分叉是否是100轮以内 - if(roundIndex[ConsensusConstant.REDPUNISH_BIFURCATION - 1] - roundIndex[0] > ConsensusConstant.VALUE_OF_ONE_HUNDRED){ + if (roundIndex[ConsensusConstant.REDPUNISH_BIFURCATION - 1] - roundIndex[0] > ConsensusConstant.VALUE_OF_ONE_HUNDRED) { throw new NulsException(ConsensusErrorCode.BLOCK_RED_PUNISH_ERROR); } } @@ -360,7 +364,7 @@ private boolean coinBaseValidate(Block block, MeetingRound currentRound, Meeting if (null == coinBaseTransaction) { chain.getLogger().error("the coin base tx is wrong! height: " + block.getHeader().getHeight() + " , hash : " + blockHeaderHash); return false; - }else if(!tx.getHash().equals(coinBaseTransaction.getHash())){ + } else if (!tx.getHash().equals(coinBaseTransaction.getHash())) { CoinFromComparator fromComparator = new CoinFromComparator(); CoinToComparator toComparator = new CoinToComparator(); @@ -370,13 +374,13 @@ private boolean coinBaseValidate(Block block, MeetingRound currentRound, Meeting coinBaseTransaction.setCoinData(coinBaseCoinData.serialize()); Transaction originTransaction = new Transaction(); - originTransaction.parse(tx.serialize() , 0); - CoinData originCoinData = originTransaction.getCoinDataInstance(); + originTransaction.parse(tx.serialize(), 0); + CoinData originCoinData = originTransaction.getCoinDataInstance(); originCoinData.getFrom().sort(fromComparator); originCoinData.getTo().sort(toComparator); originTransaction.setCoinData(originCoinData.serialize()); - if(!originTransaction.getHash().equals(coinBaseTransaction.getHash())){ + if (!originTransaction.getHash().equals(coinBaseTransaction.getHash())) { chain.getLogger().error("the coin base tx is wrong! height: " + block.getHeader().getHeight() + " , hash : " + blockHeaderHash); return false; } @@ -417,7 +421,7 @@ private boolean coinDataValidate(Chain chain, Transaction tx) throws NulsExcepti coinData.getFrom().sort(fromComparator); coinData.getTo().sort(toComparator); CoinData txCoinData = new CoinData(); - txCoinData.parse(tx.getCoinData(),0); + txCoinData.parse(tx.getCoinData(), 0); txCoinData.getFrom().sort(fromComparator); txCoinData.getTo().sort(toComparator); if (!Arrays.equals(coinData.serialize(), txCoinData.serialize())) { diff --git a/module/nuls-ledger/src/test/java/io/nuls/ledger/test/validater/TotalAmountTest.java b/module/nuls-ledger/src/test/java/io/nuls/ledger/test/validater/TotalAmountTest.java new file mode 100644 index 0000000000..1dbcc8927c --- /dev/null +++ b/module/nuls-ledger/src/test/java/io/nuls/ledger/test/validater/TotalAmountTest.java @@ -0,0 +1,44 @@ +package io.nuls.ledger.test.validater; + +import io.nuls.base.basic.AddressTool; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.rockdb.manager.RocksDBManager; +import io.nuls.core.rockdb.model.Entry; +import org.junit.Test; + +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.util.List; + +/** + * @author Niels + */ +public class TotalAmountTest { + + @Test + public void test() throws Exception { + RocksDBManager.init("/Users/niels/workspace/nuls-v2/data/ledger"); + List> list = RocksDBManager.entryList("account_1"); + BigInteger total = list.stream().map(d -> { + try { + String key = new String(d.getKey(), "UTF8"); + String[] keyAry = key.split("-"); + byte[] address = AddressTool.getAddress("NULSd" + keyAry[0]); + if (AddressTool.getChainIdByAddress(address) != 1) { + return BigInteger.ZERO; + } + if ("9".equals(keyAry[1]) && "1".equals(keyAry[2]) && !"6HgWSU1iR6BfNoQi85mAMT52JMFzpnok".equals(keyAry[0])) { + io.nuls.ledger.model.po.AccountState accountState = new io.nuls.ledger.model.po.AccountState(); + accountState.parse(d.getValue(), 0); + return accountState.getTotalAmount(); + } else { + return BigInteger.ZERO; + } + } catch (UnsupportedEncodingException | NulsException e) { + return BigInteger.ZERO; + } + }).reduce(BigInteger::add).orElse(BigInteger.ZERO); + Log.info("total::::{}", total.toString()); + } +} diff --git a/version b/version index f3ac133c54..38d56e5e0c 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.9.0 \ No newline at end of file +2.9.1 \ No newline at end of file From c37b66b5cbeba544f2f95e11dc6dd9382873fe04 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Thu, 20 May 2021 11:33:30 +0800 Subject: [PATCH 276/304] Release/pre prod (#629) * update fastjson version * update dependen version --- common/nuls-core-h2/pom.xml | 2 +- common/nuls-core/pom.xml | 2 +- module/nuls-api/pom.xml | 2 +- module/nuls-smart-contract/pom.xml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/common/nuls-core-h2/pom.xml b/common/nuls-core-h2/pom.xml index 8003e36b29..c90c263b0b 100644 --- a/common/nuls-core-h2/pom.xml +++ b/common/nuls-core-h2/pom.xml @@ -32,7 +32,7 @@ org.mybatis mybatis - 3.4.6 + 3.5.6 com.github.pagehelper diff --git a/common/nuls-core/pom.xml b/common/nuls-core/pom.xml index 6dd28ed385..cc86db185c 100644 --- a/common/nuls-core/pom.xml +++ b/common/nuls-core/pom.xml @@ -79,7 +79,7 @@ com.google.guava guava - 27.0.1-jre + 29.0-jre compile diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 7b33ecd0c9..434ec40282 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -102,7 +102,7 @@ commons-beanutils commons-beanutils - 1.9.3 + 1.9.4 diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 3c654241bb..5e4e184808 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -101,7 +101,7 @@ com.alibaba fastjson - 1.2.58 + 1.2.76 @@ -124,7 +124,7 @@ commons-beanutils commons-beanutils - 1.9.3 + 1.9.4 From fa32792d5cd6712f9e4fd6ee01b19c767f2afe8d Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Mon, 12 Jul 2021 18:23:21 +0800 Subject: [PATCH 277/304] update nuls.ncf (#634) Co-authored-by: NaboxAdmin --- config/nuls.ncf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/nuls.ncf b/config/nuls.ncf index fb4bf63400..20b3034b7f 100644 --- a/config/nuls.ncf +++ b/config/nuls.ncf @@ -112,9 +112,9 @@ connectTimeOut=30000 developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w +teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn +communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg syncCoinBase=false syncAddress= From e877cfcd60f0e37e3c03e70a80fa803dbfe97e82 Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 11 Oct 2021 11:32:45 +0800 Subject: [PATCH 278/304] Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES --- .../io/nuls/account/rpc/cmd/AccountCmd.java | 2 +- .../service/impl/AccountServiceImpl.java | 3 +- module/nuls-api/pom.xml | 2 +- .../jsonrpc/controller/AccountController.java | 121 +++++++++++++++++- .../provider/model/dto/ContractInfoDto.java | 10 ++ .../provider/model/dto/ProgramMethod.java | 10 ++ .../java/io/nuls/provider/utils/Utils.java | 33 +++++ .../nuls/ledger/rpc/cmd/AccountStateCmd.java | 1 + module/nuls-network/pom.xml | 2 +- module/nuls-smart-contract/pom.xml | 2 +- .../contract/constant/ContractConstant.java | 3 +- .../nuls/contract/helper/ContractHelper.java | 3 +- .../contract/model/dto/ContractInfoDto.java | 10 ++ .../rpc/resource/ContractResource.java | 29 +++-- .../deserialization/TxDeserialization.java | 24 +++- .../contract/serialize/TxSerialization.java | 7 + .../src/test/resources/cross-locked-nrc20 | Bin 0 -> 14327 bytes version | 2 +- 18 files changed, 237 insertions(+), 27 deletions(-) create mode 100644 module/nuls-smart-contract/src/test/resources/cross-locked-nrc20 diff --git a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java index 1c054968eb..0bc54d66fa 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java +++ b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java @@ -1080,7 +1080,7 @@ public Response validationPassword(Map params) { //check the account is exist Account account = accountService.getAccount(chainId, address); if (null == account) { - throw new NulsRuntimeException(AccountErrorCode.ACCOUNT_NOT_EXIST); + throw new NulsRuntimeException(AccountErrorCode.ACCOUNT_NOT_EXIST, address); } //verify that the account password is correct boolean result = account.validatePassword(password); diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java index 30a32d5c2d..6e35ed5d3c 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java @@ -57,6 +57,7 @@ import io.nuls.core.exception.CryptoException; import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.log.Log; import io.nuls.core.model.FormatValidUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; @@ -474,7 +475,7 @@ public String getPrivateKey(int chainId, Account account, String password) { byte[] priKeyBytes = account.getPriKey(password); return HexUtil.encode(priKeyBytes); } catch (NulsException e) { - throw new NulsRuntimeException(AccountErrorCode.PASSWORD_IS_WRONG); + throw new NulsRuntimeException(AccountErrorCode.PASSWORD_IS_WRONG, "chainId=" + chainId + ", account=" + account.getAddress().getBase58() + ", pwd=" + password + "."); } } else { return null; diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 434ec40282..afca37df71 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -36,7 +36,7 @@ io.nuls.v2 sdk4j - 1.1.4.RELEASE + 1.1.6.RELEASE io.nuls.v2 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 086d4b8d8f..d805e60d49 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -20,35 +20,39 @@ package io.nuls.provider.api.jsonrpc.controller; -import io.nuls.base.api.provider.account.facade.*; -import io.nuls.provider.api.config.Config; -import io.nuls.provider.api.config.Context; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.ServiceManager; import io.nuls.base.api.provider.account.AccountService; +import io.nuls.base.api.provider.account.facade.*; import io.nuls.base.basic.AddressTool; import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; +import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.model.FormatValidUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.model.*; -import io.nuls.provider.model.dto.AccountBalanceDto; +import io.nuls.provider.api.config.Config; +import io.nuls.provider.api.config.Context; import io.nuls.provider.model.dto.AccountKeyStoreDto; import io.nuls.provider.model.form.PriKeyForm; import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.model.jsonrpc.RpcResultError; import io.nuls.provider.rpctools.AccountTools; import io.nuls.provider.rpctools.LegderTools; -import io.nuls.provider.rpctools.vo.Account; import io.nuls.provider.rpctools.vo.AccountBalance; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.Utils; import io.nuls.provider.utils.VerifyUtils; +import io.nuls.v2.SDKContext; import io.nuls.v2.error.AccountErrorCode; +import io.nuls.v2.model.Account; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.model.annotation.ApiType; @@ -56,14 +60,18 @@ import io.nuls.v2.model.dto.AliasDto; import io.nuls.v2.model.dto.MultiSignAliasDto; import io.nuls.v2.model.dto.SignDto; +import io.nuls.v2.util.AccountTool; import io.nuls.v2.util.NulsSDKTool; -import org.checkerframework.checker.units.qual.A; import java.io.IOException; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; +import static io.nuls.v2.util.ValidateUtil.validateChainId; + /** * @author Niels */ @@ -976,4 +984,105 @@ public RpcResult getAddressList(List params) { } return ResultUtil.getJsonRpcResult(result); } + + @RpcMethod("signMessage") + @ApiOperation(description = "明文私钥摘要签名消息", order = 162) + @Parameters({ + @Parameter(parameterName = "message", parameterType = "String", parameterDes = "消息"), + @Parameter(parameterName = "privateKey", parameterType = "String", parameterDes = "私钥") + }) + @ResponseData(name = "signedMessage", description = "消息签名") + public RpcResult signMessage(List params) { + String message, priKey; + try { + message = (String) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[message] is inValid"); + } + try { + priKey = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[priKey] is inValid"); + } + if (StringUtils.isBlank(message)) { + return RpcResult.paramError("[message] is inValid"); + } + if (StringUtils.isBlank(priKey)) { + return RpcResult.paramError("[priKey] is inValid"); + } + + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(priKey))); + byte[] signbytes = ecKey.sign(Utils.dataToBytes(message)); + return RpcResult.success(HexUtil.encode(signbytes)); + } + + @RpcMethod("verifySignedMessage") + @ApiOperation(description = "验证消息签名", order = 163) + @Parameters({ + @Parameter(parameterName = "message", parameterType = "String", parameterDes = "消息"), + @Parameter(parameterName = "signature", parameterType = "String", parameterDes = "消息签名"), + @Parameter(parameterName = "publicKey", parameterType = "String", parameterDes = "公钥") + }) + @ResponseData(description = "验证是否成功", responseType = @TypeDescriptor(value = Boolean.class)) + public RpcResult verifySignedMessage(List params) { + String message, signature, publicKey; + try { + message = (String) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[message] is inValid"); + } + try { + signature = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[signature] is inValid"); + } + try { + publicKey = (String) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[publicKey] is inValid"); + } + if (StringUtils.isBlank(message)) { + return RpcResult.paramError("[message] is inValid"); + } + if (StringUtils.isBlank(signature)) { + return RpcResult.paramError("[signature] is inValid"); + } + if (StringUtils.isBlank(publicKey)) { + return RpcResult.paramError("[publicKey] is inValid"); + } + + boolean verify = ECKey.verify(Utils.dataToBytes(message), HexUtil.decode(signature), HexUtil.decode(publicKey)); + return RpcResult.success(verify); + } + + @RpcMethod("getPubKeyByPriKey") + @ApiOperation(description = "根据私钥获取公钥", order = 164) + @Parameters({ + @Parameter(parameterName = "原始私钥", parameterDes = "私钥表单", requestType = @TypeDescriptor(value = PriKeyForm.class)) + }) + @ResponseData(name = "返回值", description = "公钥的HEX编码字符串") + public RpcResult getPubKeyByPriKey(List params) { + String priKey; + try { + priKey = (String) params.get(0); + validateChainId(); + if (!ECKey.isValidPrivteHex(priKey)) { + throw new NulsRuntimeException(AccountErrorCode.PRIVATE_KEY_WRONG); + } + Account account; + try { + if (StringUtils.isBlank(SDKContext.addressPrefix)) { + account = AccountTool.createAccount(SDKContext.main_chain_id, priKey); + } else { + account = AccountTool.createAccount(SDKContext.main_chain_id, priKey, SDKContext.addressPrefix); + } + } catch (NulsException e) { + throw new NulsRuntimeException(AccountErrorCode.PRIVATE_KEY_WRONG); + } + return RpcResult.success(HexUtil.encode(account.getPubKey())); + } catch (Exception e) { + return RpcResult.paramError("[priKey] is inValid"); + } + } + } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInfoDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInfoDto.java index 346f038224..ca159335f3 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInfoDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInfoDto.java @@ -50,6 +50,8 @@ public class ContractInfoDto { private long blockHeight; @ApiModelProperty(description = "是否接受直接转账") private boolean isDirectPayable; + @ApiModelProperty(description = "是否接受其他资产直接转账") + private boolean directPayableByOtherAsset; @ApiModelProperty(description = "token类型, 0 - 非token, 1 - NRC20, 2 - NRC721") private int tokenType; @ApiModelProperty(description = "是否是NRC20合约") @@ -135,6 +137,14 @@ public void setDirectPayable(boolean directPayable) { isDirectPayable = directPayable; } + public boolean isDirectPayableByOtherAsset() { + return directPayableByOtherAsset; + } + + public void setDirectPayableByOtherAsset(boolean directPayableByOtherAsset) { + this.directPayableByOtherAsset = directPayableByOtherAsset; + } + public boolean isNrc20() { return isNrc20; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ProgramMethod.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ProgramMethod.java index 3301f4ab32..b5d6d09321 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ProgramMethod.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ProgramMethod.java @@ -47,6 +47,8 @@ public class ProgramMethod { private boolean event; @ApiModelProperty(description = "是否是可接受主链资产转账的方法") private boolean payable; + @ApiModelProperty(description = "是否是可接受其他资产转账的方法") + private boolean payableMultyAsset; @ApiModelProperty(description = "方法返回值是否JSON序列化") private boolean jsonSerializable; @@ -106,6 +108,14 @@ public void setPayable(boolean payable) { this.payable = payable; } + public boolean isPayableMultyAsset() { + return payableMultyAsset; + } + + public void setPayableMultyAsset(boolean payableMultyAsset) { + this.payableMultyAsset = payableMultyAsset; + } + public boolean isJsonSerializable() { return jsonSerializable; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java index fa358dd482..0e97305751 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java @@ -16,6 +16,7 @@ import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.model.ObjectUtils; +import io.nuls.core.model.StringUtils; import io.nuls.v2.model.dto.ProgramMultyAssetValue; import java.io.IOException; @@ -23,6 +24,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -162,4 +164,35 @@ public static List multyAssetObjectArray(String[][] mult return list; } + public static byte[] dataToBytes(String data) { + if (StringUtils.isBlank(data)) { + return null; + } + try { + boolean isHex = true; + String validData = cleanHexPrefix(data); + char[] chars = validData.toCharArray(); + for (char c : chars) { + int digit = Character.digit(c, 16); + if (digit == -1) { + isHex = false; + break; + } + } + if (isHex) { + return HexUtil.decode(validData); + } + return data.getBytes(StandardCharsets.UTF_8); + } catch (Exception e) { + return data.getBytes(StandardCharsets.UTF_8); + } + } + + private static String cleanHexPrefix(String input) { + return containsHexPrefix(input) ? input.substring(2) : input; + } + + private static boolean containsHexPrefix(String input) { + return !StringUtils.isBlank(input) && input.length() > 1 && input.charAt(0) == '0' && input.charAt(1) == 'x'; + } } diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java index c5c37187a7..ad220da039 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java @@ -252,6 +252,7 @@ public Response getNonce(Map params) { @Key(name = "nonce", valueType = String.class, description = "账户资产nonce值"), @Key(name = "nonceType", valueType = Integer.class, description = "1:已确认的nonce值,0:未确认的nonce值"), @Key(name = "available", valueType = BigInteger.class, description = "可用金额"), + @Key(name = "freeze", valueType = BigInteger.class, description = "总锁定金额"), @Key(name = "permanentLocked", valueType = BigInteger.class, description = "永久锁定金额"), @Key(name = "timeHeightLocked", valueType = BigInteger.class, description = "高度或时间锁定金额") }) diff --git a/module/nuls-network/pom.xml b/module/nuls-network/pom.xml index bec1d25a95..6adf9c02e0 100644 --- a/module/nuls-network/pom.xml +++ b/module/nuls-network/pom.xml @@ -20,7 +20,7 @@ io.netty netty-all - 4.1.33.Final + 4.1.42.Final com.google.protobuf diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 5e4e184808..b008d2c164 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -136,7 +136,7 @@ io.nuls.v2 sdk4j - 1.1.2.RELEASE + 1.1.6.RELEASE test diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index 631b1653c3..8fc39fa84b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -47,8 +47,9 @@ public interface ContractConstant { long CONTRACT_TRANSFER_GAS_COST = 1000; + String OTHER_ASSET_PAYABLE_METHOD_NAME = "_payableMultyAsset"; String BALANCE_TRIGGER_METHOD_NAME = "_payable"; - String BALANCE_TRIGGER_METHOD_DESC = "() return void"; + String VOID_METHOD_DESC = "() return void"; String BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC = "(String[][] args) return void"; String BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC_IN_VM = "([[Ljava/lang/String;)V"; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 7265206f58..01d3dd412d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -52,7 +52,6 @@ import io.nuls.contract.vm.program.*; import io.nuls.core.basic.Result; import io.nuls.core.basic.VarInt; -import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; @@ -247,7 +246,7 @@ private boolean checkAcceptDirectTransfer(List methods) { } for (ProgramMethod method : methods) { if (BALANCE_TRIGGER_METHOD_NAME.equals(method.getName()) - && BALANCE_TRIGGER_METHOD_DESC.equals(method.getDesc())) { + && VOID_METHOD_DESC.equals(method.getDesc())) { return method.isPayable(); } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java index b4fe78d517..e70722edb1 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java @@ -51,6 +51,8 @@ public class ContractInfoDto { private long blockHeight; @ApiModelProperty(description = "是否接受直接转账") private boolean directPayable; + @ApiModelProperty(description = "是否接受其他资产直接转账") + private boolean directPayableByOtherAsset; @ApiModelProperty(description = "token类型, 0 - 非token, 1 - NRC20, 2 - NRC721") private int tokenType; @ApiModelProperty(description = "是否是NRC20合约") @@ -132,6 +134,14 @@ public void setDirectPayable(boolean directPayable) { this.directPayable = directPayable; } + public boolean isDirectPayableByOtherAsset() { + return directPayableByOtherAsset; + } + + public void setDirectPayableByOtherAsset(boolean directPayableByOtherAsset) { + this.directPayableByOtherAsset = directPayableByOtherAsset; + } + public boolean isNrc20() { return nrc20; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 10435e5a8b..ae49277676 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -27,7 +27,6 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; -import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.ContractStatus; @@ -68,10 +67,7 @@ import java.io.IOException; import java.math.BigInteger; import java.util.*; -import java.util.stream.Collectors; -import static io.nuls.contract.config.ContractContext.ASSET_ID; -import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.constant.ContractCmdConstant.*; import static io.nuls.contract.constant.ContractConstant.*; import static io.nuls.contract.constant.ContractErrorCode.*; @@ -772,7 +768,7 @@ public Response transfer(Map params) { gasParams.put("value", value); gasParams.put("contractAddress", contractAddress); gasParams.put("methodName", BALANCE_TRIGGER_METHOD_NAME); - gasParams.put("methodDesc", BALANCE_TRIGGER_METHOD_DESC); + gasParams.put("methodDesc", VOID_METHOD_DESC); Response response = this.imputedCallGas(gasParams); if (!response.isSuccess()) { @@ -782,7 +778,7 @@ public Response transfer(Map params) { Long gasLimit = Long.valueOf(responseData.get("gasLimit").toString()); Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, BALANCE_TRIGGER_METHOD_NAME, - BALANCE_TRIGGER_METHOD_DESC, + VOID_METHOD_DESC, null, password, remark, null); if (result.isFailed()) { return wrapperFailed(result); @@ -1054,14 +1050,26 @@ public Response contractInfo(Map params) { ProgramExecutor track = contractHelper.getProgramExecutor(chainId).begin(prevStateRoot); ProgramStatus status = track.status(contractAddressBytes); List methods = track.method(contractAddressBytes); + boolean isAcceptDirectTransferByOtherAsset = false; if(methods != null && !methods.isEmpty()) { - methods = methods.stream().filter(m -> { + int removeIndex = -1; + boolean isQueriedPayableOtherAsset = false; + for (int i = 0, size = methods.size(); i < size; i++) { + if (removeIndex > -1 && isQueriedPayableOtherAsset) break; + ProgramMethod m = methods.get(i); if (BALANCE_TRIGGER_METHOD_NAME.equals(m.getName()) && BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC.equals(m.getDesc())) { - return false; + removeIndex = i; + } else if (OTHER_ASSET_PAYABLE_METHOD_NAME.equals(m.getName()) + && VOID_METHOD_DESC.equals(m.getDesc())) { + isAcceptDirectTransferByOtherAsset = m.isPayableMultyAsset(); + isQueriedPayableOtherAsset = true; } - return true; - }).collect(Collectors.toList()); + } + if (removeIndex > -1) { + methods.remove(removeIndex); + } + } ContractInfoDto dto = new ContractInfoDto(); @@ -1092,6 +1100,7 @@ public Response contractInfo(Map params) { dto.setStatus(status.name()); dto.setMethod(methods); dto.setDirectPayable(po.isAcceptDirectTransfer()); + dto.setDirectPayableByOtherAsset(isAcceptDirectTransferByOtherAsset); return success(dto); } catch (Exception e) { Log.error(e); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/deserialization/TxDeserialization.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/deserialization/TxDeserialization.java index 00c9ece298..84b57d1c7e 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/deserialization/TxDeserialization.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/deserialization/TxDeserialization.java @@ -58,7 +58,7 @@ public class TxDeserialization { @Test public void test() throws NulsException, JsonProcessingException { //String txStr1 = "1000ca58555d007c020001f7ec6473df12e751d64cf20a8baa7edd50810f81020002e76b5df12f6f8a00ba9910dc750d248aa0d86a370000000000000000000000000000000000000000000000000000000000000000010000000000000019000000000000000d6465706f736974466f724f776e0e28292072657475726e20766f6964008c0117020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000100ba67f7050000000000000000000000000000000000000000000000000000000008309a49ca52c05d42000117020002e76b5df12f6f8a00ba9910dc750d248aa0d86a370200010000e1f5050000000000000000000000000000000000000000000000000000000000000000000000006a2103958b790c331954ed367d37bac901de5c2f06ac8368b37d7bd6cd5ae143c1d7e3473045022100851d60c37738ffbc4abee2072ccad3e1722ddff7eca2ff9c5653fba21a81c9a1022078b9693cd6325abe8009d5e30e0b7b29cf61df671425c1fa5d2ae6f01f7fef59"; - String txStr1 = "10001535a85d006a0200013452fcc77369361d225f61ea34b9930f98d2b536020002a6d26cb6b330c7a0aaf47848e5c27e3abe1a980400000000000000000000000000000000000000000000000000000000000000007a500000000000001900000000000000087365744167656e740001004801170200013452fcc77369361d225f61ea34b9930f98d2b536020001008a62090000000000000000000000000000000000000000000000000000000000087e8ac0a9028cd89b00006a2103e56a675cd355d11bc7667d53adfc7c70d50abb4df7cf438df55253db5e10e22d473045022100b293a59aa4db375e6ccee44033bb115f535ac1f098e992ace4e65cb87581dd0402203ac0896e5e0fba202279d4aacca2bd99af51789884b6d15e9195a3aa0625f317"; + String txStr1 = "100062766d600232329c020001d5e0c14c896ccbcf3709ff73b8a91b78638502e9020002442c9ce5b42ececdd3a25efc9751b8bf9bb2d4560000000000000000000000000000000000000000000000000000000000000000400d0300000000001900000000000000087472616e7366657200020126744e554c536542614d743954663656766659667655464756716469795071464c665167394c610109323030303030303030400117020001d5e0c14c896ccbcf3709ff73b8a91b78638502e902000100818d5b00000000000000000000000000000000000000000000000000000000000000006a21022fb21df00d78dd85d4700a10da7021b3a84d2d9f5998f3eb3ac0e9e76d98246c473045022100f77b6c07dfe69c82719addc96f1c2d5f49990b3328beb5132030ff1ff4868b120220600f9b0c5c1e9e5e9e11d61cd4c9ddd86ba792e94dca233f61c07aecb5b594b2"; Transaction tx1 = new Transaction(); tx1.parse(new NulsByteBuffer(HexUtil.decode(txStr1))); @@ -73,6 +73,26 @@ public void test() throws NulsException, JsonProcessingException { //CoinData coinData2 = tx2.getCoinDataInstance(); // //System.out.println(JSONUtils.obj2PrettyJson(tx2)); + TransactionSignature ts = new TransactionSignature(); + ts.parse(tx1.getTransactionSignature(), 0); + System.out.println(); + + } + + @Test + public void callData() throws NulsException, JsonProcessingException { + String callStr = "020001d5e0c14c896ccbcf3709ff73b8a91b78638502e9020002442c9ce5b42ececdd3a25efc9751b8bf9bb2d4560000000000000000000000000000000000000000000000000000000000000000400d0300000000001900000000000000087472616e7366657200020126744e554c536542614d743954663656766659667655464756716469795071464c665167394c610109323030303030303030"; + CallContractData data = new CallContractData(); + data.parse(HexUtil.decode(callStr), 0); + System.out.println(JSONUtils.obj2PrettyJson(data)); + } + + @Test + public void coinData() throws NulsException, JsonProcessingException { + String callStr = "0117020001d5e0c14c896ccbcf3709ff73b8a91b78638502e902000100818d5b0000000000000000000000000000000000000000000000000000000000000000"; + CoinData data = new CoinData(); + data.parse(HexUtil.decode(callStr), 0); + System.out.println(JSONUtils.obj2PrettyJson(data)); } @Test @@ -87,7 +107,7 @@ public void type2test() throws NulsException, JsonProcessingException { Set addressFromTX = SignatureUtil.getAddressFromTX(tx2, 2); System.out.println(AddressTool.getStringAddressByBytes(coinData.getFrom().get(0).getAddress())); System.out.println(addressFromTX); - // + //TransactionSignature transactionSignature = new TransactionSignature(); //transactionSignature.parse(tx2.getTransactionSignature(), 0); //List p2PHKSignatures = transactionSignature.getP2PHKSignatures(); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java index 09c7930e6c..60909ddac4 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java @@ -100,5 +100,12 @@ public void testType18() throws NulsException, IOException { System.out.println(HexUtil.encode(tx.serialize())); } + @Test + public void test26() throws NulsException { + String hex="1a00082f126100041a000000d20217020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a99020008000008af2f0000000000000000000000000000000000000000000000000000000008000000000000000000170200022744df0b0cc3c0056c6d496db212d680c7f422250200010040420f000000000000000000000000000000000000000000000000000000000008f52629ee1ce14627000117050001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a99020008000008af2f00000000000000000000000000000000000000000000000000000000000000000000000000"; + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(hex), 0); + System.out.println(); + } } diff --git a/module/nuls-smart-contract/src/test/resources/cross-locked-nrc20 b/module/nuls-smart-contract/src/test/resources/cross-locked-nrc20 new file mode 100644 index 0000000000000000000000000000000000000000..dc328aea2dfdff23f51fff73fa8df1e0f6c1e7ea GIT binary patch literal 14327 zcmbWe1wdR&(l(5{ySuwP1b26rz~Jr{g1ZEQTX5IlFc5+h+})jE!JVIM_U_%y-uu1p z|MqYWBUMjz&vaMS>GPDb95@6V$UmAckJ_&%zs|6){}d$DMHpoiC7G4~DFy@bq{E{Y zg6(JI{Q7a&>w)p_VhSRPGLjN%>P!lf7Yf5e@^Xw!6Nqw*bfd##b*e1W?CU$u46>sG z404R3Fwoltnu%ESofMuenX>FIvaVTll^AerYEhA@F0vP1EtyfO=yIxRon5hz5rep; za2*kVQZKkZ?;;Wxk#tqpcGb@!*V_BIJ^1OVXU;#IK|%iL<7{;pf;3fmX1V3kQKJ0PU=Znv&$LXo! z^Zj1a8xW3-B^tE-s61k=Zz?f+JuE1_B%x%UhQnIqo}`f`K%4-qot^M#c?>wo-drYA zhR6{dY>)*Qgj^?uzAKutacmLAVRY2gw?qjhgQ?N$lDyYnvGTld6%#W8af-;AalbOw z7W}YsdP#^*0RYKNd~Oufnl5xq*(x(MzYg!`TNJrY#pl##0Ii0s?ts}TD9o_ei|J{^ zQ+90>t-Pjbv6X;KF1EbfZRWF3j`-F*5+l+I%6|(lXR%Ot( zGC){W`F=6;(jT~gET${ZM;WSmuD?@_pvjz@V}8PqmfiGLWpYo=D&=h=3!ztwttkH&T! z-O232U|&?P9{{_u%RDA;bIsFIjfZzmu0%B9`N3(ZXOE9BmtV)GUM?d?T$+S1d4hDK zbCSVm(pHwIwVh&R&}}Mf)&T=S2+E|ipKc!ase-gj?Z>xjk>&!D5J}u7OkgBA9G-G@ z4$>8yq1qW=$+wgjsMW;r@e%oQdH=%>lo>o1?u)*eX!EjrMnN@4*BM7VGhpGm9gsY? zwjh;ucF?;FPB9Rcr}cV^xB0LQo3y=rT@c8;aqt57xqb*H92sNzE9&lZePO~BgG*7Y zeEF0aTlHQahHrS>d~xz#Lxb_Qqy(j$7@SZaHJZDDMhwtjxgjLA;VtPo=e_1=@{WbC zyCJLF)Mc@y))}sl#m*gOk>d+Iq|qk5PzjS9W^Ihcj4G$(E^%V;eeey1dViT3Hi>%E zxsAG>2V7%mthT1&oIIq_7QXvLgO0(b-^~E0V7DQ#yGfsU7gvX;I)e$&Hs@W}WoMHe z&0?cB^uyLB&!weui!%t#{a*BnH&i*{cyr3w89j*p0Nc)ZzPO#iZZ&SwZ&@i)$mB!H zyYfrcCM1Ke$x^No#sh`kQFwQEtEYa;0~*>HnPyPpthXO(HwVfcC!V0j3fgqK9>I32 za1^F$t>rv_~P+-X3VrtFT0kCic{|tfF4J!32JKr(d7o4^5S6h zQ2Xh97TROKMre*@i9V!+#|}XNMLJV|_p(6_L>og{LfwZ17aAXbVYWMZFk}?q=^?jM zvQ@Cf3(;0=$bI!yxuSYy&CV^yJ;7}_et6&SU6?`kMAMWezvrM-iXMz;~T z1cKSti;CQ_@b_wHb%yjA$0k%_`*D2PHw%<=9O%hB_utNZ<3lNEO!7S`N11f^YaB7=zadquB_uFMDHcETI3j>?T;@a}0Xy~aP7i9RU8!{xxP`wSHg<5? zC%s1O5vx=FZc+0R<^>L2LgZ7yOP~v(vIm9$5yc-#Op&RNkK9ibH^j7@`%pM({noOR z7s@yLYvacS_~xF^1d`N66Cq1xr$|a2-GIk%4nNU2Iq6m$*N7V*p6};OntRQ3E?RpL zI62oEdG6zVEU5fW@m^m>j$EBEsSc?Y_eo-?m-%4(6lLCIP^ZHWge~c{@uQ3MT>|$x< zsP1fH?_v&cb_SS9xC886e?^@vbv*}s4V33tk1e;%2GhMsJ<-EtkdD5c#mQ#UN-NTJ zio#O5ukZ`=OP=U;Ty5VWR04!IAyLrAfMSN{AZSjMA5fG;He+6b{L{AVm>RdF1&%U# zU3Q0kFGh~;EogELv~B#4^h7!G3%FDG5zzQT%n z3sZgJozY8(=wRuoMl$I*%viqan$l!9g_=sIa|K+fXt{GavJlS=<8QL>%?0y-9xcc!)9!p6`GBCTI$MQOdq;sSwjJfj(>Mbh~_+r@pBf;oL zpl};qR(XAFA-fOCK|f4EosaTli(tu{!6kGGse&;&K|iQG?fe0Nd;;Z4M^rHldqE#> z@HCH)uyv*p>32%~>$+VlKy|?7n6jUMGHw_JCj z5lY(9-ic2!BAD$z5P^TQ-}QjNPOEx%h{>pPuRGq+eTLMfV@1u(WJ>I0I8c<(jTEZ$ z0G{3ouCY)^5Gn4JMg=-gl}Ieo-5-38I?`Jle9n$>#;b7?BL2y8i%qR$4D;l1&V%qSLTVbv+FW#GFRd-#gCm&nx;E+-()5)zrW@-m^lNm%4c&WQih zr|3V2n~T5tl$+O_Rp9@JPf-QfJGj}K{^n6^l+Z;m1gGYbTgOEqAwX4B?uD^_gq%Z3 z$VB3)pglF#qidJ6HMI32_YvnqNhgZ?V&+fayfNN%VC&;!dzwJgv0tb^yTd%8Ai{A{T5Q9B zLd=KD1qSRE@K7rrF@*fupoAM{{7)ulF?zV8D2ljLUvxZqhAupMWkOpMlV_guQ0E@)yGml=gfGhXpeHTRJO^yp-33!ZoJIB!_Hl{aH)=8n$u0 z$djyZwKDlSqGWgIAa3&mvnji-YNrD`3T$*%GNnvVbO|tOP}h&jCq!5LoGraCaP^Sb}HE%2k@A z)lqv*Ft2b_RHFDW^KsNzMjd~=KxjH@^ulJUqe=xr=_;C67@M(+womzh2rM{tLu=@F z2eZtDwB(XSFr`bj7$c0djdryQ7N8@NOMgt^4kv9DqsFC3Tf9C^%LRN1n5w_hkIldh zWv~54tB%w+llO(;<@9)-`U@pj#|_uw0XjNVDFpJ9WtlJq*{=Lr9!T%^3E{^0?30O( zlvzizJ5YvNP^G-@;6MkO?XRexIh`MH%g!<%u`Tn8uP0GC@-aVT`c_hqqBc`oB6S>NUfXgC2git}&j)&*S zGsnu^g_axC_muIG;?nY4B_=+8Rv0YN`>a-WSejIFx!PQU?kp-iWC3yNkW_6LjB!*wGtuvmRZ)f`LkIqJBgW3-^bdZUw3;vJ#%A9AoqQJ#H}&MewAre zVhck5;P^9hQ<{{4Ra#fkrZU}mN&QI3cr{p(iH+!Zm?hgfOT{y8*Vbr@w3XS(g8z$4mvo@ zQ~U+Ag6R=TDz|?gCv+CeAyhJWWT8dr%r)|qCk93@=#+gqmlFfeS9aQ7Iuhjt>_7eV zl2Ly+BpL_^Cmjd~jEyb#iqbf<{VkyL=C++R(7!M|G4eAOEW(#bZ66|#3R9T8R z#)@Q?D&yQn7VVB#^=2z&h?f>QUuKLGbXV3}n+Re-A8mdw2Wg2ya zCA!p5NlFJvH#Xol0pUGSj?jG+TUinF!#+Le`Jf#0JB`rl!LyX}v!7j<3 z+;}x6xZhn?f@qAdLGCYI66)Of5I+UQJ+u0&y-;+&89HNTdn}K8W)vPeSPSWqb6$UA zcGu>7_y%xW?R-zvuCG`A zc-gA_lorPXyU%?VA_H|@Hzaim>Edo$jKKVvsyZ9QXJOCci!J>}2hg;n2c48Xus6&I z<3xrKo>mJT#7i1 zPUNh!Xd?x0BWmsBS1(H=Hq0^y-&n`?P(^#DN3^AVV;_u0jZ;)m>{DXZ(37H$9`+m> zo!9mtGmTB7CAdMx&*6T%IZb9WrcQd)BIErUAd@eYB^5*CYYp8xS_qA-)|%8%HUYfLqFg&zaaq zj>nnmK&Ff2!pU%T;XMhSAfKc0d#$yJeP!32@*B&&fR2FY*iq1;q>BrH?&7%iFlhbg zb_wll6yLmEhyTdxTIXm;|~R4+8~WyBcAZ|M~cpGXm;D2;g!KUD(AXniZniwJp$<+s#QFp;hl%z`x_fG(L$ijpZ2 zIqHE0kwd@FX!l81l`wmIFgQ)Lxqy14r)1c*VKP33XbhHI2q0^Qt$jCbHaiKQhikgc z|UgTb!fG*Dsq`d6?%1soSL8!KEkVc`_TN96qOH8xwa|O61O0)Sv z{t(R4pYt&~9*>>9W-)>6VO>_1^Y)1EGjiW&_T>Q66brpc0-+3;%?grtFe;46s1FPy zLkKI{tZXv8Ejh+-)CvX~j|-=ElDX3yeD%Y&vpKo;^+(4k6`17R;%;O%QZwZ#mDcT?7+4e7V(J%iH4!kr__Oj^$0F&H*5V{N&fZ8I zl$!LeE^I6H)lFgkC}1r^`y}f%p>`0>J7Kk@Q3|h9$VQ*BIL~X}gC?&)>7v1^0QJGW z?_>VEvQ(Qhlji+NatVWG0YKgnm94+T=c|fs*Kr<7m5!0g;Exo3v>S+kTSOZ<8~avT zr9q?@;l<&0hHpgQ-t|SI<2X!;LHDv(FnYldltulhEM@^)t56G6Ye~ck8&4=5R3SGV zB{O>8LIBRk$J4Vp8h;*Ns{T#hjKRW4i%)EO)6hA{!fcsN`e~iNF20)d!>ljN&jiLzyt;9cRfUn}YuMayM^$#DhzB zT>GBRa>qb1{pt&A!>z3bJ|mG&b6$kiQZFib#A+b3=5-Epuxfnikaeq9ClIn?dI`tQ`C4VNn}pzJ5S z$eRvbV~gBY#ks$`QX3s?mAkGEYvp4d07IG%eG!`ufC|BDRTmA*Ra0A+R#`-aQcT4G zwsd3GIqL?+Q-P0Ife4>+qxeqOzmF>yOU33X&?L>fovdd`qtp?~7H7cB`XLqNB2Pen zP)~^Hcpg>2e;7e!ckd#YY55rH#wXJ6w%ThTv|4#Vv>Nr?!5^Q^=gz=|243{Rph{9q z76J4+IyPznFUv2>FR0YZcp0G-23|qFkUiIgog*|a#1k3N7b8xS2A8|RvB^WU*enwJ z1~MLwXI@Z-#%p-9R)nEeY42${--Y?+?iM7lgvDv!7sYz-d#?kx^Bc9Mb?FkHAe7H) zrD;gG5fdMBb@yHOamGuyND?apb1yxe>4fNN*hxM}Doh=adZ$`FF?-heb5Oby@ub!0 z&bQ`uq(mLHbfoRE(JZ)J&>Ws@RQZ+k3Xac&Ik9=Eo?Cbf_Km$^#T@IICiE67<T8jcZ;(h^2FX=H=5!&0Ixm+^q`(x= zoRrMTImZZ4Nwm_4?~u}XyE8tC0gZp1WM8BNZ2+q+(th94(gsPl@+ z5xKB9fT`wH7N}q*O}%Cwc%E{M68m`8gcIhKa(;LE@?KO$BNT!%6k#|!27(w(y72QmqTE| zISj#^DYL4W*0T-Y0y{^C58{y8?m>4gc73T*TSvNTu5?kV*sz$6ctz9LCEh2%Cb^<% zim(xX859RE+ooHAMeV{%7t6j&8$H$-A@VNWj4FA`*-x*s(?|)Rd_zXl4kv4f$Qfm9 z5|vFpuj^gR_yDVG60?D!pF@jr< zLz{!NJhw3<8QuW7dE_tr?v@LrJu=59pbROSPSmTWP6T!*MD=>AEolt2E zKIF-B*OH?=fwN!*JfW8ln2v24j?J8o#aE8Zs0?PP?m66xRV{FEt?*>680*f?57k?9 zrB$i@ck=@qn9Ih^vuMP=dg zbDzU`6|^q1{k96FnV{xG@*(*5$K4<=^&u6i1D?6SMjKE}k^K=T9I;MqQ5en^75fmSg&72~=!xZQd3D$?H>sFU@gFJFMA zRGN4^<0k=--cfxBZ@Q#`XgIlUr3zj}f^9G2!}QWEP=w5us(})uTj%gH-_UiS+g^rg zu{akUWt$}S@9qbA*g6}2BTjTjZk?wzp46Oh(seI%Z%Qf4?><8&Edheqrb!PffZ|mQ z$BkOwk6JGUiCdlqkw%Yg<_Do8<iTZ(~wJsF0^hXolJ%KMe|4)A&BWfjA)(^d=4$V zFr&O0Edet~KlXa2(QvoQ>3WHWO{QB1B}B5MAN( zfI!9WdahZ(g|XWn<}I_>kP+xfH5sBWBIohC=ANYg7?%S0X=#I#mB+j&m!SV(!P7Ji{?=!5Mn4nrEH zGmAX&Y2HA2;3V)dyiHHtXD@*m#ZJIu-cxgT!>Vf8FS}|a&x%>tG|B%{z#=6Ekh=tF z*jZYW@6W$7LW(#(>FjRo+zImovM;oaeCs*y#4M+#`*T(vp*c&J*?gkmbWL5sh-NKm zeP{*@6Wxd#9B~c00|a{PkT$uXoic)&MXrI8!oiQPyXt z>`J@~3Th7+ou9|Ionw@8>X0+>7-a5^ZD_D1&K8>{C|#z#9?i4*6eH4!5;kcFrE;WF3-!(>?Ct>xQ^~ z2^9WkhikV%{N&xX1zkjMmwQ2lsLI~(t14{>!MdzsL=#D1tgC$ioP8c%tniN!j19#4 zG;USuCe=jl2^1rl{yRF^GxOH0rf~z{j1_4fOk-V{QdoGb^ND++OOu+mzP2S{s}jh}hm=&D3SNa|fh)!~m zorzb*pp)DmP;H^?ul91^yqWxtx1$eezBy4#zs$Q4D)P34J%uJ%d1L(DP;81fh#MR2 zAWL>Deacjint8q8>e!GUsP(};g3DUd=UqfA=ZwwTHQfv_RE_EG3j%*9Qn^PS!0|g= z>D@jE(J=3=siK`0;A6h}2)Jy8_4ib8k2Gf#%_G6>GGHv`r?Ev}s$-u8XV^6J8F%St zrct>aTS@F8hkOuZ6-MIG?>@==0x47Ik;TK=uJ*?3hITIRzwO#DF55&(x7x?3g>gbXZCaw(vs}nqH>yt9Y~#X z?-B1kaK!e@6aVtto;fQ0+U}`lGL!T+K)GLX+*TmAl)d71gK?CddsA7vK2q0MdEztJ zQ|0E7DCisM_d)YkJr~sK*Dn9LpLFO0^oo1kRos202C@A8e$qcSktjqQ9i1KAO>F<| z?qQ7P>)k^MjOV_#Rky~BHknC^dMny>J!__obU7E&0O83*9?p7U6VvJhyUZ0=55f;Q zXi36{-~#?ABos`{l+0cr5zR0ZJ!&6rnIFL+GSdv&BDN?5Zig4xEp~m^d@UrOf89dF zsj>>+5=F;|c47ZILJ_A>nmWr8w8shT96>N|;V$2lK%{mg4NbY_=^yb$z&6!hKcTcY z)T}Kb>ql{0ZB$6vn9kfWJ9Zu%!XjAmhzb036=|~&@pgh!&>>aiic7w2KrKH*vecH% zb;N+1E9R(mquQLhGD&BNTT4DgH3@a7@sTxjC?elO(7bWudQc!pUmEk5>Z&8-Ga(e<{meN|IyD!Uepro?Lwe&_&e&p)Z<(2Aw#-yokg>1D zNPV5$a`sYFDo?fn!%|0s{VwBJ9$gB;oHqBnsjM2ies15PTB|X2(?Cf^>Nd+&8oer= z0zy;zqAw`ntRJL_sHKL>0iSqx6YnCd>bWT6#wsSf|(u3#s+$EkG{p6nNy_keb8&;tw-Z&otURfaK zP+d`6vfFInn^h6f+^z_w!MT;smpI<|hs4*sgt|f>bT0YC_Bve9MEHuH^I^EtSEt_g zl&i>nQ164H?q*5lp&1cr=rYBt8mhh?L%n;7DD5tG3e6toDWNAN?ZPY$6h-A}84#zK=#-vU zYAgtK20|iWm;xK86$=wLm+Tn(s2D*-Okwfm9Srivoe!Tm&UYrJmBJsDyK})FD!Q5I9iZ#mz2b@Vi3la8ApHr!$F*k*ErOxWNaL;f5lc0l)K~ z_4S1Lkc}b@6@=(Na3yTd4dHCazy~5;1$~ZMd3TFKqR(!aTIJh3XOu`j;YpwLOr+w) z-yW5$4mrW`bV5RBSNuMVZOm<{FgA}=>dEPmxQ`vCOP8grx%|nL#0i0wR?TwuQ)3KcVk1pHX#S)I))Fa_Tnif9l%` zR74fSh+2o8$Z1{ddY1eWNsT#MS<}olS~^9Kt@^?%(0AZ(;3CUnvuP~3sCZKemFcMs z*X^LO<%~j&r;Bph2K_~BIlKCR>z&xh1!K|K3K3_K*nAemJ+6S9GS9pS&GFWeQR@zB zpd8Df)V>tX(CJHo#ARkEL)AnhP$kr_H-g?H*Mmb#T12FO7yq1o*ajD=VTi3dNkNV(9JTocuXZ%9CV?{HfMJj-EE z;N#o64Q794euj?qK3NG7Me7X9^toPkIk_9X8*Tsi=H+gO8{~8&B2-bHL*y$3wwk`Y z%Tjct4x&qQ{st4aOX}VtFj9#_ze^nK(>do@uPE3Jn)deLJ0_wMZPnUgk~bI2cA@lM zOPraq3*3=a=$_`RERU1PtQvG)$)|fbZv%!<);NbSqjKqAmX|qW?AYfyijHHvsB5?w z;(&=NOSM5xp<$&L$Ux(!jUPdff&5#^Fv4sO{Il)fu3L91Q@;Z~*YB<5=`f{ck9;A| zC$L=<61#}B;Cp5t%2;X0^cVT$K`@j-o6+Gg;oe9jzizJ+Tidl0qxMyO>#8skeSS&v z>$TlC=e5gWJNgDQ=mc=+mY74Gh(Y;rDnydqe zRje#2=xR-r;j9tiyE~l>_Kd0gfy{Uovh7y)8Ki@%){fZ;%8W^DyzKYV5GT&-3!_kC zd#Jun&X$EA8vsq4n3cR47uB#(VJ#W4LKXY_qD`?xOicM&{bCsEzLKs_FR;o#r2F|j zwR+29^_oY<4d6{%-=@eV_m4Z#o!j`$^to1Suws8gr(X!@B+UQ(8GO?`Vuaaso8{ZM z?h<$CYN)T2n!+(%FhtZ~(NQrUMf7ye^M$Nk{kyjXCEsI01EkqJ+!=~{SQ5*q3$u$$ zL|X7(@&|eQzr5jex#p^xn3{)8my!;5syYCTacb?Ajh-r-@FTuIcyPO?o1&XqO!I?H z9wi`29wic%MJ5z}RuMNKT?pYBWbi`Dh3&Qs2tdLMEH_gK`+?Jm??3KoNX3!O`+Deg zAx?fogAL_Y8fZG>l0oXvNeb(mdP92M?c^tc;}GfVy^peEDs937M?~$At$^wV6s?B+ z&KTLksJIW;9*atk`nDAcF+jRO*cmav3=cfsIzV1|cpF#Pn~X%q+Eoyx1#3WFjHH{a z1Swn}ejBNGSr8m%FN(S-iYV&}`_A#uuz-Dyoaxj8X(FMDEIW72BV6twZ7r9IfmSFQ-)k8Rq+L)ffy5_#u@Xe{Q4{@{p z2z2#c%A0&2yU2sDIhTo*#OcJ6U#a!L)t%m~6FICDcjRnY%vL|XdIRUz*328XPgOa2 zR)Lxkr&Pm=|Mi4qoOqKwu^gHS~S!Dg7D1#ztA@Qd9#tx z_8)f}8SR}-*;xM79T<>}S8h4(($0$~7zoJRE4hU4{|4yjV8`TXXIrRl;IPPo@y^~) zBJ|oCf4`nIu}E~LNFmRLa=u<`j5UI^mV61ctn}p_x4Wolz>k{k-kW9QPd>iK`+i2- z8_720i9r15Ge<{aXqD2Lbawnewe&U-b30zjf*d_2Rz}((9!);VF{QX|a3WDvl*UhT zX(ur}1;_6Ez&1D7tqn(UKfzIK<=h-;Y12|O;3xZ@X`WMkR%^oY@+FUhGlR(0jGmx@ z9pf74+M#H;q_f9jY*P2tZ~_w%NAyBnjh!Y6EVv;$?o?VUP5>8KWj}WQVkG7|2uo$O zNXuLNY?9IioWtv7p$^nHP{$LS4@X`q5v94GXupVtW_evHhf!k~w39$B?>qXGO z>0R1)A8oydzlRgCJLWaMsb`GUnX6@Nzq7sbnka@Bat2;$P%ZrckXbi~7J;mHh9+;m z-@lYE#vu7ZAK%8OlBPvFTu^<0*mT0vP13-=16?7*d$L{v`Nl;avv8nAQfQ+fq$*7B zu{8UOA^dvqwH8@reH$uKTSRmj#}*3@G5KT#eq15n&a6+m+g3n_2ALV&i?*N0$8ZAM zFUY(rG-QI5OyytzPf7Y9_y*0F4?(BAVul~fRijxR9STd})j9cH_Dd!3K(x)L&u~Vq z#MF=wdFtGXB6scVP5W$G3x!(^8%?%pPL5zf^p#18ovnul+x&^sdn*`RHrCiYHIaUV zp*ad^d@VfAL5f;?v08n5)Q3SW8kBoEWK*e!KE2Z}M#G^W^wy-b9ubvK%asFHQ4;&Y z1GfnmqlRwSic$wFa6wbh$PrTZ2RkHx3HteP_{@HW*b(Ti8NyP76LxFM7tkETGM-!b z|I8~k4GsCdUgxpj>ml-gpU_uZmnB&HyE>n;3_iqHAc38{e&e)8mKC~19=v;9eUF$nno%{^@i6RQv1Vk)OgpTR{Nz>-k@<>fcI9{zP~c_|3ijEbaK!ei|Nn zefp0=kH7EfD@o>`?We-gFNJ>=e*C@G&(e=y?WY#nE4}8`%s;gL%`g7F`p;63Kh;J4 zO8t+*kUv0vk$HYE4fzA6Ai(|aLH?sqdc>bqpwrpZ}9$_ zNb@`N@4F~}LK9K^E%ZOS`d51@zoY+t8S^Ll1I_<{{udWDf1FbCKkUM3dqY# z|0}`hUu*Y|G~3a8G&ZLH>dJqi{bd^R zhk?INME)>Q5D@f#Gw{!}TS(jrIRDke_z`3>V6Bkgu5(2ngEiqY)AW Kgr4o^tN#yy91nK@ literal 0 HcmV?d00001 diff --git a/version b/version index 38d56e5e0c..4db4b0359e 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.9.1 \ No newline at end of file +2.9.3 From 646d584f700aa45d897b23212c513cf53b315fbe Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 25 Oct 2021 18:15:32 +0800 Subject: [PATCH 279/304] Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES --- module/nuls-api/module.ncf | 2 +- .../jsonrpc/controller/ChainController.java | 41 +++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/module/nuls-api/module.ncf b/module/nuls-api/module.ncf index 22b8ea8159..ab34df996e 100644 --- a/module/nuls-api/module.ncf +++ b/module/nuls-api/module.ncf @@ -15,7 +15,7 @@ chainId=1 assetsId=1 [nuls-api] -moduleDynamicDependent=smart-contract,cross-chain +moduleDynamicDependent=smart-contract,cross-chain,chain-manager #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java index cefc0fa8e6..be02035194 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ChainController.java @@ -2,17 +2,21 @@ import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.crosschain.ChainManageProvider; +import io.nuls.base.api.provider.crosschain.facade.CrossAssetRegisterInfo; +import io.nuls.base.api.provider.crosschain.facade.GetCrossAssetInfoReq; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; -import io.nuls.core.rpc.model.Key; -import io.nuls.core.rpc.model.ResponseData; -import io.nuls.core.rpc.model.TypeDescriptor; +import io.nuls.core.rpc.model.*; import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; +import io.nuls.provider.model.dto.ProgramMethod; import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.rpctools.BlockTools; import io.nuls.provider.utils.ResultUtil; +import io.nuls.provider.utils.VerifyUtils; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.model.annotation.ApiType; @@ -24,6 +28,7 @@ @Api(type = ApiType.JSONRPC) public class ChainController { + ChainManageProvider chainManageProvider = ServiceManager.get(ChainManageProvider.class); @Autowired private Config config; @Autowired @@ -70,4 +75,34 @@ public RpcResult getAssetsInfo(List params) { } } + /** + * 获取平行链资产信息 + * + * @param params + * @return + */ + @RpcMethod("getCrossAssetInfo") + @ApiOperation(description = "获取平行链资产信息", order = 603) + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产ID"), + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = CrossAssetRegisterInfo.class)) + public RpcResult getCrossAssetInfo(List params) { + VerifyUtils.verifyParams(params, 2); + int chainId, assetId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } + try { + assetId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is invalid"); + } + Result result = chainManageProvider.getCrossAssetInfo(new GetCrossAssetInfoReq(chainId,assetId)); + return ResultUtil.getJsonRpcResult(result); + } + } From e1d4f148024bf1f6509d3a3163047d5bc4c9d3d8 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Thu, 18 Nov 2021 10:05:02 +0800 Subject: [PATCH 280/304] Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 --- .../jsonrpc/controller/AccountController.java | 17 +++++++++++++++++ .../provider/api/resources/AccountResource.java | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index d805e60d49..9b2a656518 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -88,6 +88,8 @@ public class AccountController { AccountService accountService = ServiceManager.get(AccountService.class); + private long time; + @RpcMethod("createAccount") @ApiOperation(description = "批量创建账户", order = 101, detailDesc = "创建的账户存在于本地钱包内") @Parameters(value = { @@ -175,6 +177,10 @@ public RpcResult updatePassword(List params) { if (!FormatValidUtils.validPassword(newPassword)) { return RpcResult.paramError("[newPassword] is inValid"); } + if (System.currentTimeMillis() - time < 3000L) { + return RpcResult.paramError("Access frequency limit."); + } + time = System.currentTimeMillis(); UpdatePasswordReq req = new UpdatePasswordReq(address, oldPassword, newPassword); req.setChainId(chainId); Result result = accountService.updatePassword(req); @@ -222,6 +228,11 @@ public RpcResult getPriKey(List params) { return RpcResult.paramError("[password] is inValid"); } + if (System.currentTimeMillis() - time < 3000L) { + return RpcResult.paramError("Access frequency limit."); + } + time = System.currentTimeMillis(); + GetAccountPrivateKeyByAddressReq req = new GetAccountPrivateKeyByAddressReq(password, address); req.setChainId(chainId); Result result = accountService.getAccountPrivateKey(req); @@ -364,6 +375,12 @@ public RpcResult exportKeystore(List params) { if (!FormatValidUtils.validPassword(password)) { return RpcResult.paramError("[password] is inValid"); } + + if (System.currentTimeMillis() - time < 3000L) { + return RpcResult.paramError("Access frequency limit."); + } + time = System.currentTimeMillis(); + KeyStoreReq req = new KeyStoreReq(password, address); req.setChainId(chainId); Result result = accountService.getAccountKeyStore(req); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java index 465d35b3ee..e644583589 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java @@ -82,6 +82,7 @@ public class AccountResource { AccountService accountService = ServiceManager.get(AccountService.class); @Autowired private AccountTools accountTools; + private long time; @POST @@ -139,6 +140,10 @@ public RpcClientResult updatePassword(@PathParam("address") String address, Acco if (!FormatValidUtils.validPassword(form.getNewPassword())) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "[newPassword] is invalid")); } + if (System.currentTimeMillis() - time < 3000L) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "Access frequency limit.")); + } + time = System.currentTimeMillis(); UpdatePasswordReq req = new UpdatePasswordReq(address, form.getPassword(), form.getNewPassword()); req.setChainId(config.getChainId()); Result result = accountService.updatePassword(req); @@ -167,6 +172,10 @@ public RpcClientResult getPriKey(@PathParam("address") String address, AccountPa if (address == null) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "address is empty")); } + if (System.currentTimeMillis() - time < 3000L) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "Access frequency limit.")); + } + time = System.currentTimeMillis(); GetAccountPrivateKeyByAddressReq req = new GetAccountPrivateKeyByAddressReq(form.getPassword(), address); req.setChainId(config.getChainId()); Result result = accountService.getAccountPrivateKey(req); @@ -312,6 +321,10 @@ public RpcClientResult exportAccountKeyStore(@PathParam("address") String addres if (address == null) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "address is empty")); } + if (System.currentTimeMillis() - time < 3000L) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "Access frequency limit.")); + } + time = System.currentTimeMillis(); BackupAccountReq req = new BackupAccountReq(form.getPassword(), address, form.getPath()); req.setChainId(config.getChainId()); Result result = accountService.backupAccount(req); From 82121cf7b6a54af284d12eaaf90d4fe665cdd90d Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 3 Dec 2021 18:08:10 +0800 Subject: [PATCH 281/304] add getBalanceList (#644) --- .../jsonrpc/controller/AccountController.java | 48 +++++++++++++++++++ .../nuls/provider/rpctools/LegderTools.java | 47 ++++++++++++++++++ .../provider/rpctools/vo/AccountBalance.java | 30 ++++++++++++ 3 files changed, 125 insertions(+) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 9b2a656518..1889aaa458 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -446,6 +446,54 @@ public RpcResult getAccountBalance(List params) { return rpcResult.setResult(balanceResult.getData()); } + + /** + * 查询用户资产合计 + * @param params + * @return + */ + @RpcMethod("getBalanceList") + @ApiOperation(description = "查询账户余额", order = 107, detailDesc = "根据资产链ID和资产ID,查询本链账户对应资产的余额与nonce值集合") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "账户地址"), + @Parameter(parameterName = "assetIdList", requestType = @TypeDescriptor(value = List.class), parameterDes = "资产的ID集合") + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalance.class)) + public RpcResult getBalanceList(List params) { + VerifyUtils.verifyParams(params, 3); + String address; + int chainId; + List coinDtoList; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + try { + coinDtoList = (List ) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + RpcResult rpcResult = new RpcResult(); + + Result> balanceResult = legderTools.getBalanceList(chainId, coinDtoList, address); + if (balanceResult.isFailed()) { + return rpcResult.setError(new RpcResultError(balanceResult.getStatus(), balanceResult.getMessage(), null)); + } + return rpcResult.setResult(balanceResult.getData()); + } + + @RpcMethod("setAlias") @ApiOperation(description = "设置账户别名", order = 108, detailDesc = "别名格式为1-20位小写字母和数字的组合,设置别名会销毁1个NULS") @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 887dd4a82e..296f84be52 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -1,13 +1,16 @@ package io.nuls.provider.rpctools; import io.nuls.base.api.provider.Result; +import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; +import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.rpctools.vo.AccountBalance; import java.math.BigInteger; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +24,9 @@ @Component public class LegderTools implements CallRpc { + @Autowired + private ContractTools contractTools; + /** * 获取可用余额和nonce * Get the available balance and nonce @@ -69,4 +75,45 @@ public Result getAllAsset(int chainId) { return Result.fail(e.getCode(), e.getMessage()); } } + + public Result> getBalanceList(int chainId, List coinDtoList, String address) { + try { + List accountBalanceList = new ArrayList<>(); + for (int i = 0; i < coinDtoList.size(); i++) { + Map map = coinDtoList.get(i); + int assetChainId = (int) map.get("chainId"); + int assetId = (int) map.get("assetId"); + String contractAddress = (String) map.get("contractAddress"); + if (assetId > 0) { + AccountBalance accountBalance = getBalanceAndNonce(chainId, assetChainId, assetId, address).getData(); + accountBalance.setAssetChainId(assetChainId); + accountBalance.setAssetId(assetId); + accountBalance.setContractAddress(contractAddress); + accountBalanceList.add(accountBalance); + } else { + ContractTokenInfoDto dto = contractTools.getTokenBalance(chainId, contractAddress, address).getData(); + AccountBalance accountBalance = new AccountBalance(); + accountBalance.setAssetChainId(assetChainId); + accountBalance.setAssetId(assetId); + accountBalance.setContractAddress(contractAddress); + if (dto == null) { + accountBalance.setBalance("0"); + accountBalance.setTotalBalance("0"); + } else { + accountBalance.setBalance(dto.getAmount()); + accountBalance.setTotalBalance(dto.getAmount()); + } + + accountBalance.setTimeLock("0"); + accountBalance.setConsensusLock("0"); + accountBalance.setFreeze("0"); + accountBalanceList.add(accountBalance); + } + } + return new Result>(accountBalanceList); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java index 03f5318102..32adf4f4b2 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java @@ -11,6 +11,12 @@ @ApiModel public class AccountBalance { + private int assetChainId; + + private int assetId; + + private String contractAddress; + @ApiModelProperty(description = "总余额") private String totalBalance; @ApiModelProperty(description = "可用余额") @@ -81,4 +87,28 @@ public int getNonceType() { public void setNonceType(int nonceType) { this.nonceType = nonceType; } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } } From ca5d8b24e77ec43b886f8f66b056974f9e6ff5d1 Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 13 Dec 2021 09:57:53 +0800 Subject: [PATCH 282/304] V2.10.0 (#645) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> --- .../java/io/nuls/core/constant/TxType.java | 10 +- genesis-block.json | 31787 +--------------- module.ncf | 93 +- .../java/io/nuls/provider/ApiBootstrap.java | 11 +- .../main/java/io/nuls/provider/MyModule.java | 5 + .../jsonrpc/controller/AccountController.java | 4 + .../nuls/provider/rpctools/LegderTools.java | 5 +- .../block/service/impl/BlockServiceImpl.java | 8 +- .../java/io/nuls/block/utils/BlockUtil.java | 30 +- .../java/io/nuls/chain/rpc/cmd/ChainCmd.java | 13 +- .../chain/service/impl/AssetServiceImpl.java | 18 +- .../java/io/nuls/chain/test/StorageTest.java | 93 + .../base/model/ResetChainInfoTransaction.java | 38 + .../model/bo/txdata/ResetChainInfoData.java | 36 + .../base/service/ResetChainService.java | 40 + .../base/tx/v1/ResetChainInfoTxProcessor.java | 38 + .../servive/impl/ResetChainServiceImpl.java | 159 + .../src/main/resources/protocol-config.json | 17 + .../test/java/io/nuls/test/StorageTest.java | 35 + .../test/java/io/nuls/test/TxSendTester.java | 99 + .../nuls/ledger/rpc/cmd/AccountStateCmd.java | 59 + .../src/main/resources/versions.json | 5 + .../contract/serialize/TxSerialization.java | 15 +- version | 2 +- 24 files changed, 1980 insertions(+), 30640 deletions(-) create mode 100644 module/nuls-chain-manager/src/test/java/io/nuls/chain/test/StorageTest.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/ResetChainInfoTransaction.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/ResetChainInfoData.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetChainService.java create mode 100644 module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetChainInfoTxProcessor.java create mode 100644 module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetChainServiceImpl.java create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/StorageTest.java create mode 100644 module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java index 29b0591fa9..9209031ca7 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java @@ -118,13 +118,13 @@ public class TxType { /** * 验证人变更 * Verifier Change - * */ + */ public static final int VERIFIER_CHANGE = 24; /** * 验证人初始化 * Verifier init - * */ + */ public static final int VERIFIER_INIT = 25; /** @@ -141,13 +141,13 @@ public class TxType { /** * 追加节点保证金 * Additional agent margin - * */ + */ public static final int APPEND_AGENT_DEPOSIT = 28; /** * 撤销节点保证金 * Cancel agent deposit - * */ + */ public static final int REDUCE_AGENT_DEPOSIT = 29; /** @@ -290,4 +290,6 @@ public class TxType { */ public static final int RESET_LOCAL_VERIFIER_LIST = 61; + public static final int RESET_CHAIN_INFO = 62; + } diff --git a/genesis-block.json b/genesis-block.json index 073564433e..a27d624510 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,32343 +3,3016 @@ "time": "1568131200", "txs": [ { - "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", - "amount": 1314374313456741, + "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", + "amount": 4332886598800000, "lockTime": 0 }, { - "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", - "amount": 1300069015130000, + "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", + "amount": 3687865664810469, "lockTime": 0 }, { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "amount": 1207689896443277, + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "amount": 402524191370945, "lockTime": 0 }, { - "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", - "amount": 771827824681203, + "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", + "amount": 195004013944801, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 550000088100000, + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "amount": 105070552877911, "lockTime": 0 }, { - "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", - "amount": 140000008800000, + "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", + "amount": 78999908314000, "lockTime": 0 }, { - "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", - "amount": 138024778582864, + "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", + "amount": 65632918471416, "lockTime": 0 }, { - "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", - "amount": 116322053971373, + "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", + "amount": 61107327921041, "lockTime": 0 }, { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1568217600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1570809600 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1573488000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1576080000 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1578758400 - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "amount": 100000000000000, - "lockTime": 1581436800 - }, - { - "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", - "amount": 100000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "amount": 96744642395658, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", - "amount": 85989563359937, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", - "amount": 81999131521100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", - "amount": 72215389273971, - "lockTime": 0 - }, - { - "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", - "amount": 66285252473579, - "lockTime": 0 - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "amount": 58440536215003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "amount": 54028608913486, - "lockTime": 0 - }, - { - "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", - "amount": 52455188181303, - "lockTime": 0 - }, - { - "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", - "amount": 51077727524499, - "lockTime": 0 - }, - { - "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", - "amount": 50747000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", - "amount": 49210312908703, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", - "amount": 44824915276060, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", - "amount": 41141888592935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", - "amount": 39593370697151, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", - "amount": 39538300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", - "amount": 37859381904399, - "lockTime": 0 - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "amount": 37261992045445, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", - "amount": 36996399546102, - "lockTime": 0 - }, - { - "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", - "amount": 34259997306164, - "lockTime": 0 - }, - { - "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", - "amount": 33474778174290, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "amount": 33428773692408, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", - "amount": 29979973788997, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", - "amount": 28961474708694, - "lockTime": 0 - }, - { - "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", - "amount": 28029608434617, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", - "amount": 27995340514245, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", - "amount": 27983215462302, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", - "amount": 27287845540512, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", - "amount": 27170252453222, - "lockTime": 0 - }, - { - "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", - "amount": 26991197104961, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", - "amount": 26243684526688, - "lockTime": 0 - }, - { - "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", - "amount": 25339809000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", - "amount": 24765621251103, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", - "amount": 24109958760182, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", - "amount": 23179417362222, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", - "amount": 22847412113988, - "lockTime": 0 - }, - { - "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", - "amount": 22795607364895, - "lockTime": 0 - }, - { - "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", - "amount": 22755875149791, - "lockTime": 0 - }, - { - "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", - "amount": 22562877881100, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", - "amount": 22520078679607, + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "amount": 60583218133268, "lockTime": 0 }, { - "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", - "amount": 21729897375518, + "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", + "amount": 48959898119175, "lockTime": 0 }, { - "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", - "amount": 21668767029600, + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "amount": 40780196885000, "lockTime": 0 }, { - "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", - "amount": 21059522254002, + "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", + "amount": 38195067904649, "lockTime": 0 }, { - "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", - "amount": 20995499736221, + "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", + "amount": 30764298564179, "lockTime": 0 }, { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "amount": 20267828455189, + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "amount": 30555021413859, "lockTime": 0 }, { - "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", - "amount": 20266600000000, + "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", + "amount": 30000300000000, "lockTime": 0 }, { - "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", - "amount": 20206238172992, + "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", + "amount": 29727323742180, "lockTime": 0 }, { - "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", - "amount": 20079673353554, + "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", + "amount": 27999091707675, "lockTime": 0 }, { - "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", - "amount": 20033796577391, + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "amount": 26421039847100, "lockTime": 0 }, { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "amount": 20001091183810, + "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", + "amount": 22998998370775, "lockTime": 0 }, { - "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", - "amount": 19999999667300, + "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", + "amount": 22798997782100, "lockTime": 0 }, { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "amount": 18462992623715, + "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", + "amount": 22707882567645, "lockTime": 0 }, { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "amount": 17909555922184, + "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", + "amount": 20497372975793, "lockTime": 0 }, { - "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", - "amount": 17704654522876, + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "amount": 20020927877475, "lockTime": 0 }, { - "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", - "amount": 17680919000000, + "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", + "amount": 20015138581450, "lockTime": 0 }, { - "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", - "amount": 17478894381698, + "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", + "amount": 20014645381031, "lockTime": 0 }, { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "amount": 17449936530800, + "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", + "amount": 20000000000000, "lockTime": 0 }, { - "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", - "amount": 16308221346515, + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "amount": 19999896895525, "lockTime": 0 }, { - "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", - "amount": 16020659000000, + "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", + "amount": 19999012154815, "lockTime": 0 }, { - "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", - "amount": 15982573625914, + "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", + "amount": 19998999103725, "lockTime": 0 }, { - "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", - "amount": 15877695642439, + "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", + "amount": 19779999900000, "lockTime": 0 }, { - "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", - "amount": 15385796365621, + "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", + "amount": 15326498000000, "lockTime": 0 }, { - "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", - "amount": 15289325657803, + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "amount": 14136961867446, "lockTime": 0 }, { - "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", - "amount": 15284879672727, + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "amount": 13561355703354, "lockTime": 0 }, { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "amount": 15256800433599, + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", + "amount": 11989898005700, "lockTime": 0 }, { - "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", - "amount": 14657695896915, + "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", + "amount": 11692620767972, "lockTime": 0 }, { - "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", - "amount": 14559968174355, + "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", + "amount": 11111208965311, "lockTime": 0 }, { - "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", - "amount": 14000372803486, + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "amount": 10618259989975, "lockTime": 0 }, { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "amount": 13550671393781, + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "amount": 9999899418375, "lockTime": 0 }, { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "amount": 13154825176483, + "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", + "amount": 8888799502400, "lockTime": 0 }, { - "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", - "amount": 12668965887487, + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "amount": 8833553072716, "lockTime": 0 }, { - "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", - "amount": 12666267394598, + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "amount": 8542015890741, "lockTime": 0 }, { - "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", - "amount": 12621967560175, + "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "amount": 6961730529425, "lockTime": 0 }, { - "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", - "amount": 12255358349302, + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "amount": 6904847361043, "lockTime": 0 }, { - "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", - "amount": 12121721619499, + "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", + "amount": 6431825179804, "lockTime": 0 }, { - "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", - "amount": 11926338975726, + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "amount": 6232427524648, "lockTime": 0 }, { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "amount": 11583511308210, + "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "amount": 6003107334889, "lockTime": 0 }, { - "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", - "amount": 11409057036310, + "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "amount": 6001148403729, "lockTime": 0 }, { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "amount": 11351298447654, + "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", + "amount": 5969547053475, "lockTime": 0 }, { - "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", - "amount": 11082291795378, + "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", + "amount": 5967760560175, "lockTime": 0 }, { - "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", - "amount": 11034033057236, + "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", + "amount": 5967748486250, "lockTime": 0 }, { - "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", - "amount": 11014309369256, + "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", + "amount": 5967746727700, "lockTime": 0 }, { - "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", - "amount": 10974894000000, + "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", + "amount": 5967593743575, "lockTime": 0 }, { - "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", - "amount": 10963578142123, + "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", + "amount": 5965125820650, "lockTime": 0 }, { - "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", - "amount": 10705356018980, + "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", + "amount": 5964934449325, "lockTime": 0 }, { - "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", - "amount": 10496929192351, + "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", + "amount": 5964927619825, "lockTime": 0 }, { - "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", - "amount": 10210478607637, + "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", + "amount": 5964919229650, "lockTime": 0 }, { - "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", - "amount": 10049766328408, + "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", + "amount": 5964816737825, "lockTime": 0 }, { - "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", - "amount": 10049249616254, + "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", + "amount": 5964739028925, "lockTime": 0 }, { - "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", - "amount": 10028057245796, + "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", + "amount": 5964722973575, "lockTime": 0 }, { - "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", - "amount": 10004821122300, + "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", + "amount": 5964722478275, "lockTime": 0 }, { - "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", - "amount": 10000101011110, + "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", + "amount": 5964639781975, "lockTime": 0 }, { - "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", - "amount": 9597836179629, + "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", + "amount": 5964629618250, "lockTime": 0 }, { - "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", - "amount": 9411000000000, + "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "amount": 5964628195925, "lockTime": 0 }, { - "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", - "amount": 9048369857092, + "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", + "amount": 5964624558025, "lockTime": 0 }, { - "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", - "amount": 8964347401016, + "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", + "amount": 5964543295050, "lockTime": 0 }, { - "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", - "amount": 8618647971105, + "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", + "amount": 5964536134025, "lockTime": 0 }, { - "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", - "amount": 8554267594404, + "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", + "amount": 5964531159425, "lockTime": 0 }, { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "amount": 8430412671966, + "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", + "amount": 5964525370025, "lockTime": 0 }, { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "amount": 8348822887210, + "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", + "amount": 5964520135200, "lockTime": 0 }, { - "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", - "amount": 8134835979711, + "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "amount": 5964430789025, "lockTime": 0 }, { - "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", - "amount": 8106292989089, + "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", + "amount": 5964420012900, "lockTime": 0 }, { - "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", - "amount": 8099244977731, + "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", + "amount": 5964338710975, "lockTime": 0 }, { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "amount": 7931526325696, + "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "amount": 5964332794000, "lockTime": 0 }, { - "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", - "amount": 7576838434314, + "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "amount": 5964326585975, "lockTime": 0 }, { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "amount": 7433908705664, + "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", + "amount": 5964324193925, "lockTime": 0 }, { - "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", - "amount": 7429043947267, + "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", + "amount": 5964320129400, "lockTime": 0 }, { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "amount": 7386613229167, + "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", + "amount": 5964220175225, "lockTime": 0 }, { - "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", - "amount": 7326992273148, + "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "amount": 5893129655025, "lockTime": 0 }, { - "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", - "amount": 7153182261056, + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "amount": 5552108112377, "lockTime": 0 }, { - "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", - "amount": 7119369434252, + "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", + "amount": 5340406402515, "lockTime": 0 }, { - "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", - "amount": 7080899230736, + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "amount": 5007225392710, "lockTime": 0 }, { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "amount": 7036152444418, + "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", + "amount": 5000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", - "amount": 7018221162019, + "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", + "amount": 4998998354225, "lockTime": 0 }, { - "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", - "amount": 6995517424108, + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "amount": 4815809619488, "lockTime": 0 }, { - "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", - "amount": 6995327178146, + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "amount": 4782935168154, "lockTime": 0 }, { - "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", - "amount": 6799926963817, + "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", + "amount": 4399497227769, "lockTime": 0 }, { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "amount": 6547292181799, + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "amount": 4180796388195, "lockTime": 0 }, { - "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", - "amount": 6454254935717, + "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", + "amount": 4083015546214, "lockTime": 0 }, { - "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", - "amount": 6435998684431, + "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", + "amount": 4069206784051, "lockTime": 0 }, { - "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", - "amount": 6420573019027, + "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", + "amount": 3959598161628, "lockTime": 0 }, { - "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", - "amount": 6363661460959, + "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", + "amount": 3827308013400, "lockTime": 0 }, { - "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", - "amount": 6362551588408, + "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", + "amount": 3590000000000, "lockTime": 0 }, { - "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", - "amount": 6298994991387, + "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", + "amount": 3070197304125, "lockTime": 0 }, { - "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", - "amount": 6255850503155, + "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", + "amount": 3009999516600, "lockTime": 0 }, { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "amount": 6227658206731, + "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", + "amount": 2999999502850, "lockTime": 0 }, { - "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", - "amount": 6170431207813, + "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", + "amount": 2999471520675, "lockTime": 0 }, { - "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", - "amount": 6012231756288, + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "amount": 2997580915928, "lockTime": 0 }, { - "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", - "amount": 6006135315945, + "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", + "amount": 2994986422725, "lockTime": 0 }, { - "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", - "amount": 5972970915411, + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "amount": 2988878035125, "lockTime": 0 }, { - "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", - "amount": 5971794874143, + "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", + "amount": 2927990645065, "lockTime": 0 }, { - "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", - "amount": 5944437495364, + "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", + "amount": 2780099900000, "lockTime": 0 }, { - "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", - "amount": 5766797590061, + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "amount": 2775347540500, "lockTime": 0 }, { - "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", - "amount": 5743599852741, + "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", + "amount": 2772815051761, "lockTime": 0 }, { - "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", - "amount": 5702200009199, + "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", + "amount": 2731610975828, "lockTime": 0 }, { - "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", - "amount": 5647717457022, + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "amount": 2666569034845, "lockTime": 0 }, { - "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", - "amount": 5629556387539, + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "amount": 2555330206743, "lockTime": 0 }, { - "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", - "amount": 5628135943750, + "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", + "amount": 2526201691750, "lockTime": 0 }, { - "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", - "amount": 5563400000000, + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "amount": 2510955381132, "lockTime": 0 }, { - "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", - "amount": 5515305768040, + "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", + "amount": 2509997036050, "lockTime": 0 }, { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "amount": 5379373223453, + "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", + "amount": 2256413711880, "lockTime": 0 }, { - "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", - "amount": 5373006606201, + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "amount": 2222222122222, "lockTime": 0 }, { - "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", - "amount": 5345612916464, + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "amount": 2202899500000, "lockTime": 0 }, { - "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", - "amount": 5290953176650, + "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", + "amount": 2201174340450, "lockTime": 0 }, { - "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", - "amount": 5288541299791, + "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", + "amount": 2100000000000, "lockTime": 0 }, { - "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", - "amount": 5222483124619, + "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", + "amount": 2080000000000, "lockTime": 0 }, { - "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", - "amount": 5209711163393, + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "amount": 2054385511968, "lockTime": 0 }, { - "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", - "amount": 5188900000000, + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "amount": 2048351046028, "lockTime": 0 }, { - "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", - "amount": 5180804996689, + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "amount": 2047488447331, "lockTime": 0 }, { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "amount": 5130558133262, + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "amount": 2041463275119, "lockTime": 0 }, { - "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", - "amount": 5049478565462, + "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", + "amount": 2010000000000, "lockTime": 0 }, { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "amount": 4988309871304, + "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", - "amount": 4887877000000, + "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", + "amount": 2009999900000, "lockTime": 0 }, { - "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", - "amount": 4830577078034, + "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", + "amount": 2004996165950, "lockTime": 0 }, { - "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", - "amount": 4801129520291, + "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", + "amount": 2002899668781, "lockTime": 0 }, { - "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", - "amount": 4732474774320, + "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", + "amount": 2001997352900, "lockTime": 0 }, { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "amount": 4705517703977, + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "amount": 2001248231222, "lockTime": 0 }, { - "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", - "amount": 4694439297547, + "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", - "amount": 4647006300000, + "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", - "amount": 4646953342492, + "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", - "amount": 4616310943553, + "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", + "amount": 2000999900000, "lockTime": 0 }, { - "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", - "amount": 4611926555756, + "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", + "amount": 2000999499500, "lockTime": 0 }, { - "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", - "amount": 4568137237703, + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "amount": 2000599800000, "lockTime": 0 }, { - "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", - "amount": 4566625857924, + "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", + "amount": 2000500000000, "lockTime": 0 }, { - "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", - "amount": 4523158387698, + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "amount": 4489756977035, + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "amount": 2000199800000, "lockTime": 0 }, { - "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", - "amount": 4474931163300, + "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", - "amount": 4466165926884, + "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", + "amount": 2000099900000, "lockTime": 0 }, { - "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", - "amount": 4432396267867, + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", - "amount": 4431622300791, + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", - "amount": 4413942339362, + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", - "amount": 4405882496140, + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", - "amount": 4404161055094, + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", - "amount": 4388649111917, + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", - "amount": 4347573883866, + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", - "amount": 4339160109193, + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", - "amount": 4317197774227, + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "amount": 4286676134209, + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", - "amount": 4259827282396, + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "amount": 2000099800000, "lockTime": 0 }, { - "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", - "amount": 4242359317804, + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "amount": 2000099700000, "lockTime": 0 }, { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "amount": 4235385342453, + "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", + "amount": 2000098600000, "lockTime": 0 }, { - "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", - "amount": 4200739986175, + "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", - "amount": 4178255482000, + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", - "amount": 4175579049369, + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", - "amount": 4139098221820, + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "amount": 2000000000000, "lockTime": 0 }, { - "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", - "amount": 4130862439847, + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "amount": 1983277946192, "lockTime": 0 }, { - "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", - "amount": 4127181289401, + "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", + "amount": 1897986821950, "lockTime": 0 }, { - "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", - "amount": 4097221270572, + "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", + "amount": 1892308762261, "lockTime": 0 }, { - "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", - "amount": 4095789805639, + "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", + "amount": 1804891384250, "lockTime": 0 }, { - "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", - "amount": 4090792034338, + "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", + "amount": 1745045970780, "lockTime": 0 }, { - "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", - "amount": 4089818633664, + "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", + "amount": 1613123824319, "lockTime": 0 }, { - "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", - "amount": 4087805490480, + "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", + "amount": 1579696998425, "lockTime": 0 }, { - "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", - "amount": 4083900000000, + "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", + "amount": 1573680323525, "lockTime": 0 }, { - "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", - "amount": 4034495354216, + "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", + "amount": 1534344228772, "lockTime": 0 }, { - "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", - "amount": 4013365700381, + "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", + "amount": 1501601000000, "lockTime": 0 }, { - "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", - "amount": 4006149129710, + "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", + "amount": 1305762826389, "lockTime": 0 }, { - "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", - "amount": 3993365195258, + "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", + "amount": 1277942984025, "lockTime": 0 }, { - "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", - "amount": 3983146833364, + "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", + "amount": 1263693098075, "lockTime": 0 }, { - "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", - "amount": 3979923799989, + "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", + "amount": 1212600000000, "lockTime": 0 }, { - "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", - "amount": 3960513870982, + "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", + "amount": 1210430000000, "lockTime": 0 }, { - "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", - "amount": 3927318651232, + "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", + "amount": 1200400000000, "lockTime": 0 }, { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "amount": 3911491754115, + "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", + "amount": 1099999900000, "lockTime": 0 }, { - "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", - "amount": 3898767176140, + "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", + "amount": 999998740275, "lockTime": 0 }, { - "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", - "amount": 3892538355819, + "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", + "amount": 997094585141, "lockTime": 0 }, { - "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", - "amount": 3855100262699, + "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", + "amount": 994278520075, "lockTime": 0 }, { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "amount": 3827037476637, + "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", + "amount": 932886854685, "lockTime": 0 }, { - "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", - "amount": 3811169478064, + "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", + "amount": 925942495989, "lockTime": 0 }, { - "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", - "amount": 3810553700980, + "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", + "amount": 899999900000, "lockTime": 0 }, { - "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", - "amount": 3769010423189, + "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", + "amount": 899990536800, "lockTime": 0 }, { - "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", - "amount": 3746670550527, + "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", + "amount": 896331407533, "lockTime": 0 }, { - "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", - "amount": 3732256484155, + "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", + "amount": 829999900000, "lockTime": 0 }, { - "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", - "amount": 3685768408200, + "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", + "amount": 799999900000, "lockTime": 0 }, { - "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", - "amount": 3655910282573, + "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", + "amount": 624118978765, "lockTime": 0 }, { - "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", - "amount": 3649905528145, + "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", + "amount": 598988990325, "lockTime": 0 }, { - "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", - "amount": 3621424455199, + "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", + "amount": 588488574836, "lockTime": 0 }, { - "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", - "amount": 3613911902450, + "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", + "amount": 533892437900, "lockTime": 0 }, { - "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", - "amount": 3604828977508, + "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", + "amount": 500784852120, "lockTime": 0 }, { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "amount": 3566330778157, + "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", + "amount": 488524140000, "lockTime": 0 }, { - "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", - "amount": 3538199000000, + "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", + "amount": 487998633989, "lockTime": 0 }, { - "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", - "amount": 3495425261514, + "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", + "amount": 458200010279, "lockTime": 0 }, { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "amount": 3487546181731, + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "amount": 446581185925, "lockTime": 0 }, { - "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", - "amount": 3391978196979, + "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", + "amount": 412844960163, "lockTime": 0 }, { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "amount": 3360604881888, + "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", + "amount": 409452402058, "lockTime": 0 }, { - "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", - "amount": 3335143686733, + "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", + "amount": 402100000000, "lockTime": 0 }, { - "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", - "amount": 3331061554915, + "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", + "amount": 399994026525, "lockTime": 0 }, { - "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", - "amount": 3323239998543, + "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", + "amount": 399559218725, "lockTime": 0 }, { - "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", - "amount": 3311961387294, + "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", + "amount": 375234867927, "lockTime": 0 }, { - "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", - "amount": 3297094325192, + "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", + "amount": 361401017975, "lockTime": 0 }, { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "amount": 3286747568517, + "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", + "amount": 358780483825, "lockTime": 0 }, { - "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", - "amount": 3280611800340, + "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", + "amount": 336275500000, "lockTime": 0 }, { - "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", - "amount": 3270332890601, + "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", + "amount": 333300000000, "lockTime": 0 }, { - "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", - "amount": 3262562062214, + "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", + "amount": 322980000000, "lockTime": 0 }, { - "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", - "amount": 3253798581575, + "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", + "amount": 320000000000, "lockTime": 0 }, { - "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", - "amount": 3250306375096, + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "amount": 318292236481, "lockTime": 0 }, { - "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", - "amount": 3248652471821, + "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", - "amount": 3239187517096, + "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", + "amount": 310000000000, "lockTime": 0 }, { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "amount": 3227989972889, + "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", + "amount": 307316678664, "lockTime": 0 }, { - "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", - "amount": 3223012704398, + "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", + "amount": 305960134350, "lockTime": 0 }, { - "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", - "amount": 3127303308393, + "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", + "amount": 305688722918, "lockTime": 0 }, { - "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", - "amount": 3114545041663, + "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", + "amount": 304580580775, "lockTime": 0 }, { - "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", - "amount": 3114371637359, + "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", + "amount": 302336904925, "lockTime": 0 }, { - "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", - "amount": 3098280351409, + "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", - "amount": 3084432046686, + "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", - "amount": 3084314606659, + "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", + "amount": 300500000000, "lockTime": 0 }, { - "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", - "amount": 3067842756460, + "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "amount": 3049372130977, + "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", + "amount": 300100000000, "lockTime": 0 }, { - "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", - "amount": 3034533415571, + "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", + "amount": 299993489325, "lockTime": 0 }, { - "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", - "amount": 3024446627522, + "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", + "amount": 299799499988, "lockTime": 0 }, { - "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", - "amount": 3016641111110, + "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", + "amount": 298998293950, "lockTime": 0 }, { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "amount": 3006370302621, + "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", + "amount": 298699107700, "lockTime": 0 }, { - "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", - "amount": 3003754348603, + "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", + "amount": 297143976650, "lockTime": 0 }, { - "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", - "amount": 3003369565489, + "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", + "amount": 280099900000, "lockTime": 0 }, { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "amount": 2991614988430, + "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", + "amount": 280000000000, "lockTime": 0 }, { - "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", - "amount": 2983827070197, + "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", + "amount": 250749132637, "lockTime": 0 }, { - "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", - "amount": 2982058302152, + "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", + "amount": 237800000000, "lockTime": 0 }, { - "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", - "amount": 2961178030782, + "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", + "amount": 225800000000, "lockTime": 0 }, { - "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", - "amount": 2959980299559, + "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", + "amount": 216588531050, "lockTime": 0 }, { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "amount": 2923789183800, + "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", + "amount": 210000000000, "lockTime": 0 }, { - "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", - "amount": 2922515618168, + "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", + "amount": 208663978925, "lockTime": 0 }, { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "amount": 2921485767410, + "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", + "amount": 207000000000, "lockTime": 0 }, { - "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", - "amount": 2920614737994, + "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", + "amount": 201928016350, "lockTime": 0 }, { - "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", - "amount": 2918736502136, + "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", + "amount": 201832500703, "lockTime": 0 }, { - "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", - "amount": 2908563502926, + "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", + "amount": 200100348561, "lockTime": 0 }, { - "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", - "amount": 2875371127677, + "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", + "amount": 200000348385, "lockTime": 0 }, { - "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", - "amount": 2844883497292, + "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", + "amount": 199994535210, "lockTime": 0 }, { - "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", - "amount": 2844124104402, + "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", + "amount": 199488974575, "lockTime": 0 }, { - "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", - "amount": 2829973172145, + "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", + "amount": 199264097125, "lockTime": 0 }, { - "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", - "amount": 2821622909059, + "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", + "amount": 199117809325, "lockTime": 0 }, { - "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", - "amount": 2786200000000, + "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", + "amount": 198997767225, "lockTime": 0 }, { - "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", - "amount": 2785813908817, + "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", + "amount": 198996705725, "lockTime": 0 }, { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "amount": 2784926825513, + "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", + "amount": 197996936400, "lockTime": 0 }, { - "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", - "amount": 2772147293763, + "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", + "amount": 183883201525, "lockTime": 0 }, { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "amount": 2732620680842, + "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", + "amount": 159999700000, "lockTime": 0 }, { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "amount": 2714528126132, + "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", + "amount": 149999900000, "lockTime": 0 }, { - "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", - "amount": 2699791100000, + "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", + "amount": 142000000000, "lockTime": 0 }, { - "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", - "amount": 2686142685973, + "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", + "amount": 140601995550, "lockTime": 0 }, { - "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", - "amount": 2671269299743, + "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", + "amount": 130000000000, "lockTime": 0 }, { - "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", - "amount": 2671214015444, + "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", + "amount": 129999900000, "lockTime": 0 }, { - "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", - "amount": 2659428100000, + "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", + "amount": 120200000000, "lockTime": 0 }, { - "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", - "amount": 2654669205335, + "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", + "amount": 110043427250, "lockTime": 0 }, { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "amount": 2654532230472, + "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", + "amount": 110000000000, "lockTime": 0 }, { - "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", - "amount": 2643085702359, + "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", + "amount": 109999900000, "lockTime": 0 }, { - "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", - "amount": 2640407616700, + "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", + "amount": 108981741525, "lockTime": 0 }, { - "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", - "amount": 2633698266579, + "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", + "amount": 105100000000, "lockTime": 0 }, { - "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", - "amount": 2612737305486, + "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", + "amount": 102000000000, "lockTime": 0 }, { - "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", - "amount": 2611194150236, + "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", + "amount": 101871002025, "lockTime": 0 }, { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "amount": 2602401497831, + "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", + "amount": 100299900000, "lockTime": 0 }, { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "amount": 2592239217420, + "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", + "amount": 100097056725, "lockTime": 0 }, { - "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", - "amount": 2585880528244, + "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", - "amount": 2575849842209, + "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", - "amount": 2564427203389, + "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", + "amount": 100000000000, "lockTime": 0 }, { - "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", - "amount": 2561080103484, + "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", + "amount": 99991621425, "lockTime": 0 }, { - "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", - "amount": 2560455845735, + "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", + "amount": 99699700000, "lockTime": 0 }, { - "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", - "amount": 2550325652804, + "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", + "amount": 98950443200, "lockTime": 0 }, { - "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", - "amount": 2529733793421, + "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", + "amount": 98486937100, "lockTime": 0 }, { - "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", - "amount": 2527204033602, + "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", + "amount": 98400000000, "lockTime": 0 }, { - "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", - "amount": 2523806252812, + "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", + "amount": 98300000000, "lockTime": 0 }, { - "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", - "amount": 2520767814000, + "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", + "amount": 96799200000, "lockTime": 0 }, { - "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", - "amount": 2512332890167, + "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", + "amount": 93969831700, "lockTime": 0 }, { - "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", - "amount": 2506489602729, + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "amount": 92699305721, "lockTime": 0 }, { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "amount": 2505788549696, + "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", + "amount": 89999900000, "lockTime": 0 }, { - "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", - "amount": 2503882375281, + "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", + "amount": 89999700000, "lockTime": 0 }, { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "amount": 2503791332448, + "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", + "amount": 89959456375, "lockTime": 0 }, { - "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", - "amount": 2498140085719, + "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", + "amount": 89000000000, "lockTime": 0 }, { - "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", - "amount": 2491590986231, + "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", + "amount": 88748393900, "lockTime": 0 }, { - "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", - "amount": 2485683525333, + "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", + "amount": 82499900000, "lockTime": 0 }, { - "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", - "amount": 2462313209710, + "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", + "amount": 81986713775, "lockTime": 0 }, { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "amount": 2461793544874, + "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "amount": 2458824842116, + "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "amount": 2445854118322, + "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", - "amount": 2444637599755, + "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", - "amount": 2438371066122, + "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "amount": 2423849195494, + "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "amount": 2413065350762, + "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", - "amount": 2408097275306, + "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", - "amount": 2407640165613, + "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "amount": 2406904698682, + "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", - "amount": 2404674651501, + "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "amount": 2403745208237, + "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", - "amount": 2400348330773, + "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", - "amount": 2399500000000, + "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "amount": 2397165126369, + "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", - "amount": 2378637371160, + "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", - "amount": 2378073843263, + "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "amount": 2373873118963, + "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "amount": 2368030658046, + "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", - "amount": 2347090108700, + "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", + "amount": 80499900000, "lockTime": 0 }, { - "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", - "amount": 2332711128929, + "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", + "amount": 80399900000, "lockTime": 0 }, { - "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", - "amount": 2331223358189, + "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", + "amount": 80000000000, "lockTime": 0 }, { - "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", - "amount": 2329515900000, + "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", + "amount": 77551499050, "lockTime": 0 }, { - "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", - "amount": 2324535158900, + "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", + "amount": 74768701600, "lockTime": 0 }, { - "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", - "amount": 2314300000000, + "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", + "amount": 68973500450, "lockTime": 0 }, { - "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", - "amount": 2313384999334, + "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", + "amount": 68040813100, "lockTime": 0 }, { - "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", - "amount": 2312557916000, + "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", + "amount": 51339780050, "lockTime": 0 }, { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "amount": 2310225175167, + "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", + "amount": 45112902300, "lockTime": 0 }, { - "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", - "amount": 2299501675703, + "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", + "amount": 42837864386, "lockTime": 0 }, { - "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", - "amount": 2288084075746, + "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", + "amount": 42016243075, "lockTime": 0 }, { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "amount": 2282427758100, + "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", + "amount": 40408500000, "lockTime": 0 }, { - "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", - "amount": 2274175020234, + "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", + "amount": 37025000055, "lockTime": 0 }, { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "amount": 2257532888084, + "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", + "amount": 36900000000, "lockTime": 0 }, { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "amount": 2254957709482, + "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", + "amount": 35800000000, "lockTime": 0 }, { - "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", - "amount": 2250233316770, + "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", + "amount": 32974999945, "lockTime": 0 }, { - "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", - "amount": 2245221483757, + "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", + "amount": 32934100000, "lockTime": 0 }, { - "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", - "amount": 2232845815309, + "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", + "amount": 29200000000, "lockTime": 0 }, { - "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", - "amount": 2232285520749, + "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", + "amount": 26100000000, "lockTime": 0 }, { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "amount": 2224585008400, + "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", + "amount": 22951608700, "lockTime": 0 }, { - "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", - "amount": 2220759959278, + "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", + "amount": 21800000000, "lockTime": 0 }, { - "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", - "amount": 2216046481500, + "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", + "amount": 20000000000, "lockTime": 0 }, { - "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", - "amount": 2214311555607, + "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", + "amount": 18900000000, "lockTime": 0 }, { - "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", - "amount": 2208928191711, + "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", + "amount": 18098700000, "lockTime": 0 }, { - "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", - "amount": 2201414464632, + "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", + "amount": 17923520375, "lockTime": 0 }, { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "amount": 2197120481814, + "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", + "amount": 16325107000, "lockTime": 0 }, { - "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", - "amount": 2194601041128, + "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", + "amount": 14999400000, "lockTime": 0 }, { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "amount": 2193191237193, + "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", + "amount": 13044000000, "lockTime": 0 }, { - "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", - "amount": 2190008983271, + "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", + "amount": 12783997600, "lockTime": 0 }, { - "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", - "amount": 2189525702549, + "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", + "amount": 11459355900, "lockTime": 0 }, { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "amount": 2177960945461, + "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", + "amount": 11200000000, "lockTime": 0 }, { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "amount": 2177793611859, + "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", + "amount": 10220000000, "lockTime": 0 }, { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "amount": 2165977843823, + "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", + "amount": 10115000000, "lockTime": 0 }, { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "amount": 2165141022582, + "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", - "amount": 2160832408906, + "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", - "amount": 2157940349129, + "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "amount": 2157464205186, + "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", - "amount": 2157032154243, + "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", - "amount": 2154039597526, + "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", - "amount": 2153501474921, + "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", + "amount": 10000000000, "lockTime": 0 }, { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "amount": 2138851541920, + "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", + "amount": 9993122025, "lockTime": 0 }, { - "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", - "amount": 2129456403303, + "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", + "amount": 9991715100, "lockTime": 0 }, { - "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", - "amount": 2129201111110, + "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", + "amount": 9990369025, "lockTime": 0 }, { - "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", - "amount": 2126535005180, + "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", + "amount": 9990272900, "lockTime": 0 }, { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "amount": 2120987060003, + "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", + "amount": 9990251900, "lockTime": 0 }, { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "amount": 2119167814451, + "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", + "amount": 9990212375, "lockTime": 0 }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "amount": 2115537957318, + "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", + "amount": 9990188125, "lockTime": 0 }, { - "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", - "amount": 2109262770164, + "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", + "amount": 9990185875, "lockTime": 0 }, { - "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", - "amount": 2104032286014, + "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", + "amount": 9989270475, "lockTime": 0 }, { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "amount": 2100003306550, + "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", + "amount": 9989207450, "lockTime": 0 }, { - "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", - "amount": 2097583277305, + "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", + "amount": 9989201100, "lockTime": 0 }, { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "amount": 2094576202794, + "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", + "amount": 9989159225, "lockTime": 0 }, { - "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", - "amount": 2091321339852, + "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", + "amount": 9989157325, "lockTime": 0 }, { - "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", - "amount": 2088277643638, + "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", + "amount": 9989143375, "lockTime": 0 }, { - "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", - "amount": 2084658200000, + "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", + "amount": 9989140250, "lockTime": 0 }, { - "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", - "amount": 2084094111110, + "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", + "amount": 9989133250, "lockTime": 0 }, { - "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", - "amount": 2083859676189, + "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", + "amount": 9989132075, "lockTime": 0 }, { - "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", - "amount": 2082556275251, + "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", + "amount": 9989099675, "lockTime": 0 }, { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "amount": 2081281639763, + "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", + "amount": 9989099575, "lockTime": 0 }, { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "amount": 2075807942069, + "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", + "amount": 9989066925, "lockTime": 0 }, { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "amount": 2075735709754, + "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", + "amount": 9988986475, "lockTime": 0 }, { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "amount": 2075519608709, + "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", + "amount": 9988217650, "lockTime": 0 }, { - "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", - "amount": 2074282875104, + "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", + "amount": 9988136525, "lockTime": 0 }, { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "amount": 2073614393244, + "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", + "amount": 9988064350, "lockTime": 0 }, { - "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", - "amount": 2068101700641, + "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", + "amount": 9988057325, "lockTime": 0 }, { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "amount": 2068091781354, + "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", + "amount": 9988036925, "lockTime": 0 }, { - "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", - "amount": 2067759441999, + "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", + "amount": 9988036800, "lockTime": 0 }, { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "amount": 2058573526549, + "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", + "amount": 9988013775, "lockTime": 0 }, { - "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", - "amount": 2056867768988, + "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", + "amount": 9988000500, "lockTime": 0 }, { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "amount": 2056066823856, + "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", + "amount": 9987977825, "lockTime": 0 }, { - "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", - "amount": 2055945028731, + "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", + "amount": 9987896575, "lockTime": 0 }, { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "amount": 2055670116258, + "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", + "amount": 9987885850, "lockTime": 0 }, { - "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", - "amount": 2050764983771, + "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", + "amount": 9987829800, "lockTime": 0 }, { - "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", - "amount": 2046492776171, + "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", + "amount": 9987109225, "lockTime": 0 }, { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "amount": 2040915033861, + "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", + "amount": 9987074300, "lockTime": 0 }, { - "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", - "amount": 2040294786521, + "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", + "amount": 9987068600, "lockTime": 0 }, { - "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", - "amount": 2036932010954, + "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", + "amount": 9986960825, "lockTime": 0 }, { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "amount": 2036613104066, + "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", + "amount": 9986874475, "lockTime": 0 }, { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "amount": 2036018484169, + "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", + "amount": 9986820925, "lockTime": 0 }, { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "amount": 2036012751778, + "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", + "amount": 9986732575, "lockTime": 0 }, { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "amount": 2035494356743, + "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", + "amount": 9986727550, "lockTime": 0 }, { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "amount": 2034810197662, + "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", + "amount": 9986668925, "lockTime": 0 }, { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "amount": 2034038321331, + "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", + "amount": 9986167775, "lockTime": 0 }, { - "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", - "amount": 2033824784827, + "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", + "amount": 9985438350, "lockTime": 0 }, { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "amount": 2033107453284, + "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", + "amount": 9984401500, "lockTime": 0 }, { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "amount": 2032437685983, + "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", + "amount": 9923901850, "lockTime": 0 }, { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "amount": 2027117752848, + "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", + "amount": 9916023075, "lockTime": 0 }, { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "amount": 2024487062845, + "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", + "amount": 9913032825, "lockTime": 0 }, { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "amount": 2024206918844, + "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", + "amount": 9899900000, "lockTime": 0 }, { - "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", - "amount": 2022265112202, + "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", + "amount": 9899713150, "lockTime": 0 }, { - "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", - "amount": 2020044918767, + "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", + "amount": 9893677175, "lockTime": 0 }, { - "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", - "amount": 2017757942127, + "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", + "amount": 9499800000, "lockTime": 0 }, { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "amount": 2016927189193, + "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", + "amount": 9489900000, "lockTime": 0 }, { - "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", - "amount": 2015779311110, + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "amount": 9399800000, "lockTime": 0 }, { - "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", - "amount": 2013865643211, + "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", + "amount": 9299700000, "lockTime": 0 }, { - "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", - "amount": 2012535119804, + "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", + "amount": 9157657092, "lockTime": 0 }, { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "amount": 2011682301048, + "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", + "amount": 9000000000, "lockTime": 0 }, { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "amount": 2010847934394, + "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", + "amount": 8989350600, "lockTime": 0 }, { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "amount": 2009664081890, + "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", + "amount": 8989060600, "lockTime": 0 }, { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "amount": 2009538449322, + "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "amount": 2008025809214, + "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", + "amount": 8800000000, "lockTime": 0 }, { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "amount": 2007843844116, + "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", + "amount": 8539672725, "lockTime": 0 }, { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "amount": 2007566055582, + "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", + "amount": 8246417350, "lockTime": 0 }, { - "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", - "amount": 2006480000000, + "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", + "amount": 8241960275, "lockTime": 0 }, { - "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", - "amount": 2006476130004, + "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", + "amount": 8000000000, "lockTime": 0 }, { - "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", - "amount": 2005863893780, + "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", + "amount": 7889831300, "lockTime": 0 }, { - "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", - "amount": 2004334460269, + "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", + "amount": 7550884450, "lockTime": 0 }, { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "amount": 2003623863051, + "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", + "amount": 7000000000, "lockTime": 0 }, { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "amount": 2003380877828, + "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", + "amount": 6999600000, "lockTime": 0 }, { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "amount": 2003287117401, + "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", + "amount": 6959678345, "lockTime": 0 }, { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "amount": 2003245024802, + "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", + "amount": 5980102225, "lockTime": 0 }, { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "amount": 2003014108162, + "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", + "amount": 5966832575, "lockTime": 0 }, { - "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", - "amount": 2002623190557, + "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", + "amount": 5681003300, "lockTime": 0 }, { - "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", - "amount": 2002464726104, + "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", + "amount": 5670626625, "lockTime": 0 }, { - "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", - "amount": 2002253947425, + "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", + "amount": 5596047000, "lockTime": 0 }, { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "amount": 2001181497009, + "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", + "amount": 5347657361, "lockTime": 0 }, { - "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", - "amount": 2001139704491, + "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", + "amount": 5328432325, "lockTime": 0 }, { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "amount": 2000882364111, + "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", + "amount": 5094720025, "lockTime": 0 }, { - "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", - "amount": 2000641249410, + "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", + "amount": 5082831225, "lockTime": 0 }, { - "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", - "amount": 2000610292487, + "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", + "amount": 5000000000, "lockTime": 0 }, { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "amount": 2000399953793, + "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", + "amount": 4681316415, "lockTime": 0 }, { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "amount": 2000365342699, + "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", + "amount": 4386795775, "lockTime": 0 }, { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "amount": 2000232083093, + "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", + "amount": 4300000000, "lockTime": 0 }, { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "amount": 2000198111110, + "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", + "amount": 4247245075, "lockTime": 0 }, { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "amount": 2000173789364, + "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", + "amount": 4219694850, "lockTime": 0 }, { - "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", - "amount": 2000100111110, + "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", + "amount": 4000000000, "lockTime": 0 }, { - "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", - "amount": 2000099898108, + "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", + "amount": 3968692740, "lockTime": 0 }, { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "amount": 2000099111110, + "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", + "amount": 3900000000, "lockTime": 0 }, { - "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", - "amount": 2000098011110, + "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", + "amount": 3885652975, "lockTime": 0 }, { - "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", - "amount": 2000091011110, + "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", + "amount": 3762708875, "lockTime": 0 }, { - "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", - "amount": 2000086369280, + "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", + "amount": 3700000000, "lockTime": 0 }, { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "amount": 2000058405684, + "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", + "amount": 3600000000, "lockTime": 0 }, { - "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", - "amount": 2000017911110, + "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", + "amount": 3567339500, "lockTime": 0 }, { - "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", - "amount": 2000010111110, + "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", + "amount": 3418710175, "lockTime": 0 }, { - "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", - "amount": 2000010111110, + "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", + "amount": 3314895600, "lockTime": 0 }, { - "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", - "amount": 2000010111110, + "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", + "amount": 3300000000, "lockTime": 0 }, { - "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", - "amount": 2000010111110, + "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", + "amount": 3262952700, "lockTime": 0 }, { - "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", - "amount": 2000010111110, + "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", + "amount": 3179520000, "lockTime": 0 }, { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "amount": 2000009111110, + "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", + "amount": 3147240000, "lockTime": 0 }, { - "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", - "amount": 2000009000000, + "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", + "amount": 3122000000, "lockTime": 0 }, { - "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", - "amount": 2000009000000, + "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", + "amount": 3110000000, "lockTime": 0 }, { - "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", - "amount": 2000009000000, + "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", + "amount": 3098375575, "lockTime": 0 }, { - "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", - "amount": 2000009000000, + "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", + "amount": 3096829750, "lockTime": 0 }, { - "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", - "amount": 2000009000000, + "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", - "amount": 2000008911110, + "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", - "amount": 2000005011110, + "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", - "amount": 2000005011110, + "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", - "amount": 2000001111110, + "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "amount": 2000000679064, + "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "amount": 1987602846753, + "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", + "amount": 3000000000, "lockTime": 0 }, { - "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", - "amount": 1985670089499, + "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", + "amount": 2993155625, "lockTime": 0 }, { - "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", - "amount": 1982211469443, + "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", + "amount": 2899900000, "lockTime": 0 }, { - "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", - "amount": 1981832472943, + "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", + "amount": 2884800000, "lockTime": 0 }, { - "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", - "amount": 1979697708837, + "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", + "amount": 2884734450, "lockTime": 0 }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "amount": 1966041995997, + "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", + "amount": 2789980970, "lockTime": 0 }, { - "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", - "amount": 1963738533982, + "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", + "amount": 2584528575, "lockTime": 0 }, { - "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", - "amount": 1958238264916, + "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", + "amount": 2499900000, "lockTime": 0 }, { - "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", - "amount": 1952478544587, + "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", + "amount": 2280000000, "lockTime": 0 }, { - "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", - "amount": 1943494060487, + "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", + "amount": 2259700000, "lockTime": 0 }, { - "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", - "amount": 1927503792350, + "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", + "amount": 2196863450, "lockTime": 0 }, { - "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", - "amount": 1919931284005, + "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", + "amount": 2166091400, "lockTime": 0 }, { - "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", - "amount": 1919458620000, + "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", + "amount": 2100000000, "lockTime": 0 }, { - "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", - "amount": 1917044047699, + "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", + "amount": 2097925025, "lockTime": 0 }, { - "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", - "amount": 1909180173388, + "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", + "amount": 2096126250, "lockTime": 0 }, { - "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", - "amount": 1901147501442, + "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", + "amount": 2095712300, "lockTime": 0 }, { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "amount": 1898634487477, + "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", + "amount": 2090260625, "lockTime": 0 }, { - "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", - "amount": 1892418605876, + "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", + "amount": 2082245000, "lockTime": 0 }, { - "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", - "amount": 1877990112895, + "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", + "amount": 2079580925, "lockTime": 0 }, { - "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", - "amount": 1867607885258, + "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", + "amount": 2079230950, "lockTime": 0 }, { - "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", - "amount": 1862720614605, + "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", + "amount": 2054834875, "lockTime": 0 }, { - "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", - "amount": 1845483896505, + "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", - "amount": 1845459117552, + "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", - "amount": 1827502997735, + "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", + "amount": 2000000000, "lockTime": 0 }, { - "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", - "amount": 1811226447321, + "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", + "amount": 1998396625, "lockTime": 0 }, { - "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", - "amount": 1806223870958, + "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", + "amount": 1996901975, "lockTime": 0 }, { - "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", - "amount": 1797559579952, + "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", + "amount": 1996852950, "lockTime": 0 }, { - "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", - "amount": 1797270576526, + "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", + "amount": 1996312650, "lockTime": 0 }, { - "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", - "amount": 1791680184979, + "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", + "amount": 1992299600, "lockTime": 0 }, { - "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", - "amount": 1785822811110, + "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", + "amount": 1899900000, "lockTime": 0 }, { - "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", - "amount": 1784376882586, + "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", + "amount": 1836805890, "lockTime": 0 }, { - "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", - "amount": 1771360194271, + "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", + "amount": 1827722825, "lockTime": 0 }, { - "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", - "amount": 1769642117033, + "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", + "amount": 1823725825, "lockTime": 0 }, { - "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", - "amount": 1767652984461, + "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", + "amount": 1765270250, "lockTime": 0 }, { - "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", - "amount": 1761683011110, + "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", + "amount": 1761846790, "lockTime": 0 }, { - "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", - "amount": 1754373322210, + "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", + "amount": 1548354300, "lockTime": 0 }, { - "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", - "amount": 1732009518727, + "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", - "amount": 1727913275323, + "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", + "amount": 1500000000, "lockTime": 0 }, { - "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", - "amount": 1720147985773, + "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", - "amount": 1717345934781, + "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", + "amount": 1499900000, "lockTime": 0 }, { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "amount": 1710378692033, + "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", + "amount": 1400000000, "lockTime": 0 }, { - "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", - "amount": 1662804498747, + "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", + "amount": 1398752439, "lockTime": 0 }, { - "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", - "amount": 1649888019401, + "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", + "amount": 1348274325, "lockTime": 0 }, { - "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", - "amount": 1646621806474, + "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", + "amount": 1331528300, "lockTime": 0 }, { - "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", - "amount": 1642447581350, + "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", + "amount": 1295000000, "lockTime": 0 }, { - "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", - "amount": 1640698498183, + "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", + "amount": 1281519175, "lockTime": 0 }, { - "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", - "amount": 1636590784803, + "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", + "amount": 1219000000, "lockTime": 0 }, { - "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", - "amount": 1636555919569, + "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "amount": 1624093192505, + "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", - "amount": 1622344350254, + "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", + "amount": 1200000000, "lockTime": 0 }, { - "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", - "amount": 1621883807409, + "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", + "amount": 1190638625, "lockTime": 0 }, { - "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", - "amount": 1620351258779, + "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", - "amount": 1615784977131, + "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", + "amount": 1100000000, "lockTime": 0 }, { - "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", - "amount": 1611089702586, + "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", + "amount": 1087826175, "lockTime": 0 }, { - "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", - "amount": 1608079726426, + "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", + "amount": 1082828700, "lockTime": 0 }, { - "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", - "amount": 1596157645055, + "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", + "amount": 1011000000, "lockTime": 0 }, { - "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", - "amount": 1580138725178, + "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", + "amount": 1001086825, "lockTime": 0 }, { - "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", - "amount": 1553796707569, + "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", - "amount": 1552885553329, + "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", - "amount": 1547805533569, + "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", - "amount": 1533811095448, + "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", - "amount": 1531431774417, + "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", - "amount": 1527460702364, + "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", - "amount": 1520006101451, + "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", + "amount": 1000000000, "lockTime": 0 }, { - "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", - "amount": 1517994561157, + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "amount": 999900000, "lockTime": 0 }, { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "amount": 1514347763189, + "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", + "amount": 995712750, "lockTime": 0 }, { - "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", - "amount": 1508660771720, + "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", + "amount": 993565475, "lockTime": 0 }, { - "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", - "amount": 1506362472146, + "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", + "amount": 990365075, "lockTime": 0 }, { - "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", - "amount": 1506130233709, + "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", + "amount": 990215000, "lockTime": 0 }, { - "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", - "amount": 1502655086918, + "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", + "amount": 987971650, "lockTime": 0 }, { - "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", - "amount": 1500687804548, + "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", + "amount": 943664925, "lockTime": 0 }, { - "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", - "amount": 1500666032784, + "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", + "amount": 931693142, "lockTime": 0 }, { - "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", - "amount": 1500101605474, + "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", + "amount": 910000000, "lockTime": 0 }, { - "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", - "amount": 1500000000000, + "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", - "amount": 1499807257083, + "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", - "amount": 1494015999998, + "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", + "amount": 900000000, "lockTime": 0 }, { - "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", - "amount": 1482286686924, + "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", + "amount": 897352075, "lockTime": 0 }, { - "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", - "amount": 1471831927535, + "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", + "amount": 890000000, "lockTime": 0 }, { - "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", - "amount": 1470277969654, + "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", + "amount": 879906275, "lockTime": 0 }, { - "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", - "amount": 1466072347285, + "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", + "amount": 872582350, "lockTime": 0 }, { - "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", - "amount": 1458153329469, + "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", + "amount": 793455975, "lockTime": 0 }, { - "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", - "amount": 1455871158284, + "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", + "amount": 791410550, "lockTime": 0 }, { - "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", - "amount": 1444250047272, + "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", + "amount": 790504925, "lockTime": 0 }, { - "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", - "amount": 1443549025153, + "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", + "amount": 790406650, "lockTime": 0 }, { - "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", - "amount": 1438794879615, + "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", + "amount": 700000000, "lockTime": 0 }, { - "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", - "amount": 1431131990629, + "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", + "amount": 617648875, "lockTime": 0 }, { - "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", - "amount": 1425676300814, + "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", + "amount": 599800000, "lockTime": 0 }, { - "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", - "amount": 1417582606542, + "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", + "amount": 592460450, "lockTime": 0 }, { - "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", - "amount": 1410238937132, + "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", + "amount": 584532175, "lockTime": 0 }, { - "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", - "amount": 1404023143035, + "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", + "amount": 504715075, "lockTime": 0 }, { - "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", - "amount": 1396528826334, + "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", + "amount": 503472725, "lockTime": 0 }, { - "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", - "amount": 1391149776316, + "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", - "amount": 1384016377065, + "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", - "amount": 1374898768200, + "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", + "amount": 500000000, "lockTime": 0 }, { - "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", - "amount": 1373044564766, + "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", + "amount": 400000000, "lockTime": 0 }, { - "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", - "amount": 1352281612470, + "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", + "amount": 390000000, "lockTime": 0 }, { - "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", - "amount": 1350451450538, + "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", + "amount": 336931850, "lockTime": 0 }, { - "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", - "amount": 1348918831744, + "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", + "amount": 300000000, "lockTime": 0 }, { - "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", - "amount": 1348001423889, + "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", + "amount": 268625550, "lockTime": 0 }, { - "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", - "amount": 1346473165622, + "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", + "amount": 262469200, "lockTime": 0 }, { - "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", - "amount": 1325150682227, + "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", + "amount": 206830350, "lockTime": 0 }, { - "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", - "amount": 1318390185884, + "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", - "amount": 1311673839170, + "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", + "amount": 200000000, "lockTime": 0 }, { - "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", - "amount": 1305660893498, + "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", + "amount": 199900000, "lockTime": 0 }, { - "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", - "amount": 1273609908094, + "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", + "amount": 187905200, "lockTime": 0 }, { - "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", - "amount": 1269733922897, + "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", + "amount": 145118425, "lockTime": 0 }, { - "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", - "amount": 1258671288218, + "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", + "amount": 140000000, "lockTime": 0 }, { - "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", - "amount": 1244592164315, + "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", + "amount": 130185000, "lockTime": 0 }, { - "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", - "amount": 1236570016360, + "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", + "amount": 122179425, "lockTime": 0 }, { - "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", - "amount": 1231775430133, + "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", + "amount": 110000000, "lockTime": 0 }, { - "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", - "amount": 1227217241865, + "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", + "amount": 100001664, "lockTime": 0 - }, + } + ], + "alias": [ { - "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", - "amount": 1225168006874, - "lockTime": 0 + "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", + "alias": "rabbit" }, { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "amount": 1223568760775, - "lockTime": 0 + "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", + "alias": "chinanuls_00" }, { - "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", - "amount": 1220193182776, - "lockTime": 0 + "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", + "alias": "nede_1" }, { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "amount": 1220111371819, - "lockTime": 0 + "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", + "alias": "niels" }, { - "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", - "amount": 1219907526522, - "lockTime": 0 + "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", + "alias": "lin" }, { - "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", - "amount": 1219385000000, - "lockTime": 0 + "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", + "alias": "abcdefghijklmnopqrst" }, { - "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", - "amount": 1215940898534, - "lockTime": 0 + "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", + "alias": "lichao" }, { - "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", - "amount": 1195526181049, - "lockTime": 0 + "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", + "alias": "nulshope" }, { - "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", - "amount": 1193314827279, - "lockTime": 0 + "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", + "alias": "luo" }, { - "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", - "amount": 1191874181329, - "lockTime": 0 + "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", + "alias": "testhh" }, { - "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", - "amount": 1187036239092, - "lockTime": 0 + "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", + "alias": "prosperous_test" }, { - "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", - "amount": 1182119999798, - "lockTime": 0 + "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", + "alias": "lc" }, { - "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", - "amount": 1181730500977, - "lockTime": 0 + "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", + "alias": "angelillou_testnet" }, { - "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", - "amount": 1180911172991, - "lockTime": 0 + "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", + "alias": "mick_one" }, { - "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", - "amount": 1180639943197, - "lockTime": 0 + "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", + "alias": "nuls001" }, { - "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", - "amount": 1180221775131, - "lockTime": 0 + "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", + "alias": "prosperity_test" }, { - "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", - "amount": 1178454035091, - "lockTime": 0 + "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "alias": "bolang" }, { - "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", - "amount": 1177773988776, - "lockTime": 0 + "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", + "alias": "prosper_test" }, { - "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", - "amount": 1177478202000, - "lockTime": 0 + "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", + "alias": "test_windows" }, { - "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", - "amount": 1177426191667, - "lockTime": 0 + "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", + "alias": "nulsfans" }, { - "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", - "amount": 1172934345912, - "lockTime": 0 + "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", + "alias": "nuls_gold" }, { - "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", - "amount": 1172523076937, - "lockTime": 0 + "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", + "alias": "fj_ly_lc_201901" }, { - "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", - "amount": 1166606767133, - "lockTime": 0 + "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", + "alias": "nulsfather" }, { - "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", - "amount": 1165694315799, - "lockTime": 0 + "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", + "alias": "test148" }, { - "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", - "amount": 1165665233325, - "lockTime": 0 + "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", + "alias": "test149" }, { - "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", - "amount": 1156022945798, - "lockTime": 0 + "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", + "alias": "zlin" }, { - "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", - "amount": 1154908155717, - "lockTime": 0 + "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", + "alias": "lining2" }, { - "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", - "amount": 1153309494721, - "lockTime": 0 + "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", + "alias": "a_b_c_d_e_f_g_h_i" }, { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "amount": 1151753910270, - "lockTime": 0 + "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", + "alias": "huobitest1" }, { - "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", - "amount": 1148526819804, - "lockTime": 0 + "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", + "alias": "nuls002" }, { - "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", - "amount": 1147481045771, - "lockTime": 0 + "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", + "alias": "fj_ly_lc_201903" }, { - "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", - "amount": 1147168901655, - "lockTime": 0 + "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", + "alias": "fj_ly_lc_201902" }, { - "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", - "amount": 1144140806116, - "lockTime": 0 + "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", + "alias": "test145" }, { - "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", - "amount": 1139328418699, - "lockTime": 0 + "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", + "alias": "wave" }, { - "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", - "amount": 1129951066689, - "lockTime": 0 + "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", + "alias": "nede_4" }, { - "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", - "amount": 1125484353559, - "lockTime": 0 + "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", + "alias": "nede_2" }, { - "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", - "amount": 1123681178223, - "lockTime": 0 + "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", + "alias": "nede_3" }, { - "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", - "amount": 1120995894108, - "lockTime": 0 + "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", + "alias": "chinanuls_01" }, { - "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", - "amount": 1110591670839, - "lockTime": 0 + "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", + "alias": "chinanuls_02" }, { - "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", - "amount": 1110095452915, - "lockTime": 0 + "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", + "alias": "chinanuls_03" }, { - "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", - "amount": 1107452274199, - "lockTime": 0 + "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", + "alias": "chinanuls_04" }, { - "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", - "amount": 1104412611110, - "lockTime": 0 + "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", + "alias": "chinanuls_05" }, { - "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", - "amount": 1096638123245, - "lockTime": 0 + "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", + "alias": "chinanuls_06" }, { - "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", - "amount": 1091677683343, - "lockTime": 0 + "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", + "alias": "chinanuls_07" }, { - "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", - "amount": 1091443728838, - "lockTime": 0 + "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", + "alias": "chinanuls_08" }, { - "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", - "amount": 1089234131551, - "lockTime": 0 + "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", + "alias": "chinanuls_10" }, { - "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", - "amount": 1086705444472, - "lockTime": 0 + "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", + "alias": "chinanuls_11" }, { - "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", - "amount": 1084320903948, - "lockTime": 0 + "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", + "alias": "chinanuls_12" }, { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "amount": 1084172157914, - "lockTime": 0 + "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", + "alias": "chinanuls_09" }, { - "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", - "amount": 1082231867027, - "lockTime": 0 + "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", + "alias": "a_______________a" }, { - "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", - "amount": 1079272087137, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", - "amount": 1074404237418, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", - "amount": 1072794659776, - "lockTime": 0 - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "amount": 1071198777167, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", - "amount": 1062720026227, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", - "amount": 1058698633645, - "lockTime": 0 - }, - { - "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", - "amount": 1055829412151, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", - "amount": 1055000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", - "amount": 1053999366856, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", - "amount": 1047230969277, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", - "amount": 1043608175056, - "lockTime": 0 - }, - { - "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", - "amount": 1042372249596, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "amount": 1040224946221, - "lockTime": 0 - }, - { - "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", - "amount": 1038416336793, - "lockTime": 0 - }, - { - "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", - "amount": 1035780672679, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", - "amount": 1034849291290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", - "amount": 1029607508130, - "lockTime": 0 - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "amount": 1029354122846, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", - "amount": 1028188135067, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", - "amount": 1024835520677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", - "amount": 1015578194963, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", - "amount": 1013306751497, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", - "amount": 1012730982526, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", - "amount": 1012588485785, - "lockTime": 0 - }, - { - "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", - "amount": 1012198896427, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", - "amount": 1012011148542, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", - "amount": 1008346726631, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", - "amount": 1006956929151, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", - "amount": 1006539021466, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", - "amount": 1006148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", - "amount": 1003692029229, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", - "amount": 1001096397885, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", - "amount": 1000000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", - "amount": 991095716221, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", - "amount": 990001111110, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", - "amount": 987788400255, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", - "amount": 987356288126, - "lockTime": 0 - }, - { - "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", - "amount": 985080141250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", - "amount": 983932110963, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", - "amount": 976594924298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", - "amount": 975225897104, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "amount": 974810436114, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", - "amount": 974597487651, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", - "amount": 973352161546, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", - "amount": 972522251795, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "amount": 971035036260, - "lockTime": 0 - }, - { - "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", - "amount": 968970761706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", - "amount": 965763074157, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", - "amount": 959479726731, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", - "amount": 959154694146, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", - "amount": 958869326580, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", - "amount": 958134697239, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", - "amount": 957639258961, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", - "amount": 951680110822, - "lockTime": 0 - }, - { - "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", - "amount": 949018017124, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", - "amount": 947722535330, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", - "amount": 944915546924, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", - "amount": 941831007188, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "amount": 938534599149, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", - "amount": 934183506679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", - "amount": 927367561109, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", - "amount": 924162741660, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", - "amount": 920900954170, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", - "amount": 919794036530, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", - "amount": 917970269675, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", - "amount": 915899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", - "amount": 910841811110, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", - "amount": 910062149681, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", - "amount": 907386128958, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", - "amount": 904132980217, - "lockTime": 0 - }, - { - "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", - "amount": 899701111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "amount": 899298000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", - "amount": 897589521866, - "lockTime": 0 - }, - { - "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", - "amount": 896974107111, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", - "amount": 896020618575, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", - "amount": 887343608898, - "lockTime": 0 - }, - { - "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", - "amount": 886547626290, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", - "amount": 884784999700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", - "amount": 881773485284, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", - "amount": 879996284959, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", - "amount": 877922858919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", - "amount": 870003633881, - "lockTime": 0 - }, - { - "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", - "amount": 869505911395, - "lockTime": 0 - }, - { - "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", - "amount": 869161533640, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", - "amount": 861846278471, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", - "amount": 860309429777, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", - "amount": 851033632200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", - "amount": 849182517814, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "amount": 845251874740, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", - "amount": 838330496026, - "lockTime": 0 - }, - { - "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", - "amount": 835415502146, - "lockTime": 0 - }, - { - "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", - "amount": 834732962466, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", - "amount": 833202279345, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", - "amount": 833137364069, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", - "amount": 830732461821, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", - "amount": 830430210879, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", - "amount": 830183327774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", - "amount": 828771701195, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", - "amount": 820650152627, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", - "amount": 817845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", - "amount": 811949320488, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "amount": 808628413295, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", - "amount": 803029504677, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", - "amount": 800238336572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", - "amount": 798709479447, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "amount": 798218653505, - "lockTime": 0 - }, - { - "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", - "amount": 792686002383, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", - "amount": 789059928923, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", - "amount": 787813443027, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", - "amount": 786164407824, - "lockTime": 0 - }, - { - "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", - "amount": 784306203242, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", - "amount": 781311939095, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", - "amount": 778325647308, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", - "amount": 775694260050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", - "amount": 773749573171, - "lockTime": 0 - }, - { - "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", - "amount": 772689415122, - "lockTime": 0 - }, - { - "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", - "amount": 770274611201, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", - "amount": 769361580083, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", - "amount": 763145063210, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", - "amount": 762290565813, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", - "amount": 762157543635, - "lockTime": 0 - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "amount": 761551532758, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", - "amount": 760401111110, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", - "amount": 757415674634, - "lockTime": 0 - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "amount": 756905876678, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", - "amount": 755648204498, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", - "amount": 755461474324, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", - "amount": 751631538941, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", - "amount": 749769546618, - "lockTime": 0 - }, - { - "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", - "amount": 748967497030, - "lockTime": 0 - }, - { - "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", - "amount": 748111322930, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", - "amount": 747851114728, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", - "amount": 746470940518, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", - "amount": 746122073952, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", - "amount": 744516194522, - "lockTime": 0 - }, - { - "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", - "amount": 743849169051, - "lockTime": 0 - }, - { - "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", - "amount": 739638085218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "amount": 737947480291, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", - "amount": 737136696047, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "amount": 725274860466, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", - "amount": 724173124892, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", - "amount": 723670481621, - "lockTime": 0 - }, - { - "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", - "amount": 723194608282, - "lockTime": 0 - }, - { - "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", - "amount": 723168098780, - "lockTime": 0 - }, - { - "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", - "amount": 717889138351, - "lockTime": 0 - }, - { - "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", - "amount": 716901647085, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", - "amount": 716370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "amount": 715405091344, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", - "amount": 714099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", - "amount": 713335697927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", - "amount": 708807307987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", - "amount": 707593958267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", - "amount": 707065785077, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", - "amount": 706540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", - "amount": 705502900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", - "amount": 702744514797, - "lockTime": 0 - }, - { - "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", - "amount": 701804169652, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", - "amount": 701585334635, - "lockTime": 0 - }, - { - "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", - "amount": 701096309761, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", - "amount": 699928014706, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", - "amount": 699524889618, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", - "amount": 698872244628, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", - "amount": 695696346000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", - "amount": 690663699517, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", - "amount": 686055129452, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", - "amount": 683022637798, - "lockTime": 0 - }, - { - "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", - "amount": 679336310996, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "amount": 678591959669, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", - "amount": 677357601214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", - "amount": 675666996711, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", - "amount": 675200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", - "amount": 673451983271, - "lockTime": 0 - }, - { - "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", - "amount": 673382297009, - "lockTime": 0 - }, - { - "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", - "amount": 671924566621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", - "amount": 671667222783, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", - "amount": 667992367911, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", - "amount": 666907474237, - "lockTime": 0 - }, - { - "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", - "amount": 666500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", - "amount": 660973933588, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", - "amount": 658714559415, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", - "amount": 658513620604, - "lockTime": 0 - }, - { - "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", - "amount": 657440163873, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", - "amount": 657239700798, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", - "amount": 656919452718, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", - "amount": 653248487428, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", - "amount": 648157947682, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", - "amount": 647572905512, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", - "amount": 642940741252, - "lockTime": 0 - }, - { - "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", - "amount": 641055825467, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", - "amount": 640948206033, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", - "amount": 637896844713, - "lockTime": 0 - }, - { - "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", - "amount": 637626579463, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "amount": 637579061019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", - "amount": 637038357481, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", - "amount": 635886645100, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", - "amount": 632414595111, - "lockTime": 0 - }, - { - "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", - "amount": 632346327509, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", - "amount": 631312503303, - "lockTime": 0 - }, - { - "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", - "amount": 630692902584, - "lockTime": 0 - }, - { - "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", - "amount": 628146752685, - "lockTime": 0 - }, - { - "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", - "amount": 623261133230, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", - "amount": 622101156482, - "lockTime": 0 - }, - { - "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", - "amount": 619718646321, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", - "amount": 618000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", - "amount": 616181029252, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", - "amount": 612835767567, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", - "amount": 612678347930, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", - "amount": 611849611901, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", - "amount": 610024780420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", - "amount": 608158543434, - "lockTime": 0 - }, - { - "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", - "amount": 607225574087, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", - "amount": 606018846202, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", - "amount": 604403457227, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", - "amount": 603629750073, - "lockTime": 0 - }, - { - "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", - "amount": 600068436472, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", - "amount": 600000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", - "amount": 594536999592, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", - "amount": 593971278473, - "lockTime": 0 - }, - { - "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", - "amount": 593453737557, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", - "amount": 592149000573, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", - "amount": 591343948315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", - "amount": 590147794384, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", - "amount": 589427904690, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", - "amount": 589101639752, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", - "amount": 587328009919, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", - "amount": 578398732113, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", - "amount": 577801478480, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", - "amount": 576018679993, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", - "amount": 569900403023, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", - "amount": 569650113992, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", - "amount": 569393267497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", - "amount": 568958051492, - "lockTime": 0 - }, - { - "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", - "amount": 565050721081, - "lockTime": 0 - }, - { - "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", - "amount": 564400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", - "amount": 563615729120, - "lockTime": 0 - }, - { - "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", - "amount": 563495866605, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", - "amount": 562853833696, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", - "amount": 561532227425, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", - "amount": 560643306238, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", - "amount": 560315306784, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", - "amount": 560109433484, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", - "amount": 559780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", - "amount": 558335103634, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", - "amount": 558264517323, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", - "amount": 556373804267, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", - "amount": 555932491612, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "amount": 555256855786, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "amount": 554019878468, - "lockTime": 0 - }, - { - "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", - "amount": 553956815036, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", - "amount": 553357820256, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", - "amount": 553345846111, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", - "amount": 550463294337, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "amount": 549005803166, - "lockTime": 0 - }, - { - "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", - "amount": 548399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", - "amount": 548346950615, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", - "amount": 547306513126, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", - "amount": 547199231396, - "lockTime": 0 - }, - { - "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", - "amount": 546900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", - "amount": 545521200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", - "amount": 545447829788, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", - "amount": 542539414312, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", - "amount": 542498333713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", - "amount": 541776225012, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", - "amount": 541497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", - "amount": 538337569934, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", - "amount": 537317010767, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", - "amount": 535969093749, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", - "amount": 535648032586, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", - "amount": 534483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", - "amount": 533990655409, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "amount": 531581201080, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", - "amount": 531353802908, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", - "amount": 531234235475, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", - "amount": 526494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", - "amount": 526177896959, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", - "amount": 525656852695, - "lockTime": 0 - }, - { - "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", - "amount": 524899200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", - "amount": 524566137736, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", - "amount": 524195647436, - "lockTime": 0 - }, - { - "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", - "amount": 524052614831, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", - "amount": 523776871480, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", - "amount": 522880094674, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", - "amount": 522862146792, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", - "amount": 521812528958, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", - "amount": 521047898327, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", - "amount": 518446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", - "amount": 518328138145, - "lockTime": 0 - }, - { - "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", - "amount": 518193480000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", - "amount": 515148173657, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", - "amount": 514925249622, - "lockTime": 0 - }, - { - "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", - "amount": 513329405274, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", - "amount": 509993994435, - "lockTime": 0 - }, - { - "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", - "amount": 509957522308, - "lockTime": 0 - }, - { - "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", - "amount": 508541394000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", - "amount": 506667747103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", - "amount": 505549324249, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", - "amount": 505200074000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", - "amount": 504494000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", - "amount": 502930153612, - "lockTime": 0 - }, - { - "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", - "amount": 502646758879, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", - "amount": 502425261300, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", - "amount": 501898728304, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", - "amount": 500675297706, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", - "amount": 499448808034, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", - "amount": 498766624446, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", - "amount": 497860980149, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", - "amount": 497751300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", - "amount": 494921805000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", - "amount": 492449597049, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", - "amount": 491345439978, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", - "amount": 489208090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", - "amount": 483233520598, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", - "amount": 479710360399, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", - "amount": 479290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", - "amount": 478684589716, - "lockTime": 0 - }, - { - "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", - "amount": 477353124741, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", - "amount": 477075727467, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", - "amount": 473250342306, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", - "amount": 472372204860, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", - "amount": 471564327298, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", - "amount": 470996346069, - "lockTime": 0 - }, - { - "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", - "amount": 470135235865, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", - "amount": 469012617355, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", - "amount": 467516812000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", - "amount": 466445267258, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", - "amount": 464519265861, - "lockTime": 0 - }, - { - "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", - "amount": 462689900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "amount": 462305649621, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", - "amount": 461868850874, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", - "amount": 460869939879, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", - "amount": 460585726599, - "lockTime": 0 - }, - { - "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", - "amount": 457195535843, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", - "amount": 456662894715, - "lockTime": 0 - }, - { - "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", - "amount": 454579427202, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", - "amount": 454068631040, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", - "amount": 453948855458, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", - "amount": 453669586663, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", - "amount": 452026578968, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", - "amount": 452018744239, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", - "amount": 451392168993, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", - "amount": 449595427480, - "lockTime": 0 - }, - { - "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", - "amount": 449593160254, - "lockTime": 0 - }, - { - "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", - "amount": 447344591171, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", - "amount": 446500258482, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", - "amount": 446240721255, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", - "amount": 444865048666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", - "amount": 444676790001, - "lockTime": 0 - }, - { - "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", - "amount": 443204831269, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", - "amount": 442328512225, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", - "amount": 442059271489, - "lockTime": 0 - }, - { - "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", - "amount": 440032057840, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", - "amount": 439271047149, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", - "amount": 437282541633, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", - "amount": 432765145447, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", - "amount": 431349975902, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", - "amount": 429267450244, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", - "amount": 429201334044, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", - "amount": 427674532103, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", - "amount": 427031616046, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", - "amount": 426298979353, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", - "amount": 425945935665, - "lockTime": 0 - }, - { - "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", - "amount": 424703213740, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", - "amount": 423021472475, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", - "amount": 422736872079, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", - "amount": 422511669854, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", - "amount": 420403236212, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", - "amount": 419844543209, - "lockTime": 0 - }, - { - "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", - "amount": 419799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", - "amount": 419155971976, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "amount": 419078286625, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", - "amount": 418951929690, - "lockTime": 0 - }, - { - "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", - "amount": 418382689794, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", - "amount": 417921721020, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", - "amount": 417899749087, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", - "amount": 417880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", - "amount": 417679896875, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", - "amount": 415260300138, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", - "amount": 414705871837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", - "amount": 413485395750, - "lockTime": 0 - }, - { - "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", - "amount": 413208528187, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", - "amount": 413152125810, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", - "amount": 410838490020, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", - "amount": 410700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", - "amount": 410511629000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", - "amount": 410140392576, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", - "amount": 410000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", - "amount": 409825610683, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", - "amount": 409430238364, - "lockTime": 0 - }, - { - "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", - "amount": 408918063497, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", - "amount": 407963673190, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "amount": 407719486341, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", - "amount": 407679331398, - "lockTime": 0 - }, - { - "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", - "amount": 407657901885, - "lockTime": 0 - }, - { - "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", - "amount": 407158997751, - "lockTime": 0 - }, - { - "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", - "amount": 407025707839, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", - "amount": 406811695036, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", - "amount": 406639658081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", - "amount": 406624706100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", - "amount": 405774110031, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", - "amount": 405129535061, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", - "amount": 404700591110, - "lockTime": 0 - }, - { - "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", - "amount": 404442900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", - "amount": 404020958522, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", - "amount": 403983941418, - "lockTime": 0 - }, - { - "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", - "amount": 403704048107, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "amount": 403565919731, - "lockTime": 0 - }, - { - "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", - "amount": 402208028191, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", - "amount": 401600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", - "amount": 400965989696, - "lockTime": 0 - }, - { - "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", - "amount": 400794578886, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", - "amount": 400771228716, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", - "amount": 400209502276, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", - "amount": 400165712520, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", - "amount": 400000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", - "amount": 399517172592, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "amount": 398239779263, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", - "amount": 396390860679, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", - "amount": 396237000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", - "amount": 393348812910, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", - "amount": 393300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", - "amount": 392591247131, - "lockTime": 0 - }, - { - "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", - "amount": 390175947071, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", - "amount": 389632481201, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "amount": 388800988825, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", - "amount": 385593291168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", - "amount": 384676167415, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", - "amount": 383391492891, - "lockTime": 0 - }, - { - "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", - "amount": 382797942954, - "lockTime": 0 - }, - { - "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", - "amount": 382211187125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", - "amount": 381539113646, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", - "amount": 380247099724, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", - "amount": 380012940327, - "lockTime": 0 - }, - { - "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", - "amount": 379999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", - "amount": 379468365507, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", - "amount": 378455714491, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", - "amount": 375380072129, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", - "amount": 374997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", - "amount": 373612615415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", - "amount": 372882185379, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", - "amount": 372539432937, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", - "amount": 371199571236, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", - "amount": 370239188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", - "amount": 370079681706, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "amount": 367926716248, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", - "amount": 367665430762, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", - "amount": 367249772764, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", - "amount": 366726743585, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", - "amount": 366479061058, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", - "amount": 366422800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", - "amount": 366372749879, - "lockTime": 0 - }, - { - "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", - "amount": 365871378235, - "lockTime": 0 - }, - { - "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", - "amount": 364728390131, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", - "amount": 363103563674, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "amount": 361161634685, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", - "amount": 359478605247, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", - "amount": 359400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", - "amount": 359338917439, - "lockTime": 0 - }, - { - "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", - "amount": 358323700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", - "amount": 357329999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", - "amount": 355854965992, - "lockTime": 0 - }, - { - "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", - "amount": 354811786695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", - "amount": 354593224259, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", - "amount": 354349080107, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", - "amount": 354334037603, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", - "amount": 354084894170, - "lockTime": 0 - }, - { - "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", - "amount": 353728980000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", - "amount": 353268402658, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", - "amount": 350391644000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", - "amount": 349527692154, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", - "amount": 349069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", - "amount": 349062551934, - "lockTime": 0 - }, - { - "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", - "amount": 347358200128, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", - "amount": 346807254158, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", - "amount": 346199405075, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", - "amount": 346165116592, - "lockTime": 0 - }, - { - "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", - "amount": 344661550248, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", - "amount": 342974731957, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", - "amount": 342270909592, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", - "amount": 341639304154, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", - "amount": 341625294253, - "lockTime": 0 - }, - { - "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", - "amount": 341468951319, - "lockTime": 0 - }, - { - "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", - "amount": 340254213835, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", - "amount": 339496870584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", - "amount": 339163389311, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", - "amount": 339017024670, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", - "amount": 338249267550, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", - "amount": 336788660939, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", - "amount": 336051770441, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", - "amount": 336000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", - "amount": 335555231244, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", - "amount": 333957576542, - "lockTime": 0 - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "amount": 333565226024, - "lockTime": 0 - }, - { - "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", - "amount": 333201375971, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", - "amount": 327409836867, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", - "amount": 326742414445, - "lockTime": 0 - }, - { - "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", - "amount": 326127266600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", - "amount": 325150273667, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", - "amount": 325086535441, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", - "amount": 323576309188, - "lockTime": 0 - }, - { - "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", - "amount": 323498383211, - "lockTime": 0 - }, - { - "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", - "amount": 323280000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", - "amount": 323251968455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", - "amount": 322765586127, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", - "amount": 321688802000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", - "amount": 321288673558, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", - "amount": 319795499498, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", - "amount": 319576609148, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", - "amount": 319230743823, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", - "amount": 317545340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", - "amount": 316993829039, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", - "amount": 316241438388, - "lockTime": 0 - }, - { - "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", - "amount": 315967087268, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", - "amount": 315930604626, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", - "amount": 315731769642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", - "amount": 315504098614, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", - "amount": 315179801975, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", - "amount": 314924391191, - "lockTime": 0 - }, - { - "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", - "amount": 314479899982, - "lockTime": 0 - }, - { - "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", - "amount": 314286417638, - "lockTime": 0 - }, - { - "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", - "amount": 312318963292, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", - "amount": 310241999690, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", - "amount": 310169121476, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", - "amount": 310169007773, - "lockTime": 0 - }, - { - "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", - "amount": 310036594600, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", - "amount": 309999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", - "amount": 309941777989, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", - "amount": 309368053478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", - "amount": 308872376748, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", - "amount": 307840538721, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", - "amount": 307407241618, - "lockTime": 0 - }, - { - "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", - "amount": 307242628281, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", - "amount": 306671692789, - "lockTime": 0 - }, - { - "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", - "amount": 306323752780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", - "amount": 306291953544, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", - "amount": 305903301397, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", - "amount": 305714507548, - "lockTime": 0 - }, - { - "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", - "amount": 304997317063, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", - "amount": 304919255846, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", - "amount": 304399267454, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "amount": 303801502864, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", - "amount": 303650000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", - "amount": 302649692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", - "amount": 302310884849, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", - "amount": 302201332163, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", - "amount": 301493782307, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", - "amount": 301347629576, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", - "amount": 301255822797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", - "amount": 300968881183, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", - "amount": 300908117517, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", - "amount": 300600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", - "amount": 300589200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "amount": 300440218184, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "amount": 300193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", - "amount": 300042348560, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", - "amount": 300010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", - "amount": 300000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", - "amount": 299800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", - "amount": 299735400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", - "amount": 299659164881, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", - "amount": 299455230049, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", - "amount": 298182413417, - "lockTime": 0 - }, - { - "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", - "amount": 298023266343, - "lockTime": 0 - }, - { - "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", - "amount": 297087133021, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", - "amount": 295690470221, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", - "amount": 295601231796, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", - "amount": 294998304547, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", - "amount": 293870506875, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", - "amount": 292999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", - "amount": 291735609000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", - "amount": 290100215048, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", - "amount": 289766402146, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", - "amount": 289372255571, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", - "amount": 288789683225, - "lockTime": 0 - }, - { - "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", - "amount": 288147628477, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", - "amount": 287976000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", - "amount": 287662787702, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", - "amount": 286611000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", - "amount": 285836281219, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "amount": 285130476546, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", - "amount": 284618307972, - "lockTime": 0 - }, - { - "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", - "amount": 283712671050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", - "amount": 283202683529, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", - "amount": 282063594884, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", - "amount": 281360140760, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", - "amount": 280743491075, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", - "amount": 280009150173, - "lockTime": 0 - }, - { - "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", - "amount": 279699500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", - "amount": 277556230625, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", - "amount": 277531813243, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", - "amount": 277168772897, - "lockTime": 0 - }, - { - "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", - "amount": 277163501063, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", - "amount": 276923863728, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", - "amount": 276751069724, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", - "amount": 275949632370, - "lockTime": 0 - }, - { - "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", - "amount": 275927593000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", - "amount": 275020000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", - "amount": 273799862715, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", - "amount": 273736045458, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", - "amount": 272989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", - "amount": 272755800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", - "amount": 272514555018, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", - "amount": 271906446703, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", - "amount": 271900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", - "amount": 271572785690, - "lockTime": 0 - }, - { - "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", - "amount": 271548054095, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", - "amount": 270793342773, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", - "amount": 270658798910, - "lockTime": 0 - }, - { - "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", - "amount": 270091857578, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", - "amount": 269995149999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", - "amount": 269800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", - "amount": 268247018662, - "lockTime": 0 - }, - { - "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", - "amount": 267792700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", - "amount": 267245273073, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", - "amount": 267119581977, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", - "amount": 266391352254, - "lockTime": 0 - }, - { - "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", - "amount": 266196400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", - "amount": 266131162718, - "lockTime": 0 - }, - { - "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", - "amount": 264318648145, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", - "amount": 263527801714, - "lockTime": 0 - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "amount": 262975389505, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", - "amount": 262780932076, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", - "amount": 262471000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", - "amount": 261749022592, - "lockTime": 0 - }, - { - "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", - "amount": 261070344518, - "lockTime": 0 - }, - { - "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", - "amount": 260397418850, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", - "amount": 260120956196, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", - "amount": 260015100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", - "amount": 259757680000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", - "amount": 259239767599, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", - "amount": 258341100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", - "amount": 258339633939, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", - "amount": 258157345206, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", - "amount": 258123356221, - "lockTime": 0 - }, - { - "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", - "amount": 258064908003, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "amount": 257992568066, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", - "amount": 257461156205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", - "amount": 257403985352, - "lockTime": 0 - }, - { - "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", - "amount": 257277568625, - "lockTime": 0 - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "amount": 257162512490, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", - "amount": 256544958461, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", - "amount": 256474842191, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", - "amount": 256143794076, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", - "amount": 255962443134, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", - "amount": 255424134364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", - "amount": 255019352085, - "lockTime": 0 - }, - { - "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", - "amount": 254820960826, - "lockTime": 0 - }, - { - "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", - "amount": 253869000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", - "amount": 253432540624, - "lockTime": 0 - }, - { - "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", - "amount": 252390365490, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", - "amount": 252203000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", - "amount": 251541968465, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", - "amount": 251524659521, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", - "amount": 251508940179, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", - "amount": 250990200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", - "amount": 250778414361, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", - "amount": 250747999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", - "amount": 250705826237, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", - "amount": 250495052902, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", - "amount": 249963485647, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", - "amount": 249935505992, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", - "amount": 249545300278, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "amount": 249227181030, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", - "amount": 248998351726, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", - "amount": 248524072858, - "lockTime": 0 - }, - { - "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", - "amount": 248465424307, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", - "amount": 248244749409, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", - "amount": 248060732879, - "lockTime": 0 - }, - { - "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", - "amount": 247696311635, - "lockTime": 0 - }, - { - "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", - "amount": 247606604191, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", - "amount": 246994469038, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", - "amount": 246290236302, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", - "amount": 245162999098, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", - "amount": 244890365598, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", - "amount": 244875480949, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", - "amount": 244290711899, - "lockTime": 0 - }, - { - "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", - "amount": 244075459558, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", - "amount": 244014799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", - "amount": 243917093003, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", - "amount": 243843301412, - "lockTime": 0 - }, - { - "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", - "amount": 243605054883, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", - "amount": 243360850625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", - "amount": 243300831867, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", - "amount": 243147267898, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", - "amount": 242760771420, - "lockTime": 0 - }, - { - "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", - "amount": 242594067000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", - "amount": 242573351436, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", - "amount": 242512485079, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", - "amount": 242492941103, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", - "amount": 242203837357, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", - "amount": 242182540219, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", - "amount": 241861022033, - "lockTime": 0 - }, - { - "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", - "amount": 241849426391, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", - "amount": 241661661659, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", - "amount": 241623968574, - "lockTime": 0 - }, - { - "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", - "amount": 241227555046, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", - "amount": 241138570345, - "lockTime": 0 - }, - { - "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", - "amount": 240851027302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", - "amount": 240504931326, - "lockTime": 0 - }, - { - "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", - "amount": 240308171838, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", - "amount": 240237165262, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", - "amount": 240119011031, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", - "amount": 239900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", - "amount": 239806945993, - "lockTime": 0 - }, - { - "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", - "amount": 239801491795, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", - "amount": 239330301790, - "lockTime": 0 - }, - { - "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", - "amount": 239292654674, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", - "amount": 239279937261, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", - "amount": 239245805417, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", - "amount": 239205415111, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", - "amount": 239070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", - "amount": 239050558287, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", - "amount": 238982485492, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", - "amount": 238602457268, - "lockTime": 0 - }, - { - "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", - "amount": 238589376707, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", - "amount": 238562283175, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", - "amount": 238318372576, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", - "amount": 238288506725, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", - "amount": 238228639309, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", - "amount": 238127703363, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", - "amount": 237987190598, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", - "amount": 237729204000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", - "amount": 237639274600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", - "amount": 237612083921, - "lockTime": 0 - }, - { - "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", - "amount": 237556931856, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", - "amount": 237453999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", - "amount": 237392111684, - "lockTime": 0 - }, - { - "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", - "amount": 237023271332, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", - "amount": 236821473583, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", - "amount": 236446800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", - "amount": 236415322356, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", - "amount": 236326412172, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", - "amount": 236296322528, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", - "amount": 236231001378, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", - "amount": 236095569501, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", - "amount": 236002904511, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", - "amount": 235971564171, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", - "amount": 235923449617, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", - "amount": 235894723186, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", - "amount": 235618737704, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", - "amount": 235516325902, - "lockTime": 0 - }, - { - "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", - "amount": 235247618088, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", - "amount": 235165188182, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", - "amount": 235078006137, - "lockTime": 0 - }, - { - "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", - "amount": 234960610742, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", - "amount": 234592501512, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", - "amount": 234500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", - "amount": 234485977920, - "lockTime": 0 - }, - { - "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", - "amount": 234239046914, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", - "amount": 234216801941, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", - "amount": 234205450496, - "lockTime": 0 - }, - { - "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", - "amount": 233978982028, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", - "amount": 233923455601, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", - "amount": 233752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", - "amount": 233439815779, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", - "amount": 233395083626, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", - "amount": 233285586717, - "lockTime": 0 - }, - { - "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", - "amount": 232902383845, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", - "amount": 232848077502, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", - "amount": 232640483694, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", - "amount": 232557281320, - "lockTime": 0 - }, - { - "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", - "amount": 232521628575, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", - "amount": 232207181484, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", - "amount": 232201210478, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", - "amount": 232050104188, - "lockTime": 0 - }, - { - "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", - "amount": 231166048808, - "lockTime": 0 - }, - { - "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", - "amount": 230998600000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", - "amount": 230913312021, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", - "amount": 230866500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", - "amount": 230594393622, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", - "amount": 230272488302, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", - "amount": 230194937726, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", - "amount": 230142440634, - "lockTime": 0 - }, - { - "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", - "amount": 230090000629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", - "amount": 230000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", - "amount": 229528257221, - "lockTime": 0 - }, - { - "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", - "amount": 229504037719, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", - "amount": 229467102124, - "lockTime": 0 - }, - { - "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", - "amount": 229191678643, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", - "amount": 229042504057, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", - "amount": 228917996272, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", - "amount": 228899461213, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", - "amount": 228769649152, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", - "amount": 228754894051, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", - "amount": 228684937972, - "lockTime": 0 - }, - { - "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", - "amount": 228615395516, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", - "amount": 228462457260, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", - "amount": 228409141349, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", - "amount": 228299485720, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", - "amount": 228297794168, - "lockTime": 0 - }, - { - "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", - "amount": 228284534902, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", - "amount": 228047657402, - "lockTime": 0 - }, - { - "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", - "amount": 227815338192, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", - "amount": 227690423975, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", - "amount": 227542196733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", - "amount": 227422755927, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", - "amount": 227412331394, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", - "amount": 227390408963, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", - "amount": 227381121125, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", - "amount": 227286642424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "amount": 227179264162, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", - "amount": 227132911896, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", - "amount": 226934961616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", - "amount": 226736765102, - "lockTime": 0 - }, - { - "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", - "amount": 226572224194, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", - "amount": 226206619451, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", - "amount": 226152003996, - "lockTime": 0 - }, - { - "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", - "amount": 225894482083, - "lockTime": 0 - }, - { - "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", - "amount": 225859667154, - "lockTime": 0 - }, - { - "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", - "amount": 225839800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", - "amount": 225673160801, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", - "amount": 225410004000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", - "amount": 225365560392, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", - "amount": 225171798320, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", - "amount": 224993217772, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", - "amount": 224938072830, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", - "amount": 224900929477, - "lockTime": 0 - }, - { - "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", - "amount": 224782794770, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", - "amount": 224777814150, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", - "amount": 224492888923, - "lockTime": 0 - }, - { - "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", - "amount": 224485699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", - "amount": 224346343200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", - "amount": 224292241252, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", - "amount": 223953992977, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", - "amount": 223900458142, - "lockTime": 0 - }, - { - "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", - "amount": 223786869276, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", - "amount": 223770132772, - "lockTime": 0 - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "amount": 223760990261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", - "amount": 223675539585, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", - "amount": 223383768271, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", - "amount": 223222169281, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", - "amount": 223219332090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", - "amount": 223209741000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", - "amount": 223071608704, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", - "amount": 223024624139, - "lockTime": 0 - }, - { - "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", - "amount": 222825046743, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", - "amount": 222589413218, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", - "amount": 222513176054, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", - "amount": 222438879409, - "lockTime": 0 - }, - { - "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", - "amount": 222309229938, - "lockTime": 0 - }, - { - "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", - "amount": 222129207119, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", - "amount": 222124186814, - "lockTime": 0 - }, - { - "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", - "amount": 222084605276, - "lockTime": 0 - }, - { - "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", - "amount": 221993500333, - "lockTime": 0 - }, - { - "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", - "amount": 221991488296, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "amount": 221912705860, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "amount": 221892141803, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", - "amount": 221689787830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", - "amount": 221593294373, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", - "amount": 221501731956, - "lockTime": 0 - }, - { - "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", - "amount": 221436081752, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", - "amount": 221079714669, - "lockTime": 0 - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "amount": 221070976183, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", - "amount": 220699000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", - "amount": 220659692231, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", - "amount": 220557514300, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", - "amount": 220472335830, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", - "amount": 220058770856, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", - "amount": 219999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", - "amount": 219112096408, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", - "amount": 218893337385, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", - "amount": 218739578269, - "lockTime": 0 - }, - { - "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", - "amount": 218606965875, - "lockTime": 0 - }, - { - "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", - "amount": 218312597733, - "lockTime": 0 - }, - { - "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", - "amount": 218138101472, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", - "amount": 218037694298, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", - "amount": 217903275346, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", - "amount": 217798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", - "amount": 217515313055, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", - "amount": 217294141545, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", - "amount": 217267910811, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "amount": 217194444619, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", - "amount": 217108757438, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", - "amount": 217103542488, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", - "amount": 216912369612, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", - "amount": 216637134722, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", - "amount": 216535366335, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", - "amount": 216487988637, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", - "amount": 216447395998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", - "amount": 216294472267, - "lockTime": 0 - }, - { - "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", - "amount": 216286938750, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", - "amount": 215993162920, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", - "amount": 215808453584, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", - "amount": 215778141346, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", - "amount": 215597178831, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", - "amount": 215395963077, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", - "amount": 215242029960, - "lockTime": 0 - }, - { - "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", - "amount": 215176736484, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", - "amount": 215091961569, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", - "amount": 214909200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", - "amount": 214891405341, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", - "amount": 214625498508, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", - "amount": 214620330985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", - "amount": 214600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", - "amount": 214598868478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", - "amount": 214116222972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", - "amount": 213879857622, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", - "amount": 213854937198, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", - "amount": 213623832274, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", - "amount": 213476358102, - "lockTime": 0 - }, - { - "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", - "amount": 213387838372, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", - "amount": 213372184141, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", - "amount": 213345000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", - "amount": 212838068329, - "lockTime": 0 - }, - { - "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", - "amount": 212810600890, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", - "amount": 212592057062, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", - "amount": 212342599261, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", - "amount": 212246063543, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", - "amount": 212107475854, - "lockTime": 0 - }, - { - "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", - "amount": 212032600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", - "amount": 211980544581, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", - "amount": 211817494665, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", - "amount": 211612715577, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", - "amount": 211442822680, - "lockTime": 0 - }, - { - "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", - "amount": 211375702875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", - "amount": 211265866488, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", - "amount": 211257510810, - "lockTime": 0 - }, - { - "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", - "amount": 211247628424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", - "amount": 210973881797, - "lockTime": 0 - }, - { - "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", - "amount": 210942208378, - "lockTime": 0 - }, - { - "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", - "amount": 210871616089, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", - "amount": 210786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", - "amount": 210775625518, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", - "amount": 210729635400, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", - "amount": 210486729792, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "amount": 210444718664, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", - "amount": 210433370310, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", - "amount": 210411355132, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", - "amount": 210311765371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", - "amount": 210289217928, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", - "amount": 210228622943, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", - "amount": 210214659581, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", - "amount": 210201644288, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", - "amount": 210151075241, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", - "amount": 210099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", - "amount": 210083577331, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", - "amount": 210008084187, - "lockTime": 0 - }, - { - "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", - "amount": 210000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", - "amount": 209998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", - "amount": 209994825749, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", - "amount": 209986900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", - "amount": 209847916304, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", - "amount": 209618957536, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", - "amount": 209455857286, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", - "amount": 209233564043, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", - "amount": 209216890514, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", - "amount": 209089700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", - "amount": 209049161106, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", - "amount": 208906753025, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", - "amount": 208789130678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", - "amount": 208736836744, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", - "amount": 208341189511, - "lockTime": 0 - }, - { - "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", - "amount": 208324850910, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", - "amount": 208319507766, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", - "amount": 208294726061, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", - "amount": 208231715358, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", - "amount": 208219709890, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", - "amount": 208206908415, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", - "amount": 208141036642, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", - "amount": 207969483711, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", - "amount": 207912688636, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", - "amount": 207884700785, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", - "amount": 207746600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", - "amount": 207519996227, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", - "amount": 207436330031, - "lockTime": 0 - }, - { - "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", - "amount": 207395981374, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", - "amount": 207293597413, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", - "amount": 207260863357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", - "amount": 207183243259, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", - "amount": 207147237205, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", - "amount": 207011757840, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", - "amount": 206883486133, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", - "amount": 206798225982, - "lockTime": 0 - }, - { - "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", - "amount": 206689352889, - "lockTime": 0 - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "amount": 206527611836, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", - "amount": 206227789036, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", - "amount": 206057398171, - "lockTime": 0 - }, - { - "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", - "amount": 205828590863, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "amount": 205816080972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", - "amount": 205719999997, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", - "amount": 205643023950, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", - "amount": 205521556523, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", - "amount": 205505133217, - "lockTime": 0 - }, - { - "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", - "amount": 205445476594, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", - "amount": 205424199743, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", - "amount": 205319991780, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", - "amount": 205217833773, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", - "amount": 205024334977, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", - "amount": 204913500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", - "amount": 204890946477, - "lockTime": 0 - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "amount": 204816480948, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", - "amount": 204793572594, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", - "amount": 204753605945, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "amount": 204682617296, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", - "amount": 204662389728, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", - "amount": 204643234694, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", - "amount": 204630619047, - "lockTime": 0 - }, - { - "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", - "amount": 204610500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", - "amount": 204569999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", - "amount": 204559467596, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", - "amount": 204537127938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", - "amount": 204526271632, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", - "amount": 204518837670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", - "amount": 204366173469, - "lockTime": 0 - }, - { - "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", - "amount": 204207005754, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", - "amount": 204126857376, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", - "amount": 204080664515, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", - "amount": 204007776591, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", - "amount": 203995927637, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", - "amount": 203982317720, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", - "amount": 203866255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", - "amount": 203540651146, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", - "amount": 203403521806, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", - "amount": 203400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", - "amount": 203213029171, - "lockTime": 0 - }, - { - "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", - "amount": 203208728839, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", - "amount": 203159077864, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "amount": 203155414462, - "lockTime": 0 - }, - { - "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", - "amount": 203117030969, - "lockTime": 0 - }, - { - "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", - "amount": 203058017876, - "lockTime": 0 - }, - { - "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", - "amount": 202864593708, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", - "amount": 202818215514, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", - "amount": 202617941616, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", - "amount": 202546927054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", - "amount": 202400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", - "amount": 202388155273, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", - "amount": 202328801439, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", - "amount": 202279629229, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", - "amount": 202246385889, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", - "amount": 202203478406, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", - "amount": 201960660191, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", - "amount": 201907182221, - "lockTime": 0 - }, - { - "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", - "amount": 201897012982, - "lockTime": 0 - }, - { - "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", - "amount": 201881490359, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", - "amount": 201777201107, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", - "amount": 201719000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", - "amount": 201702679318, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", - "amount": 201588100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", - "amount": 201560932757, - "lockTime": 0 - }, - { - "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", - "amount": 201485297013, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", - "amount": 201446465798, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", - "amount": 201240888253, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", - "amount": 201187671035, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", - "amount": 201140169745, - "lockTime": 0 - }, - { - "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", - "amount": 201061734183, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", - "amount": 201016751267, - "lockTime": 0 - }, - { - "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", - "amount": 200907812053, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", - "amount": 200896457460, - "lockTime": 0 - }, - { - "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", - "amount": 200882113012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", - "amount": 200745787959, - "lockTime": 0 - }, - { - "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", - "amount": 200744216315, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", - "amount": 200678287955, - "lockTime": 0 - }, - { - "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", - "amount": 200601255596, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", - "amount": 200598491727, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", - "amount": 200499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", - "amount": 200493555205, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", - "amount": 200427000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", - "amount": 200300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", - "amount": 200286890266, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", - "amount": 200148648000, - "lockTime": 0 - }, - { - "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", - "amount": 200100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", - "amount": 200099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", - "amount": 200096400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", - "amount": 200096375737, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", - "amount": 200064418213, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", - "amount": 200009500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", - "amount": 200000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", - "amount": 199800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", - "amount": 199798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", - "amount": 199600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", - "amount": 198099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", - "amount": 197721057012, - "lockTime": 0 - }, - { - "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", - "amount": 196799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", - "amount": 196402595000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", - "amount": 194638321900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", - "amount": 193340000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", - "amount": 191510276936, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", - "amount": 190099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", - "amount": 189466940759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", - "amount": 189000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", - "amount": 187000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", - "amount": 185759900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", - "amount": 185000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", - "amount": 184534970264, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", - "amount": 183173800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", - "amount": 182200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", - "amount": 181007100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", - "amount": 179799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", - "amount": 179660100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", - "amount": 179530508841, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", - "amount": 178589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", - "amount": 176819999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", - "amount": 175970000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", - "amount": 175745491403, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", - "amount": 173819708000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", - "amount": 173717427150, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", - "amount": 172875307000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", - "amount": 172236267478, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", - "amount": 171996789000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", - "amount": 170890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", - "amount": 170475832299, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", - "amount": 169932188000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", - "amount": 169851533273, - "lockTime": 0 - }, - { - "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", - "amount": 168569000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "amount": 164696400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", - "amount": 163942237003, - "lockTime": 0 - }, - { - "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", - "amount": 163845000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", - "amount": 162846871000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", - "amount": 161976000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", - "amount": 161042578796, - "lockTime": 0 - }, - { - "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", - "amount": 160860100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", - "amount": 160600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", - "amount": 160372720000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", - "amount": 159799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", - "amount": 159749400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", - "amount": 159080400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", - "amount": 157328900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", - "amount": 155664887800, - "lockTime": 0 - }, - { - "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", - "amount": 153394567227, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", - "amount": 153172452595, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", - "amount": 150436195353, - "lockTime": 0 - }, - { - "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", - "amount": 150180361000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", - "amount": 150179000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", - "amount": 149888097000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", - "amount": 147459247774, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", - "amount": 147451400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", - "amount": 146967701181, - "lockTime": 0 - }, - { - "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", - "amount": 146360000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", - "amount": 144569406862, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", - "amount": 143991570100, - "lockTime": 0 - }, - { - "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", - "amount": 143754420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", - "amount": 143528000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", - "amount": 143330427801, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", - "amount": 143200606114, - "lockTime": 0 - }, - { - "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", - "amount": 142899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", - "amount": 142599999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", - "amount": 142576705000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", - "amount": 141897179025, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", - "amount": 140159000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", - "amount": 140061300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", - "amount": 140000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "amount": 138547500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", - "amount": 138218000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", - "amount": 137939100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", - "amount": 135497000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", - "amount": 134899500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", - "amount": 134649900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", - "amount": 134630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", - "amount": 134408076000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", - "amount": 133869896000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", - "amount": 133699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", - "amount": 132660000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", - "amount": 128070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", - "amount": 127774675000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", - "amount": 127723293670, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", - "amount": 126872000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", - "amount": 126772066912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", - "amount": 126148000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", - "amount": 124884000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", - "amount": 124600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", - "amount": 124473399999, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", - "amount": 123939200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", - "amount": 123835943875, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", - "amount": 122922953000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", - "amount": 121391458773, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", - "amount": 120105578600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", - "amount": 120070377686, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", - "amount": 117401692000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", - "amount": 116300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", - "amount": 115982900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", - "amount": 115148000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", - "amount": 114358959000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", - "amount": 113500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", - "amount": 111998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", - "amount": 111188400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", - "amount": 111127700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", - "amount": 110700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", - "amount": 110644000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", - "amount": 110597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", - "amount": 110388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", - "amount": 110249000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", - "amount": 110000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", - "amount": 109733407000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", - "amount": 109500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", - "amount": 108490400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", - "amount": 108113000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", - "amount": 107631800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", - "amount": 107114900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", - "amount": 107022500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", - "amount": 107008110706, - "lockTime": 0 - }, - { - "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", - "amount": 106692200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", - "amount": 106577618100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", - "amount": 105894391420, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", - "amount": 105654440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", - "amount": 105092249306, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", - "amount": 105070966000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", - "amount": 104999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", - "amount": 104990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", - "amount": 104979643614, - "lockTime": 0 - }, - { - "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", - "amount": 104397300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", - "amount": 103669137000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", - "amount": 103368248405, - "lockTime": 0 - }, - { - "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", - "amount": 103129999998, - "lockTime": 0 - }, - { - "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", - "amount": 102757144000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", - "amount": 102595400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", - "amount": 102400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", - "amount": 102332000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", - "amount": 102089316308, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", - "amount": 101552500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", - "amount": 101486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", - "amount": 101366800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", - "amount": 101240372600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", - "amount": 100998624904, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", - "amount": 100498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", - "amount": 100497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", - "amount": 100471709000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", - "amount": 100023000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", - "amount": 100000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", - "amount": 99999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", - "amount": 99999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", - "amount": 99929000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", - "amount": 99883361000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", - "amount": 99813607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", - "amount": 99770900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", - "amount": 99766607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", - "amount": 99739000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", - "amount": 99641607148, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", - "amount": 99600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", - "amount": 99550000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", - "amount": 99348122000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", - "amount": 99072000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", - "amount": 98999380525, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", - "amount": 98994800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", - "amount": 98500800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", - "amount": 97386670651, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", - "amount": 96797000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", - "amount": 96512400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", - "amount": 95216900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", - "amount": 95143129293, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", - "amount": 94980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", - "amount": 94900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", - "amount": 94815468500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", - "amount": 94544805785, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", - "amount": 93070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", - "amount": 92284199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", - "amount": 92146334000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", - "amount": 92079600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", - "amount": 91652255000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", - "amount": 91600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", - "amount": 91428700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", - "amount": 91207700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", - "amount": 91177550000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", - "amount": 90842400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", - "amount": 90253380318, - "lockTime": 0 - }, - { - "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", - "amount": 89508000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", - "amount": 88450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", - "amount": 88210700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", - "amount": 87950511000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", - "amount": 87702232200, - "lockTime": 0 - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "amount": 86584236688, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", - "amount": 85236315422, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", - "amount": 85209400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", - "amount": 84851900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", - "amount": 84628962000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", - "amount": 84354700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", - "amount": 84000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", - "amount": 82849999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", - "amount": 82599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", - "amount": 81833537094, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", - "amount": 81438100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", - "amount": 81346500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", - "amount": 81319000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", - "amount": 81238400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", - "amount": 80979999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", - "amount": 80759600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", - "amount": 80662800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", - "amount": 80209698918, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", - "amount": 79586449402, - "lockTime": 0 - }, - { - "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", - "amount": 79199999999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", - "amount": 79149213000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", - "amount": 79119750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", - "amount": 78719200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", - "amount": 78594348000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", - "amount": 77716188000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", - "amount": 77300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", - "amount": 77187901000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", - "amount": 77021300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", - "amount": 76976661037, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", - "amount": 76922000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", - "amount": 76767534308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", - "amount": 76593200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", - "amount": 76100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", - "amount": 75586994784, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", - "amount": 75248000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", - "amount": 75189717655, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", - "amount": 72752100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", - "amount": 72602999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", - "amount": 72350600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", - "amount": 72146400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", - "amount": 71951465416, - "lockTime": 0 - }, - { - "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", - "amount": 71670295800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", - "amount": 71227700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", - "amount": 71079999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", - "amount": 70313160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", - "amount": 70299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", - "amount": 70000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", - "amount": 69722281499, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", - "amount": 69678300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", - "amount": 69429500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", - "amount": 69361900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", - "amount": 69270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", - "amount": 69128800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", - "amount": 69018500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", - "amount": 68590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", - "amount": 68318000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", - "amount": 68101600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", - "amount": 68073000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", - "amount": 67901082549, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", - "amount": 67731200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", - "amount": 67695500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", - "amount": 67272200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", - "amount": 67143800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", - "amount": 66973500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", - "amount": 66813600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", - "amount": 66757600034, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", - "amount": 66219713000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", - "amount": 66086100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", - "amount": 65856300000, - "lockTime": 0 - }, - { - "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", - "amount": 65799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", - "amount": 65614200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", - "amount": 65013599999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", - "amount": 64930400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", - "amount": 64899054000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", - "amount": 64899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", - "amount": 64870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", - "amount": 64034900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", - "amount": 63934000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", - "amount": 63887312000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", - "amount": 63747670200, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", - "amount": 63626900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", - "amount": 63467900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", - "amount": 63430000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", - "amount": 63234400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", - "amount": 63156828976, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", - "amount": 62874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", - "amount": 62853700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", - "amount": 62337800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", - "amount": 62199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", - "amount": 61950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", - "amount": 61323000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", - "amount": 61203700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", - "amount": 61140539520, - "lockTime": 0 - }, - { - "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", - "amount": 60957390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", - "amount": 60937000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", - "amount": 60870116423, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", - "amount": 60867393483, - "lockTime": 0 - }, - { - "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", - "amount": 60399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", - "amount": 60100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", - "amount": 59999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", - "amount": 59694603871, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", - "amount": 59600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", - "amount": 59473000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", - "amount": 59139000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", - "amount": 58413181078, - "lockTime": 0 - }, - { - "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", - "amount": 58100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", - "amount": 57837499999, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", - "amount": 56999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", - "amount": 56786103000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", - "amount": 56762900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "amount": 56068000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", - "amount": 55842100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", - "amount": 55813324200, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", - "amount": 55768800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", - "amount": 55342600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", - "amount": 55152790000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", - "amount": 55079993858, - "lockTime": 0 - }, - { - "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", - "amount": 54998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", - "amount": 54900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", - "amount": 54657710000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", - "amount": 54451965288, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", - "amount": 54391900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", - "amount": 54268070388, - "lockTime": 0 - }, - { - "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", - "amount": 53745200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", - "amount": 53344758172, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", - "amount": 53298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", - "amount": 53136809000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", - "amount": 53053000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", - "amount": 52980000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", - "amount": 52825410000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", - "amount": 52750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", - "amount": 52500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", - "amount": 52499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", - "amount": 52490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", - "amount": 52318332000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", - "amount": 52220000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", - "amount": 52000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", - "amount": 51859000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", - "amount": 51634100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", - "amount": 50943200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", - "amount": 50886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", - "amount": 50700951878, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", - "amount": 50498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", - "amount": 50356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", - "amount": 50300910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", - "amount": 50269697720, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", - "amount": 50189255408, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", - "amount": 50186193571, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", - "amount": 50154100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", - "amount": 50099300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", - "amount": 50078090000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", - "amount": 50065600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", - "amount": 50061800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", - "amount": 50000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", - "amount": 49999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", - "amount": 49998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", - "amount": 49914890700, - "lockTime": 0 - }, - { - "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", - "amount": 49890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", - "amount": 49812000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", - "amount": 49749200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", - "amount": 49707405000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", - "amount": 49646500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", - "amount": 49366875200, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", - "amount": 49166829700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", - "amount": 48998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", - "amount": 48877000000, - "lockTime": 0 - }, - { - "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", - "amount": 48629000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", - "amount": 48560000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", - "amount": 47956500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", - "amount": 47186250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "amount": 47150700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", - "amount": 46778000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", - "amount": 46552400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", - "amount": 46008300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", - "amount": 45950700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", - "amount": 45563300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", - "amount": 45094000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", - "amount": 44876000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", - "amount": 44660000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", - "amount": 44554400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", - "amount": 44400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", - "amount": 44399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", - "amount": 44047211000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", - "amount": 43939123000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", - "amount": 43691265090, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", - "amount": 42990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", - "amount": 42497700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", - "amount": 42323179512, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", - "amount": 42076767999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "amount": 42059505500, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", - "amount": 41857100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", - "amount": 41460000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", - "amount": 41398385361, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", - "amount": 41356600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", - "amount": 41356000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", - "amount": 41317657361, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", - "amount": 41257700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", - "amount": 40875000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", - "amount": 40712518500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", - "amount": 40657700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", - "amount": 40554940000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", - "amount": 40414000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", - "amount": 40219500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", - "amount": 40198767300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", - "amount": 40100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", - "amount": 40069900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", - "amount": 40000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", - "amount": 39959500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", - "amount": 39570000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", - "amount": 39391169400, - "lockTime": 0 - }, - { - "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", - "amount": 39347482300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", - "amount": 39158367200, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", - "amount": 39042600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", - "amount": 38841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", - "amount": 38500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", - "amount": 38461400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", - "amount": 37770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", - "amount": 37700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", - "amount": 37661300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", - "amount": 37236000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", - "amount": 37233000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", - "amount": 36990000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", - "amount": 36921669615, - "lockTime": 0 - }, - { - "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", - "amount": 36800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", - "amount": 36600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", - "amount": 36263040000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", - "amount": 36193000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", - "amount": 36108760000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", - "amount": 36043896300, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", - "amount": 35986300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", - "amount": 35876899931, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", - "amount": 35542231000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", - "amount": 35208496801, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", - "amount": 35165970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", - "amount": 34825460800, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", - "amount": 34647125016, - "lockTime": 0 - }, - { - "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", - "amount": 34300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", - "amount": 34164800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", - "amount": 34160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "amount": 33787000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", - "amount": 33548484600, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", - "amount": 33312302021, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", - "amount": 33000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", - "amount": 32989999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", - "amount": 32853000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", - "amount": 32732976600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", - "amount": 32665203261, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", - "amount": 32652199999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", - "amount": 32232300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", - "amount": 32158700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", - "amount": 32087462800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", - "amount": 31878000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", - "amount": 31868002700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", - "amount": 31575100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", - "amount": 31543436900, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", - "amount": 31480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", - "amount": 31465657970, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", - "amount": 31438419609, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", - "amount": 31400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", - "amount": 31366599999, - "lockTime": 0 - }, - { - "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", - "amount": 31182208137, - "lockTime": 0 - }, - { - "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", - "amount": 30965715000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", - "amount": 30900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", - "amount": 30657800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", - "amount": 30498000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", - "amount": 30467500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", - "amount": 30290000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", - "amount": 30180000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", - "amount": 30174263931, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", - "amount": 30099900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", - "amount": 30000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", - "amount": 29999900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", - "amount": 29999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", - "amount": 29999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", - "amount": 29998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", - "amount": 29942130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", - "amount": 29870000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", - "amount": 29770000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", - "amount": 29741224000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", - "amount": 29660400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", - "amount": 29551500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", - "amount": 29495400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", - "amount": 29454642135, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", - "amount": 29400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", - "amount": 29399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", - "amount": 29389999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", - "amount": 29311638287, - "lockTime": 0 - }, - { - "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", - "amount": 29099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", - "amount": 29062800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", - "amount": 28878900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", - "amount": 28668300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", - "amount": 28478000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", - "amount": 28470499999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", - "amount": 28391130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", - "amount": 28170841650, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", - "amount": 28100900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", - "amount": 28000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", - "amount": 27858044502, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", - "amount": 27689480000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", - "amount": 27590369900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", - "amount": 27380622000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", - "amount": 27236302635, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", - "amount": 27191800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", - "amount": 26999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", - "amount": 26712815029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", - "amount": 26671300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", - "amount": 26663000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", - "amount": 26475900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", - "amount": 26470261125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", - "amount": 26381164785, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", - "amount": 26093400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", - "amount": 25999014184, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", - "amount": 25999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", - "amount": 25899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "amount": 25843006000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", - "amount": 25827736000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "amount": 25798000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", - "amount": 25773900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", - "amount": 25690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", - "amount": 25666500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", - "amount": 25343701700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", - "amount": 25330666000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", - "amount": 25288857000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", - "amount": 25278000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", - "amount": 25200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", - "amount": 25104700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", - "amount": 25079894000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", - "amount": 25030013835, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", - "amount": 25019500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", - "amount": 25000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", - "amount": 24774400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", - "amount": 24451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", - "amount": 24428250000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", - "amount": 24400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", - "amount": 24374600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", - "amount": 24327611100, - "lockTime": 0 - }, - { - "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", - "amount": 24247347000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", - "amount": 24237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", - "amount": 24000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "amount": 23796635680, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", - "amount": 23677500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", - "amount": 23676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", - "amount": 23597000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", - "amount": 23480846691, - "lockTime": 0 - }, - { - "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", - "amount": 23313510000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", - "amount": 23301306295, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", - "amount": 23290700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", - "amount": 23200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", - "amount": 23199766150, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", - "amount": 23175800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", - "amount": 23172336000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", - "amount": 23055202000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", - "amount": 22874000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", - "amount": 22863800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", - "amount": 22851185400, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", - "amount": 22827000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", - "amount": 22776200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", - "amount": 22462600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", - "amount": 22332600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", - "amount": 22306670000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", - "amount": 22219300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", - "amount": 22218521314, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", - "amount": 22194483000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", - "amount": 22122900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", - "amount": 22099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", - "amount": 22088100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", - "amount": 21927600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", - "amount": 21922330518, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", - "amount": 21874100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", - "amount": 21760500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", - "amount": 21658000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", - "amount": 21276886097, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", - "amount": 21190500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", - "amount": 21098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "amount": 21023770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", - "amount": 20997294776, - "lockTime": 0 - }, - { - "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", - "amount": 20978000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", - "amount": 20898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", - "amount": 20845100816, - "lockTime": 0 - }, - { - "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", - "amount": 20696349700, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", - "amount": 20690000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", - "amount": 20559500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", - "amount": 20541631000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", - "amount": 20509670000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", - "amount": 20509200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", - "amount": 20470000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", - "amount": 20449000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", - "amount": 20399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", - "amount": 20387000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", - "amount": 20347033837, - "lockTime": 0 - }, - { - "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", - "amount": 20297000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", - "amount": 20295000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", - "amount": 20256200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", - "amount": 20223000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", - "amount": 20192737678, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", - "amount": 20102587502, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", - "amount": 20100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", - "amount": 20098500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", - "amount": 20096800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", - "amount": 20080000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", - "amount": 20069000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", - "amount": 20058864588, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", - "amount": 20039700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", - "amount": 20013767126, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", - "amount": 20011444000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", - "amount": 20000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", - "amount": 19999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", - "amount": 19946031400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", - "amount": 19909800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", - "amount": 19903940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", - "amount": 19879100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", - "amount": 19870000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", - "amount": 19855400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", - "amount": 19849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", - "amount": 19840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", - "amount": 19811218050, - "lockTime": 0 - }, - { - "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", - "amount": 19800100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", - "amount": 19780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", - "amount": 19779200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", - "amount": 19778040999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", - "amount": 19753222500, - "lockTime": 0 - }, - { - "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", - "amount": 19735198768, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "amount": 19710051725, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", - "amount": 19655460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", - "amount": 19600400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", - "amount": 19598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", - "amount": 19483000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", - "amount": 19470200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", - "amount": 19418000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", - "amount": 19070800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", - "amount": 19063899540, - "lockTime": 0 - }, - { - "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", - "amount": 18900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", - "amount": 18844200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", - "amount": 18800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", - "amount": 18737886700, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", - "amount": 18570420000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", - "amount": 18380100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", - "amount": 17999040000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", - "amount": 17998300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", - "amount": 17945700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", - "amount": 17781200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", - "amount": 17659300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", - "amount": 17602940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", - "amount": 17579400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", - "amount": 17498400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", - "amount": 17475678000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", - "amount": 17457984000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", - "amount": 17374939230, - "lockTime": 0 - }, - { - "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", - "amount": 17306763012, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", - "amount": 17112344000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", - "amount": 17090000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", - "amount": 17081500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", - "amount": 17069999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", - "amount": 16998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", - "amount": 16941000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", - "amount": 16781200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", - "amount": 16718832900, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", - "amount": 16436987700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", - "amount": 16383538200, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", - "amount": 16253600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "amount": 16000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", - "amount": 15999900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", - "amount": 15983699999, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", - "amount": 15784520000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", - "amount": 15783200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", - "amount": 15687100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", - "amount": 15646596372, - "lockTime": 0 - }, - { - "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", - "amount": 15614274000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", - "amount": 15589000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", - "amount": 15530000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", - "amount": 15500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", - "amount": 15440000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", - "amount": 15299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", - "amount": 15280000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", - "amount": 15099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", - "amount": 15095690000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", - "amount": 15075000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", - "amount": 15070000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", - "amount": 15043040600, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", - "amount": 15036965552, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", - "amount": 15000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", - "amount": 14999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", - "amount": 14998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", - "amount": 14881000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", - "amount": 14815000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", - "amount": 14698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", - "amount": 14574000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", - "amount": 14545300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", - "amount": 14445300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", - "amount": 14416766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", - "amount": 14373548062, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", - "amount": 14268090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", - "amount": 14160899566, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", - "amount": 14100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", - "amount": 14000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", - "amount": 13999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", - "amount": 13898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", - "amount": 13884699999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", - "amount": 13858820278, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", - "amount": 13758000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", - "amount": 13692000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", - "amount": 13667204136, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", - "amount": 13600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", - "amount": 13597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", - "amount": 13517041027, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", - "amount": 13464000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", - "amount": 13433938024, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", - "amount": 13426650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", - "amount": 13380701400, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", - "amount": 13378150321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", - "amount": 13304681000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", - "amount": 13231106000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", - "amount": 13199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", - "amount": 13195950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", - "amount": 13147200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", - "amount": 13098000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", - "amount": 13073920200, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", - "amount": 13000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", - "amount": 12966859999, - "lockTime": 0 - }, - { - "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", - "amount": 12950258399, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "amount": 12825869423, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", - "amount": 12818200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", - "amount": 12815729681, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", - "amount": 12804488800, - "lockTime": 0 - }, - { - "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", - "amount": 12746568000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", - "amount": 12700000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "amount": 12588000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", - "amount": 12540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", - "amount": 12500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", - "amount": 12399100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", - "amount": 12390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", - "amount": 12277600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", - "amount": 12267600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", - "amount": 12258770000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", - "amount": 12187500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", - "amount": 12186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", - "amount": 12182253278, - "lockTime": 0 - }, - { - "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", - "amount": 12156100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", - "amount": 12118929786, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", - "amount": 12055793000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", - "amount": 12047600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", - "amount": 12019521136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", - "amount": 12006700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", - "amount": 11970000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", - "amount": 11887800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", - "amount": 11839000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", - "amount": 11804492730, - "lockTime": 0 - }, - { - "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", - "amount": 11720000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", - "amount": 11675600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", - "amount": 11490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", - "amount": 11422404709, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", - "amount": 11414300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", - "amount": 11299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", - "amount": 11231521140, - "lockTime": 0 - }, - { - "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", - "amount": 11223125100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", - "amount": 11207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", - "amount": 11199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", - "amount": 11195500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", - "amount": 10999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "amount": 10997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", - "amount": 10988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", - "amount": 10987000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", - "amount": 10975527776, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", - "amount": 10958800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", - "amount": 10950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", - "amount": 10929400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", - "amount": 10911299487, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", - "amount": 10898800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", - "amount": 10887100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", - "amount": 10800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", - "amount": 10788200000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", - "amount": 10740140300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", - "amount": 10724095712, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", - "amount": 10659000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", - "amount": 10589300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", - "amount": 10588400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", - "amount": 10567591900, - "lockTime": 0 - }, - { - "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", - "amount": 10499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", - "amount": 10498653350, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", - "amount": 10469338925, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", - "amount": 10459400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", - "amount": 10457675800, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", - "amount": 10454530000, - "lockTime": 0 - }, - { - "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", - "amount": 10399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", - "amount": 10393000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", - "amount": 10382594000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", - "amount": 10369000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", - "amount": 10340000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", - "amount": 10318602800, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", - "amount": 10272100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", - "amount": 10213000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", - "amount": 10199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", - "amount": 10189000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", - "amount": 10188800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "amount": 10166320000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", - "amount": 10157754500, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", - "amount": 10131836000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", - "amount": 10100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", - "amount": 10099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", - "amount": 10098699625, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", - "amount": 10091000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", - "amount": 10090100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", - "amount": 10088900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", - "amount": 10086900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", - "amount": 10076174566, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", - "amount": 10068058100, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", - "amount": 10058000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", - "amount": 10049600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", - "amount": 10047920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", - "amount": 10000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", - "amount": 9999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", - "amount": 9998790375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", - "amount": 9990834200, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", - "amount": 9989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", - "amount": 9988000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "amount": 9976600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", - "amount": 9954300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", - "amount": 9919900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", - "amount": 9900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", - "amount": 9890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", - "amount": 9882089798, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", - "amount": 9825315093, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", - "amount": 9799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", - "amount": 9796583105, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", - "amount": 9769964669, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", - "amount": 9769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", - "amount": 9700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", - "amount": 9628000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", - "amount": 9600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", - "amount": 9589185669, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", - "amount": 9549440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", - "amount": 9069093000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", - "amount": 9000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", - "amount": 8996073325, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", - "amount": 8992200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", - "amount": 8989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", - "amount": 8980569965, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", - "amount": 8880000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", - "amount": 8800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", - "amount": 8681200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", - "amount": 8588300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", - "amount": 8523917503, - "lockTime": 0 - }, - { - "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", - "amount": 8459300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", - "amount": 8450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", - "amount": 8419755589, - "lockTime": 0 - }, - { - "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", - "amount": 8407923000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", - "amount": 8400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", - "amount": 8388500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", - "amount": 8353569832, - "lockTime": 0 - }, - { - "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", - "amount": 8346200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", - "amount": 8292062999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", - "amount": 8280070700, - "lockTime": 0 - }, - { - "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", - "amount": 8157225337, - "lockTime": 0 - }, - { - "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", - "amount": 8146893864, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", - "amount": 8126787800, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", - "amount": 8054930643, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", - "amount": 8000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", - "amount": 7987800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", - "amount": 7812882000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", - "amount": 7800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", - "amount": 7755644700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", - "amount": 7725500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", - "amount": 7700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", - "amount": 7670080275, - "lockTime": 0 - }, - { - "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", - "amount": 7578800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", - "amount": 7542315000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", - "amount": 7534799999, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", - "amount": 7500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", - "amount": 7459896000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", - "amount": 7440887640, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", - "amount": 7391600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", - "amount": 7382500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", - "amount": 7350000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", - "amount": 7332570100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", - "amount": 7232500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", - "amount": 7224441246, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", - "amount": 7184700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", - "amount": 7067073816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", - "amount": 7000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", - "amount": 6979000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", - "amount": 6880500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", - "amount": 6842707290, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", - "amount": 6799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", - "amount": 6732000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", - "amount": 6679070393, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", - "amount": 6650286683, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", - "amount": 6557294931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", - "amount": 6536849903, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", - "amount": 6535640000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", - "amount": 6506096000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", - "amount": 6492500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", - "amount": 6489950000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", - "amount": 6298900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", - "amount": 6274400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", - "amount": 6229600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", - "amount": 6183279100, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", - "amount": 6174500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", - "amount": 6044740883, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", - "amount": 6000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", - "amount": 5999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", - "amount": 5998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", - "amount": 5993000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", - "amount": 5923000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", - "amount": 5904944000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", - "amount": 5893100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", - "amount": 5863130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", - "amount": 5857830000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", - "amount": 5844910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", - "amount": 5841000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", - "amount": 5823987520, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", - "amount": 5793200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", - "amount": 5792661600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", - "amount": 5769000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", - "amount": 5752000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", - "amount": 5695000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", - "amount": 5693666875, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", - "amount": 5693300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", - "amount": 5670000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", - "amount": 5617900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", - "amount": 5504000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", - "amount": 5500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", - "amount": 5498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", - "amount": 5493500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", - "amount": 5445100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", - "amount": 5402055200, - "lockTime": 0 - }, - { - "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", - "amount": 5389000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", - "amount": 5354500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", - "amount": 5314881000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", - "amount": 5305118140, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", - "amount": 5261361095, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", - "amount": 5200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", - "amount": 5193800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", - "amount": 5184800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", - "amount": 5129000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", - "amount": 5127954000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", - "amount": 5114700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", - "amount": 5100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", - "amount": 5098634900, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", - "amount": 5051398560, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", - "amount": 5030000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", - "amount": 5024759000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", - "amount": 5023705100, - "lockTime": 0 - }, - { - "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", - "amount": 5022200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", - "amount": 5004340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", - "amount": 5000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", - "amount": 4999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", - "amount": 4994600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", - "amount": 4994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", - "amount": 4975001000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", - "amount": 4950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", - "amount": 4944951000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", - "amount": 4944722100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", - "amount": 4898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", - "amount": 4858098201, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", - "amount": 4835000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", - "amount": 4813550181, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", - "amount": 4799400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "amount": 4750102081, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", - "amount": 4655000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", - "amount": 4508590000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", - "amount": 4500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", - "amount": 4494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", - "amount": 4475300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", - "amount": 4457277000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", - "amount": 4455814869, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", - "amount": 4398000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", - "amount": 4294700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", - "amount": 4238000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", - "amount": 4194800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", - "amount": 4177036013, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", - "amount": 4100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", - "amount": 4063118687, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", - "amount": 4014247000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", - "amount": 4010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", - "amount": 4000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", - "amount": 3999100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", - "amount": 3998780750, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", - "amount": 3994000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", - "amount": 3993200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", - "amount": 3899718575, - "lockTime": 0 - }, - { - "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", - "amount": 3898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", - "amount": 3886000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", - "amount": 3880000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", - "amount": 3799000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", - "amount": 3776900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", - "amount": 3750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", - "amount": 3601350000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", - "amount": 3596300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", - "amount": 3578798656, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", - "amount": 3564038000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", - "amount": 3528200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", - "amount": 3497804834, - "lockTime": 0 - }, - { - "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", - "amount": 3488228657, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", - "amount": 3394800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", - "amount": 3387304999, - "lockTime": 0 - }, - { - "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", - "amount": 3345900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", - "amount": 3331000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", - "amount": 3299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", - "amount": 3296200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", - "amount": 3295700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", - "amount": 3274970000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", - "amount": 3269170000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", - "amount": 3262079400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", - "amount": 3254660000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", - "amount": 3249140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", - "amount": 3218320000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "amount": 3192291145, - "lockTime": 0 - }, - { - "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", - "amount": 3191670000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", - "amount": 3173000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", - "amount": 3111740000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", - "amount": 3087440000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", - "amount": 3062583425, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", - "amount": 3051500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", - "amount": 3012657406, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", - "amount": 3005080000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", - "amount": 3000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", - "amount": 2999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", - "amount": 2988840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", - "amount": 2936800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", - "amount": 2910820000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", - "amount": 2901460000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", - "amount": 2900750000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", - "amount": 2899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", - "amount": 2896970000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", - "amount": 2887000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", - "amount": 2868000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", - "amount": 2867000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", - "amount": 2836000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", - "amount": 2799100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", - "amount": 2799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", - "amount": 2796200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", - "amount": 2795672800, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", - "amount": 2783891200, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", - "amount": 2772000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", - "amount": 2733439115, - "lockTime": 0 - }, - { - "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", - "amount": 2728600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", - "amount": 2720000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", - "amount": 2600000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", - "amount": 2599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", - "amount": 2598000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", - "amount": 2589900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", - "amount": 2541627000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", - "amount": 2501000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", - "amount": 2500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", - "amount": 2499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", - "amount": 2489281556, - "lockTime": 0 - }, - { - "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", - "amount": 2451000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", - "amount": 2433606700, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", - "amount": 2400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", - "amount": 2380142333, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", - "amount": 2374750000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", - "amount": 2354900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", - "amount": 2354092984, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", - "amount": 2317200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", - "amount": 2300880000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", - "amount": 2299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", - "amount": 2264724000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", - "amount": 2257200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", - "amount": 2255457300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", - "amount": 2254824000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", - "amount": 2250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", - "amount": 2237400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", - "amount": 2236440000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", - "amount": 2206700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", - "amount": 2200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", - "amount": 2199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", - "amount": 2175723000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", - "amount": 2160622295, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", - "amount": 2156631687, - "lockTime": 0 - }, - { - "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", - "amount": 2021747535, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "amount": 2018971225, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", - "amount": 2011370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", - "amount": 2008604700, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", - "amount": 2000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", - "amount": 1999500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", - "amount": 1999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", - "amount": 1998900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", - "amount": 1998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", - "amount": 1997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", - "amount": 1981380000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", - "amount": 1901162000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", - "amount": 1900000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", - "amount": 1897700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", - "amount": 1890000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", - "amount": 1880999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", - "amount": 1850000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", - "amount": 1849370000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", - "amount": 1832290591, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", - "amount": 1810650000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", - "amount": 1802732700, - "lockTime": 0 - }, - { - "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", - "amount": 1800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", - "amount": 1797800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", - "amount": 1791408000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", - "amount": 1786000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", - "amount": 1770120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", - "amount": 1701600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", - "amount": 1699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", - "amount": 1698200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", - "amount": 1678100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", - "amount": 1662000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", - "amount": 1630000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", - "amount": 1599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", - "amount": 1597108047, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", - "amount": 1567500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "amount": 1565400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", - "amount": 1550000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", - "amount": 1500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", - "amount": 1499900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", - "amount": 1486859411, - "lockTime": 0 - }, - { - "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", - "amount": 1476989000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", - "amount": 1475160000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", - "amount": 1472790000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", - "amount": 1465255698, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", - "amount": 1457099103, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", - "amount": 1449454625, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", - "amount": 1448442313, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", - "amount": 1434000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", - "amount": 1425300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", - "amount": 1419840000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", - "amount": 1405309144, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", - "amount": 1400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "amount": 1399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", - "amount": 1397138909, - "lockTime": 0 - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "amount": 1375366150, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", - "amount": 1368900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", - "amount": 1323940000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", - "amount": 1302470000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", - "amount": 1300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", - "amount": 1297700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", - "amount": 1270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", - "amount": 1250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "amount": 1237234575, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", - "amount": 1230000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", - "amount": 1214000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", - "amount": 1209000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", - "amount": 1200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", - "amount": 1199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", - "amount": 1197009000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", - "amount": 1196800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", - "amount": 1193500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", - "amount": 1165732400, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", - "amount": 1158800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", - "amount": 1127625246, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", - "amount": 1116439043, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", - "amount": 1115760893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", - "amount": 1109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", - "amount": 1105416011, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", - "amount": 1100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", - "amount": 1099800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", - "amount": 1099702467, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", - "amount": 1099000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", - "amount": 1098000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", - "amount": 1097900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", - "amount": 1097736525, - "lockTime": 0 - }, - { - "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", - "amount": 1093877315, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", - "amount": 1088626560, - "lockTime": 0 - }, - { - "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", - "amount": 1086745966, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", - "amount": 1079900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", - "amount": 1076500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", - "amount": 1071543823, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", - "amount": 1057000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", - "amount": 1049000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", - "amount": 1048250300, - "lockTime": 0 - }, - { - "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", - "amount": 1047400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", - "amount": 1042335949, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", - "amount": 1038462866, - "lockTime": 0 - }, - { - "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", - "amount": 1026196953, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", - "amount": 1019307289, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", - "amount": 1010000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", - "amount": 1000000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", - "amount": 999990000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", - "amount": 999800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", - "amount": 999000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", - "amount": 998911825, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", - "amount": 998700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", - "amount": 998500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", - "amount": 998000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", - "amount": 997000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", - "amount": 989900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", - "amount": 989000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", - "amount": 987856800, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", - "amount": 983811025, - "lockTime": 0 - }, - { - "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", - "amount": 966477381, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", - "amount": 964816000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", - "amount": 951999999, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", - "amount": 950000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", - "amount": 949000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", - "amount": 924012466, - "lockTime": 0 - }, - { - "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", - "amount": 922876000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "amount": 921549763, - "lockTime": 0 - }, - { - "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", - "amount": 919375062, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", - "amount": 911126500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", - "amount": 910000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", - "amount": 906118999, - "lockTime": 0 - }, - { - "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", - "amount": 900000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", - "amount": 899000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", - "amount": 898000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", - "amount": 890000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", - "amount": 888000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", - "amount": 884000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", - "amount": 867523406, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", - "amount": 866000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", - "amount": 849500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", - "amount": 849000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", - "amount": 848500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", - "amount": 840000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", - "amount": 825000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", - "amount": 820716695, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", - "amount": 818412190, - "lockTime": 0 - }, - { - "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", - "amount": 810000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", - "amount": 808000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", - "amount": 800000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", - "amount": 799731825, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", - "amount": 799000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", - "amount": 798200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", - "amount": 795500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", - "amount": 793000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", - "amount": 782000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", - "amount": 780000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", - "amount": 778716384, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", - "amount": 778100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", - "amount": 775000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", - "amount": 764698197, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", - "amount": 750000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", - "amount": 732384154, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", - "amount": 728492845, - "lockTime": 0 - }, - { - "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", - "amount": 725000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", - "amount": 723650393, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", - "amount": 722926273, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", - "amount": 714581000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", - "amount": 713000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", - "amount": 711000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", - "amount": 709820317, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "amount": 705454541, - "lockTime": 0 - }, - { - "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", - "amount": 704000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", - "amount": 702883600, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", - "amount": 700000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", - "amount": 699267300, - "lockTime": 0 - }, - { - "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", - "amount": 699211700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", - "amount": 699000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", - "amount": 698100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", - "amount": 698000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", - "amount": 687299600, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", - "amount": 684000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", - "amount": 681750844, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", - "amount": 676000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", - "amount": 674598000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", - "amount": 670135839, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", - "amount": 669340000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "amount": 669317799, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", - "amount": 666666666, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", - "amount": 657685055, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", - "amount": 655904931, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", - "amount": 648825325, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", - "amount": 644200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", - "amount": 641665200, - "lockTime": 0 - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "amount": 641442294, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", - "amount": 638316000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", - "amount": 638290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", - "amount": 637310635, - "lockTime": 0 - }, - { - "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", - "amount": 637000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", - "amount": 636638405, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", - "amount": 613354540, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", - "amount": 610000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", - "amount": 606500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "amount": 600658627, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", - "amount": 600000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", - "amount": 599892000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", - "amount": 599000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", - "amount": 598400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", - "amount": 597900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", - "amount": 597500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", - "amount": 590000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", - "amount": 586928090, - "lockTime": 0 - }, - { - "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", - "amount": 569133800, - "lockTime": 0 - }, - { - "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", - "amount": 568400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", - "amount": 563347505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", - "amount": 558000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", - "amount": 554388330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", - "amount": 551000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", - "amount": 548700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", - "amount": 540000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", - "amount": 539300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", - "amount": 525710000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", - "amount": 519900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", - "amount": 518165513, - "lockTime": 0 - }, - { - "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", - "amount": 516997141, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", - "amount": 510000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", - "amount": 509521992, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", - "amount": 509000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", - "amount": 508500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "amount": 506103993, - "lockTime": 0 - }, - { - "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", - "amount": 504607913, - "lockTime": 0 - }, - { - "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", - "amount": 501257116, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", - "amount": 500000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", - "amount": 499900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", - "amount": 499767300, - "lockTime": 0 - }, - { - "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", - "amount": 499700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", - "amount": 499500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", - "amount": 499400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", - "amount": 499000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", - "amount": 498900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", - "amount": 498500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", - "amount": 498300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", - "amount": 498000732, - "lockTime": 0 - }, - { - "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", - "amount": 497000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", - "amount": 494500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", - "amount": 491597000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", - "amount": 491336919, - "lockTime": 0 - }, - { - "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", - "amount": 490199678, - "lockTime": 0 - }, - { - "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", - "amount": 490000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", - "amount": 489560572, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", - "amount": 489000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", - "amount": 486701915, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", - "amount": 486552834, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", - "amount": 486400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", - "amount": 486000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", - "amount": 482424197, - "lockTime": 0 - }, - { - "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", - "amount": 480000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", - "amount": 475353211, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", - "amount": 473898911, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", - "amount": 471699724, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", - "amount": 465061855, - "lockTime": 0 - }, - { - "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", - "amount": 457300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", - "amount": 455700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", - "amount": 455200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", - "amount": 453969673, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", - "amount": 450000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", - "amount": 446000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", - "amount": 445000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", - "amount": 433845700, - "lockTime": 0 - }, - { - "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", - "amount": 433600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", - "amount": 432400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", - "amount": 418400390, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", - "amount": 410257579, - "lockTime": 0 - }, - { - "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", - "amount": 401127279, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", - "amount": 401105580, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", - "amount": 400000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", - "amount": 399700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", - "amount": 399400000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", - "amount": 399000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", - "amount": 398500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", - "amount": 397131759, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", - "amount": 395478100, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", - "amount": 390000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", - "amount": 388600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", - "amount": 388250800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", - "amount": 384575891, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", - "amount": 383985656, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", - "amount": 382097330, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", - "amount": 380000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", - "amount": 379900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", - "amount": 371511484, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", - "amount": 370000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "amount": 358783553, - "lockTime": 0 - }, - { - "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", - "amount": 355180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", - "amount": 351428540, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", - "amount": 346000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", - "amount": 330000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", - "amount": 329000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", - "amount": 328947897, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", - "amount": 326445864, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", - "amount": 326336225, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", - "amount": 324504111, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", - "amount": 320000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", - "amount": 317042167, - "lockTime": 0 - }, - { - "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", - "amount": 316503686, - "lockTime": 0 - }, - { - "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", - "amount": 315700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", - "amount": 313569000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", - "amount": 305000119, - "lockTime": 0 - }, - { - "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", - "amount": 302729175, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", - "amount": 301435300, - "lockTime": 0 - }, - { - "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", - "amount": 300156854, - "lockTime": 0 - }, - { - "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", - "amount": 300000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", - "amount": 299873000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", - "amount": 299267300, - "lockTime": 0 - }, - { - "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", - "amount": 299000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", - "amount": 298500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", - "amount": 298335350, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", - "amount": 298000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", - "amount": 297167999, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", - "amount": 289704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", - "amount": 288704100, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "amount": 282420000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "amount": 280649126, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", - "amount": 280015680, - "lockTime": 0 - }, - { - "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", - "amount": 276737871, - "lockTime": 0 - }, - { - "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", - "amount": 274151201, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", - "amount": 270408000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", - "amount": 270000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", - "amount": 267000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", - "amount": 266960005, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", - "amount": 265775585, - "lockTime": 0 - }, - { - "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", - "amount": 264526302, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", - "amount": 263600000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", - "amount": 263206294, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", - "amount": 260000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", - "amount": 258290875, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", - "amount": 258126470, - "lockTime": 0 - }, - { - "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", - "amount": 257900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", - "amount": 255000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", - "amount": 250000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", - "amount": 249715755, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", - "amount": 249700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", - "amount": 247517821, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", - "amount": 247000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", - "amount": 246924214, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", - "amount": 246000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", - "amount": 245111848, - "lockTime": 0 - }, - { - "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", - "amount": 242657013, - "lockTime": 0 - }, - { - "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", - "amount": 240000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", - "amount": 238433807, - "lockTime": 0 - }, - { - "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", - "amount": 238332494, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", - "amount": 231872522, - "lockTime": 0 - }, - { - "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", - "amount": 231120000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", - "amount": 229900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", - "amount": 226960636, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", - "amount": 224900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", - "amount": 223270196, - "lockTime": 0 - }, - { - "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", - "amount": 221803515, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", - "amount": 219000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", - "amount": 214444251, - "lockTime": 0 - }, - { - "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", - "amount": 210500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", - "amount": 209900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", - "amount": 207241763, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", - "amount": 207000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", - "amount": 205908984, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "amount": 204253193, - "lockTime": 0 - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "amount": 203506579, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", - "amount": 201900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", - "amount": 200000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", - "amount": 199900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "amount": 199000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", - "amount": 198900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", - "amount": 198800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", - "amount": 198265250, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", - "amount": 197500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", - "amount": 197324848, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "amount": 197000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", - "amount": 196935684, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", - "amount": 196700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", - "amount": 196600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", - "amount": 195103558, - "lockTime": 0 - }, - { - "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", - "amount": 194761997, - "lockTime": 0 - }, - { - "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", - "amount": 193041064, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", - "amount": 192373935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", - "amount": 192300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "amount": 191577917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", - "amount": 191200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", - "amount": 190064307, - "lockTime": 0 - }, - { - "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", - "amount": 190000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", - "amount": 189200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "amount": 188671398, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", - "amount": 188256951, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", - "amount": 187144406, - "lockTime": 0 - }, - { - "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", - "amount": 186800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", - "amount": 186761758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", - "amount": 184026525, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", - "amount": 182783601, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", - "amount": 182100033, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", - "amount": 177790668, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", - "amount": 177787969, - "lockTime": 0 - }, - { - "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", - "amount": 174300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "amount": 173612453, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", - "amount": 171974145, - "lockTime": 0 - }, - { - "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", - "amount": 170264862, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", - "amount": 170000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", - "amount": 169530334, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", - "amount": 168231750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", - "amount": 167285108, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", - "amount": 166023705, - "lockTime": 0 - }, - { - "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", - "amount": 165600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", - "amount": 163830262, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", - "amount": 161646652, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", - "amount": 160000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "amount": 159661817, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", - "amount": 159000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", - "amount": 157355794, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", - "amount": 153674338, - "lockTime": 0 - }, - { - "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", - "amount": 150000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", - "amount": 149775708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", - "amount": 149666150, - "lockTime": 0 - }, - { - "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", - "amount": 148700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", - "amount": 146000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", - "amount": 144964485, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", - "amount": 143851143, - "lockTime": 0 - }, - { - "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", - "amount": 143712915, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", - "amount": 143545871, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", - "amount": 141900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", - "amount": 140402077, - "lockTime": 0 - }, - { - "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", - "amount": 140000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", - "amount": 139500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", - "amount": 139140181, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", - "amount": 138200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", - "amount": 137361793, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", - "amount": 136283067, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", - "amount": 135749198, - "lockTime": 0 - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "amount": 135523673, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", - "amount": 135297015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", - "amount": 134388698, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", - "amount": 131474912, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", - "amount": 131081458, - "lockTime": 0 - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "amount": 131026440, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", - "amount": 130070709, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", - "amount": 130000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", - "amount": 129900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", - "amount": 129135639, - "lockTime": 0 - }, - { - "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", - "amount": 128607478, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", - "amount": 126086500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", - "amount": 125508440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", - "amount": 125205440, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", - "amount": 123535996, - "lockTime": 0 - }, - { - "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", - "amount": 123456789, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", - "amount": 123241738, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", - "amount": 122235309, - "lockTime": 0 - }, - { - "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", - "amount": 121200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", - "amount": 120581538, - "lockTime": 0 - }, - { - "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", - "amount": 120000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", - "amount": 119207762, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", - "amount": 116842374, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", - "amount": 116660266, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", - "amount": 113954247, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", - "amount": 113951486, - "lockTime": 0 - }, - { - "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", - "amount": 113886595, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "amount": 113670193, - "lockTime": 0 - }, - { - "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", - "amount": 113427063, - "lockTime": 0 - }, - { - "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", - "amount": 112000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", - "amount": 111633229, - "lockTime": 0 - }, - { - "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", - "amount": 111378474, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", - "amount": 111100000, - "lockTime": 0 - }, - { - "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", - "amount": 111088708, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", - "amount": 111000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", - "amount": 110000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", - "amount": 109900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", - "amount": 109700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", - "amount": 109377023, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", - "amount": 108828082, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", - "amount": 108551938, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", - "amount": 108410125, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", - "amount": 107454537, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "amount": 106351895, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", - "amount": 105707909, - "lockTime": 0 - }, - { - "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", - "amount": 105465300, - "lockTime": 0 - }, - { - "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", - "amount": 104900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", - "amount": 104627641, - "lockTime": 0 - }, - { - "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", - "amount": 104621550, - "lockTime": 0 - }, - { - "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", - "amount": 104468595, - "lockTime": 0 - }, - { - "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", - "amount": 103669177, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", - "amount": 103546504, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", - "amount": 103542651, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", - "amount": 103395488, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", - "amount": 103229948, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", - "amount": 102925401, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", - "amount": 102712086, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", - "amount": 102500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", - "amount": 102400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", - "amount": 101888000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", - "amount": 101733344, - "lockTime": 0 - }, - { - "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", - "amount": 101680846, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", - "amount": 100997392, - "lockTime": 0 - }, - { - "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", - "amount": 100770054, - "lockTime": 0 - }, - { - "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", - "amount": 100642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", - "amount": 100508552, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", - "amount": 100300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", - "amount": 100131797, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", - "amount": 100100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", - "amount": 100000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", - "amount": 99900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", - "amount": 99800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", - "amount": 99766150, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", - "amount": 99757675, - "lockTime": 0 - }, - { - "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", - "amount": 99700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", - "amount": 99654300, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", - "amount": 99600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", - "amount": 99500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", - "amount": 99400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "amount": 99293597, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", - "amount": 99205961, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", - "amount": 99100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", - "amount": 99000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "amount": 98945310, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", - "amount": 98900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", - "amount": 98800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", - "amount": 98755600, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", - "amount": 98518990, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", - "amount": 98500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", - "amount": 98300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", - "amount": 98277516, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", - "amount": 98000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "amount": 97900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", - "amount": 97600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "amount": 97500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", - "amount": 97140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", - "amount": 97000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", - "amount": 96900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", - "amount": 96828300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", - "amount": 96611000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", - "amount": 96543495, - "lockTime": 0 - }, - { - "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", - "amount": 96400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "amount": 96163850, - "lockTime": 0 - }, - { - "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", - "amount": 95954991, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", - "amount": 95867902, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "amount": 95863871, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", - "amount": 95724927, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", - "amount": 95400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", - "amount": 95385777, - "lockTime": 0 - }, - { - "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", - "amount": 95260000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", - "amount": 95200000, - "lockTime": 0 - }, - { - "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", - "amount": 95130000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", - "amount": 94938692, - "lockTime": 0 - }, - { - "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", - "amount": 94800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "amount": 94200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", - "amount": 94015984, - "lockTime": 0 - }, - { - "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", - "amount": 93901350, - "lockTime": 0 - }, - { - "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", - "amount": 93813255, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", - "amount": 93800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", - "amount": 93300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", - "amount": 93048510, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", - "amount": 92500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", - "amount": 91812514, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", - "amount": 91811651, - "lockTime": 0 - }, - { - "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", - "amount": 91502145, - "lockTime": 0 - }, - { - "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", - "amount": 91500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", - "amount": 91460053, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", - "amount": 90900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", - "amount": 90567300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", - "amount": 90000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", - "amount": 89500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", - "amount": 88858578, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", - "amount": 88708870, - "lockTime": 0 - }, - { - "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", - "amount": 88189882, - "lockTime": 0 - }, - { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "amount": 88158538, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", - "amount": 88000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", - "amount": 87800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", - "amount": 87008984, - "lockTime": 0 - }, - { - "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", - "amount": 86955575, - "lockTime": 0 - }, - { - "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", - "amount": 86910000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", - "amount": 86700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", - "amount": 86611859, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", - "amount": 86423688, - "lockTime": 0 - }, - { - "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", - "amount": 86267696, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", - "amount": 86000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", - "amount": 85799789, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", - "amount": 85144041, - "lockTime": 0 - }, - { - "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", - "amount": 84916060, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", - "amount": 84752403, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "amount": 84714159, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", - "amount": 84682900, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", - "amount": 84399999, - "lockTime": 0 - }, - { - "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", - "amount": 83154269, - "lockTime": 0 - }, - { - "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", - "amount": 82800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", - "amount": 82646161, - "lockTime": 0 - }, - { - "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", - "amount": 82109033, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", - "amount": 81331335, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", - "amount": 81316286, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", - "amount": 81102482, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", - "amount": 80506363, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", - "amount": 80390543, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", - "amount": 80000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", - "amount": 79800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", - "amount": 79700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", - "amount": 79400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", - "amount": 79162270, - "lockTime": 0 - }, - { - "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", - "amount": 78900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", - "amount": 78782485, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", - "amount": 78575020, - "lockTime": 0 - }, - { - "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", - "amount": 78300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", - "amount": 78200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", - "amount": 78168214, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", - "amount": 78037986, - "lockTime": 0 - }, - { - "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", - "amount": 77490236, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", - "amount": 77232268, - "lockTime": 0 - }, - { - "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", - "amount": 77212434, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", - "amount": 77063237, - "lockTime": 0 - }, - { - "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", - "amount": 75800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", - "amount": 75789126, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", - "amount": 75507321, - "lockTime": 0 - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "amount": 75503913, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", - "amount": 75327407, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", - "amount": 75290690, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", - "amount": 74930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", - "amount": 74720000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", - "amount": 74437098, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", - "amount": 74400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", - "amount": 74348762, - "lockTime": 0 - }, - { - "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", - "amount": 74203000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", - "amount": 73729934, - "lockTime": 0 - }, - { - "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", - "amount": 73000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", - "amount": 72927719, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", - "amount": 72829725, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", - "amount": 72724127, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", - "amount": 72434019, - "lockTime": 0 - }, - { - "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", - "amount": 72265633, - "lockTime": 0 - }, - { - "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", - "amount": 71929294, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", - "amount": 71635972, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", - "amount": 71427784, - "lockTime": 0 - }, - { - "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", - "amount": 71135469, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", - "amount": 71000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", - "amount": 70603817, - "lockTime": 0 - }, - { - "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", - "amount": 70000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", - "amount": 69946609, - "lockTime": 0 - }, - { - "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", - "amount": 69881521, - "lockTime": 0 - }, - { - "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", - "amount": 69500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", - "amount": 69259733, - "lockTime": 0 - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", - "amount": 69000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", - "amount": 68899983, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", - "amount": 68714000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", - "amount": 68519123, - "lockTime": 0 - }, - { - "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", - "amount": 68390000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", - "amount": 68174169, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", - "amount": 67478854, - "lockTime": 0 - }, - { - "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", - "amount": 67128000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", - "amount": 66917577, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", - "amount": 66664452, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", - "amount": 66622754, - "lockTime": 0 - }, - { - "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", - "amount": 66513098, - "lockTime": 0 - }, - { - "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", - "amount": 66200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", - "amount": 65531149, - "lockTime": 0 - }, - { - "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", - "amount": 65513922, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", - "amount": 65324590, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", - "amount": 65286597, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", - "amount": 64975464, - "lockTime": 0 - }, - { - "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", - "amount": 64583611, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", - "amount": 64526697, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", - "amount": 63537395, - "lockTime": 0 - }, - { - "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", - "amount": 63423172, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", - "amount": 62611136, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", - "amount": 62397230, - "lockTime": 0 - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "amount": 62291375, - "lockTime": 0 - }, - { - "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", - "amount": 61480427, - "lockTime": 0 - }, - { - "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", - "amount": 61300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", - "amount": 61226173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "amount": 61211118, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", - "amount": 61085700, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", - "amount": 60882643, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", - "amount": 60676916, - "lockTime": 0 - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "amount": 60415849, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", - "amount": 60000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", - "amount": 59900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", - "amount": 59254195, - "lockTime": 0 - }, - { - "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", - "amount": 59041200, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "amount": 58866756, - "lockTime": 0 - }, - { - "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", - "amount": 58445263, - "lockTime": 0 - }, - { - "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", - "amount": 57690859, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "amount": 57578422, - "lockTime": 0 - }, - { - "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", - "amount": 57350574, - "lockTime": 0 - }, - { - "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", - "amount": 57000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", - "amount": 56984632, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", - "amount": 56644046, - "lockTime": 0 - }, - { - "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", - "amount": 56509850, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", - "amount": 56021099, - "lockTime": 0 - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "amount": 56006923, - "lockTime": 0 - }, - { - "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", - "amount": 55870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", - "amount": 55783816, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", - "amount": 55600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", - "amount": 54840126, - "lockTime": 0 - }, - { - "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", - "amount": 54227453, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", - "amount": 53888056, - "lockTime": 0 - }, - { - "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", - "amount": 53821529, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", - "amount": 53700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", - "amount": 53616000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", - "amount": 53593100, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", - "amount": 53391817, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", - "amount": 53356598, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", - "amount": 53316729, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", - "amount": 52887364, - "lockTime": 0 - }, - { - "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", - "amount": 52881765, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", - "amount": 51925200, - "lockTime": 0 - }, - { - "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", - "amount": 51579050, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", - "amount": 51184091, - "lockTime": 0 - }, - { - "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", - "amount": 51161816, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", - "amount": 51000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", - "amount": 50833041, - "lockTime": 0 - }, - { - "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", - "amount": 50806357, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", - "amount": 50644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", - "amount": 50642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", - "amount": 50642636, - "lockTime": 0 - }, - { - "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", - "amount": 50475173, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", - "amount": 50429213, - "lockTime": 0 - }, - { - "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", - "amount": 50040994, - "lockTime": 0 - }, - { - "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", - "amount": 50000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", - "amount": 49910000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", - "amount": 49900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", - "amount": 49800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", - "amount": 49765250, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", - "amount": 49713528, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", - "amount": 49561400, - "lockTime": 0 - }, - { - "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", - "amount": 49487758, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", - "amount": 49367300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", - "amount": 49325518, - "lockTime": 0 - }, - { - "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", - "amount": 49243496, - "lockTime": 0 - }, - { - "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", - "amount": 49028104, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", - "amount": 49016181, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "amount": 49000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", - "amount": 48998605, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", - "amount": 48979450, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", - "amount": 48600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", - "amount": 48000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", - "amount": 47760500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", - "amount": 47374909, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", - "amount": 47347173, - "lockTime": 0 - }, - { - "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", - "amount": 46939998, - "lockTime": 0 - }, - { - "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", - "amount": 46916130, - "lockTime": 0 - }, - { - "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", - "amount": 46824251, - "lockTime": 0 - }, - { - "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", - "amount": 46716818, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", - "amount": 46468850, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", - "amount": 46446373, - "lockTime": 0 - }, - { - "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", - "amount": 46284987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", - "amount": 46000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", - "amount": 45635414, - "lockTime": 0 - }, - { - "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", - "amount": 45506826, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", - "amount": 45370505, - "lockTime": 0 - }, - { - "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", - "amount": 45350479, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", - "amount": 45220590, - "lockTime": 0 - }, - { - "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", - "amount": 45146395, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", - "amount": 44778517, - "lockTime": 0 - }, - { - "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", - "amount": 44624277, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", - "amount": 44596761, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", - "amount": 44316668, - "lockTime": 0 - }, - { - "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", - "amount": 44273095, - "lockTime": 0 - }, - { - "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", - "amount": 43944130, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", - "amount": 43400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", - "amount": 43349444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", - "amount": 43300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", - "amount": 42788664, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "amount": 42659480, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", - "amount": 42616465, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", - "amount": 42446161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", - "amount": 42000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", - "amount": 41873121, - "lockTime": 0 - }, - { - "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", - "amount": 41239864, - "lockTime": 0 - }, - { - "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", - "amount": 41217182, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", - "amount": 41197860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", - "amount": 41027853, - "lockTime": 0 - }, - { - "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", - "amount": 40000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", - "amount": 39936405, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", - "amount": 39900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", - "amount": 39885316, - "lockTime": 0 - }, - { - "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", - "amount": 39400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", - "amount": 39205700, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", - "amount": 39204421, - "lockTime": 0 - }, - { - "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", - "amount": 38430246, - "lockTime": 0 - }, - { - "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", - "amount": 38156549, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "amount": 38097837, - "lockTime": 0 - }, - { - "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", - "amount": 37977870, - "lockTime": 0 - }, - { - "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", - "amount": 37848230, - "lockTime": 0 - }, - { - "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", - "amount": 37596341, - "lockTime": 0 - }, - { - "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", - "amount": 37138237, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", - "amount": 37000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", - "amount": 36645807, - "lockTime": 0 - }, - { - "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", - "amount": 36632136, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", - "amount": 36340851, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", - "amount": 36305635, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", - "amount": 36260066, - "lockTime": 0 - }, - { - "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", - "amount": 36254473, - "lockTime": 0 - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "amount": 35657031, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "amount": 35289230, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", - "amount": 35113411, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", - "amount": 35035381, - "lockTime": 0 - }, - { - "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", - "amount": 34987000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", - "amount": 34985508, - "lockTime": 0 - }, - { - "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", - "amount": 34237984, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", - "amount": 33972168, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", - "amount": 33666777, - "lockTime": 0 - }, - { - "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", - "amount": 33300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", - "amount": 33200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", - "amount": 32817751, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", - "amount": 32574993, - "lockTime": 0 - }, - { - "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", - "amount": 32398803, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", - "amount": 32390717, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", - "amount": 32300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", - "amount": 31705425, - "lockTime": 0 - }, - { - "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", - "amount": 31573559, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", - "amount": 31241721, - "lockTime": 0 - }, - { - "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", - "amount": 31200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", - "amount": 30919183, - "lockTime": 0 - }, - { - "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", - "amount": 30853387, - "lockTime": 0 - }, - { - "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", - "amount": 30241548, - "lockTime": 0 - }, - { - "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", - "amount": 30188591, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", - "amount": 30000000, - "lockTime": 0 - }, - { - "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", - "amount": 29911616, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", - "amount": 29612391, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", - "amount": 29505893, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", - "amount": 29502131, - "lockTime": 0 - }, - { - "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", - "amount": 29447012, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", - "amount": 29395647, - "lockTime": 0 - }, - { - "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", - "amount": 29297176, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", - "amount": 29193654, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", - "amount": 29170818, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", - "amount": 29000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", - "amount": 28930000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", - "amount": 28031084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", - "amount": 28027962, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", - "amount": 27975651, - "lockTime": 0 - }, - { - "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", - "amount": 27900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", - "amount": 27881872, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", - "amount": 27816878, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", - "amount": 27538587, - "lockTime": 0 - }, - { - "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", - "amount": 27359023, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", - "amount": 27354161, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", - "amount": 27313907, - "lockTime": 0 - }, - { - "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", - "amount": 27037657, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", - "amount": 26204778, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", - "amount": 25921742, - "lockTime": 0 - }, - { - "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", - "amount": 25800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", - "amount": 25214290, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", - "amount": 25000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", - "amount": 24900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", - "amount": 24862265, - "lockTime": 0 - }, - { - "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", - "amount": 24857672, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", - "amount": 24818000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", - "amount": 24792001, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", - "amount": 24764962, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", - "amount": 24752042, - "lockTime": 0 - }, - { - "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", - "amount": 24399962, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "amount": 24000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", - "amount": 23615149, - "lockTime": 0 - }, - { - "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", - "amount": 23543424, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "amount": 23374017, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", - "amount": 23095857, - "lockTime": 0 - }, - { - "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", - "amount": 23076854, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", - "amount": 22968358, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", - "amount": 22748293, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "amount": 22694797, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", - "amount": 22691356, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", - "amount": 22290000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", - "amount": 22207556, - "lockTime": 0 - }, - { - "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", - "amount": 22131393, - "lockTime": 0 - }, - { - "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", - "amount": 22100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", - "amount": 22037029, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", - "amount": 21900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", - "amount": 21856757, - "lockTime": 0 - }, - { - "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", - "amount": 21500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", - "amount": 21439758, - "lockTime": 0 - }, - { - "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", - "amount": 21405029, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", - "amount": 21276018, - "lockTime": 0 - }, - { - "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", - "amount": 21150519, - "lockTime": 0 - }, - { - "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", - "amount": 21061125, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", - "amount": 20996563, - "lockTime": 0 - }, - { - "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", - "amount": 20956841, - "lockTime": 0 - }, - { - "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", - "amount": 20728155, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", - "amount": 20676404, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", - "amount": 20520009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "amount": 20361917, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "amount": 20239197, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", - "amount": 20090000, - "lockTime": 0 - }, - { - "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", - "amount": 20000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", - "amount": 19900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", - "amount": 19800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", - "amount": 19767300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", - "amount": 19753684, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", - "amount": 19736931, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", - "amount": 19700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", - "amount": 19671511, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", - "amount": 19584000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", - "amount": 19525841, - "lockTime": 0 - }, - { - "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", - "amount": 19505045, - "lockTime": 0 - }, - { - "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", - "amount": 19503275, - "lockTime": 0 - }, - { - "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", - "amount": 19501275, - "lockTime": 0 - }, - { - "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", - "amount": 19500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", - "amount": 19498877, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", - "amount": 19497550, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", - "amount": 19488228, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", - "amount": 19400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "amount": 19278110, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", - "amount": 19200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", - "amount": 19183455, - "lockTime": 0 - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "amount": 19129772, - "lockTime": 0 - }, - { - "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", - "amount": 19077005, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", - "amount": 19065333, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "amount": 19000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", - "amount": 18900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", - "amount": 18751374, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", - "amount": 18644905, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", - "amount": 18618887, - "lockTime": 0 - }, - { - "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", - "amount": 18528978, - "lockTime": 0 - }, - { - "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", - "amount": 18516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", - "amount": 18500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", - "amount": 18400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "amount": 18399539, - "lockTime": 0 - }, - { - "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", - "amount": 18399110, - "lockTime": 0 - }, - { - "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", - "amount": 18394084, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", - "amount": 18342720, - "lockTime": 0 - }, - { - "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", - "amount": 18201288, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", - "amount": 18189414, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", - "amount": 18013100, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", - "amount": 18001058, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", - "amount": 17979537, - "lockTime": 0 - }, - { - "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", - "amount": 17816282, - "lockTime": 0 - }, - { - "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", - "amount": 17758707, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", - "amount": 17701434, - "lockTime": 0 - }, - { - "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", - "amount": 17700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", - "amount": 17652644, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", - "amount": 17609575, - "lockTime": 0 - }, - { - "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", - "amount": 17565000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", - "amount": 17516375, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", - "amount": 17506375, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", - "amount": 17500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", - "amount": 17105570, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", - "amount": 17000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", - "amount": 16900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", - "amount": 16889818, - "lockTime": 0 - }, - { - "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", - "amount": 16762383, - "lockTime": 0 - }, - { - "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", - "amount": 16728299, - "lockTime": 0 - }, - { - "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", - "amount": 16643371, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", - "amount": 16500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", - "amount": 16482078, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", - "amount": 16238871, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", - "amount": 16182206, - "lockTime": 0 - }, - { - "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", - "amount": 16179514, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", - "amount": 16163645, - "lockTime": 0 - }, - { - "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", - "amount": 16100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", - "amount": 15967560, - "lockTime": 0 - }, - { - "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", - "amount": 15931878, - "lockTime": 0 - }, - { - "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", - "amount": 15800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", - "amount": 15769682, - "lockTime": 0 - }, - { - "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", - "amount": 15767367, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", - "amount": 15730804, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", - "amount": 15692835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", - "amount": 15619300, - "lockTime": 0 - }, - { - "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", - "amount": 15332019, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", - "amount": 15299394, - "lockTime": 0 - }, - { - "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", - "amount": 15251450, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "amount": 15192835, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", - "amount": 15030170, - "lockTime": 0 - }, - { - "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", - "amount": 14989103, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", - "amount": 14920000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", - "amount": 14884069, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", - "amount": 14813575, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", - "amount": 14795150, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", - "amount": 14769037, - "lockTime": 0 - }, - { - "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", - "amount": 14682805, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", - "amount": 14583996, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", - "amount": 14548624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", - "amount": 14532102, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", - "amount": 14528369, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", - "amount": 14500253, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", - "amount": 14489245, - "lockTime": 0 - }, - { - "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", - "amount": 14489159, - "lockTime": 0 - }, - { - "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", - "amount": 14400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", - "amount": 14279464, - "lockTime": 0 - }, - { - "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", - "amount": 14123003, - "lockTime": 0 - }, - { - "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", - "amount": 14000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", - "amount": 13988506, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", - "amount": 13743449, - "lockTime": 0 - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "amount": 13488668, - "lockTime": 0 - }, - { - "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", - "amount": 13438357, - "lockTime": 0 - }, - { - "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", - "amount": 13390000, - "lockTime": 0 - }, - { - "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", - "amount": 13132342, - "lockTime": 0 - }, - { - "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", - "amount": 13000059, - "lockTime": 0 - }, - { - "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", - "amount": 12926318, - "lockTime": 0 - }, - { - "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", - "amount": 12889665, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", - "amount": 12868693, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", - "amount": 12858804, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", - "amount": 12810473, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", - "amount": 12657982, - "lockTime": 0 - }, - { - "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", - "amount": 12654117, - "lockTime": 0 - }, - { - "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", - "amount": 12635092, - "lockTime": 0 - }, - { - "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", - "amount": 12620302, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", - "amount": 12518998, - "lockTime": 0 - }, - { - "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", - "amount": 12500375, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", - "amount": 12373617, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", - "amount": 12323075, - "lockTime": 0 - }, - { - "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", - "amount": 12299629, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", - "amount": 12247283, - "lockTime": 0 - }, - { - "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", - "amount": 12233600, - "lockTime": 0 - }, - { - "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", - "amount": 12189871, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "amount": 12119019, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", - "amount": 12000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", - "amount": 11869491, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", - "amount": 11854774, - "lockTime": 0 - }, - { - "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", - "amount": 11852041, - "lockTime": 0 - }, - { - "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", - "amount": 11809086, - "lockTime": 0 - }, - { - "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", - "amount": 11798769, - "lockTime": 0 - }, - { - "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", - "amount": 11727601, - "lockTime": 0 - }, - { - "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", - "amount": 11687196, - "lockTime": 0 - }, - { - "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", - "amount": 11681919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", - "amount": 11630405, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", - "amount": 11596949, - "lockTime": 0 - }, - { - "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", - "amount": 11531640, - "lockTime": 0 - }, - { - "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", - "amount": 11463575, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", - "amount": 11407595, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "amount": 11268464, - "lockTime": 0 - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "amount": 11225011, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", - "amount": 11154018, - "lockTime": 0 - }, - { - "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", - "amount": 11035279, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", - "amount": 11031450, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", - "amount": 11000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", - "amount": 10928869, - "lockTime": 0 - }, - { - "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", - "amount": 10844444, - "lockTime": 0 - }, - { - "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", - "amount": 10841500, - "lockTime": 0 - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "amount": 10821533, - "lockTime": 0 - }, - { - "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", - "amount": 10802050, - "lockTime": 0 - }, - { - "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", - "amount": 10731068, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", - "amount": 10700000, - "lockTime": 0 - }, - { - "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", - "amount": 10557397, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", - "amount": 10540000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", - "amount": 10404096, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", - "amount": 10400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", - "amount": 10398200, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", - "amount": 10369791, - "lockTime": 0 - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "amount": 10313359, - "lockTime": 0 - }, - { - "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", - "amount": 10300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", - "amount": 10139875, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", - "amount": 10105100, - "lockTime": 0 - }, - { - "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", - "amount": 10057265, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", - "amount": 10000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "amount": 9985727, - "lockTime": 0 - }, - { - "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", - "amount": 9982121, - "lockTime": 0 - }, - { - "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", - "amount": 9964062, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", - "amount": 9943524, - "lockTime": 0 - }, - { - "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", - "amount": 9900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", - "amount": 9884363, - "lockTime": 0 - }, - { - "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", - "amount": 9870000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", - "amount": 9800000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", - "amount": 9789458, - "lockTime": 0 - }, - { - "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", - "amount": 9700952, - "lockTime": 0 - }, - { - "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", - "amount": 9700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", - "amount": 9694471, - "lockTime": 0 - }, - { - "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", - "amount": 9693469, - "lockTime": 0 - }, - { - "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", - "amount": 9622974, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", - "amount": 9600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", - "amount": 9500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", - "amount": 9450607, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", - "amount": 9393600, - "lockTime": 0 - }, - { - "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", - "amount": 9329474, - "lockTime": 0 - }, - { - "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", - "amount": 9300494, - "lockTime": 0 - }, - { - "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", - "amount": 9287099, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", - "amount": 9261554, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", - "amount": 9261412, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", - "amount": 9200900, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", - "amount": 9077760, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", - "amount": 9002937, - "lockTime": 0 - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", - "amount": 9000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", - "amount": 8974542, - "lockTime": 0 - }, - { - "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", - "amount": 8960266, - "lockTime": 0 - }, - { - "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", - "amount": 8911684, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "amount": 8890000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", - "amount": 8878624, - "lockTime": 0 - }, - { - "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", - "amount": 8861226, - "lockTime": 0 - }, - { - "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", - "amount": 8800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", - "amount": 8755575, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", - "amount": 8743626, - "lockTime": 0 - }, - { - "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", - "amount": 8730000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", - "amount": 8700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", - "amount": 8618586, - "lockTime": 0 - }, - { - "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", - "amount": 8616100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", - "amount": 8600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", - "amount": 8568129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", - "amount": 8538393, - "lockTime": 0 - }, - { - "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", - "amount": 8500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", - "amount": 8394182, - "lockTime": 0 - }, - { - "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", - "amount": 8300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", - "amount": 8263000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", - "amount": 8046950, - "lockTime": 0 - }, - { - "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", - "amount": 8000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "amount": 7952107, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", - "amount": 7933851, - "lockTime": 0 - }, - { - "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", - "amount": 7800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", - "amount": 7781500, - "lockTime": 0 - }, - { - "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", - "amount": 7770748, - "lockTime": 0 - }, - { - "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", - "amount": 7764531, - "lockTime": 0 - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "amount": 7737091, - "lockTime": 0 - }, - { - "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", - "amount": 7736399, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", - "amount": 7719601, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "amount": 7574095, - "lockTime": 0 - }, - { - "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", - "amount": 7346976, - "lockTime": 0 - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "amount": 7301873, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", - "amount": 7112300, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", - "amount": 7000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "amount": 6993706, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", - "amount": 6918758, - "lockTime": 0 - }, - { - "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", - "amount": 6740188, - "lockTime": 0 - }, - { - "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", - "amount": 6708448, - "lockTime": 0 - }, - { - "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", - "amount": 6670583, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", - "amount": 6500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", - "amount": 6400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", - "amount": 6163200, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", - "amount": 6058266, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", - "amount": 5950000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", - "amount": 5800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", - "amount": 5738000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "amount": 5700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", - "amount": 5557105, - "lockTime": 0 - }, - { - "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", - "amount": 5540250, - "lockTime": 0 - }, - { - "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", - "amount": 5500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", - "amount": 5450000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", - "amount": 5296672, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", - "amount": 5270000, - "lockTime": 0 - }, - { - "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", - "amount": 5000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "amount": 4957487, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", - "amount": 4900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", - "amount": 4778681, - "lockTime": 0 - }, - { - "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", - "amount": 4699808, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", - "amount": 4500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", - "amount": 4482229, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "amount": 4386750, - "lockTime": 0 - }, - { - "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", - "amount": 4325350, - "lockTime": 0 - }, - { - "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", - "amount": 4000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", - "amount": 3708425, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", - "amount": 3500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", - "amount": 3365007, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", - "amount": 3360000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", - "amount": 3000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", - "amount": 2917000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", - "amount": 2900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "amount": 2726099, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", - "amount": 2690325, - "lockTime": 0 - }, - { - "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", - "amount": 2624000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", - "amount": 2555026, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", - "amount": 2377118, - "lockTime": 0 - }, - { - "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", - "amount": 2308964, - "lockTime": 0 - }, - { - "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", - "amount": 2298000, - "lockTime": 0 - }, - { - "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", - "amount": 2111000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", - "amount": 2087000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", - "amount": 2000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", - "amount": 1999999, - "lockTime": 0 - }, - { - "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", - "amount": 1951160, - "lockTime": 0 - }, - { - "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", - "amount": 1900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", - "amount": 1888968, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", - "amount": 1856919, - "lockTime": 0 - }, - { - "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", - "amount": 1800000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", - "amount": 1725555, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", - "amount": 1700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", - "amount": 1689000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", - "amount": 1667308, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", - "amount": 1640000, - "lockTime": 0 - }, - { - "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", - "amount": 1624765, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", - "amount": 1621554, - "lockTime": 0 - }, - { - "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", - "amount": 1606774, - "lockTime": 0 - }, - { - "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", - "amount": 1600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", - "amount": 1560000, - "lockTime": 0 - }, - { - "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", - "amount": 1517547, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", - "amount": 1500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", - "amount": 1455000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", - "amount": 1440359, - "lockTime": 0 - }, - { - "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", - "amount": 1437300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", - "amount": 1400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "amount": 1392312, - "lockTime": 0 - }, - { - "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", - "amount": 1380420, - "lockTime": 0 - }, - { - "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", - "amount": 1300000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", - "amount": 1287899, - "lockTime": 0 - }, - { - "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", - "amount": 1267300, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", - "amount": 1263550, - "lockTime": 0 - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "amount": 1217403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", - "amount": 1140000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", - "amount": 1100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "amount": 1090000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", - "amount": 1066000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", - "amount": 1030000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", - "amount": 1011110, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", - "amount": 1000000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", - "amount": 987671, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", - "amount": 965641, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", - "amount": 960000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", - "amount": 952000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", - "amount": 947100, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", - "amount": 943700, - "lockTime": 0 - }, - { - "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", - "amount": 939241, - "lockTime": 0 - }, - { - "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", - "amount": 933125, - "lockTime": 0 - }, - { - "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", - "amount": 930518, - "lockTime": 0 - }, - { - "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", - "amount": 926774, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", - "amount": 920662, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", - "amount": 901400, - "lockTime": 0 - }, - { - "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", - "amount": 900000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", - "amount": 859800, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", - "amount": 858028, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", - "amount": 855860, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", - "amount": 851171, - "lockTime": 0 - }, - { - "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", - "amount": 842092, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", - "amount": 840772, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", - "amount": 838000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "amount": 834879, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", - "amount": 831343, - "lockTime": 0 - }, - { - "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", - "amount": 810000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", - "amount": 800000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", - "amount": 780000, - "lockTime": 0 - }, - { - "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", - "amount": 779400, - "lockTime": 0 - }, - { - "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", - "amount": 755007, - "lockTime": 0 - }, - { - "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", - "amount": 750472, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", - "amount": 739876, - "lockTime": 0 - }, - { - "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", - "amount": 732640, - "lockTime": 0 - }, - { - "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", - "amount": 730613, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "amount": 725135, - "lockTime": 0 - }, - { - "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", - "amount": 713527, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", - "amount": 704127, - "lockTime": 0 - }, - { - "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", - "amount": 700000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", - "amount": 693000, - "lockTime": 0 - }, - { - "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", - "amount": 692801, - "lockTime": 0 - }, - { - "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", - "amount": 678826, - "lockTime": 0 - }, - { - "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", - "amount": 661094, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", - "amount": 655797, - "lockTime": 0 - }, - { - "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", - "amount": 646006, - "lockTime": 0 - }, - { - "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", - "amount": 645525, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", - "amount": 645000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", - "amount": 644985, - "lockTime": 0 - }, - { - "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", - "amount": 644634, - "lockTime": 0 - }, - { - "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", - "amount": 642987, - "lockTime": 0 - }, - { - "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", - "amount": 642636, - "lockTime": 0 - }, - { - "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", - "amount": 640935, - "lockTime": 0 - }, - { - "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", - "amount": 640584, - "lockTime": 0 - }, - { - "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", - "amount": 639207, - "lockTime": 0 - }, - { - "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", - "amount": 633486, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", - "amount": 600000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", - "amount": 562333, - "lockTime": 0 - }, - { - "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", - "amount": 560140, - "lockTime": 0 - }, - { - "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", - "amount": 544852, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", - "amount": 533869, - "lockTime": 0 - }, - { - "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", - "amount": 530000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", - "amount": 504403, - "lockTime": 0 - }, - { - "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", - "amount": 500000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", - "amount": 490000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", - "amount": 477569, - "lockTime": 0 - }, - { - "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", - "amount": 457913, - "lockTime": 0 - }, - { - "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", - "amount": 416481, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "amount": 413430, - "lockTime": 0 - }, - { - "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", - "amount": 409000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", - "amount": 400000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", - "amount": 374054, - "lockTime": 0 - }, - { - "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", - "amount": 365644, - "lockTime": 0 - }, - { - "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", - "amount": 330000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", - "amount": 329000, - "lockTime": 0 - }, - { - "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", - "amount": 307700, - "lockTime": 0 - }, - { - "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", - "amount": 307200, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", - "amount": 300000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", - "amount": 297655, - "lockTime": 0 - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "amount": 285450, - "lockTime": 0 - }, - { - "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", - "amount": 232999, - "lockTime": 0 - }, - { - "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", - "amount": 203900, - "lockTime": 0 - }, - { - "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", - "amount": 201900, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", - "amount": 200001, - "lockTime": 0 - }, - { - "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", - "amount": 200000, - "lockTime": 0 - }, - { - "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", - "amount": 180000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", - "amount": 179000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", - "amount": 177286, - "lockTime": 0 - }, - { - "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", - "amount": 174982, - "lockTime": 0 - }, - { - "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", - "amount": 173499, - "lockTime": 0 - }, - { - "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", - "amount": 173450, - "lockTime": 0 - }, - { - "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", - "amount": 162550, - "lockTime": 0 - }, - { - "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", - "amount": 148400, - "lockTime": 0 - }, - { - "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", - "amount": 140000, - "lockTime": 0 - }, - { - "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", - "amount": 128500, - "lockTime": 0 - }, - { - "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", - "amount": 125704, - "lockTime": 0 - }, - { - "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", - "amount": 124800, - "lockTime": 0 - }, - { - "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", - "amount": 109391, - "lockTime": 0 - }, - { - "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", - "amount": 100000, - "lockTime": 0 - }, - { - "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", - "amount": 98600, - "lockTime": 0 - }, - { - "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", - "amount": 92426, - "lockTime": 0 - }, - { - "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", - "amount": 92015, - "lockTime": 0 - }, - { - "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", - "amount": 88713, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", - "amount": 84403, - "lockTime": 0 - }, - { - "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", - "amount": 74300, - "lockTime": 0 - }, - { - "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", - "amount": 74067, - "lockTime": 0 - }, - { - "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", - "amount": 62963, - "lockTime": 0 - }, - { - "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", - "amount": 62300, - "lockTime": 0 - }, - { - "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", - "amount": 61662, - "lockTime": 0 - }, - { - "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", - "amount": 61425, - "lockTime": 0 - }, - { - "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", - "amount": 58129, - "lockTime": 0 - }, - { - "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", - "amount": 56594, - "lockTime": 0 - }, - { - "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", - "amount": 50009, - "lockTime": 0 - }, - { - "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", - "amount": 46000, - "lockTime": 0 - }, - { - "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", - "amount": 41301, - "lockTime": 0 - }, - { - "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", - "amount": 38400, - "lockTime": 0 - }, - { - "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", - "amount": 34500, - "lockTime": 0 - }, - { - "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", - "amount": 33112, - "lockTime": 0 - }, - { - "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", - "amount": 33000, - "lockTime": 0 - }, - { - "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", - "amount": 32029, - "lockTime": 0 - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "amount": 21906, - "lockTime": 0 - }, - { - "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", - "amount": 18725, - "lockTime": 0 - }, - { - "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", - "amount": 16722, - "lockTime": 0 - }, - { - "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", - "amount": 16078, - "lockTime": 0 - }, - { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "amount": 12526, - "lockTime": 0 - }, - { - "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", - "amount": 11590, - "lockTime": 0 - }, - { - "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", - "amount": 10212, - "lockTime": 0 - }, - { - "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", - "amount": 10000, - "lockTime": 0 - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "amount": 9011, - "lockTime": 0 - }, - { - "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", - "amount": 597, - "lockTime": 0 - }, - { - "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", - "amount": 567, - "lockTime": 0 - }, - { - "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", - "amount": 506, - "lockTime": 0 - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "amount": 273, - "lockTime": 0 - }, - { - "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", - "amount": 31, - "lockTime": 0 - }, - { - "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", - "amount": 4, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", - "amount": 1, - "lockTime": 0 - }, - { - "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", - "amount": 0, - "lockTime": 0 - }, - { - "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", - "amount": 0, - "lockTime": 0 - } - ], - "alias": [ - { - "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", - "alias": "0001" - }, - { - "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", - "alias": "1" - }, - { - "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", - "alias": "24x7x365_staker_king" - }, - { - "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", - "alias": "24x7x365days_staker" - }, - { - "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", - "alias": "2_wuyan" - }, - { - "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", - "alias": "512_gb_ram_node" - }, - { - "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", - "alias": "88" - }, - { - "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", - "alias": "a" - }, - { - "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", - "alias": "a_decentralizedworld" - }, - { - "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", - "alias": "abc123" - }, - { - "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", - "alias": "achilles" - }, - { - "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", - "alias": "africa_ambassador" - }, - { - "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", - "alias": "agent" - }, - { - "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", - "alias": "agent0" - }, - { - "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", - "alias": "agent1" - }, - { - "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", - "alias": "agent10" - }, - { - "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", - "alias": "agent11" - }, - { - "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", - "alias": "agent12" - }, - { - "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", - "alias": "agent2" - }, - { - "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", - "alias": "agent3" - }, - { - "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", - "alias": "agent4" - }, - { - "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", - "alias": "agent5" - }, - { - "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", - "alias": "agent6" - }, - { - "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", - "alias": "agent7" - }, - { - "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", - "alias": "agent8" - }, - { - "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", - "alias": "agent9" - }, - { - "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", - "alias": "agree" - }, - { - "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", - "alias": "ajs_wallet" - }, - { - "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", - "alias": "alanachase" - }, - { - "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", - "alias": "aleph_alpha" - }, - { - "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", - "alias": "aleph_lambda" - }, - { - "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", - "alias": "aleph_naught" - }, - { - "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", - "alias": "aleph_omega" - }, - { - "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", - "alias": "aleph_one" - }, - { - "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", - "alias": "aleph_pi" - }, - { - "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", - "alias": "alexia" - }, - { - "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", - "alias": "allenheung" - }, - { - "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", - "alias": "amazing" - }, - { - "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", - "alias": "ambassador_africa" - }, - { - "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", - "alias": "andreas" - }, - { - "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", - "alias": "andrewle" - }, - { - "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", - "alias": "anybit" - }, - { - "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", - "alias": "anybitwallet" - }, - { - "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", - "alias": "arb" - }, - { - "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", - "alias": "artempl88" - }, - { - "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", - "alias": "astrid" - }, - { - "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", - "alias": "atlantis" - }, - { - "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", - "alias": "aurora" - }, - { - "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", - "alias": "auspicious" - }, - { - "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", - "alias": "aussie_ambassador" - }, - { - "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", - "alias": "australia_ambassador" - }, - { - "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", - "alias": "bbbbb" - }, - { - "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", - "alias": "beigaofengok" - }, - { - "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", - "alias": "bepal" - }, - { - "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", - "alias": "best_staking_node" - }, - { - "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", - "alias": "bigfour" - }, - { - "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", - "alias": "bikanuls1" - }, - { - "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", - "alias": "bikanuls2" - }, - { - "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", - "alias": "binance" - }, - { - "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", - "alias": "bischmaster" - }, - { - "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", - "alias": "blankpage" - }, - { - "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", - "alias": "bleegod" - }, - { - "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", - "alias": "blockchain_flashnews" - }, - { - "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", - "alias": "bodhi" - }, - { - "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", - "alias": "bonesers" - }, - { - "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", - "alias": "boydreynolds00021124" - }, - { - "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", - "alias": "btsabc" - }, - { - "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", - "alias": "burgs_yacht_party" - }, - { - "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", - "alias": "bystake" - }, - { - "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", - "alias": "canghai" - }, - { - "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", - "alias": "cc" - }, - { - "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", - "alias": "charlie" - }, - { - "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", - "alias": "cheifbrody" - }, - { - "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", - "alias": "chenweiguo" - }, - { - "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", - "alias": "children" - }, - { - "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", - "alias": "china_ambassador" - }, - { - "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", - "alias": "chinanuls_01" - }, - { - "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", - "alias": "chinanuls_02" - }, - { - "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", - "alias": "chinanuls_four" - }, - { - "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", - "alias": "chinanuls_one" - }, - { - "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", - "alias": "chinanuls_three" - }, - { - "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", - "alias": "chinanuls_tow" - }, - { - "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", - "alias": "com" - }, - { - "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", - "alias": "comapatient" - }, - { - "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", - "alias": "complete" - }, - { - "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", - "alias": "crypto_basics_1" - }, - { - "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", - "alias": "crypto_basics_2" - }, - { - "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", - "alias": "crypto_nuls" - }, - { - "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", - "alias": "crypto_nuls_2" - }, - { - "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", - "alias": "cryptobuzz" - }, - { - "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", - "alias": "cryptomennekes" - }, - { - "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", - "alias": "cryptoscrozer" - }, - { - "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", - "alias": "csc" - }, - { - "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", - "alias": "cybernetwork" - }, - { - "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", - "alias": "dalton" - }, - { - "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", - "alias": "darkzun" - }, - { - "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", - "alias": "dbnulswallet" - }, - { - "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", - "alias": "dche" - }, - { - "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", - "alias": "decadence" - }, - { - "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", - "alias": "dee" - }, - { - "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", - "alias": "deutsche_bahn" - }, - { - "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", - "alias": "dextop" - }, - { - "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", - "alias": "dingxiangweituo" - }, - { - "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", - "alias": "disbish" - }, - { - "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", - "alias": "djvasilek" - }, - { - "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", - "alias": "donchen" - }, - { - "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", - "alias": "dreaming_of_nuls_1" - }, - { - "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", - "alias": "dylan" - }, - { - "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", - "alias": "elunhui" - }, - { - "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", - "alias": "empowered" - }, - { - "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", - "alias": "exc_one" - }, - { - "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", - "alias": "exo" - }, - { - "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", - "alias": "faisca" - }, - { - "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", - "alias": "fanxinghua_nuls" - }, - { - "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", - "alias": "fcnuls" - }, - { - "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", - "alias": "fierious" - }, - { - "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", - "alias": "filip" - }, - { - "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", - "alias": "fips" - }, - { - "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", - "alias": "fj_ly_lc_2018" - }, - { - "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", - "alias": "forever" - }, - { - "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", - "alias": "france_ambassador" - }, - { - "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", - "alias": "frenchienuls" - }, - { - "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", - "alias": "game_of_stakes" - }, - { - "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", - "alias": "german_ambassador" - }, - { - "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", - "alias": "germanarea_ambass" - }, - { - "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", - "alias": "ghsjz" - }, - { - "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", - "alias": "gille" - }, - { - "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", - "alias": "gogineni" - }, - { - "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", - "alias": "gone_camping" - }, - { - "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", - "alias": "guobao" - }, - { - "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", - "alias": "h" - }, - { - "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", - "alias": "haciabi" - }, - { - "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", - "alias": "hai888" - }, - { - "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", - "alias": "harthur_gf" - }, - { - "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", - "alias": "hejie" - }, - { - "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", - "alias": "hena_alias_test" - }, - { - "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", - "alias": "hh" - }, - { - "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", - "alias": "hhao" - }, - { - "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", - "alias": "hibiki" - }, - { - "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", - "alias": "hodyhe" - }, - { - "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", - "alias": "hpipsdonate" - }, - { - "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", - "alias": "hpy_nuls_node01" - }, - { - "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", - "alias": "hpy_nuls_node_01" - }, - { - "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", - "alias": "huang" - }, - { - "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", - "alias": "huanghua" - }, - { - "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", - "alias": "huobipool" - }, - { - "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", - "alias": "id" - }, - { - "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", - "alias": "io" - }, - { - "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", - "alias": "jackeycyt" - }, - { - "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", - "alias": "jason_zhang" - }, - { - "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", - "alias": "jasonthatdude" - }, - { - "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", - "alias": "jb23" - }, - { - "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", - "alias": "jimmy" - }, - { - "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", - "alias": "joele" - }, - { - "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", - "alias": "johan" - }, - { - "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", - "alias": "joinphonejmh" - }, - { - "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", - "alias": "jota" - }, - { - "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", - "alias": "justinevelyn" - }, - { - "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", - "alias": "jvdburg" - }, - { - "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", - "alias": "jyh" - }, - { - "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", - "alias": "kadel" - }, - { - "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", - "alias": "kaippilly" - }, - { - "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", - "alias": "kb24" - }, - { - "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", - "alias": "kevin" - }, - { - "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", - "alias": "kiss" - }, - { - "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", - "alias": "krzwalnuls" - }, - { - "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", - "alias": "kucoin" - }, - { - "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", - "alias": "l_nuls" - }, - { - "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", - "alias": "li" - }, - { - "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", - "alias": "liangye" - }, - { - "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", - "alias": "liesa_huang" - }, - { - "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", - "alias": "lining" - }, - { - "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", - "alias": "linkworld" - }, - { - "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", - "alias": "liujunbo1234" - }, - { - "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", - "alias": "lizhilong" - }, - { - "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", - "alias": "ln" - }, - { - "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", - "alias": "longkayo" - }, - { - "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", - "alias": "love_nuls" - }, - { - "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", - "alias": "lsfnuls" - }, - { - "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", - "alias": "lsfnuls1" - }, - { - "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", - "alias": "lxx302" - }, - { - "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", - "alias": "main" - }, - { - "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", - "alias": "mainaccount" - }, - { - "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", - "alias": "medes" - }, - { - "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", - "alias": "men" - }, - { - "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", - "alias": "meowmeow" - }, - { - "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", - "alias": "mick_one" - }, - { - "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", - "alias": "ming" - }, - { - "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", - "alias": "miya" - }, - { - "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", - "alias": "moon" - }, - { - "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", - "alias": "moon_lambo" - }, - { - "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", - "alias": "moshe" - }, - { - "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", - "alias": "moshe_malawach" - }, - { - "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", - "alias": "mouxiao" - }, - { - "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", - "alias": "multiobhan" - }, - { - "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", - "alias": "mycoin" - }, - { - "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", - "alias": "myklicious" - }, - { - "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", - "alias": "n1_nulsnode_org" - }, - { - "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", - "alias": "nalen" - }, - { - "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", - "alias": "nalexnuls" - }, - { - "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", - "alias": "natural" - }, - { - "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", - "alias": "naveen_reward_acct" - }, - { - "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", - "alias": "nebulla" - }, - { - "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", - "alias": "neva" - }, - { - "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", - "alias": "nfrewards" - }, - { - "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", - "alias": "niels" - }, - { - "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", - "alias": "nodeforge_ii" - }, - { - "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", - "alias": "nodeforge_io" - }, - { - "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", - "alias": "ns" - }, - { - "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", - "alias": "nul_b02" - }, - { - "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", - "alias": "nul_b_01" - }, - { - "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", - "alias": "nul_b_02" - }, - { - "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", - "alias": "nul_b_03" - }, - { - "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", - "alias": "nul_b_04" - }, - { - "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", - "alias": "nul_b_2" - }, - { - "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", - "alias": "nulp_fiction" - }, - { - "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", - "alias": "nuls" - }, - { - "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", - "alias": "nuls01akrs" - }, - { - "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", - "alias": "nuls4ever" - }, - { - "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", - "alias": "nuls_00" - }, - { - "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", - "alias": "nuls_01" - }, - { - "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", - "alias": "nuls_8" - }, - { - "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", - "alias": "nuls__portugal" - }, - { - "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", - "alias": "nuls__to_the__moon" - }, - { - "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", - "alias": "nuls_agent_node" - }, - { - "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", - "alias": "nuls_armstrong" - }, - { - "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", - "alias": "nuls_australia" - }, - { - "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", - "alias": "nuls_bonesersnode" - }, - { - "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", - "alias": "nuls_by_nulswest" - }, - { - "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", - "alias": "nuls_canada" - }, - { - "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", - "alias": "nuls_com_sg" - }, - { - "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", - "alias": "nuls_connect" - }, - { - "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", - "alias": "nuls_cru" - }, - { - "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", - "alias": "nuls_cru_sf_ca" - }, - { - "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", - "alias": "nuls_datou" - }, - { - "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", - "alias": "nuls_deep" - }, - { - "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", - "alias": "nuls_deeper" - }, - { - "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", - "alias": "nuls_dextop" - }, - { - "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", - "alias": "nuls_enterprise" - }, - { - "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", - "alias": "nuls_europe" - }, - { - "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", - "alias": "nuls_europe_de" - }, - { - "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", - "alias": "nuls_fans" - }, - { - "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", - "alias": "nuls_global" - }, - { - "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", - "alias": "nuls_global_2" - }, - { - "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", - "alias": "nuls_gold" - }, - { - "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", - "alias": "nuls_l2" - }, - { - "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", - "alias": "nuls_lianquan" - }, - { - "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", - "alias": "nuls_machine" - }, - { - "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", - "alias": "nuls_media" - }, - { - "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", - "alias": "nuls_node_london" - }, - { - "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", - "alias": "nuls_one" - }, - { - "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", - "alias": "nuls_org" - }, - { - "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", - "alias": "nuls_org1" - }, - { - "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", - "alias": "nuls_org2" - }, - { - "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", - "alias": "nuls_org3" - }, - { - "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", - "alias": "nuls_org4" - }, - { - "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", - "alias": "nuls_pacific" - }, - { - "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", - "alias": "nuls_pi" - }, - { - "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", - "alias": "nuls_portugal" - }, - { - "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", - "alias": "nuls_power" - }, - { - "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", - "alias": "nuls_singapore" - }, - { - "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", - "alias": "nuls_the_king" - }, - { - "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", - "alias": "nuls_to_the_moon" - }, - { - "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", - "alias": "nuls_uk" - }, - { - "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", - "alias": "nuls_usa" - }, - { - "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", - "alias": "nuls_vip" - }, - { - "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", - "alias": "nuls_world" - }, - { - "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", - "alias": "nulsb4" - }, - { - "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", - "alias": "nulsdeep" - }, - { - "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", - "alias": "nulsdeepaustralia" - }, - { - "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", - "alias": "nulsfans" - }, - { - "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", - "alias": "nulsforlyfe" - }, - { - "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", - "alias": "nulsgalaxy" - }, - { - "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", - "alias": "nulsgalaxy_01" - }, - { - "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", - "alias": "nulsgood" - }, - { - "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", - "alias": "nulsio" - }, - { - "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", - "alias": "nulsmasternode_com" - }, - { - "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", - "alias": "nulsnice" - }, - { - "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", - "alias": "nulsnode_com" - }, - { - "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", - "alias": "nulson_mandela" - }, - { - "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", - "alias": "nulson_mandelaa" - }, - { - "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", - "alias": "nulstar" - }, - { - "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", - "alias": "nulstomoon" - }, - { - "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", - "alias": "nulswest_1" - }, - { - "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", - "alias": "nworld" - }, - { - "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", - "alias": "odzerchenma_12_12" - }, - { - "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", - "alias": "omar_voting" - }, - { - "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", - "alias": "one" - }, - { - "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", - "alias": "oo" - }, - { - "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", - "alias": "opulence" - }, - { - "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", - "alias": "pay" - }, - { - "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", - "alias": "pepe_the_nuls" - }, - { - "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", - "alias": "personal" - }, - { - "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", - "alias": "pierreluo" - }, - { - "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", - "alias": "pl_godfather" - }, - { - "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", - "alias": "planqk" - }, - { - "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", - "alias": "praesum" - }, - { - "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", - "alias": "prosper" - }, - { - "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", - "alias": "prosperity" - }, - { - "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", - "alias": "prosperous" - }, - { - "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", - "alias": "quickcrypto" - }, - { - "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", - "alias": "radigan" - }, - { - "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", - "alias": "railnetwork_europe" - }, - { - "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", - "alias": "raining_nuls_usa" - }, - { - "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", - "alias": "reaper" - }, - { - "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", - "alias": "regularguy" - }, - { - "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", - "alias": "rf_1" - }, - { - "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", - "alias": "riaris_stake_24_7" - }, - { - "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", - "alias": "rico" - }, - { - "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", - "alias": "rillezk" - }, - { - "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", - "alias": "russian__ambassador" - }, - { - "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", - "alias": "russian_ambassador" - }, - { - "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", - "alias": "ryanprivate" - }, - { - "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", - "alias": "serg" - }, - { - "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", - "alias": "sg_ambassador" - }, - { - "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", - "alias": "sgfe" - }, - { - "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", - "alias": "shijiuzhou" - }, - { - "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", - "alias": "siwei" - }, - { - "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", - "alias": "slo_0_nuls" - }, - { - "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", - "alias": "slo_1_nuls" - }, - { - "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", - "alias": "slo_nuls" - }, - { - "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", - "alias": "snzholding" - }, - { - "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", - "alias": "spanish_ambassador" - }, - { - "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", - "alias": "spartansz" - }, - { - "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", - "alias": "spendyouth" - }, - { - "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", - "alias": "stake_n_take" - }, - { - "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", - "alias": "stakehouse" - }, - { - "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", - "alias": "staking" - }, - { - "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", - "alias": "staking_best_node" - }, - { - "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", - "alias": "staking_capital" - }, - { - "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", - "alias": "sue" - }, - { - "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", - "alias": "sun" - }, - { - "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", - "alias": "supasativa" - }, - { - "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", - "alias": "super_nova" - }, - { - "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", - "alias": "superlinks" - }, - { - "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", - "alias": "supernuls_q383524260" - }, - { - "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", - "alias": "taro" - }, - { - "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", - "alias": "teameffort" - }, - { - "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", - "alias": "three_body" - }, - { - "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", - "alias": "top1" - }, - { - "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", - "alias": "tyrolee" - }, - { - "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", - "alias": "uk" - }, - { - "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", - "alias": "us1_newyork" - }, - { - "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", - "alias": "us_west_1" - }, - { - "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", - "alias": "usa_nuls" - }, - { - "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", - "alias": "veki75" - }, - { - "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", - "alias": "vhtoto20" - }, - { - "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", - "alias": "vivi" - }, - { - "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", - "alias": "vr" - }, - { - "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", - "alias": "wallet" - }, - { - "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", - "alias": "water" - }, - { - "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", - "alias": "wechat_6219172" - }, - { - "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", - "alias": "weituo" - }, - { - "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", - "alias": "wendysa_nuls" - }, - { - "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", - "alias": "wenzhengqu" - }, - { - "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", - "alias": "wichain_nuls" - }, - { - "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", - "alias": "wildmsb" - }, - { - "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", - "alias": "winner" - }, - { - "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", - "alias": "wolfstreet" - }, - { - "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", - "alias": "wu" - }, - { - "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", - "alias": "wuyan" - }, - { - "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", - "alias": "xfans" - }, - { - "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", - "alias": "xiaomayi" - }, - { - "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", - "alias": "xiaoyao" - }, - { - "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", - "alias": "xue_xiao" - }, - { - "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", - "alias": "xuzhigang" - }, - { - "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", - "alias": "xx" - }, - { - "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", - "alias": "yao" - }, - { - "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", - "alias": "you363317" - }, - { - "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", - "alias": "yp" + "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", + "alias": "lining" }, { - "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", - "alias": "zane" + "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", + "alias": "lining1" }, { - "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", - "alias": "zdgroup" + "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", + "alias": "huawei" }, { - "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", - "alias": "zero_to_hero" + "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", + "alias": "kathy" }, { - "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", - "alias": "zero_to_hero_2" + "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", + "alias": "alias123" }, { - "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", - "alias": "zheng" + "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", + "alias": "test2" }, { - "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", - "alias": "zouaiqiu" + "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", + "alias": "nuls_create_alias" }, { - "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", - "alias": "zyzz" + "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", + "alias": "000000" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} - +} \ No newline at end of file diff --git a/module.ncf b/module.ncf index 533d8b66c0..df147a7647 100644 --- a/module.ncf +++ b/module.ncf @@ -5,39 +5,43 @@ logPath=/Users/niels/workspace/nuls-v2/Logs logLevel=INFO dataPath=/Users/niels/workspace/nuls-v2/data #默认本链ID -chainId=1 +chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id -mainChainId=1 +mainChainId=2 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=2.7.0-a4354e9 + + [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=20191222 +packetMagic=20200120 #种子节点 -selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +selfSeedIps=149.129.251.238:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 + [account] keystoreFolder=/keystore/backup dependent=protocol-update @@ -63,13 +67,13 @@ dependent=cross-chain,smart-contract,protocol-update [consensus] #种子节点列表 -seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -78,34 +82,31 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dependent=protocol-update,smart-contract,cross-chain -[ledger] -dependent=protocol-update - [transaction] dependent=protocol-update,smart-contract [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd dependent=protocol-update [chain-manager] dependent=smart-contract,protocol-update - [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 databaseUrl=127.0.0.1 #数据库端口号 @@ -114,47 +115,53 @@ databasePort=27017 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 -#连接最大持续时间 -socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 +developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri +ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE +mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm +businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL +teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH +communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS +syncCoinBase=false +syncAddress= dependent=smart-contract,cross-chain [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 dependent=protocol-update,smart-contract -[nuls-api] -#httpServer的启动ip -serverIp=127.0.0.1 -#httpServer的启动port -serverPort=8004 -dependent=smart-contract,cross-chain +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:18003/ +explorerPort=1999 +explorerHost=0.0.0.0 + +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:18003/ +webWalletPort=18006 +webWalletHost=0.0.0.0 [protocol-update] #每隔多少个区块统计一次协议占比 -interval=1000 +interval=10 dependent=smart-contract,cross-chain -[cmd-client] -clientVersion=2.7.0 - +[nuls-api] +#httpServer的启动ip +serverIp=0.0.0.0 +#httpServer的启动port +serverPort=18004 +dependent=smart-contract,cross-chain diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index 49b313ef43..7f84e88476 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -1,24 +1,23 @@ package io.nuls.provider; -import io.nuls.base.basic.AddressTool; -import io.nuls.core.exception.NulsException; -import io.nuls.core.parse.I18nUtils; -import io.nuls.core.rpc.util.AddressPrefixDatas; -import io.nuls.provider.api.RpcServerManager; import io.nuls.base.api.provider.Provider; import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.basic.AddressTool; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Service; -import io.nuls.core.core.annotation.Value; import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.exception.NulsException; import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.I18nUtils; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.modulebootstrap.Module; import io.nuls.core.rpc.modulebootstrap.NulsRpcModuleBootstrap; import io.nuls.core.rpc.modulebootstrap.RpcModule; import io.nuls.core.rpc.modulebootstrap.RpcModuleState; +import io.nuls.core.rpc.util.AddressPrefixDatas; +import io.nuls.provider.api.RpcServerManager; import io.nuls.v2.NulsSDKBootStrap; import java.util.Map; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/MyModule.java b/module/nuls-api/src/main/java/io/nuls/provider/MyModule.java index 136c25890d..293bb422c3 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/MyModule.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/MyModule.java @@ -3,7 +3,9 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.rpc.modulebootstrap.RpcModuleState; +import io.nuls.provider.api.config.Config; import io.nuls.provider.rpctools.TransactionTools; +import io.nuls.v2.SDKContext; /** * @Author: zhoulijun @@ -15,6 +17,8 @@ public class MyModule { @Autowired TransactionTools transactionTools; + @Autowired + private Config config; /** * 启动模块 @@ -25,6 +29,7 @@ public class MyModule { public RpcModuleState startModule(String moduleName){ //注册交易 //transactionTools.registerTx(moduleName,200); + SDKContext.addressPrefix = config.getAddressPrefix(); return RpcModuleState.Running; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 1889aaa458..3344bb000f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -40,10 +40,12 @@ import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; import io.nuls.provider.model.dto.AccountKeyStoreDto; +import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.model.form.PriKeyForm; import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.model.jsonrpc.RpcResultError; import io.nuls.provider.rpctools.AccountTools; +import io.nuls.provider.rpctools.ContractTools; import io.nuls.provider.rpctools.LegderTools; import io.nuls.provider.rpctools.vo.AccountBalance; import io.nuls.provider.utils.Log; @@ -79,6 +81,8 @@ @Api(type = ApiType.JSONRPC) public class AccountController { + @Autowired + private ContractTools contractTools; @Autowired private LegderTools legderTools; @Autowired diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 296f84be52..4f2e1b6604 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -8,6 +8,7 @@ import io.nuls.core.rpc.model.ModuleE; import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.rpctools.vo.AccountBalance; +import org.checkerframework.checker.units.qual.A; import java.math.BigInteger; import java.util.ArrayList; @@ -49,8 +50,8 @@ public Result getBalanceAndNonce(int chainId, int assetChainId, balanceInfo.setFreeze(map.get("freeze").toString()); balanceInfo.setNonce((String) map.get("nonce")); balanceInfo.setTotalBalance(new BigInteger(balanceInfo.getBalance()) - .add(new BigInteger(balanceInfo.getConsensusLock())) - .add(new BigInteger(balanceInfo.getTimeLock())).toString()); + .add(new BigInteger(balanceInfo.getConsensusLock())) + .add(new BigInteger(balanceInfo.getTimeLock())).toString()); balanceInfo.setNonceType((Integer) map.get("nonceType")); return new Result<>(balanceInfo); }); diff --git a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java index d663a5b88c..134d9f42e0 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java +++ b/module/nuls-block/src/main/java/io/nuls/block/service/impl/BlockServiceImpl.java @@ -301,7 +301,7 @@ private boolean saveBlock(int chainId, Block block, boolean localInit, int downl BlockHeader header = block.getHeader(); long height = header.getHeight(); if(snapshotHeight != null && height > snapshotHeight){ - Log.info("到达快照高度,放弃保存区块"); + logger.error("到达快照高度,放弃保存区块"); return false; } NulsHash hash = header.getHash(); @@ -314,7 +314,7 @@ private boolean saveBlock(int chainId, Block block, boolean localInit, int downl //1.验证区块 Result result = verifyBlock(chainId, block, localInit, download); if (result.isFailed()) { -// logger.debug("verifyBlock fail! height-" + height); + logger.error("verifyBlock fail! height-" + height); return false; } //同步\链切换\孤儿链对接过程中不进行区块广播 @@ -589,10 +589,10 @@ private Result verifyBlock(int chainId, Block block, boolean localInit, int down //1.验证一些基本信息如区块大小限制、字段非空验证 boolean basicVerify = BlockUtil.basicVerify(chainId, block); if (localInit) { - logger.debug("basicVerify-" + basicVerify); if (basicVerify) { return Result.getSuccess(BlockErrorCode.SUCCESS); } else { + logger.error("basicVerify-" + basicVerify); return Result.getFailed(BlockErrorCode.BLOCK_VERIFY_ERROR); } } @@ -600,7 +600,7 @@ private Result verifyBlock(int chainId, Block block, boolean localInit, int down //分叉验证 boolean forkVerify = BlockUtil.forkVerify(chainId, block); if (!forkVerify) { -// logger.debug("forkVerify-" + forkVerify); + logger.error("forkVerify-" + forkVerify); return Result.getFailed(BlockErrorCode.BLOCK_VERIFY_ERROR); } //共识验证 diff --git a/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java b/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java index 038e4c1b3d..9a049d0183 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java +++ b/module/nuls-block/src/main/java/io/nuls/block/utils/BlockUtil.java @@ -69,34 +69,34 @@ public class BlockUtil { public static boolean basicVerify(int chainId, Block block) { NulsLogger logger = ContextManager.getContext(chainId).getLogger(); if (block == null) { - logger.debug("basicVerify fail, block is null!"); + logger.error("basicVerify fail, block is null!"); return false; } BlockHeader header = block.getHeader(); if (header == null) { - logger.debug("basicVerify fail, blockHeader is null!"); + logger.error("basicVerify fail, blockHeader is null!"); return false; } if (!headerVerify(chainId, header)) { - logger.debug("basicVerify fail, blockHeader error! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("basicVerify fail, blockHeader error! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } if (block.getTxs() == null || block.getTxs().isEmpty()) { - logger.debug("basicVerify fail, transaction is null! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("basicVerify fail, transaction is null! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } if (block.getTxs().size() != header.getTxCount()) { - logger.debug("basicVerify fail, transaction count not equals! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("basicVerify fail, transaction count not equals! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } ChainParameters parameters = ContextManager.getContext(chainId).getParameters(); if (block.size() > parameters.getBlockMaxSize()) { - logger.debug("basicVerify fail, beyond blockMaxSize! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("basicVerify fail, beyond blockMaxSize! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } @@ -106,22 +106,22 @@ public static boolean basicVerify(int chainId, Block block) { public static boolean headerVerify(int chainId, BlockHeader header) { NulsLogger logger = ContextManager.getContext(chainId).getLogger(); if (header.getHash() == null) { - logger.debug("headerVerify fail, block hash can not be null! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("headerVerify fail, block hash can not be null! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } if (header.getHeight() < 0) { - logger.debug("headerVerify fail, block height can not be less than 0! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("headerVerify fail, block height can not be less than 0! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } if (null == header.getPackingAddress(chainId)) { - logger.debug("headerVerify fail, block packingAddress can not be null! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("headerVerify fail, block packingAddress can not be null! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } ChainParameters parameters = ContextManager.getContext(chainId).getParameters(); if (header.getExtend() != null && header.getExtend().length > parameters.getExtendMaxSize()) { - logger.debug("headerVerify fail, block extend too long! height-" + header.getHeight() + ", hash-" + header.getHash()); + logger.error("headerVerify fail, block extend too long! height-" + header.getHeight() + ", hash-" + header.getHash()); return false; } @@ -180,7 +180,7 @@ private static Result mainChainProcess(int chainId, Block block) { ChainParameters parameters = context.getParameters(); NulsLogger logger = context.getLogger(); if (Math.abs(blockHeight - masterChainEndHeight) > parameters.getHeightRange()) { - logger.debug("received out of range block, height:" + blockHeight + ", hash:" + blockHash); + logger.error("received out of range block, height:" + blockHeight + ", hash:" + blockHash); return Result.getFailed(BlockErrorCode.OUT_OF_RANGE); } @@ -205,7 +205,7 @@ private static Result mainChainProcess(int chainId, Block block) { chainStorageService.save(chainId, block); Chain forkChain = ChainGenerator.generate(chainId, block, masterChain, ChainTypeEnum.FORK); BlockChainManager.addForkChain(chainId, forkChain); - logger.info("received fork block of masterChain, height:" + blockHeight + ", hash:" + blockHash); + logger.error("received fork block of masterChain, height:" + blockHeight + ", hash:" + blockHash); ConsensusCall.evidence(chainId, blockService, header); return Result.getFailed(BlockErrorCode.FORK_BLOCK); } @@ -263,13 +263,13 @@ private static Result forkChainProcess(int chainId, Block block) { if (blockHeight == forkChainEndHeight + 1 && blockPreviousHash.equals(forkChainEndHash)) { chainStorageService.save(chainId, block); forkChain.addLast(block); - logger.debug("received continuous block of forkChain, height:" + blockHeight + ", hash:" + blockHash); + logger.error("received continuous block of forkChain, height:" + blockHeight + ", hash:" + blockHash); ConsensusCall.evidence(chainId, blockService, header); return Result.getFailed(BlockErrorCode.FORK_BLOCK); } //2.重复,丢弃 if (forkChainStartHeight <= blockHeight && blockHeight <= forkChainEndHeight && forkChain.getHashList().contains(blockHash)) { - logger.debug("received duplicate block of forkChain, height:" + blockHeight + ", hash:" + blockHash); + logger.error("received duplicate block of forkChain, height:" + blockHeight + ", hash:" + blockHash); return Result.getFailed(BlockErrorCode.FORK_BLOCK); } //3.分叉 @@ -277,7 +277,7 @@ private static Result forkChainProcess(int chainId, Block block) { chainStorageService.save(chainId, block); Chain newForkChain = ChainGenerator.generate(chainId, block, forkChain, ChainTypeEnum.FORK); BlockChainManager.addForkChain(chainId, newForkChain); - logger.debug("received fork block of forkChain, height:" + blockHeight + ", hash:" + blockHash); + logger.error("received fork block of forkChain, height:" + blockHeight + ", hash:" + blockHash); ConsensusCall.evidence(chainId, blockService, header); return Result.getFailed(BlockErrorCode.FORK_BLOCK); } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java index 4a18e72a37..44741c389b 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java @@ -143,9 +143,10 @@ public Response chainReg(Map params) { /* 组装BlockChain (BlockChain object) */ BlockChain blockChain = new BlockChain(); blockChain.map2pojo(params); - if (blockChain.getChainId() == BaseConstant.MAINNET_CHAIN_ID || blockChain.getChainId() == BaseConstant.TESTNET_CHAIN_ID) { - return failed(CmErrorCode.ERROR_CHAIN_SYSTEM_USED); - } + //todo 临时处理 +// if (blockChain.getChainId() == BaseConstant.MAINNET_CHAIN_ID || blockChain.getChainId() == BaseConstant.TESTNET_CHAIN_ID) { +// return failed(CmErrorCode.ERROR_CHAIN_SYSTEM_USED); +// } String addressPrefix = (String) params.get("addressPrefix"); if (StringUtils.isBlank(addressPrefix)) { return failed(CmErrorCode.ERROR_CHAIN_ADDRESS_PREFIX); @@ -283,9 +284,9 @@ public Response chainActive(Map params) { /* 组装BlockChain (BlockChain object) */ BlockChain blockChain = new BlockChain(); blockChain.map2pojo(params); - if (blockChain.getChainId() == BaseConstant.MAINNET_CHAIN_ID || blockChain.getChainId() == BaseConstant.TESTNET_CHAIN_ID) { - return failed(CmErrorCode.ERROR_CHAIN_SYSTEM_USED); - } +// if (blockChain.getChainId() == BaseConstant.MAINNET_CHAIN_ID || blockChain.getChainId() == BaseConstant.TESTNET_CHAIN_ID) { +// return failed(CmErrorCode.ERROR_CHAIN_SYSTEM_USED); +// } String addressPrefix = (String) params.get("addressPrefix"); if (StringUtils.isBlank(addressPrefix)) { return failed(CmErrorCode.ERROR_CHAIN_ADDRESS_PREFIX); diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java index 32b31f5199..99fc4c219f 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java @@ -1,5 +1,6 @@ package io.nuls.chain.service.impl; +import io.nuls.base.basic.AddressTool; import io.nuls.chain.config.NulsChainConfig; import io.nuls.chain.info.CmRuntimeInfo; import io.nuls.chain.model.po.Asset; @@ -178,7 +179,22 @@ public void batchUpdateAsset(Map assetMap) throws Exception { */ @Override public Asset getAsset(String assetKey) throws Exception { - return assetStorage.load(assetKey); + Asset asset = assetStorage.load(assetKey); + //todo 临时测试用 +// if(assetKey.equals("2-0")&&asset==null){ +// asset = new Asset(); +// asset.setAssetId(0); +// asset.setAssetName("TEST"); +// asset.setChainId(2); +// asset.setCreateTime(0); +// asset.setDecimalPlaces((short) 4); +// asset.setAddress(AddressTool.getAddress("tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF")); +// asset.setAvailable(true); +// asset.setDepositNuls(BigInteger.ZERO); +// asset.setInitNumber(BigInteger.valueOf(1000000000000L)); +// asset.setSymbol("TEST"); +// } + return asset; } /** diff --git a/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/StorageTest.java b/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/StorageTest.java new file mode 100644 index 0000000000..b6bb584138 --- /dev/null +++ b/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/StorageTest.java @@ -0,0 +1,93 @@ +package io.nuls.chain.test; + +import io.nuls.chain.model.po.BlockChain; +import io.nuls.chain.model.po.ChainAsset; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.model.ByteUtils; +import io.nuls.core.rockdb.service.RocksDBService; +import org.junit.Test; + +import java.util.List; + +public class StorageTest { + + static String DB_PATH1 = "/Users/niels/workspace/nuls-v2/data/chain-manager"; + static String DB_PATH2 = "/Users/niels/workspace/nuls-v2/data-beta/chain-manager"; + + + static final String TABLE1 = "chain_asset"; + static final String TABLE2 = "block_chain"; + static final String TABLE3 = "chain_circulate"; + + + @Test + public void readChainAsset() throws NulsException { + RocksDBService.init(DB_PATH1); + List blist = RocksDBService.valueList(TABLE1); + for (byte[] b : blist) { + ChainAsset registeredChainMessage = new ChainAsset(); + registeredChainMessage.parse(b, 0); + Log.info("{}", registeredChainMessage); + } + System.out.println(blist.size()); + } + + @Test + public void readChainAsset2() throws NulsException { + RocksDBService.init(DB_PATH2); + List blist = RocksDBService.valueList(TABLE1); + for (byte[] b : blist) { + ChainAsset registeredChainMessage = new ChainAsset(); + registeredChainMessage.parse(b, 0); + Log.info("{}", registeredChainMessage); + } + System.out.println(blist.size()); + } + + @Test + public void readChain() throws NulsException { + RocksDBService.init(DB_PATH1); + List blist = RocksDBService.valueList(TABLE2); + for (byte[] b : blist) { + BlockChain registeredChainMessage = new BlockChain(); + registeredChainMessage.parse(b, 0); + Log.info("{}", registeredChainMessage); + } + System.out.println(blist.size()); + } + + @Test + public void readChain2() throws NulsException { + RocksDBService.init(DB_PATH2); + List blist = RocksDBService.valueList(TABLE2); + for (byte[] b : blist) { + BlockChain registeredChainMessage = new BlockChain(); + registeredChainMessage.parse(b, 0); + Log.info("{}", registeredChainMessage); + } + System.out.println(blist.size()); + } + + @Test + public void readChainCirculate() throws NulsException { + RocksDBService.init(DB_PATH1); + List blist = RocksDBService.keyList(TABLE3); + for (byte[] b : blist) { + byte[] val = RocksDBService.get(TABLE3, b); + Log.info("{}: {}", new String(b), ByteUtils.bytesToBigInteger(val)); + } + System.out.println(blist.size()); + } + + @Test + public void readChainCirculate2() throws NulsException { + RocksDBService.init(DB_PATH2); + List blist = RocksDBService.keyList(TABLE3); + for (byte[] b : blist) { + byte[] val = RocksDBService.get(TABLE3, b); + Log.info("{}: {}", new String(b), ByteUtils.bytesToBigInteger(val)); + } + System.out.println(blist.size()); + } +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/ResetChainInfoTransaction.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/ResetChainInfoTransaction.java new file mode 100644 index 0000000000..16dc225ddd --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/ResetChainInfoTransaction.java @@ -0,0 +1,38 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.crosschain.base.model; + +import io.nuls.base.data.Transaction; +import io.nuls.core.constant.TxType; + +/** + * @author lan + * @date 2018/11/19 + */ +public class ResetChainInfoTransaction extends Transaction { + public ResetChainInfoTransaction() { + super(TxType.RESET_CHAIN_INFO); + } +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/ResetChainInfoData.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/ResetChainInfoData.java new file mode 100644 index 0000000000..684472efb6 --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/model/bo/txdata/ResetChainInfoData.java @@ -0,0 +1,36 @@ +package io.nuls.crosschain.base.model.bo.txdata; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +public class ResetChainInfoData extends BaseNulsData { + private String json; + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeString(json); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + json = byteBuffer.readString(); + } + + @Override + public int size() { + return SerializeUtils.sizeOfString(json); + } + + public String getJson() { + return json; + } + + public void setJson(String json) { + this.json = json; + } +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetChainService.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetChainService.java new file mode 100644 index 0000000000..38c9c06fa2 --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/service/ResetChainService.java @@ -0,0 +1,40 @@ +package io.nuls.crosschain.base.service; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; + +import java.util.List; +import java.util.Map; + +public interface ResetChainService { + /** + * 重置链信息交易初始化批量验证 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param txMap Consensus Module All Transaction Classification + * @param blockHeader block header + * + * @return processor result + * */ + Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader); + + /** + * 重置链信息交易初始化提交 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * + * @return processor result + * */ + boolean commit(int chainId, List txs, BlockHeader blockHeader); + + /** + * 重置链信息交易初始化回滚 + * @param chainId chain ID + * @param txs cross chain transaction list + * @param blockHeader block header + * + * @return processor result + * */ + boolean rollback(int chainId, List txs, BlockHeader blockHeader); +} diff --git a/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetChainInfoTxProcessor.java b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetChainInfoTxProcessor.java new file mode 100644 index 0000000000..2d23490f1b --- /dev/null +++ b/module/nuls-cross-chain/base-lib/src/main/java/io/nuls/crosschain/base/tx/v1/ResetChainInfoTxProcessor.java @@ -0,0 +1,38 @@ +package io.nuls.crosschain.base.tx.v1; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.crosschain.base.service.ResetChainService; + +import java.util.*; + +@Component("ResetChainInfoTxProcessor") +public class ResetChainInfoTxProcessor implements TransactionProcessor { + + @Autowired + private ResetChainService resetChainService; + + @Override + public int getType() { + return TxType.RESET_CHAIN_INFO; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + return resetChainService.validate(chainId, txs, txMap, blockHeader); + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + return resetChainService.commit(chainId, txs, blockHeader); + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + return resetChainService.rollback(chainId, txs, blockHeader); + } +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetChainServiceImpl.java new file mode 100644 index 0000000000..5287a113ec --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetChainServiceImpl.java @@ -0,0 +1,159 @@ +package io.nuls.crosschain.nuls.servive.impl; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.signture.SignatureUtil; +import io.nuls.core.constant.ErrorCode; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.JSONUtils; +import io.nuls.crosschain.base.model.bo.ChainInfo; +import io.nuls.crosschain.base.model.bo.txdata.RegisteredChainMessage; +import io.nuls.crosschain.base.model.bo.txdata.ResetChainInfoData; +import io.nuls.crosschain.base.service.ResetChainService; +import io.nuls.crosschain.nuls.constant.NulsCrossChainConfig; +import io.nuls.crosschain.nuls.constant.NulsCrossChainErrorCode; +import io.nuls.crosschain.nuls.model.bo.Chain; +import io.nuls.crosschain.nuls.srorage.RegisteredCrossChainService; +import io.nuls.crosschain.nuls.utils.manager.ChainManager; + +import java.util.*; + +@Component +public class ResetChainServiceImpl implements ResetChainService { + + + @Autowired + private ChainManager chainManager; + + @Autowired + private NulsCrossChainConfig config; + @Autowired + private RegisteredCrossChainService registeredCrossChainService; + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + + //todo 验证是种子节点签名的交易(是否需要多个种子节点签名) + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + errorList.addAll(txs); + chain.getLogger().error("Chain id is invaild"); + rtData.put("errorCode", NulsCrossChainErrorCode.DATA_ERROR.getCode()); + return rtData; + } + + try { + boolean success = true; + ErrorCode errorCode = NulsCrossChainErrorCode.DATA_ERROR; + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + //todo 验证是种子节点签名的交易 + tx.getTransactionSignature(); + Set set = SignatureUtil.getAddressFromTX(tx, chainId); + for (String txAddress : set) { + if (!config.getSeedNodeList().contains(txAddress)) { + success = false; + errorCode = NulsCrossChainErrorCode.MUST_SEED_ADDRESS_SIGN; + break; + } + } + ResetChainInfoData txData = new ResetChainInfoData(); + txData.parse(tx.getTxData(), 0); + + ChainInfo chainInfo = JSONUtils.json2pojo(txData.getJson(), ChainInfo.class); + if (!validate(chainInfo)) { + success = false; + errorCode = NulsCrossChainErrorCode.DATA_ERROR; + } + + if (success) { + chain.getLogger().debug("txHash = {},chainId={} reset validate success!", txHash, chainId); + } else { + rtData.put("errorCode", errorCode); + chain.getLogger().error("txHash = {},chainId={} reset validate fail!", txHash, chainId); + errorList.add(tx); + } + } + } catch (Exception e) { + chain.getLogger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + private boolean validate(ChainInfo chainInfo) { + if (null == chainInfo) { + return false; + } + if (chainInfo.getChainId() < 0) { + return false; + } + if (StringUtils.isBlank(chainInfo.getChainName())) { + return false; + } + if (StringUtils.isBlank(chainInfo.getAddressPrefix())) { + return false; + } + if (chainInfo.getAssetInfoList() == null || chainInfo.getAssetInfoList().isEmpty()) { + return false; + } + return true; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + // 解析chain信息,如果有则覆盖,如果没有就存储(缓存和数据库) + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + return false; + } + for (Transaction resetTx : txs) { + try { + ResetChainInfoData txData = new ResetChainInfoData(); + txData.parse(resetTx.getTxData(), 0); + ChainInfo chainInfo = JSONUtils.json2pojo(txData.getJson(), ChainInfo.class); + + RegisteredChainMessage registeredChainMessage = registeredCrossChainService.get(); + if (registeredChainMessage == null) { + registeredChainMessage = new RegisteredChainMessage(new ArrayList<>()); + } + + + List list = registeredChainMessage.getChainInfoList(); + for (int i = 0; i < list.size(); i++) { + ChainInfo old = list.get(i); + if (old.getChainId() == chainInfo.getChainId()) { + list.remove(i); + break; + } + } + + + registeredChainMessage.addChainInfo(chainInfo); + chain.getLogger().info("reset cross chain chain information has changed,chainId:{}", chainInfo.getChainId()); + + + registeredCrossChainService.save(registeredChainMessage); + chainManager.setRegisteredCrossChainList(registeredChainMessage.getChainInfoList()); + + } catch (Exception e) { + chain.getLogger().error(e); + return false; + } + } + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + //todo 反向 + return true; + } +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json index 5c3785c79c..32ffa16f43 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json +++ b/module/nuls-cross-chain/cross-chain/src/main/resources/protocol-config.json @@ -1,4 +1,21 @@ [ + { + "version": "10", + "extend": "1", + "validTxs": [ + { + "type": "62", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "ResetChainInfoTxProcessor" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "1", "extend": "", diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/StorageTest.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/StorageTest.java new file mode 100644 index 0000000000..8e3f70aecb --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/StorageTest.java @@ -0,0 +1,35 @@ +package io.nuls.test; + +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.rockdb.service.RocksDBService; +import io.nuls.crosschain.base.model.bo.AssetInfo; +import io.nuls.crosschain.base.model.bo.txdata.RegisteredChainMessage; +import org.junit.Test; + +import java.util.List; + +public class StorageTest { + static String DB_PATH = "/Users/niels/workspace/nuls-v2/data-ing/cross-chain"; + static String DB_PATH2 = "/Users/niels/workspace/nuls-v2/data/cross-chain"; + + static final String TABLE = "registered_chain"; + + @Test + public void readRegisterChain() throws NulsException { + RocksDBService.init(DB_PATH); + byte[] b = RocksDBService.get(TABLE, TABLE.getBytes()); + RegisteredChainMessage registeredChainMessage = new RegisteredChainMessage(); + registeredChainMessage.parse(b,0); + Log.info("{}",registeredChainMessage); + } + + @Test + public void readRegisterChain2() throws NulsException { + RocksDBService.init(DB_PATH2); + byte[] b = RocksDBService.get(TABLE, TABLE.getBytes()); + RegisteredChainMessage registeredChainMessage = new RegisteredChainMessage(); + registeredChainMessage.parse(b, 0); + Log.info("{}", registeredChainMessage); + } +} diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java new file mode 100644 index 0000000000..ef177e621a --- /dev/null +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java @@ -0,0 +1,99 @@ +package io.nuls.test; + +import io.nuls.base.RPCUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.*; +import io.nuls.base.signture.P2PHKSignature; +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.info.NoUse; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.crosschain.base.model.ResetChainInfoTransaction; +import io.nuls.crosschain.base.model.bo.txdata.ResetChainInfoData; +import org.junit.Test; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TxSendTester { + + @Test + public void test() throws Exception { + NoUse.mockModule(); + String prikey = ""; + ECKey ecKey = ECKey.fromPrivate(HexUtil.decode(prikey)); + byte[] address = AddressTool.getAddress(ecKey.getPubKey(), 2); + + + ResetChainInfoTransaction tx = new ResetChainInfoTransaction(); + tx.setTime(System.currentTimeMillis() / 1000); + ResetChainInfoData txData = new ResetChainInfoData(); + txData.setJson("{\"chainId\":2,\"chainName\":\"nuls2\",\"minAvailableNodeNum\":0,\"maxSignatureCount\":0,\"signatureByzantineRatio\":0,\"addressPrefix\":\"tNULS\",\"assetInfoList\":[{\"assetId\":1,\"symbol\":\"NULS\",\"assetName\":\"\",\"usable\":true,\"decimalPlaces\":8},{\"assetId\":8,\"symbol\":\"T1\",\"assetName\":\"t1\",\"usable\":true,\"decimalPlaces\":9}],\"verifierList\":[],\"registerTime\":0}"); + tx.setTxData(txData.serialize()); + + CoinData coinData = new CoinData(); + CoinFrom from = new CoinFrom(); + from.setAddress(address); + from.setAmount(BigInteger.valueOf(1000000)); + from.setAssetsChainId(2); + from.setAssetsId(1); + from.setLocked((byte) 0); + from.setNonce(HexUtil.decode("ace23d6fad9760d0")); + coinData.getFrom().add(from); + CoinTo to = new CoinTo(); + to.setAddress(address); + to.setAmount(BigInteger.ZERO); + to.setAssetsId(1); + to.setAssetsChainId(2); + to.setLockTime(0); + coinData.getTo().add(to); + + tx.setCoinData(coinData.serialize()); + + TransactionSignature transactionSignature = new TransactionSignature(); + List list = new ArrayList<>(); + P2PHKSignature sig = new P2PHKSignature(); + sig.setPublicKey(ecKey.getPubKey()); + NulsSignData data = new NulsSignData(); + data.setSignBytes(ecKey.sign(tx.getHash().getBytes())); + sig.setSignData(data); + list.add(sig); + transactionSignature.setP2PHKSignatures(list); + tx.setTransactionSignature(transactionSignature.serialize()); + Log.info(tx.getHash().toHex()); + Log.info(HexUtil.encode(tx.serialize())); + sendTx(2, HexUtil.encode(tx.serialize())); + } + + @SuppressWarnings("unchecked") + public static void sendTx(int chainId, String tx) throws NulsException { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("tx", tx); + try { + /*boolean ledgerValidResult = commitUnconfirmedTx(chain,tx); + if(!ledgerValidResult){ + throw new NulsException(ConsensusErrorCode.FAILED); + }*/ + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.TX.abbr, "tx_newTx", params); + if (!cmdResp.isSuccess()) { + //rollBackUnconfirmTx(chain,tx); + throw new RuntimeException(); + } + } catch (NulsException e) { + throw e; + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java index ad220da039..2c39a5892e 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/rpc/cmd/AccountStateCmd.java @@ -118,6 +118,65 @@ public Response getBalance(Map params) { return response; } + + @CmdAnnotation(cmd = "getBalanceList", version = 1.0, + description = "获取账户资产的集合") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterValidRange = "[1-65535]", parameterDes = "运行的链Id,取值区间[1-65535]"), + @Parameter(parameterName = "assetKeyList", requestType = @TypeDescriptor(value = List.class, collectionElement = String.class), parameterDes = "资产key集合, [assetChainId-assetId]"), + @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "资产所在地址"), + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", + responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "list", valueType = Map.class, description = "账户资产集合") + }) + ) + public Response getBalanceList(Map params) { + Integer chainId = (Integer) params.get("chainId"); + List assetKeyList = (List) params.get("assetKeyList"); + if (assetKeyList == null) { + return failed(LedgerErrorCode.PARAMETER_ERROR, "invalid `assetKeyList`"); + } + String address = LedgerUtil.getRealAddressStr((String) params.get("address")); + if (!chainHanlder(chainId)) { + return failed(LedgerErrorCode.CHAIN_INIT_FAIL); + } + Map resultList = new HashMap<>(); + Map resultMap = new HashMap<>(); + for (String assetKey : assetKeyList) { + assetKey = assetKey.trim(); + String[] assetInfo = assetKey.split("-"); + int assetChainId = Integer.parseInt(assetInfo[0].trim()); + int assetId = Integer.parseInt(assetInfo[1].trim()); + + AccountState accountState = accountStateService.getAccountStateReCal(address, chainId, assetChainId, assetId); + Map rtMap = new HashMap<>(5); + rtMap.put("freeze", accountState.getFreezeTotal()); + rtMap.put("total", accountState.getTotalAmount()); + rtMap.put("available", accountState.getAvailableAmount()); + BigInteger permanentLocked = BigInteger.ZERO; + BigInteger timeHeightLocked = BigInteger.ZERO; + for (FreezeLockTimeState freezeLockTimeState : accountState.getFreezeLockTimeStates()) { + if (LedgerUtil.isPermanentLock(freezeLockTimeState.getLockTime())) { + permanentLocked = permanentLocked.add(freezeLockTimeState.getAmount()); + } else { + timeHeightLocked = timeHeightLocked.add(freezeLockTimeState.getAmount()); + } + } + for (FreezeHeightState freezeHeightState : accountState.getFreezeHeightStates()) { + timeHeightLocked = timeHeightLocked.add(freezeHeightState.getAmount()); + } + rtMap.put("permanentLocked", permanentLocked); + rtMap.put("timeHeightLocked", timeHeightLocked); + + resultList.put(assetKey, rtMap); + } + resultMap.put("list", resultList); + Response response = success(resultMap); + return response; + } + + /** * 获取账户锁定列表 * get user account freeze diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index d2723ca4eb..a49a45efce 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -43,5 +43,10 @@ "version": "9", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "10", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java index 60909ddac4..16e8993eb3 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/serialize/TxSerialization.java @@ -30,6 +30,7 @@ import io.nuls.base.data.*; import io.nuls.base.signture.SignatureUtil; import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.model.txdata.CreateContractData; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; @@ -44,6 +45,7 @@ import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.HashSet; import java.util.Set; @@ -102,9 +104,20 @@ public void testType18() throws NulsException, IOException { @Test public void test26() throws NulsException { - String hex="1a00082f126100041a000000d20217020001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a99020008000008af2f0000000000000000000000000000000000000000000000000000000008000000000000000000170200022744df0b0cc3c0056c6d496db212d680c7f422250200010040420f000000000000000000000000000000000000000000000000000000000008f52629ee1ce14627000117050001bc9cf2a09f0d1dbe7ab0a7dca2ccb87d12da6a99020008000008af2f00000000000000000000000000000000000000000000000000000000000000000000000000"; + String hex="1000c710266100aa010001c3d790463856a0e8b0f8f10ea8f4703dcd1b24e2010002a9ae0501816eee73f8a2b2048197bec81d0247d50000000000000000000000000000000000000000000000000000000000000000d9800000000000001900000000000000087472616e73666572000201254e554c53643648676675704e70515876507774787339594c77787466747561656942596f420118313030303030303030303030303030303030303030303030480117010001c3d790463856a0e8b0f8f10ea8f4703dcd1b24e201000100d11b0e000000000000000000000000000000000000000000000000000000000008f3506f703333db3d00006921037331dd5df517ae177951b47c29d94e1bc850fada766a9a83fb0042436d43d1da46304402206ac8e190d01a5d70fd5e72dab79ab66cdf6ec754fd7e1d669539e6b577762e82022061a113288b2d1c7d45417183948e01d374b3057a9514a46a1faba39261f8c365"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(hex), 0); + CallContractData data = new CallContractData(); + data.parse(tx.getTxData(), 0); + System.out.println(); + } + + @Test + public void desContractData() throws NulsException { + String base64 = "AQABw9eQRjhWoOiw+PEOqPRwPc0bJOIBAAKprgUBgW7uc/iisgSBl77IHQJH1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YAAAAAAAAAZAAAAAAAAAAh0cmFuc2ZlcgACASVOVUxTZDZIZ2Z1cE5wUVh2UHd0eHM5WUx3eHRmdHVhZWlCWW9CARgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA="; + byte[] decode = Base64.getDecoder().decode(base64); + CallContractData data = new CallContractData(); + data.parse(decode, 0); System.out.println(); } diff --git a/version b/version index 4db4b0359e..10c2c0c3d6 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.9.3 +2.10.0 From 5e049d4e07a25d2d8d5db54eb3e31ae5c4a99aa0 Mon Sep 17 00:00:00 2001 From: zhouwei1985 <251556768@qq.com> Date: Fri, 17 Dec 2021 20:12:06 +0800 Subject: [PATCH 283/304] Prod api (#647) * add getBalanceList * update getBalanceList --- .../src/main/java/io/nuls/provider/rpctools/LegderTools.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 4f2e1b6604..8cf627fe23 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -4,11 +4,11 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.rpctools.vo.AccountBalance; -import org.checkerframework.checker.units.qual.A; import java.math.BigInteger; import java.util.ArrayList; @@ -85,7 +85,7 @@ public Result> getBalanceList(int chainId, List coinDt int assetChainId = (int) map.get("chainId"); int assetId = (int) map.get("assetId"); String contractAddress = (String) map.get("contractAddress"); - if (assetId > 0) { + if (StringUtils.isBlank(contractAddress)) { AccountBalance accountBalance = getBalanceAndNonce(chainId, assetChainId, assetId, address).getData(); accountBalance.setAssetChainId(assetChainId); accountBalance.setAssetId(assetId); From c3b08503ae452ab1120de599597edaee02dfe41c Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 7 Jan 2022 14:02:38 +0800 Subject: [PATCH 284/304] Develop-v2.10.2 (#649) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../base/api/provider/block/BlockService.java | 1 + .../provider/block/BlockServiceForRpc.java | 5 + common/nuls-core-h2/pom.xml | 72 -- .../io/nuls/core/h2/common/BaseMapper.java | 104 --- .../interceptor/TransactionInterceptor.java | 77 -- .../transactional/annotation/PROPAGATION.java | 42 -- .../transactional/annotation/Transaction.java | 38 - .../java/io/nuls/core/h2/utils/Condition.java | 184 ----- .../core/h2/utils/DruidDataSourceBuilder.java | 10 - .../nuls/core/h2/utils/MybatisDbHelper.java | 37 - .../io/nuls/core/h2/utils/SearchOperator.java | 66 -- .../io/nuls/core/h2/utils/Searchable.java | 105 --- .../main/resources/mybatis/mybatis-config.xml | 93 --- .../java/io/nuls/core/h2/CreateTable.java | 103 --- .../src/test/java/io/nuls/core/h2/H2Test.java | 64 -- .../io/nuls/core/h2/dao/BaseDataService.java | 95 --- .../nuls/core/h2/dao/TransactionService.java | 35 - .../io/nuls/core/h2/dao/impl/BaseService.java | 52 -- .../h2/dao/impl/TransactionServiceImpl.java | 90 --- .../core/h2/dao/impl/mapper/CommonMapper.java | 34 - .../core/h2/dao/impl/mapper/CommonMapper.xml | 32 - .../h2/dao/impl/mapper/TransactionMapper.java | 21 - .../h2/dao/impl/mapper/TransactionMapper.xml | 39 - .../io/nuls/core/h2/entity/TransactionPO.java | 83 --- .../java/io/nuls/core/h2/entity/TxTable.java | 36 - .../src/test/resources/db_config.properties | 20 - .../mybatis/mapping/CommonMapper.xml | 32 - .../resources/mybatis/mybatis-config-bak.xml | 9 - .../src/test/resources/sql/schema-h2-bak.sql | 174 ----- .../src/test/resources/sql/schema-h2.sql | 0 common/nuls-core/pom.xml | 2 +- common/pom.xml | 1 - genesis-block_dev.json | 2 +- module/nuls-api/pom.xml | 4 + .../java/io/nuls/block/rpc/BlockResource.java | 42 +- .../io/nuls/cmd/client/CommandHandler.java | 2 + .../processor/block/RollbackProcessor.java | 97 +++ .../imp/RegisteredCrossChainServiceImpl.java | 1 + .../utils/validator/CrossTxValidator.java | 4 +- .../test/java/io/nuls/test/TxSendTester.java | 693 +++++++++++++++++- module/nuls-smart-contract/pom.xml | 6 + .../nrc20/ContractNRC20TokenSendTxTest.java | 2 +- module/nuls-transaction/pom.xml | 5 - testfile | 0 version | 2 +- 45 files changed, 846 insertions(+), 1770 deletions(-) delete mode 100644 common/nuls-core-h2/pom.xml delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/common/BaseMapper.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/interceptor/TransactionInterceptor.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/PROPAGATION.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/Transaction.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Condition.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/DruidDataSourceBuilder.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/MybatisDbHelper.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/SearchOperator.java delete mode 100644 common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Searchable.java delete mode 100644 common/nuls-core-h2/src/main/resources/mybatis/mybatis-config.xml delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/CreateTable.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/H2Test.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/BaseDataService.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/TransactionService.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/BaseService.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/TransactionServiceImpl.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.xml delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.xml delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TransactionPO.java delete mode 100644 common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TxTable.java delete mode 100644 common/nuls-core-h2/src/test/resources/db_config.properties delete mode 100644 common/nuls-core-h2/src/test/resources/mybatis/mapping/CommonMapper.xml delete mode 100644 common/nuls-core-h2/src/test/resources/mybatis/mybatis-config-bak.xml delete mode 100644 common/nuls-core-h2/src/test/resources/sql/schema-h2-bak.sql delete mode 100644 common/nuls-core-h2/src/test/resources/sql/schema-h2.sql create mode 100644 module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/block/RollbackProcessor.java delete mode 100644 testfile diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockService.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockService.java index a0ad67c5f9..3a9d37fd42 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockService.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockService.java @@ -20,4 +20,5 @@ public interface BlockService { Result getBlockHeaderByLastHeight(GetBlockHeaderByLastHeightReq req); + Result rollback(GetBlockHeaderByHeightReq getBlockHeaderByHeightReq); } diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockServiceForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockServiceForRpc.java index 75d649a0d0..6aa0829c43 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockServiceForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/block/BlockServiceForRpc.java @@ -48,6 +48,11 @@ public Result getBlockHeaderByLastHeight(GetBlockHeaderByLastHe return _call("latestBlockHeaderPo", req, this::tranderBlockHeader); } + @Override + public Result rollback(GetBlockHeaderByHeightReq req) { + return _call("roll_back", req, this::tranderBlockHeader); + } + @Override protected Result call(String method, Object req, Function res) { return callRpc(ModuleE.BL.abbr, method, req, res); diff --git a/common/nuls-core-h2/pom.xml b/common/nuls-core-h2/pom.xml deleted file mode 100644 index c90c263b0b..0000000000 --- a/common/nuls-core-h2/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - common - io.nuls.v2 - 1.0.0-SNAPSHOT - - 4.0.0 - nuls-core-h2 - - - UTF-8 - 11 - 1.2.3 - - - - - - io.nuls.v2 - nuls-core - 1.0.0-SNAPSHOT - - - com.alibaba - druid - 1.1.19 - - - - org.mybatis - mybatis - 3.5.6 - - - com.github.pagehelper - pagehelper - 5.1.9 - - - - com.h2database - h2 - 1.4.196 - - - - - nuls-core-h2 - - - src/main/java - - **/*.xml - - true - - - src/test/java - - **/*.xml - - true - - - src/main/resources - - - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/common/BaseMapper.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/common/BaseMapper.java deleted file mode 100644 index 5bab74e772..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/common/BaseMapper.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.common; - - -import io.nuls.core.h2.utils.Searchable; - -import java.util.List; - - -/** - * mybatis基础查询类,封装了对象的基本查询方法, - * 以下方法sql实现方式,都需自行写在mapper.xml里 - * @author zhouwei - * - */ -public interface BaseMapper { - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int deleteByPrimaryKey(K key); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int insert(V record); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int insertSelective(V record); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - V selectByPrimaryKey(K key); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int updateByPrimaryKeySelective(V record); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int updateByPrimaryKeyWithBLOBs(V record); - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table block - * - * @mbg.generated - */ - int updateByPrimaryKey(V record); - - int batchInsert(List list); - - Long countAll(); - - List selectList(Searchable searchable); - - long selectCount(Searchable searchable); - - -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/interceptor/TransactionInterceptor.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/interceptor/TransactionInterceptor.java deleted file mode 100644 index e3c0fe30a4..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/interceptor/TransactionInterceptor.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * MIT License - *

- * Copyright (c) 2017-2019 nuls.io - *

- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *

- * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.interceptor; - -import io.nuls.core.h2.transactional.annotation.Transaction; -import io.nuls.core.h2.utils.MybatisDbHelper; -import io.nuls.core.core.annotation.Interceptor; -import io.nuls.core.core.inteceptor.base.BeanMethodInterceptor; -import io.nuls.core.core.inteceptor.base.BeanMethodInterceptorChain; -import org.apache.ibatis.session.SqlSession; - -import java.lang.reflect.Method; - -/** - * @author zhouwei - * @date 2017/10/13 - */ -@Interceptor(Transaction.class) -public class TransactionInterceptor implements BeanMethodInterceptor { - - private static ThreadLocal FLAG_HOLDER = new ThreadLocal() { - @Override - protected Boolean initialValue() { - return false; - } - }; - - @Override - public Object intercept(Transaction annotation, Object object, Method method, Object[] params, BeanMethodInterceptorChain interceptorChain) throws Throwable { - boolean flag = FLAG_HOLDER.get(); - Object result; - - if (!flag) { - SqlSession sqlSession = null; - try { - FLAG_HOLDER.set(true); - sqlSession = MybatisDbHelper.getSession(); - result = interceptorChain.execute(annotation, object, method, params); - sqlSession.commit(); - } catch (Exception e) { - if (sqlSession != null) { - sqlSession.rollback(); - } - throw e; - } finally { - if (sqlSession != null) { - MybatisDbHelper.close(sqlSession); - } - FLAG_HOLDER.remove(); - } - } else { - result = interceptorChain.execute(annotation, object, method, params); - } - return result; - } -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/PROPAGATION.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/PROPAGATION.java deleted file mode 100644 index 95de4715a2..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/PROPAGATION.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.transactional.annotation; - -/** - * - * @author zhouwei - * @date 2017/10/26 - */ -public enum PROPAGATION { - NONE("none"), - REQUIRED("required"), - INDEPENDENT("independent"); - - - PROPAGATION(String value) { - this.value = value; - } - - private String value; -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/Transaction.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/Transaction.java deleted file mode 100644 index 5b58f4faa4..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/transactional/annotation/Transaction.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.transactional.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Created by zhouwei on 2017/10/26. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.TYPE}) -public @interface Transaction { - PROPAGATION transactional() default PROPAGATION.REQUIRED; -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Condition.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Condition.java deleted file mode 100644 index ba1a18f9f8..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Condition.java +++ /dev/null @@ -1,184 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.utils; - -/** - * 封装sql查询条件赋值, - * prefix和endfix主要针对有时候查询条件需要在整条条件语句前后加上括号等情况时赋值调用 - * 如 (a.name is null or a.password is null) - * @author zhouwei - * - */ -public class Condition { - - public static final String AND = " and "; - - public static final String OR = " or "; - - /**查询字段*/ - private String key; - - /**查询值*/ - private Object value; - - /**查询逻辑运算符号 =, != , > , < 等*/ - private SearchOperator operator; - - /**查询链接符号,默认是and*/ - private String sqlSeparator = Condition.AND; - - /**查询条件前置符号*/ - private String prefix = ""; - - /**查询条件后置符号*/ - private String endfix = ""; - - public Condition() { - - } - - public Condition(String key, SearchOperator operator, Object value) { - if(value == null) { - value = ""; - } - this.key = key; - this.operator = operator; - this.value = valueFromOperator(operator, value); - } - - - public Condition(String sqlSeparator, String key, SearchOperator operator, Object value) { - if(value == null) { - value = ""; - } - this.sqlSeparator = sqlSeparator; - this.key = key; - this.operator = operator; - this.value = valueFromOperator(operator, value); - } - - public static Condition custom(String sql) { - Condition condition = new Condition(); - - condition.operator = SearchOperator.custom; - condition.value = sql; - return condition; - } - - /**根据运算逻辑符,校验value值*/ - public Object valueFromOperator(SearchOperator operator, Object value) { - if(value == null) { - value = ""; - } - if ("true".equals(value)) { - value = true; - } - if ("false".equals(value)) { - value = false; - } - - if (operator == SearchOperator.like || operator == SearchOperator.notLike) { - return "%" + value + "%"; - } - if (operator == SearchOperator.prefixLike || operator == SearchOperator.prefixNotLike) { - return value + "%"; - } - if (operator == SearchOperator.suffixLike || operator == SearchOperator.suffixNotLike) { - return "%" + value; - } - if (operator == SearchOperator.in || operator == SearchOperator.notIn) { - if (value instanceof String) { - return "(" + value + ")"; - } - } - return value; - } - - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - if(value == null) { - value = ""; - } - this.value = value; - } - - public SearchOperator getOperator() { - return operator; - } - - public void setOperator(SearchOperator operator) { - this.operator = operator; - } - - public String getSqlSeparator() { - return sqlSeparator; - } - - public void setSqlSeparator(String sqlSeparator) { - this.sqlSeparator = sqlSeparator; - } - - public String getPrefix() { - return prefix; - } - - public void setPrefix(String prefix) { - this.prefix = prefix; - } - - public String getEndfix() { - return endfix; - } - - public void setEndfix(String endfix) { - this.endfix = endfix; - } - - //获取查询条件 - public String getString() { - if(this.operator == null) { - this.operator = SearchOperator.eq; - } - - String keyStr = this.sqlSeparator + " " + this.prefix + this.key; - if("in".equals(this.operator.getSymbol()) || "not in".equals(this.operator.getSymbol())) { - return keyStr + " " + this.operator.getSymbol() + " (" + this.value + ")" + endfix; - }else { - return keyStr + " " + this.operator.getSymbol() + " " + this.value + endfix; - } - } - -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/DruidDataSourceBuilder.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/DruidDataSourceBuilder.java deleted file mode 100644 index 308934b347..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/DruidDataSourceBuilder.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.nuls.core.h2.utils; - -import com.alibaba.druid.pool.DruidDataSource; -import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory; - -public class DruidDataSourceBuilder extends UnpooledDataSourceFactory { - public DruidDataSourceBuilder() { - this.dataSource = new DruidDataSource(); - } -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/MybatisDbHelper.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/MybatisDbHelper.java deleted file mode 100644 index d971683617..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/MybatisDbHelper.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.nuls.core.h2.utils; - -import org.apache.ibatis.session.SqlSession; -import org.apache.ibatis.session.SqlSessionFactory; - -public class MybatisDbHelper { - - private static SqlSessionFactory sqlSessionFactory; - - private static ThreadLocal sessionHolder = new ThreadLocal<>(); - - - public static void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { - MybatisDbHelper.sqlSessionFactory = sqlSessionFactory; - } - - public static SqlSession getSession() { - SqlSession sqlSession = sessionHolder.get(); - if (sqlSession == null) { - sqlSession = sqlSessionFactory.openSession(false); - sessionHolder.set(sqlSession); - } - return sqlSession; - } - - public void commit() { - SqlSession sqlSession = sessionHolder.get(); - sqlSession.commit(); - } - - public static void close(SqlSession sqlSession) { - if (sqlSession == sessionHolder.get()) { - sqlSession.close(); - sessionHolder.remove(); - } - } -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/SearchOperator.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/SearchOperator.java deleted file mode 100644 index 8949c06d67..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/SearchOperator.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.utils; - -/** - * 查询操作符 - * - * @author zhouwei - * - */ -public enum SearchOperator { - eq("等于", "="), - ne("不等于", "!="), - gt("大于", ">"), - gte("大于等于", ">="), - lt("小于","<"), - lte("小于等于", "<="), - like("模糊匹配", "like"), - notLike("不匹配","not like"), - prefixLike("前缀模糊匹配", "like"), - prefixNotLike("前缀模糊不匹配", "not like"), - suffixLike("后缀模糊匹配", "like"), - suffixNotLike("后缀模糊不匹配", "not like"), - isNull("空", "is null"), - isNotNull("非空", "is not null"), - in("包含", "in"), - notIn("不包含", "not in"), - custom("自定义默认的", null); - - private final String info; - private final String symbol; - - SearchOperator(final String info, String symbol) { - this.info = info; - this.symbol = symbol; - } - - public String getInfo() { - return info; - } - - public String getSymbol() { - return symbol; - } -} diff --git a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Searchable.java b/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Searchable.java deleted file mode 100644 index 4dd6e7e79a..0000000000 --- a/common/nuls-core-h2/src/main/java/io/nuls/core/h2/utils/Searchable.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.utils; - -import java.util.ArrayList; -import java.util.List; - -/** - * dao查询接口,封装查询语句工具类 - * @author zoro - * - */ -public class Searchable { - - /** - * 查询连接符,如:= != like - */ - private List operators; - - public Searchable() { - operators = new ArrayList(); - } - - public Searchable(List operators) { - this.operators = operators; - } - - /** - * 添加查询条件 - * @param c - */ - public void addCondition(Condition c) { - this.operators.add(c); - } - - - public void addCondition(String key , SearchOperator operator, Object value) { - this.addCondition(new Condition(key,operator,value)); - } - - /** - * 根据key删除某个条件 - * @param key - */ - public void removeCondition(String key) { - Condition c = null; - for(int i=0; i(); - } - - public List getOperators() { - return operators; - } - - public void setOperators(List operators) { - this.operators = operators; - } -} diff --git a/common/nuls-core-h2/src/main/resources/mybatis/mybatis-config.xml b/common/nuls-core-h2/src/main/resources/mybatis/mybatis-config.xml deleted file mode 100644 index 9836162ec7..0000000000 --- a/common/nuls-core-h2/src/main/resources/mybatis/mybatis-config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/CreateTable.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/CreateTable.java deleted file mode 100644 index 01431c084b..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/CreateTable.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.nuls.h2; - - -import java.io.*; - -/** - * @author: Charlie - * @date: 2018/11/16 - */ -public class CreateTable { - - private static String path = "." + File.separator + "sql" + File.separator; - - private static String filenameTemp = null; - - public static void main(String[] args) { - - - - } - public static boolean createFile(String fileName,String filecontent){ - Boolean bool = false; - filenameTemp = path + fileName+".sql";//文件路径+名称+文件类型 - File file = new File(filenameTemp); - try { - //如果文件不存在,则创建新的文件 - if(!file.exists()){ - file.createNewFile(); - bool = true; - System.out.println("success create file,the file is "+filenameTemp); - //创建文件成功后,写入内容到文件里 - writeFileContent(filenameTemp, filecontent); - } - } catch (Exception e) { - e.printStackTrace(); - } - - return bool; - } - - /** - * 向文件中写入内容 - * @param filepath 文件路径与名称 - * @param newstr 写入的内容 - * @return - * @throws IOException - */ - public static boolean writeFileContent(String filepath,String newstr) throws IOException{ - Boolean bool = false; - String filein = newstr+"\r\n";//新写入的行,换行 - String temp = ""; - - FileInputStream fis = null; - InputStreamReader isr = null; - BufferedReader br = null; - FileOutputStream fos = null; - PrintWriter pw = null; - try { - File file = new File(filepath);//文件路径(包括文件名称) - //将文件读入输入流 - fis = new FileInputStream(file); - isr = new InputStreamReader(fis); - br = new BufferedReader(isr); - StringBuffer buffer = new StringBuffer(); - - //文件原有内容 - for(int i=0;(temp =br.readLine())!=null;i++){ - buffer.append(temp); - // 行与行之间的分隔符 相当于“\n” - buffer = buffer.append(System.getProperty("line.separator")); - } - buffer.append(filein); - - fos = new FileOutputStream(file); - pw = new PrintWriter(fos); - pw.write(buffer.toString().toCharArray()); - pw.flush(); - bool = true; - } catch (Exception e) { - // TODO: handle exception - e.printStackTrace(); - }finally { - //不要忘记关闭 - if (pw != null) { - pw.close(); - } - if (fos != null) { - fos.close(); - } - if (br != null) { - br.close(); - } - if (isr != null) { - isr.close(); - } - if (fis != null) { - fis.close(); - } - } - return bool; - } - -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/H2Test.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/H2Test.java deleted file mode 100644 index f66613a527..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/H2Test.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.nuls.core.h2; - -import io.nuls.core.h2.dao.impl.BaseService; -import io.nuls.core.h2.dao.impl.TransactionServiceImpl; -import io.nuls.h2.dao.TransactionService; -import org.apache.ibatis.io.Resources; -import org.apache.ibatis.session.SqlSessionFactoryBuilder; -import org.junit.Before; -import org.junit.Test; - -import java.io.InputStream; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -public class H2Test { - - @Before - public void before() throws Exception{ - String resource = "mybatis/mybatis-config.xml"; - InputStream in = Resources.getResourceAsStream(resource); - BaseService.sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); - //SessionManager.setSqlSessionFactory(sqlSessionFactory); - } - - @Test - public void init(){ - TransactionService ts = new TransactionServiceImpl(); - /* TransactionPo txPo = new TransactionPo(); - txPo.setAddress("address_ertyuighjk"); - txPo.setHash("hash_zxcvbnmasdfghjk"); - txPo.setAmount(800000L); - txPo.setState(0); - txPo.setType(1); - txPo.setTime(new Date().getTime()); - ts.saveTx(txPo);*/ - //ts.createTable("transaction", "transaction_index",128); - ts.createTxTables("transaction", "transaction_index",128); - } - - @Test - public void db(){ - String JDBC_URL = "jdbc:h2:file:./entity/nuls;INIT=RUNSCRIPT FROM 'classpath:sql/schema-h2-bak.sql';LOG=2;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=1;DATABASE_TO_UPPER=FALSE"; - //连接数据库时使用的用户名 - String USER = "sa"; - //连接数据库时使用的密码 - String PASSWORD = "26"; - String DRIVER_CLASS = "org.h2.Driver"; - try { - Class.forName(DRIVER_CLASS); - Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (SQLException e) { - e.printStackTrace(); - } - - - } -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/BaseDataService.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/BaseDataService.java deleted file mode 100644 index cb8c57508e..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/BaseDataService.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.h2.dao; - -import java.util.List; -import java.util.Map; - -/** - * @author zhouwei - * @date 2017/9/29 - */ -public interface BaseDataService { - - /** - * 单个数据存储 - * - * @param t 持久化数据 - * @return - */ - int save(T t); - - /** - * 批量存储 - * - * @param list 持久化数据集合 - * @return - */ - int save(List list); - - /** - * 修改数据 - * - * @param t 修改后持久化数据 - * @return - */ - int update(T t); - - int update(List list); - - /** - * 通过键值获取数据 - * - * @param k 数据的键值 - * @return - */ - T get(K k); - - /** - * 删除持久化数据 - * - * @param k 数据的键值 - * @return - */ - int delete(K k); - - /** - * @return all - */ - List getList(); - - /** - * @param params - * @return - */ - List getList(Map params); - - /** - * @return - */ - Long getCount(); - - List getPageList(Map params, int pageSize, int pageNumber, String orderBy); - -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/TransactionService.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/TransactionService.java deleted file mode 100644 index a06922a73f..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/TransactionService.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.nuls.h2.dao; - -import com.github.pagehelper.Page; -import io.nuls.h2.entity.TransactionPO; - -import java.util.List; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -public interface TransactionService { - - Page getTxs(String address, Integer type, Integer state, - Long startTime, Long endTime, int pageNum, int pageSize, String orderBy); - - int saveTx(TransactionPO txPo); - - int saveTxs(List txPoList); - - int deleteTx(TransactionPO txPo); - - - /** - * - * - * 初始化创建存储交易的表 - * @param tableName table name - * @param indexName table index name - * @param number number of tables 分表的数量 - */ - void createTable(String tableName, String indexName, int number); - - void createTxTables(String tableName, String indexName, int number); -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/BaseService.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/BaseService.java deleted file mode 100644 index ea32a4ee60..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/BaseService.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * MIT License - ** - * Copyright (c) 2017-2019 nuls.io - ** - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - ** - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - ** - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.core.h2.dao.impl; - -import io.nuls.core.h2.common.BaseMapper; -import org.apache.ibatis.session.SqlSessionFactory; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -public abstract class BaseService { - - public static SqlSessionFactory sqlSessionFactory; - - /* private Class mapperClass; - - public BaseService(Class mapperClass) { - this.mapperClass = mapperClass; - } - - private SqlSession getSession() { - return sqlSessionFactory.openSession(true); - } - - protected T getMapper() { - SqlSession session = getSession(); - return session.getMapper(mapperClass); - } - */ -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/TransactionServiceImpl.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/TransactionServiceImpl.java deleted file mode 100644 index 85ec81ba33..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/TransactionServiceImpl.java +++ /dev/null @@ -1,90 +0,0 @@ -package io.nuls.core.h2.dao.impl; - -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import io.nuls.core.h2.dao.impl.mapper.TransactionMapper; -import io.nuls.core.h2.utils.SearchOperator; -import io.nuls.core.h2.utils.Searchable; -import io.nuls.h2.dao.TransactionService; -import io.nuls.h2.entity.TransactionPO; -import io.nuls.h2.entity.TxTable; -import io.nuls.core.core.annotation.Service; -import org.apache.ibatis.session.SqlSession; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -@Service -public class TransactionServiceImpl extends io.nuls.core.h2.dao.impl.BaseService implements TransactionService { - - @Override - public Page getTxs(String address, Integer type, Integer state, Long startTime, Long endTime, int pageNumber, int pageSize, String orderBy) { - //数据库交易查询结果集 - List transactionList = new ArrayList<>(); - Searchable searchable = new Searchable(); - if (null != type) { - searchable.addCondition("type", SearchOperator.eq, type); - } - if (null != state) { - searchable.addCondition("state", SearchOperator.eq, state); - } - - //开启分页 - PageHelper.startPage(pageNumber, pageSize); - - - return null; - } - - @Override - public int saveTx(TransactionPO txPo) { - SqlSession sqlSession = sqlSessionFactory.openSession(); - int rs = sqlSession.getMapper(TransactionMapper.class).save(txPo); - sqlSession.commit(); - sqlSession.close(); - return rs; - } - - @Override - public int saveTxs(List txPoList) { - return 0; - } - - @Override - public int deleteTx(TransactionPO txPo) { - return 0; - } - - - @Override - public void createTable(String tableName, String indexName, int number) { - SqlSession sqlSession = sqlSessionFactory.openSession(); - TransactionMapper mapper = sqlSession.getMapper(TransactionMapper.class); - for (int i = 0; i <= number; i++) { - mapper.createTable(tableName + "_" + i, indexName + "_" + i); - } - sqlSession.commit(); - sqlSession.close(); - System.out.println("OK"); - } - - - @Override - public void createTxTables(String tableName, String indexName, int number) { - SqlSession sqlSession = sqlSessionFactory.openSession(); - TransactionMapper mapper = sqlSession.getMapper(TransactionMapper.class); - List list = new ArrayList<>(); - for (int i = 0; i <= number; i++) { - TxTable txTable = new TxTable(tableName + "_" + i, indexName + "_" + i); - list.add(txTable); - } - mapper.createTxTables(list); - sqlSession.commit(); - sqlSession.close(); - System.out.println("batch OK"); - } -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.java deleted file mode 100644 index a113a26fdf..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2017-2019 nuls.io - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package io.nuls.h2.dao.impl.mapper; - -import java.io.Serializable; - -/** - * mybatis查询组件使用,见sqlmap/commonMapper.xml - * @author hanchaoyong - */ -public interface CommonMapper { - -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.xml b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.xml deleted file mode 100644 index 17201af325..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/CommonMapper.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - ${item.sqlSeparator}${item.prefix} - - - ${item.value} - - - ${item.key} ${item.operator.symbol} - - - ${item.key} ${item.operator.symbol} - #{inItem} - - - ${item.key} ${item.operator.symbol} #{item.value} - - - ${item.endfix} - - - - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.java deleted file mode 100644 index e1bf31c109..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.nuls.core.h2.dao.impl.mapper; - -import io.nuls.core.h2.common.BaseMapper; -import io.nuls.h2.entity.TransactionPO; -import io.nuls.h2.entity.TxTable; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -public interface TransactionMapper extends BaseMapper { - - void createTable(@Param("tableName") String tableName, @Param("indexName") String indexName); - - void createTxTables(@Param("list") List list); - - int save(TransactionPO transactionPo); -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.xml b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.xml deleted file mode 100644 index 6e13b7cce6..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/dao/impl/mapper/TransactionMapper.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CREATE TABLE ${tableName} ( - ADDRESS VARCHAR(40) not null - primary key, - HASH VARCHAR(70) not null, - TYPE TINYINT not null, - AMOUNT BIGINT not null, - STATE TINYINT not null, - TIME BIGINT not null - ); - create index IF NOT EXISTS ${indexName} - on ${tableName} (ADDRESS); - - - - - CREATE TABLE IF NOT EXISTS ${tx.tableName} ( - ADDRESS VARCHAR(40) not null - primary key, - HASH VARCHAR(70) not null, - TYPE TINYINT not null, - AMOUNT BIGINT not null, - STATE TINYINT not null, - TIME BIGINT not null - ); - create index IF NOT EXISTS ${tx.indexName} - on ${tx.tableName} (ADDRESS); - - - - - insert into TRANSACTION_888 (address, hash, `type`, amount, state, `time`) - values - (#{address}, #{hash}, #{type}, #{amount}, #{state}, #{time}) - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TransactionPO.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TransactionPO.java deleted file mode 100644 index f5626eee31..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TransactionPO.java +++ /dev/null @@ -1,83 +0,0 @@ -package io.nuls.h2.entity; - -/** - * @author: Charlie - * @date: 2018/11/14 - */ -public class TransactionPO { - - private String address; - - private String hash; - - private Integer type; - - private Long amount; - - /** - * 0:转出, 1:转入, 2:冻结 - */ - private Integer state; - - private Long time; - - - - /** - * 以账户地址来分表储存 - * 交易地址的hashCode 与 100 取模 - * 得到本条数据存在哪张表里面 - * @return - */ - public int getTableIndex(){ - return this.address.hashCode() % 100; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getHash() { - return hash; - } - - public void setHash(String hash) { - this.hash = hash; - } - - public Integer getType() { - return type; - } - - public void setType(Integer type) { - this.type = type; - } - - public Integer getState() { - return state; - } - - public void setState(Integer state) { - this.state = state; - } - - public Long getTime() { - return time; - } - - public void setTime(Long time) { - this.time = time; - } - - public Long getAmount() { - return amount; - } - - public void setAmount(Long amount) { - this.amount = amount; - } -} diff --git a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TxTable.java b/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TxTable.java deleted file mode 100644 index c97475183d..0000000000 --- a/common/nuls-core-h2/src/test/java/io/nuls/core/h2/entity/TxTable.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.nuls.h2.entity; - -/** - * @author: Charlie - * @date: 2018/11/18 - */ -public class TxTable { - private String tableName; - - private String indexName; - - public TxTable(){ - - } - - public TxTable(String tableName, String indexName) { - this.tableName = tableName; - this.indexName = indexName; - } - - public String getTableName() { - return tableName; - } - - public void setTableName(String tableName) { - this.tableName = tableName; - } - - public String getIndexName() { - return indexName; - } - - public void setIndexName(String indexName) { - this.indexName = indexName; - } -} diff --git a/common/nuls-core-h2/src/test/resources/db_config.properties b/common/nuls-core-h2/src/test/resources/db_config.properties deleted file mode 100644 index 276ce22468..0000000000 --- a/common/nuls-core-h2/src/test/resources/db_config.properties +++ /dev/null @@ -1,20 +0,0 @@ - -#h2 database -druid.driverClassName=org.h2.Driver -druid.url=jdbc:h2:file:./data/nuls;INIT=RUNSCRIPT FROM 'classpath:sql/schema-h2.sql';LOG=2;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=1;DATABASE_TO_UPPER=FALSE -druid.username=sa -druid.password=26 - -druid.initialSize=10 -druid.minIdle=10 -druid.maxActive=50 -druid.maxWait=10000 -druid.timeBetweenEvictionRunsMillis=60000 -druid.minEvictableIdleTimeMillis=300000 -druid.poolPreparedStatements=true -druid.maxPoolPreparedStatementPerConnectionSize=20 -druid.defaultAutoCommit=true -druid.validationQuery=select 1 - -#mybatis.mapper -mybatis.mapper=io.nuls.h2.dao.impl.mapper \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/resources/mybatis/mapping/CommonMapper.xml b/common/nuls-core-h2/src/test/resources/mybatis/mapping/CommonMapper.xml deleted file mode 100644 index cfd736ca18..0000000000 --- a/common/nuls-core-h2/src/test/resources/mybatis/mapping/CommonMapper.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - ${item.sqlSeparator}${item.prefix} - - - ${item.value} - - - ${item.key} ${item.operator.symbol} - - - ${item.key} ${item.operator.symbol} - #{inItem} - - - ${item.key} ${item.operator.symbol} #{item.value} - - - ${item.endfix} - - - - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/resources/mybatis/mybatis-config-bak.xml b/common/nuls-core-h2/src/test/resources/mybatis/mybatis-config-bak.xml deleted file mode 100644 index 825724751e..0000000000 --- a/common/nuls-core-h2/src/test/resources/mybatis/mybatis-config-bak.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/resources/sql/schema-h2-bak.sql b/common/nuls-core-h2/src/test/resources/sql/schema-h2-bak.sql deleted file mode 100644 index f387a29993..0000000000 --- a/common/nuls-core-h2/src/test/resources/sql/schema-h2-bak.sql +++ /dev/null @@ -1,174 +0,0 @@ - -CREATE TABLE IF NOT EXISTS `account` ( - `address` varchar(40) NOT NULL, - `create_time` bigint(14) NOT NULL, - `alias` varchar(100) DEFAULT NULL, - `pub_key` varbinary(100) DEFAULT NULL, - `pri_key` varbinary(100) DEFAULT NULL, - `encrypted_pri_key` varbinary(100) DEFAULT NULL, - `extend` varbinary(1024) DEFAULT NULL, - `status` INT DEFAULT 0, - PRIMARY KEY (`address`) -) ; - -CREATE TABLE IF NOT EXISTS `punish_log` ( - `id` varchar(32) NOT NULL, - `address` varchar(40) NOT NULL, - `type` int(1) NOT NULL, - `height` bigint(14) NOT NULL, - `round_index` bigint(14) NOT NULL, - `time` bigint(14) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `block_header` ( - `hash` varchar(70) NOT NULL, - `height` bigint(14) NOT NULL, - `pre_hash` varchar(70) DEFAULT NULL, - `merkle_hash` varchar(70) NOT NULL, - `create_time` bigint(14) NOT NULL, - `consensus_address` varchar(40) DEFAULT NULL, - `tx_count` int(5) NOT NULL, - `round_index` bigint(14) NOT NULL, - `scriptSig` varbinary(1024) DEFAULT NULL, - `extend` varbinary(1024) NOT NULL, - `size` int(9) DEFAULT NULL, - PRIMARY KEY (`hash`), - UNIQUE KEY `block_height_idx` (`height`) -) ; - -CREATE TABLE IF NOT EXISTS `agent` ( - `id` varchar(70) NOT NULL, - `agent_address` varchar(40) NOT NULL, - `agent_name` varchar(50) NOT NULL, - `block_height` bigint(18) NOT NULL, - `packing_address` varchar(40) NOT NULL, - `deposit` bigint(18) NOT NULL, - `remark` varchar(255) NOT NULL, - `del_height` bigint(18) DEFAULT 0, - `status` INT DEFAULT 0, - `tx_hash` varchar(70) NOT NULL, - `start_time` bigint(14) NOT NULL, - `commission_rate` decimal(14,2) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `deposit` ( - `id` varchar(70) NOT NULL, - `address` varchar(40) NOT NULL, - `agent_id` varchar(70) NOT NULL, - `deposit` bigint(18) NOT NULL, - `status` int(1) DEFAULT NULL, - `del_height` bigint(18) DEFAULT 0, - `time` bigint(14) DEFAULT NULL, - `block_height` bigint(14) DEFAULT NULL, - `tx_hash` varchar(70) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `node` ( - `id` VARCHAR(30) NOT NULL, - `ip` varchar(20) NOT NULL, - `port` int(6) NOT NULL, - `last_time` bigint(20) NOT NULL, - `last_fail_time` bigint(20) NOT NULL, - `fail_count` int(1) NOT NULL, - `status` int(1) NOT NULL, - `magic_num` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `node_group` ( - `name` varchar(30) NOT NULL, - PRIMARY KEY (`name`) -) ; - -CREATE TABLE IF NOT EXISTS `node_group_relation` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `node_id` varchar(30) NOT NULL, - `group_id` varchar(30) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `sub_chain` ( - `id` varchar(30) NOT NULL, - `creator_address` varchar(40) NOT NULL, - `tx_hash` varchar(70) NOT NULL, - `g_block` varbinary(1024) NOT NULL, - `g_block_hash` varchar(70) NOT NULL, - `g_merkle_hash` varchar(70) NOT NULL, - `g_block_header` varbinary(1024) NOT NULL, - `title` varchar(255) NOT NULL, - `sign` varbinary(1024) NOT NULL, - `address_prefix` int(5) NOT NULL, - PRIMARY KEY (`id`) -) ; - -CREATE TABLE IF NOT EXISTS `transaction` ( - `hash` varchar(70) NOT NULL, - `tx_index` int(5) NOT NULL, - `type` int(5) NOT NULL, - `create_time` bigint(15) NOT NULL, - `block_height` bigint(15) NOT NULL, - `remark` varchar(100) DEFAULT NULL, - `fee` bigint(19) NOT NULL, - `txData` varbinary(307200) DEFAULT NULL, - `scriptSig` varbinary(255) DEFAULT NULL, - `size` int(9) DEFAULT NULL, - PRIMARY KEY (`hash`) -) ; - -CREATE TABLE IF NOT EXISTS `transaction_local` ( - `hash` varchar(70) NOT NULL, - `tx_index` int(5) NOT NULL, - `type` int(5) NOT NULL, - `create_time` bigint(15) NOT NULL, - `block_height` bigint(15) NOT NULL, - `remark` varchar(100) DEFAULT NULL, - `fee` bigint(19) NOT NULL, - `transferType` int(1) DEFAULT NULL, - `txData` BLOB DEFAULT NULL, - `coinData` BLOB DEFAULT NULL, - `scriptSig` varbinary(255) DEFAULT NULL, - `size` int(9) DEFAULT NULL, - `txStatus` tinyint(1) DEFAULT NULL, - PRIMARY KEY (`hash`) -) ; - -CREATE TABLE IF NOT EXISTS `tx_account_relation` ( - `tx_hash` varchar(70) NOT NULL, - `address` varchar(40) NOT NULL, - PRIMARY KEY (`tx_hash`, `address`) -) ; - -CREATE TABLE IF NOT EXISTS `utxo_input` ( - `tx_hash` varchar(70) NOT NULL, - `in_index` int(5) NOT NULL, - `from_hash` varchar(70) NOT NULL, - `from_index` int(5) NOT NULL, - PRIMARY KEY (`tx_hash`,`in_index`), - UNIQUE KEY `from_idx` (`from_hash`,`from_index`) -) ; - -CREATE TABLE IF NOT EXISTS `utxo_output` ( - `tx_hash` varchar(70) NOT NULL, - `out_index` int(5) NOT NULL, - `value` bigint(18) NOT NULL, - `lock_time` bigint(20) DEFAULT NULL, - `status` tinyint(1) NOT NULL, - `script` varbinary(1024) NOT NULL, - `address` varchar(40) NOT NULL, - PRIMARY KEY (`tx_hash`,`out_index`) -) ; - -CREATE TABLE IF NOT EXISTS `alias` ( - `alias` varchar(40) NOT NULL, - `address` varchar(40) NOT NULL, - `status` tinyint(1) DEFAULT NULL, - PRIMARY KEY (`alias`), - UNIQUE KEY `alias_address_idx` (`address`) -) ; - -create index IF NOT EXISTS block_height_idx on transaction(block_height); -create index IF NOT EXISTS status_idx on transaction_local(txStatus); -create index IF NOT EXISTS addres_idx on utxo_output(address); \ No newline at end of file diff --git a/common/nuls-core-h2/src/test/resources/sql/schema-h2.sql b/common/nuls-core-h2/src/test/resources/sql/schema-h2.sql deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/common/nuls-core/pom.xml b/common/nuls-core/pom.xml index cc86db185c..b29eba9aaf 100644 --- a/common/nuls-core/pom.xml +++ b/common/nuls-core/pom.xml @@ -95,7 +95,7 @@ junit junit - 4.12 + 4.13.1 compile diff --git a/common/pom.xml b/common/pom.xml index 63dd37d0f6..6e258657ce 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -14,7 +14,6 @@ nuls-core - nuls-core-h2 nuls-core-rpc nuls-core-rockdb nuls-base diff --git a/genesis-block_dev.json b/genesis-block_dev.json index e6dc069c74..74e38b2c66 100644 --- a/genesis-block_dev.json +++ b/genesis-block_dev.json @@ -3,7 +3,7 @@ "time": "1531152", "txs": [ { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", "amount": 1000000000000000, "lockTime": 0 }, diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index afca37df71..5b0d9ea0ba 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -42,6 +42,10 @@ io.nuls.v2 nuls-base-api-provider + + org.mybatis + mybatis + diff --git a/module/nuls-block/src/main/java/io/nuls/block/rpc/BlockResource.java b/module/nuls-block/src/main/java/io/nuls/block/rpc/BlockResource.java index 4edbf376da..f7254aa649 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/rpc/BlockResource.java +++ b/module/nuls-block/src/main/java/io/nuls/block/rpc/BlockResource.java @@ -477,6 +477,42 @@ public Response getBlockByHeight(Map map) { } } + /** + * 根据高度获取区块 + * + * @param map + * @return + */ + @CmdAnnotation(cmd = "roll_back", version = 1.0, description = "Roll back a number of blocks") + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "height", requestType = @TypeDescriptor(value = long.class), parameterDes = "区块高度") + }) + @ResponseData(name = "返回值", description = "successful", responseType = @TypeDescriptor(value = String.class)) + public Response rollback(Map map) { + try { + int chainId = Integer.parseInt(map.get(Constants.CHAIN_ID).toString()); + ChainContext context = ContextManager.getContext(chainId); + if (context == null) { + return success(); + } + long count = Long.parseLong(map.get("height").toString()); + Block block = service.getLatestBlock(chainId); + for (long height = block.getHeader().getHeight(); height > block.getHeader().getHeight() - count; height--) { + service.rollbackBlock(chainId, height, true); + } + Map responseData = new HashMap<>(2); + if (block == null) { + return success(responseData); + } + responseData.put("value", "success"); + return success(responseData); + } catch (Exception e) { + COMMON_LOG.error("", e); + return failed(e.getMessage()); + } + } + /** * 根据hash获取区块头 * @@ -499,7 +535,7 @@ public Response getBlockHeaderByHash(Map map) { NulsHash hash = NulsHash.fromHex(map.get("hash").toString()); BlockHeader blockHeader = service.getBlockHeader(chainId, hash); Map responseData = new HashMap<>(2); - if(blockHeader == null) { + if (blockHeader == null) { return success(responseData); } responseData.put("value", RPCUtil.encode(blockHeader.serialize())); @@ -532,7 +568,7 @@ public Response getBlockHeaderPoByHash(Map map) { NulsHash hash = NulsHash.fromHex(map.get("hash").toString()); BlockHeaderPo blockHeader = service.getBlockHeaderPo(chainId, hash); Map responseData = new HashMap<>(2); - if(blockHeader == null) { + if (blockHeader == null) { return success(responseData); } responseData.put("value", RPCUtil.encode(blockHeader.serialize())); @@ -565,7 +601,7 @@ public Response getBlockByHash(Map map) { NulsHash hash = NulsHash.fromHex(map.get("hash").toString()); Block block = service.getBlock(chainId, hash); Map responseData = new HashMap<>(2); - if(block == null) { + if (block == null) { return success(responseData); } responseData.put("value", RPCUtil.encode(block.serialize())); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java index d573082d69..d5ef521773 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/CommandHandler.java @@ -31,6 +31,7 @@ import io.nuls.cmd.client.processor.account.*; import io.nuls.cmd.client.processor.block.GetBestBlockHeaderProcessor; import io.nuls.cmd.client.processor.block.GetBlockHeaderProcessor; +import io.nuls.cmd.client.processor.block.RollbackProcessor; import io.nuls.cmd.client.processor.consensus.*; import io.nuls.cmd.client.processor.contract.*; import io.nuls.cmd.client.processor.crosschain.*; @@ -119,6 +120,7 @@ public void afterPropertiesSet() throws NulsException { register(getBean(GetBestBlockHeaderProcessor.class)); //get block header by hash or height register(getBean(GetBlockHeaderProcessor.class)); + register(getBean(RollbackProcessor.class)); //get tx by hash register(getBean(GetTxProcessor.class)); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/block/RollbackProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/block/RollbackProcessor.java new file mode 100644 index 0000000000..42b14cb677 --- /dev/null +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/block/RollbackProcessor.java @@ -0,0 +1,97 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.cmd.client.processor.block; + + +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.block.BlockService; +import io.nuls.base.api.provider.block.facade.BlockHeaderData; +import io.nuls.base.api.provider.block.facade.GetBlockHeaderByHashReq; +import io.nuls.base.api.provider.block.facade.GetBlockHeaderByHeightReq; +import io.nuls.base.api.provider.block.facade.GetBlockHeaderByLastHeightReq; +import io.nuls.cmd.client.CommandBuilder; +import io.nuls.cmd.client.CommandResult; +import io.nuls.cmd.client.processor.CommandGroup; +import io.nuls.cmd.client.processor.CommandProcessor; +import io.nuls.core.core.annotation.Component; + +import java.util.regex.Matcher; + +/** + * @author: Charlie + */ +@Component +public class RollbackProcessor implements CommandProcessor { + + + BlockService blockService = ServiceManager.get(BlockService.class); + + @Override + public String getCommand() { + return "rollback"; + } + + @Override + public CommandGroup getGroup() { + return CommandGroup.Block; + } + + @Override + public String getHelp() { + CommandBuilder builder = new CommandBuilder(); + builder.newLine(getCommandDescription()) + .newLine("\t block count - Required"); + return builder.toString(); + } + + @Override + public String getCommandDescription() { + return "rollback -- Roll back a number of blocks"; + } + + @Override + public boolean argsValidate(String[] args) { + checkArgsNumber(args,1); + return true; + } + + @Override + public CommandResult execute(String[] args) { + String hash = args[1]; + Matcher matcher = IS_NUMBERIC.matcher(args[1]); + Long height = Long.parseLong(args[1]); + if(height>1000){ + return CommandResult.getFailed("The count is too big"); + } + Result result = blockService.rollback(new GetBlockHeaderByHeightReq(height)); + + if(result.isFailed()){ + return CommandResult.getFailed(result); + } + return CommandResult.getSuccess(result); + } +} diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java index ef3324a60f..8da5113e7e 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/srorage/imp/RegisteredCrossChainServiceImpl.java @@ -60,6 +60,7 @@ public RegisteredChainMessage get() { public boolean canCross(int assetChainId, int assetId) { RegisteredChainMessage all = get(); if(all == null || all.getChainInfoList() == null){ + Log.error("数据为空了"); return false; } return all.getChainInfoList().stream(). diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java index f7bc957e84..51c72674a5 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/utils/validator/CrossTxValidator.java @@ -92,9 +92,9 @@ public boolean validateTx(Chain chain, Transaction tx, BlockHeader blockHeader) if (AddressTool.validContractAddress(from.getAddress(),AddressTool.getChainIdByAddress(from.getAddress()))) { continue; } - + //todo if (!registeredCrossChainService.canCross(from.getAssetsChainId(),from.getAssetsId())){ - throw new NulsException(NulsCrossChainErrorCode.ASSET_NOT_REG_CROSS_CHAIN); +// throw new NulsException(NulsCrossChainErrorCode.ASSET_NOT_REG_CROSS_CHAIN); } } diff --git a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java index ef177e621a..ae7bbb5fbd 100644 --- a/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java +++ b/module/nuls-cross-chain/cross-chain/src/test/java/io/nuls/test/TxSendTester.java @@ -28,32 +28,708 @@ public class TxSendTester { @Test public void test() throws Exception { - NoUse.mockModule(); +// NoUse.mockModule(); String prikey = ""; ECKey ecKey = ECKey.fromPrivate(HexUtil.decode(prikey)); - byte[] address = AddressTool.getAddress(ecKey.getPubKey(), 2); + byte[] address = AddressTool.getAddress(ecKey.getPubKey(), 1); ResetChainInfoTransaction tx = new ResetChainInfoTransaction(); tx.setTime(System.currentTimeMillis() / 1000); ResetChainInfoData txData = new ResetChainInfoData(); - txData.setJson("{\"chainId\":2,\"chainName\":\"nuls2\",\"minAvailableNodeNum\":0,\"maxSignatureCount\":0,\"signatureByzantineRatio\":0,\"addressPrefix\":\"tNULS\",\"assetInfoList\":[{\"assetId\":1,\"symbol\":\"NULS\",\"assetName\":\"\",\"usable\":true,\"decimalPlaces\":8},{\"assetId\":8,\"symbol\":\"T1\",\"assetName\":\"t1\",\"usable\":true,\"decimalPlaces\":9}],\"verifierList\":[],\"registerTime\":0}"); + txData.setJson("{\n" + + " \"chainId\":1,\n" + + " \"chainName\":\"nuls\",\n" + + " \"minAvailableNodeNum\":0,\n" + + " \"maxSignatureCount\":100,\n" + + " \"signatureByzantineRatio\":66,\n" + + " \"addressPrefix\":\"NULS\",\n" + + " \"assetInfoList\":[\n" + + " {\n" + + " \"assetId\":1,\n" + + " \"symbol\":\"NULS\",\n" + + " \"assetName\":\"\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":18,\n" + + " \"symbol\":\"LCC\",\n" + + " \"assetName\":\"LCC\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":6\n" + + " },\n" + + " {\n" + + " \"assetId\":4,\n" + + " \"symbol\":\"OBEE\",\n" + + " \"assetName\":\"ObeeNetwork\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":5,\n" + + " \"symbol\":\"Galan\",\n" + + " \"assetName\":\"GAN\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":25,\n" + + " \"symbol\":\"TPU\",\n" + + " \"assetName\":\"TPUSaas\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":33,\n" + + " \"symbol\":\"Goblin\",\n" + + " \"assetName\":\"Goblin\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":45,\n" + + " \"symbol\":\"DATT\",\n" + + " \"assetName\":\"DATT\",\n" + + " \"usable\":false,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":13,\n" + + " \"symbol\":\"DATT\",\n" + + " \"assetName\":\"DATT\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":55,\n" + + " \"symbol\":\"BCNT\",\n" + + " \"assetName\":\"BCNToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":19,\n" + + " \"symbol\":\"PETC\",\n" + + " \"assetName\":\"PetCoin\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":17,\n" + + " \"symbol\":\"LCC\",\n" + + " \"assetName\":\"LCC\",\n" + + " \"usable\":false,\n" + + " \"decimalPlaces\":6\n" + + " },\n" + + " {\n" + + " \"assetId\":77,\n" + + " \"symbol\":\"CROS\",\n" + + " \"assetName\":\"cros_test\",\n" + + " \"usable\":false,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":57,\n" + + " \"symbol\":\"Goblin\",\n" + + " \"assetName\":\"Goblin\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":21,\n" + + " \"symbol\":\"EHT\",\n" + + " \"assetName\":\"Earhart\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":87,\n" + + " \"symbol\":\"TRG\",\n" + + " \"assetName\":\"TokenRepublic\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":81,\n" + + " \"symbol\":\"VIBK\",\n" + + " \"assetName\":\"Vibook\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":98,\n" + + " \"symbol\":\"BNF\",\n" + + " \"assetName\":\"BonFi\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":114,\n" + + " \"symbol\":\"KTLYO\",\n" + + " \"assetName\":\"KatalyoToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":124,\n" + + " \"symbol\":\"SNEGY\",\n" + + " \"assetName\":\"Sonergy\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":133,\n" + + " \"symbol\":\"FMP\",\n" + + " \"assetName\":\"BitsFlea_Point\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":4\n" + + " },\n" + + " {\n" + + " \"assetId\":128,\n" + + " \"symbol\":\"CBT\",\n" + + " \"assetName\":\"CBToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":90,\n" + + " \"symbol\":\"ARCH\",\n" + + " \"assetName\":\"ARCHCOIN\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":10\n" + + " },\n" + + " {\n" + + " \"assetId\":103,\n" + + " \"symbol\":\"MCP\",\n" + + " \"assetName\":\"MyCryptoPlay\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":96,\n" + + " \"symbol\":\"CBLT\",\n" + + " \"assetName\":\"Cobalt\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":91,\n" + + " \"symbol\":\"JTT\",\n" + + " \"assetName\":\"JustTest\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":112,\n" + + " \"symbol\":\"RYIP\",\n" + + " \"assetName\":\"RYIPLATINUM\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":117,\n" + + " \"symbol\":\"MES\",\n" + + " \"assetName\":\"MesChain\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":113,\n" + + " \"symbol\":\"NIA\",\n" + + " \"assetName\":\"Nydronia\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":107,\n" + + " \"symbol\":\"EGR\",\n" + + " \"assetName\":\"EgorasToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":116,\n" + + " \"symbol\":\"GHD\",\n" + + " \"assetName\":\"Giftedhands\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":131,\n" + + " \"symbol\":\"ZERO\",\n" + + " \"assetName\":\"ZERO_Token\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":130,\n" + + " \"symbol\":\"FAR\",\n" + + " \"assetName\":\"FarSwap\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":99,\n" + + " \"symbol\":\"RVX\",\n" + + " \"assetName\":\"RiveX\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":136,\n" + + " \"symbol\":\"GGTK\",\n" + + " \"assetName\":\"GGToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":146,\n" + + " \"symbol\":\"NABOX\",\n" + + " \"assetName\":\"Nabox_Token\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":132,\n" + + " \"symbol\":\"SHD\",\n" + + " \"assetName\":\"SHIELD\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":143,\n" + + " \"symbol\":\"XNINJA\",\n" + + " \"assetName\":\"XNinjaSwap\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":119,\n" + + " \"symbol\":\"PEET\",\n" + + " \"assetName\":\"Peet\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":149,\n" + + " \"symbol\":\"TICO\",\n" + + " \"assetName\":\"TICOEXToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":148,\n" + + " \"symbol\":\"JDI\",\n" + + " \"assetName\":\"JDIToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":147,\n" + + " \"symbol\":\"KFI\",\n" + + " \"assetName\":\"KeFiToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":152,\n" + + " \"symbol\":\"ARTDECO\",\n" + + " \"assetName\":\"ARTDECO\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":150,\n" + + " \"symbol\":\"TROP\",\n" + + " \"assetName\":\"Interop\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":151,\n" + + " \"symbol\":\"NFD\",\n" + + " \"assetName\":\"NonFungibleDefi\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":157,\n" + + " \"symbol\":\"SMG\",\n" + + " \"assetName\":\"SmaugsNFT\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":158,\n" + + " \"symbol\":\"ICH\",\n" + + " \"assetName\":\"Ideachaincoin\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":159,\n" + + " \"symbol\":\"KSF\",\n" + + " \"assetName\":\"KesefFinance\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":139,\n" + + " \"symbol\":\"Vox\",\n" + + " \"assetName\":\"Vox\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":162,\n" + + " \"symbol\":\"TOM\",\n" + + " \"assetName\":\"TOM\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":156,\n" + + " \"symbol\":\"PTE\",\n" + + " \"assetName\":\"Peet\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":160,\n" + + " \"symbol\":\"APPN\",\n" + + " \"assetName\":\"APPN\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":163,\n" + + " \"symbol\":\"DEFIY\",\n" + + " \"assetName\":\"DeFiFarms\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":164,\n" + + " \"symbol\":\"LIVENFT\",\n" + + " \"assetName\":\"LiveNFTToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":170,\n" + + " \"symbol\":\"TXO\",\n" + + " \"assetName\":\"Texo\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":169,\n" + + " \"symbol\":\"8BIT\",\n" + + " \"assetName\":\"8bit\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":168,\n" + + " \"symbol\":\"FIRE\",\n" + + " \"assetName\":\"GreenFire\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":167,\n" + + " \"symbol\":\"VNT\",\n" + + " \"assetName\":\"VENTION\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":171,\n" + + " \"symbol\":\"GMX\",\n" + + " \"assetName\":\"GameX\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":172,\n" + + " \"symbol\":\"CCFI\",\n" + + " \"assetName\":\"CloudCoinFinance\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":176,\n" + + " \"symbol\":\"PRB\",\n" + + " \"assetName\":\"PremiumBlock\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":179,\n" + + " \"symbol\":\"NFTC\",\n" + + " \"assetName\":\"NFTCircle\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":2\n" + + " },\n" + + " {\n" + + " \"assetId\":174,\n" + + " \"symbol\":\"XYL\",\n" + + " \"assetName\":\"xyl\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":175,\n" + + " \"symbol\":\"BDAM\",\n" + + " \"assetName\":\"BDAMCoin\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":177,\n" + + " \"symbol\":\"DNF\",\n" + + " \"assetName\":\"DNFT\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":178,\n" + + " \"symbol\":\"WHX\",\n" + + " \"assetName\":\"WHITEX\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":183,\n" + + " \"symbol\":\"ZOZO\",\n" + + " \"assetName\":\"ZoZotoken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":181,\n" + + " \"symbol\":\"EMC2\",\n" + + " \"assetName\":\"EINSTEINTOKEN\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":9\n" + + " },\n" + + " {\n" + + " \"assetId\":180,\n" + + " \"symbol\":\"MVH\",\n" + + " \"assetName\":\"MovieCash\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":191,\n" + + " \"symbol\":\"GCC\",\n" + + " \"assetName\":\"GLOBALCOMMCOIN\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":194,\n" + + " \"symbol\":\"OLD\",\n" + + " \"assetName\":\"Oldtimer\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":198,\n" + + " \"symbol\":\"DGP\",\n" + + " \"assetName\":\"DGPAYMENT\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":225,\n" + + " \"symbol\":\"ZINA\",\n" + + " \"assetName\":\"Zinari\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":226,\n" + + " \"symbol\":\"FUSE\",\n" + + " \"assetName\":\"Niftyfuse\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":196,\n" + + " \"symbol\":\"AVN\",\n" + + " \"assetName\":\"AVNRichToken\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":234,\n" + + " \"symbol\":\"LAND\",\n" + + " \"assetName\":\"Landshare\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":237,\n" + + " \"symbol\":\"Alkom\",\n" + + " \"assetName\":\"Alkom\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":235,\n" + + " \"symbol\":\"TIC\",\n" + + " \"assetName\":\"TreasureIsland\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":187,\n" + + " \"symbol\":\"XTMC\",\n" + + " \"assetName\":\"XTMCSWAPAPP\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":18\n" + + " },\n" + + " {\n" + + " \"assetId\":242,\n" + + " \"symbol\":\"VOLT\",\n" + + " \"assetName\":\"Volterra\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":240,\n" + + " \"symbol\":\"UV\",\n" + + " \"assetName\":\"Unityventures\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":8\n" + + " },\n" + + " {\n" + + " \"assetId\":0,\n" + + " \"symbol\":\"OxSGD\",\n" + + " \"assetName\":\"OxSGD\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":4\n" + + " },\n" + + " {\n" + + " \"assetId\":276,\n" + + " \"symbol\":\"OxSGD\",\n" + + " \"assetName\":\"OxSGD\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":4\n" + + " },\n" + + " {\n" + + " \"assetId\":281,\n" + + " \"symbol\":\"OxUSD\",\n" + + " \"assetName\":\"OxUSD\",\n" + + " \"usable\":true,\n" + + " \"decimalPlaces\":4\n" + + " }\n" + + " ],\n" + + " \"verifierList\":[ \n" + + " \"NULSd6Hga4mQkHAnQdhUiMmv1V3kQ4a84JaSb\",\n" + + "\"NULSd6HgU65xXgWR2jrXEKwXivQj6WCBYVhoA\",\n" + + "\"NULSd6HgX1bNap7DxUftecymeB7VjdHz4HvKU\",\n" + + "\"NULSd6HgetcSk3cZz5ps92mQUzaptUxv6WRcT\",\n" + + "\"NULSd6HgY2LiyEDvMjsHqZpyajxSXEgk1mcxs\",\n" + + "\"NULSd6HgapEiSk1PMYBZtbWBRMcCyjm7Vgjri\",\n" + + "\"NULSd6HgirJR5i3SkwADF96QHP6uhLvBHE2yQ\",\n" + + "\"NULSd6Hghpud5oDJ6FPXNwLiiU8xryqE1sYmv\",\n" + + "\"NULSd6HgaSJ21zt1Qppb4rbuec2AkuaQLgnk8\",\n" + + "\"NULSd6Hgb7SV891gcu1FB2V6pRDvSUcfd75o6\",\n" + + "\"NULSd6HgbJmUep4wyreghHDk28AusSCrSuDMF\",\n" + + "\"NULSd6HgcR5ouh1aDU3oktEoJGQConj4sr1KR\",\n" + + "\"NULSd6HghM5wyVjegBaDsCkW9dvBnkuucejxw\",\n" + + "\"NULSd6HgapV9vQS5NKCaJSMWa2uHgWxX13nGJ\",\n" + + "\"NULSd6HgjKGXg6dk1K7vagf4kLDktf7DwsoXg\",\n" + + "\"NULSd6HgZcP5H8Fg4y5Wf8AwiZ8nVhVZ4jBcS\",\n" + + "\"NULSd6HgbhkGyxzvvosnRYWgnLAusCuWrtLNT\",\n" + + "\"NULSd6HgU7dsGGbvWZBFcnLjGiJHz7ZA8x6to\",\n" + + "\"NULSd6HghrhYaMdRcskPkM8vB65XX9v88EJEv\",\n" + + "\"NULSd6HgXaZUYDy8DCopGMwEPnervgKbtqFDS\",\n" + + "\"NULSd6HgcC78MaUw7tDo88rmg61tHCvZoEaXP\",\n" + + "\"NULSd6Hga7pDvwJeQ3ufen3rubekkDFtWNZDg\",\n" + + "\"NULSd6HgYLo5hPNcgqKtNtpA8dhC3Y37v5Ra9\",\n" + + "\"NULSd6Hghv5CQdQwfjATtw76MuWTnP7DT4xER\",\n" + + "\"NULSd6HgZeQRuhxXZbCAELYHNVEm8bvSULR27\",\n" + + "\"NULSd6HgiCCVyZvs162WNS6Gzvf22aFN8Y47P\",\n" + + "\"NULSd6HgdcJnk1R18vS73DGj38EtWMMdipogY\",\n" + + "\"NULSd6HgWTKbD7YBAAvP7NjKik4nRWuSw76Ny\",\n" + + "\"NULSd6HgYTwiDWmisFDqgDzcK8Sf197G3L28Z\",\n" + + "\"NULSd6Hgj56Sotnk28qnRWoeQ2Ew3KuPAXnpg\",\n" + + "\"NULSd6HgjHLnaPdyPYADSZy9UqewvJFEkAUP1\",\n" + + "\"NULSd6HgbcWZAxSGf38JxX9opKwgVuC6B8Hin\",\n" + + "\"NULSd6HgjF8iCrjpymFy6LVRmEjQG8AFayFDi\",\n" + + "\"NULSd6HgcUQ4paNjBiRSXevwpYGhVVnvwdks8\",\n" + + "\"NULSd6HgfVbGkmqCD1ycCPj2ZMJ7hYLrBu6eM\",\n" + + "\"NULSd6Hghpg9Nk7BNrsAccV49FAVyvMqCVWnv\",\n" + + "\"NULSd6HgX4mBo5v9nwESRwFn9Ns9LUqYAE91L\",\n" + + "\"NULSd6Hgh1HF2wmtRRTZTwYiVUGVriJnm8Ucs\",\n" + + "\"NULSd6HgZDQifPEXXTmUa2RzLLCrS4kzauf5C\",\n" + + "\"NULSd6HgVsgcK6Mt4cPyyPBZ9umZnacb7bAr7\",\n" + + "\"NULSd6HgdMZ6fzUp4my8VkascvWx2LcKJNFMp\",\n" + + "\"NULSd6HgVtmHWQsKidqHuTB1cV9kGPVciXNXk\",\n" + + "\"NULSd6HgVrfwxnmh7ycBddC8NDQ5LqDz6vK69\",\n" + + "\"NULSd6Hge5eGAaryhAQtZjHxSNw1qwDtHARHJ\",\n" + + "\"NULSd6HgcXGFs46UbyNDUaLuE4AviF5GCTbyh\",\n" + + "\"NULSd6HgeLusFRaAJNkR9ofm5Rx32F1whpKe4\",\n" + + "\"NULSd6Hgd81Ce2HqUmgFxwLvwPNXknGbaaNMu\",\n" + + "\"NULSd6HggQ1xMawWTMWyPtKWciMfR4CTavLrp\",\n" + + "\"NULSd6HgWvZUZTRzTURM8hRmWBvpzVmHTB1gn\",\n" + + "\"NULSd6HghnX3XnuFFTLfzx6TEzMsX6RKeZWsu\",\n" + + "\"NULSd6HgW5vV415MNoY2JTCaxa7NhcaHSo8Fg\",\n" + + "\"NULSd6Hgezi6y7LCRW4iLrXELyvH36fN12wHK\",\n" + + "\"NULSd6HgctDviYK6yDBKJd6WGhRRkByLhUrva\",\n" + + "\"NULSd6HgZbtnPKbxWAhg994HNQG76wSs4RAPq\",\n" + + "\"NULSd6HgZBcw88QkNen1wdM7EVaJ595kkHddN\",\n" + + "\"NULSd6HgiQ5CTko7Zx59vcBeHyxPAJQ7P8T48\",\n" + + "\"NULSd6HgXfnDCizGjLfBxrkV59WN4uTGzHMdi\",\n" + + "\"NULSd6HggpjM8RB5WbjzLc7bLvQDjHuRcongN\",\n" + + "\"NULSd6HgZZiqYSDiyz3xGN4tzNhgrho9EN59H\",\n" + + "\"NULSd6HgdNumANdW3LxB7NEZd4oa7otR4LkPN\",\n" + + "\"NULSd6HgcpKcxYFkeRDg8MJrSEF1A1SkH2KRM\",\n" + + "\"NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn\",\n" + + "\"NULSd6Hgh5VupJJ7Evabv9QQ2Pst8mjPS4dXT\",\n" + + "\"NULSd6HgWyGYLML5CadRiND5RJghYc5vbiycJ\",\n" + + "\"NULSd6HgfLT3nmbxtHZm8CsiTwjs1HxXJtmDT\",\n" + + "\"NULSd6HgggfeRCjx5Ka4LVRug4i6q5ymfaag8\",\n" + + "\"NULSd6HgYE7AKJmkAoPtjXxSHPkqxzmyPebkT\",\n" + + "\"NULSd6HghcXawGBzwaufEoHchhWJrsJwSsitY\",\n" + + "\"NULSd6HgfwTZKqKVnV3awiDKnEbF7RjZufWCN\",\n" + + "\"NULSd6Hgfd4H28qGCrzGdhgX2G5PKj6rejsUG\",\n" + + "\"NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz\",\n" + + "\"NULSd6HgefSM6RkURTdWu1i9mB96ufGfxqg71\",\n" + + "\"NULSd6HghMrN2DTVmcBgiomKhvUETkg6c6N8E\",\n" + + "\"NULSd6HgZivXvXs4su6cuyFzgtBTkk9fTqxyy\",\n" + + "\"NULSd6HgWWEmZSxffcNVHc1kjbebkejWjVtpV\",\n" + + "\"NULSd6HgbBmFpomGuvmSa76dirtzAt2rWKn4w\",\n" + + "\"NULSd6HgXNrFd9NJMF5ExuSnGteKgHSKsfmXX\",\n" + + "\"NULSd6HgiYHK1WWeNWk1Dx1wUb1usQXQXic11\",\n" + + "\"NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11\",\n" + + "\"NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22\",\n" + + "\"NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33\",\n" + + "\"NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44\",\n" + + "\"NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55\"\n" + + " ],\n" + + " \"registerTime\":0\n" + + " }"); tx.setTxData(txData.serialize()); CoinData coinData = new CoinData(); CoinFrom from = new CoinFrom(); from.setAddress(address); - from.setAmount(BigInteger.valueOf(1000000)); - from.setAssetsChainId(2); + from.setAmount(BigInteger.valueOf(30000000)); + from.setAssetsChainId(1); from.setAssetsId(1); from.setLocked((byte) 0); - from.setNonce(HexUtil.decode("ace23d6fad9760d0")); + from.setNonce(HexUtil.decode("7bf509a99dbeceb5")); coinData.getFrom().add(from); CoinTo to = new CoinTo(); to.setAddress(address); to.setAmount(BigInteger.ZERO); to.setAssetsId(1); - to.setAssetsChainId(2); + to.setAssetsChainId(1); to.setLockTime(0); coinData.getTo().add(to); @@ -71,7 +747,8 @@ public void test() throws Exception { tx.setTransactionSignature(transactionSignature.serialize()); Log.info(tx.getHash().toHex()); Log.info(HexUtil.encode(tx.serialize())); - sendTx(2, HexUtil.encode(tx.serialize())); + Log.info("" + tx.size()); +// sendTx(2, HexUtil.encode(tx.serialize())); } @SuppressWarnings("unchecked") diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index b008d2c164..d2b01d588d 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -138,6 +138,12 @@ sdk4j 1.1.6.RELEASE test + + + org.mybatis + mybatis + + diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index f2f9db2971..5c02fd791d 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -67,7 +67,7 @@ public void createContract() throws Exception { String symbol = "KongQiBi"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; - Map params = this.makeCreateParams(sender, contractCode, "kqb", remark, name, symbol, amount, decimals); + Map params = this.makeCreateParams("tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", contractCode, "kqb", remark, name, symbol, amount, decimals); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); diff --git a/module/nuls-transaction/pom.xml b/module/nuls-transaction/pom.xml index fd41bb3cff..72c3b9e522 100644 --- a/module/nuls-transaction/pom.xml +++ b/module/nuls-transaction/pom.xml @@ -11,11 +11,6 @@ nuls-transaction - - io.nuls.v2 - nuls-core-h2 - ${core.version} - com.google.code.gson gson diff --git a/testfile b/testfile deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/version b/version index 10c2c0c3d6..c6436a8536 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.10.0 +2.10.2 From 35a5017a6558e564156bb87c680af93d483bcb89 Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 10 Jan 2022 17:29:26 +0800 Subject: [PATCH 285/304] 2.10.2 (#650) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * remove vm log Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../src/main/java/io/nuls/core/core/ioc/ScanUtil.java | 2 +- module/nuls-api/pom.xml | 4 ++-- module/nuls-smart-contract/pom.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/common/nuls-core/src/main/java/io/nuls/core/core/ioc/ScanUtil.java b/common/nuls-core/src/main/java/io/nuls/core/core/ioc/ScanUtil.java index a83256a3d5..bb9863bd2f 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/core/ioc/ScanUtil.java +++ b/common/nuls-core/src/main/java/io/nuls/core/core/ioc/ScanUtil.java @@ -131,7 +131,7 @@ private static void findClassJar(String packageName, String pathName, Listnuls-base-api-provider - org.mybatis - mybatis + io.nuls.v2 + nuls-core-h2 diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index d2b01d588d..c373b2a62e 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -140,8 +140,8 @@ test - org.mybatis - mybatis + io.nuls.v2 + nuls-core-h2 From 0c691fe07ef1924203e3889b503594b350c9e2c2 Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 19 Jan 2022 00:21:32 +0800 Subject: [PATCH 286/304] Release/beta (#652) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * add api blackAddressList * add api blackAddressList * 提交协议升级配置 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- build/gen_languages/en.properties | 5 + build/gen_languages/en_all.properties | 5 + build/gen_languages/zh-CHS.properties | 7 +- .../java/io/nuls/core/constant/TxType.java | 4 + config/nuls.beta.ncf | 1 + config/nuls.ncf | 1 + module.ncf | 59 ++- .../io/nuls/account/AccountBootstrap.java | 3 + .../io/nuls/account/config/AccountConfig.java | 10 + .../constant/AccountStorageConstant.java | 1 + .../account/helper/AccountBlockHelper.java | 110 ++++++ .../model/bo/tx/txdata/AccountBlockData.java | 97 +++++ .../nuls/account/model/po/AccountBlockPO.java | 90 +++++ .../nuls/account/rpc/cmd/AccountBlockCmd.java | 117 ++++++ .../storage/AccountBlockStorageService.java | 46 +++ .../impl/AccountBlockStorageServiceImpl.java | 129 +++++++ .../tx/v11/AccountLockProcessorV11.java | 187 ++++++++++ .../tx/v11/AccountUnlockProcessorV11.java | 187 ++++++++++ .../src/main/resources/protocol-config.json | 25 ++ .../java/io/nuls/account/tx/Transfer.java | 335 +++++++++++++++++- .../test/java/io/nuls/account/tx/TxTest.java | 8 +- module/nuls-api/pom.xml | 4 + .../java/io/nuls/provider/ApiBootstrap.java | 6 +- .../io/nuls/provider/api/config/Config.java | 1 + .../io/nuls/provider/api/config/Context.java | 4 + .../controller/TransactionController.java | 9 +- .../model/dto/ContractTokenInfoDto.java | 12 +- .../nuls/provider/utils/BlackListUtils.java | 58 +++ .../nuls/chain/test/RegCrossChainTxTest.java | 125 ++++--- .../src/main/resources/versions.json | 5 + module/nuls-smart-contract/pom.xml | 4 + .../nuls/contract/helper/ContractHelper.java | 14 + .../contract/model/bo/ContractTokenInfo.java | 10 + .../model/dto/ContractTokenInfoDto.java | 13 +- .../io/nuls/contract/tx/base/BaseQuery.java | 30 +- .../tx/multyasset/ContractMultyAssetTest.java | 12 +- .../nrc20/ContractNRC20TokenSendTxTest.java | 6 +- .../tx/pocm/ContractPOCMSendTxTest.java | 55 ++- module/nuls-transaction/module.ncf | 2 +- .../nuls/transaction/constant/TxConfig.java | 10 + .../nuls/transaction/constant/TxContext.java | 2 + .../transaction/constant/TxErrorCode.java | 1 + .../transaction/rpc/call/AccountCall.java | 20 ++ .../service/impl/TxServiceImpl.java | 20 ++ .../transaction/utils/BlackListUtils.java | 61 ++++ .../io/nuls/transaction/utils/TxUtil.java | 14 + .../main/resources/languages/en.properties | 1 + .../io/nuls/transaction/tx/TxSignTest.java | 156 ++++++-- .../src/main/java/io/nuls/test/Test.java | 21 +- version | 2 +- 50 files changed, 1948 insertions(+), 157 deletions(-) create mode 100644 module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountBlockData.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountLockProcessorV11.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountUnlockProcessorV11.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/utils/BlackListUtils.java create mode 100644 module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java diff --git a/build/gen_languages/en.properties b/build/gen_languages/en.properties index b57edd1b9b..d9ea63f4b3 100644 --- a/build/gen_languages/en.properties +++ b/build/gen_languages/en.properties @@ -374,3 +374,8 @@ tx_0036=Multi-sign account is not exist tx_0037=Transaction verify failed tx_0038=Contract transaction verify failed tx_0039=The transaction was confirmed +tx_0040=System transactions cannot circulated directly through the network +tx_0041=System contract transactions cannot circulated directly through the network +tx_0042=Block Contains multiple unique transactions +tx_0043=Exist gas transactions without smart contract return transactions +tx_0044=Block address diff --git a/build/gen_languages/en_all.properties b/build/gen_languages/en_all.properties index b57edd1b9b..b73d64c8ab 100644 --- a/build/gen_languages/en_all.properties +++ b/build/gen_languages/en_all.properties @@ -374,3 +374,8 @@ tx_0036=Multi-sign account is not exist tx_0037=Transaction verify failed tx_0038=Contract transaction verify failed tx_0039=The transaction was confirmed +tx_0040=System transactions cannot circulated directly through the network +tx_0041=System contract transactions cannot circulated directly through the network +tx_0042=Block Contains multiple unique transactions +tx_0043=Exist gas transactions without smart contract return transactions +tx_0044=Block address \ No newline at end of file diff --git a/build/gen_languages/zh-CHS.properties b/build/gen_languages/zh-CHS.properties index 68e00466eb..38de6a50f7 100644 --- a/build/gen_languages/zh-CHS.properties +++ b/build/gen_languages/zh-CHS.properties @@ -374,4 +374,9 @@ tx_0035=\u591A\u91CD\u7B7E\u540D\u4EA4\u6613\u7684\u53D1\u4EF6\u4EBA\u53EA\u6709 tx_0036=\u4E0D\u5B58\u5728\u591A\u91CD\u7B7E\u540D\u5E10\u6237 tx_0037=\u4EA4\u6613\u9A8C\u8BC1\u5931\u8D25 tx_0038=\u5408\u7EA6\u4EA4\u6613\u9A8C\u8BC1\u5931\u8D25 -tx_0039=\u4EA4\u6613\u5DF2\u786E\u8BA4 \ No newline at end of file +tx_0039=\u4EA4\u6613\u5DF2\u786E\u8BA4 +tx_0040=System transactions cannot circulated directly through the network +tx_0041=System contract transactions cannot circulated directly through the network +tx_0042=Block Contains multiple unique transactions +tx_0043=Exist gas transactions without smart contract return transactions +tx_0044=Block address \ No newline at end of file diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java index 9209031ca7..be13e47d08 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java @@ -292,4 +292,8 @@ public class TxType { public static final int RESET_CHAIN_INFO = 62; + public static final int BLOCK_ACCOUNT = 63; + + public static final int UNBLOCK_ACCOUNT = 64; + } diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index 9ee78bdbbd..b4ddfcd0c4 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -43,6 +43,7 @@ maxOutCount=20 [account] +blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt keystoreFolder=/keystore/backup [block] diff --git a/config/nuls.ncf b/config/nuls.ncf index 20b3034b7f..bdc68b3ebd 100644 --- a/config/nuls.ncf +++ b/config/nuls.ncf @@ -41,6 +41,7 @@ maxInCount=300 maxOutCount=20 [account] +blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx keystoreFolder=/keystore/backup [block] diff --git a/module.ncf b/module.ncf index df147a7647..5072899777 100644 --- a/module.ncf +++ b/module.ncf @@ -1,9 +1,9 @@ [global] encoding=UTF-8 language=en -logPath=/Users/niels/workspace/nuls-v2/Logs -logLevel=INFO -dataPath=/Users/niels/workspace/nuls-v2/data +logPath=../../../../Logs +logLevel=DEBUG +dataPath=../../../../data #默认本链ID chainId=2 #地址前缀 @@ -33,7 +33,7 @@ crossPort=18002 #魔法参数 packetMagic=20200120 #种子节点 -selfSeedIps=149.129.251.238:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 @@ -41,10 +41,9 @@ maxInCount=100 #最大出网连接数 maxOutCount=20 - [account] +blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt keystoreFolder=/keystore/backup -dependent=protocol-update [block] #区块最大字节数 @@ -63,7 +62,7 @@ singleDownloadTimeout=15000 cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) genesisBlockPath=genesis-block.json -dependent=cross-chain,smart-contract,protocol-update +dependent=cross-chain,protocol-update,smart-contract [consensus] #种子节点列表 @@ -90,10 +89,16 @@ initTime=1594483200 deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [transaction] dependent=protocol-update,smart-contract +blackListPath=/Users/zhouwei/data/nuls-v2/account + +[ledger] +dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas @@ -104,28 +109,23 @@ dependent=protocol-update [chain-manager] dependent=smart-contract,protocol-update + [public-service] #public-service模块对外的rpc端口号 rpcPort=18003 #数据库url地址 -databaseUrl=127.0.0.1 +databaseUrl=192.168.1.204 #数据库端口号 databasePort=27017 #连接池最大数 maxAliveConnect=20 #连接最大等待时间 maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=tNULSeBaMuKuKY4UstKpXvGxd7LEvEBtd3NXAG,tNULSeBaMns1C6kTePxcQS7rGAu37foAwAMpri -ambassadorNodeAddress=tNULSeBaMhWyQBHc54oXLXB13WhJsyrTobMYYU,tNULSeBaMtCmUuBHMDAjKVSoVBsAEvLoWCspyE -mappingAddress=tNULSeBaMqTC6rnF56dnJqz1Fb8gMdVxGGvxSf,tNULSeBaMkroWKUKj6X4zURBE3V47VZwMJdHPm -businessAddress=tNULSeBaMnf1qfX7emr14att2DsSb2TSPcPBSL -teamAddress=tNULSeBaMqTvaS2NEEZfdrmPzoRvd8zN6T57LH -communityAddress=tNULSeBaMm9RQLKKUBXKJ1rQ7g4iobmWAB73mS -syncCoinBase=false -syncAddress= -dependent=smart-contract,cross-chain +dependent=smart-contract,cross-chain,chain-manager [cross-chain] #跨链节点链接的最小值 @@ -142,26 +142,21 @@ verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgF mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract -[nuls-module-explorer] -apiModuleApi=http://127.0.0.1:18003/ -explorerPort=1999 -explorerHost=0.0.0.0 - -[nuls-module-web-wallet] -apiModuleApi=http://127.0.0.1:18003/ -webWalletPort=18006 -webWalletHost=0.0.0.0 - -[protocol-update] -#每隔多少个区块统计一次协议占比 -interval=10 -dependent=smart-contract,cross-chain - [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port serverPort=18004 +dependent=smart-contract,cross-chain,chain-manager + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=10 dependent=smart-contract,cross-chain + +[cmd-client] +clientVersion=2.7.0 diff --git a/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java b/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java index 91ff1b20a2..5ac136e740 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java +++ b/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java @@ -194,6 +194,9 @@ private void initDB() throws Exception { if (!RocksDBService.existTable(AccountStorageConstant.DB_NAME_MULTI_SIG_ACCOUNT)) { RocksDBService.createTable(AccountStorageConstant.DB_NAME_MULTI_SIG_ACCOUNT); } + if (!RocksDBService.existTable(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK)) { + RocksDBService.createTable(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK); + } } catch (Exception e) { if (!DBErrorCode.DB_TABLE_EXIST.equals(e.getMessage())) { LoggerUtil.LOG.error(e.getMessage()); diff --git a/module/nuls-account/src/main/java/io/nuls/account/config/AccountConfig.java b/module/nuls-account/src/main/java/io/nuls/account/config/AccountConfig.java index 0456d4d51e..c25fc5eba2 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/config/AccountConfig.java +++ b/module/nuls-account/src/main/java/io/nuls/account/config/AccountConfig.java @@ -44,6 +44,16 @@ public class AccountConfig implements ModuleConfig { private String blackHolePublicKey; + private String blockAccountManager; + + public String getBlockAccountManager() { + return blockAccountManager; + } + + public void setBlockAccountManager(String blockAccountManager) { + this.blockAccountManager = blockAccountManager; + } + public String getBlackHolePublicKey() { return blackHolePublicKey; } diff --git a/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java b/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java index 17ac2b0260..9845621c45 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java +++ b/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java @@ -54,5 +54,6 @@ public interface AccountStorageConstant { * Account Module Configuration Information Table Name */ String DB_NAME_ACCOUNT_CONGIF = "config"; + String DB_NAME_ACCOUNT_BLOCK = "account_block"; } diff --git a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java new file mode 100644 index 0000000000..8ddea68f0a --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java @@ -0,0 +1,110 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.account.helper; + +import io.nuls.account.config.AccountConfig; +import io.nuls.account.config.NulsConfig; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.txdata.AccountBlockData; +import io.nuls.account.util.TxUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.Transaction; +import io.nuls.core.basic.Result; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.List; + +import static io.nuls.account.util.TxUtil.getSuccess; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +@Component +public class AccountBlockHelper { + + @Autowired + private AccountConfig accountConfig; + + + public Result blockAccountTxValidate(Chain chain, Transaction tx) throws NulsException { + CoinData coinData = TxUtil.getCoinData(tx); + List listFrom = coinData.getFrom(); + List listTo = coinData.getTo(); + if (null == listFrom || listFrom.size() == 0) { + return Result.getFailed(AccountErrorCode.TX_COINFROM_NOT_FOUND); + } + int chainId = chain.getConfig().getChainId(); + if (listFrom.size() > 1) { + return Result.getFailed(AccountErrorCode.COINDATA_IS_INCOMPLETE); + } + CoinFrom coinFrom = listFrom.get(0); + String fromStr = AddressTool.getStringAddressByBytes(coinFrom.getAddress()); + if (!fromStr.equals(accountConfig.getBlockAccountManager())) { + chain.getLogger().error("error: not manager"); + return Result.getFailed(AccountErrorCode.COINDATA_IS_INCOMPLETE); + } + AccountBlockData txData = new AccountBlockData(); + txData.parse(tx.getTxData(), 0); + String[] addresses = txData.getAddresses(); + if (addresses.length == 0) { + chain.getLogger().error("empty addresses"); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + for (String addr : addresses) { + if (addr.equals(accountConfig.getBlockAccountManager())) { + chain.getLogger().error("error: manager can not in it"); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + } + int addrChainId = AddressTool.getChainIdByAddress(coinFrom.getAddress()); + //黑洞地址不能发起转账 + if(AddressTool.isBlackHoleAddress(NulsConfig.BLACK_HOLE_PUB_KEY,addrChainId,coinFrom.getAddress())){ + return Result.getFailed(AccountErrorCode.ADDRESS_TRANSFER_BAN); + } + // 发送方from中地址对应的链id必须是发起链的id + if (chainId != addrChainId) { + return Result.getFailed(AccountErrorCode.CHAINID_ERROR); + } + + if (null == listTo || listTo.size() == 0) { + return Result.getFailed(AccountErrorCode.TX_COINTO_NOT_FOUND); + } + for (CoinTo coinTo : listTo) { + int toAddrChainId = AddressTool.getChainIdByAddress(coinTo.getAddress()); + // 接收方to中地址对应的链id必须发起链id + if (chainId != toAddrChainId) { + return Result.getFailed(AccountErrorCode.CHAINID_ERROR); + } + } + return getSuccess(); + + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountBlockData.java b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountBlockData.java new file mode 100644 index 0000000000..50c7845e77 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountBlockData.java @@ -0,0 +1,97 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.bo.tx.txdata; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public class AccountBlockData extends BaseNulsData { + + private String[] addresses; + + private byte[] extend; + + public AccountBlockData() { + } + + @Override + public int size() { + int size = 0; + // length + size += SerializeUtils.sizeOfUint16(); + for (String address : addresses) { + size += SerializeUtils.sizeOfString(address); + } + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint16(addresses.length); + for (String address : addresses) { + stream.writeString(address); + } + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + int length = byteBuffer.readUint16(); + String[] _addresses = new String[length]; + for (int i = 0; i < length; i++) { + _addresses[i] = byteBuffer.readString(); + } + this.addresses = _addresses; + this.extend = byteBuffer.readByLengthByte(); + } + + public String[] getAddresses() { + return addresses; + } + + public void setAddresses(String[] addresses) { + this.addresses = addresses; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java new file mode 100644 index 0000000000..da204d0154 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java @@ -0,0 +1,90 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.po; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public class AccountBlockPO extends BaseNulsData { + + private byte[] address; + + private byte[] extend; + + public AccountBlockPO() { + } + + public AccountBlockPO(byte[] address) { + this.address = address; + } + + @Override + public int size() { + int size = 0; + size += Address.ADDRESS_LENGTH; + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(address); + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + this.extend = byteBuffer.readByLengthByte(); + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java new file mode 100644 index 0000000000..1f4d80e1ab --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java @@ -0,0 +1,117 @@ +package io.nuls.account.rpc.cmd; + +import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.constant.RpcParameterNameConstant; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.storage.AccountBlockStorageService; +import io.nuls.account.util.manager.ChainManager; +import io.nuls.base.basic.AddressTool; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.rpc.cmd.BaseCmd; +import io.nuls.core.rpc.model.*; +import io.nuls.core.rpc.model.message.Response; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static io.nuls.account.util.LoggerUtil.LOG; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +@Component +public class AccountBlockCmd extends BaseCmd { + + @Autowired + private AccountBlockStorageService accountBlockStorageService; + @Autowired + private ChainManager chainManager; + + @CmdAnnotation(cmd = "ac_isBlockAccount", version = 1.0, description = "检查账户是否锁定") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "地址") + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", valueType = Boolean.class, description = "账户是否锁定") + })) + public Response isBlockAccount(Map params) { + boolean isBlock; + Chain chain = null; + String address; + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + Object addressObj = params == null ? null : params.get("address"); + try { + // check parameters + if (params == null || chainIdObj == null || addressObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + address = (String) addressObj; + isBlock = accountBlockStorageService.existAccount(AddressTool.getAddress(address)); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + Map result = new HashMap<>(AccountConstant.INIT_CAPACITY_2); + result.put("value", isBlock); + return success(result); + } + + @CmdAnnotation(cmd = "ac_getAllBlockAccount", version = 1.0, description = "查询所有锁定账户") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class)) + public Response getAllBlockAccount(Map params) { + Chain chain = null; + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + try { + // check parameters + if (params == null || chainIdObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + List accountList = accountBlockStorageService.getAccountList(); + if (accountList == null) { + accountList = Collections.EMPTY_LIST; + } + List collect = accountList.stream().map(a -> AddressTool.getStringAddressByBytes(a.getAddress())).collect(Collectors.toList()); + Map result = new HashMap<>(AccountConstant.INIT_CAPACITY_2); + result.put("value", collect); + return success(result); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + } + + private void errorLogProcess(Chain chain, Exception e) { + if (chain == null) { + LOG.error(e); + } else { + chain.getLogger().error(e); + } + } + +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java new file mode 100644 index 0000000000..bde8877d2a --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java @@ -0,0 +1,46 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.storage; + +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.model.po.AccountPO; +import io.nuls.base.data.Address; + +import java.util.List; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public interface AccountBlockStorageService { + + boolean saveAccountList(List accountList); + boolean removeAccountList(List accountList); + List getAccountList(); + AccountBlockPO getAccount(byte[] address); + boolean existAccount(byte[] address); + +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java new file mode 100644 index 0000000000..50758681d7 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java @@ -0,0 +1,129 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.storage.impl; + +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.constant.AccountStorageConstant; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.storage.AccountBlockStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.core.basic.InitializingBean; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.rockdb.service.RocksDBService; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author: qinyifeng + */ +@Component +public class AccountBlockStorageServiceImpl implements AccountBlockStorageService, InitializingBean { + + @Override + public void afterPropertiesSet() { + } + + @Override + public boolean saveAccountList(List accountPOList) { + if (null == accountPOList || accountPOList.size() == 0) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + Map accountPoMap = new HashMap<>(); + try { + for (AccountBlockPO po : accountPOList) { + //序列化对象为byte数组存储 + accountPoMap.put(po.getAddress(), po.serialize()); + } + return RocksDBService.batchPut(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, accountPoMap); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_SAVE_BATCH_ERROR); + } + } + @Override + public boolean removeAccountList(List accountList) { + if (null == accountList || accountList.isEmpty()) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + try { + List addressBytesList = accountList.stream().map(a -> AddressTool.getAddress(a)).collect(Collectors.toList()); + return RocksDBService.deleteKeys(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, addressBytesList); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_DELETE_ERROR); + } + } + @Override + public List getAccountList() { + List accountPOList = new ArrayList<>(); + try { + List list = RocksDBService.valueList(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK); + if (list != null) { + for (byte[] value : list) { + AccountBlockPO accountPo = new AccountBlockPO(); + //将byte数组反序列化为AccountPo返回 + accountPo.parse(value, 0); + accountPOList.add(accountPo); + } + } + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_QUERY_ERROR); + } + return accountPOList; + } + @Override + public AccountBlockPO getAccount(byte[] address) { + byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, address); + if (null == accountBytes) { + return null; + } + AccountBlockPO accountPo = new AccountBlockPO(); + try { + //将byte数组反序列化为AccountPo返回 + accountPo.parse(accountBytes, 0); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_QUERY_ERROR); + } + return accountPo; + } + @Override + public boolean existAccount(byte[] address) { + byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, address); + if (null == accountBytes) { + return false; + } + return true; + } + +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountLockProcessorV11.java b/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountLockProcessorV11.java new file mode 100644 index 0000000000..e0d9288d48 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountLockProcessorV11.java @@ -0,0 +1,187 @@ +package io.nuls.account.tx.v11; + +import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.helper.AccountBlockHelper; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.txdata.AccountBlockData; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.service.AliasService; +import io.nuls.account.storage.AccountBlockStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.account.util.manager.ChainManager; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.*; +import java.util.stream.Collectors; + +import static io.nuls.account.util.LoggerUtil.LOG; + +@Component("AccountLockProcessorV11") +public class AccountLockProcessorV11 implements TransactionProcessor { + + @Autowired + private ChainManager chainManager; + @Autowired + private AliasService aliasService; + @Autowired + private AccountBlockHelper accountBlockHelper; + @Autowired + private AccountBlockStorageService accountBlockStorageService; + + @Override + public int getType() { + return TxType.BLOCK_ACCOUNT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + Map result = null; + Chain chain = null; + try { + chain = chainManager.getChain(chainId); + result = new HashMap<>(AccountConstant.INIT_CAPACITY_4); + String errorCode = null; + if (chain == null) { + errorCode = AccountErrorCode.CHAIN_NOT_EXIST.getCode(); + chain.getLogger().error("chain is not exist, -chainId:{}", chainId); + result.put("txList", txs); + result.put("errorCode", errorCode); + return result; + } + List txList = new ArrayList<>(); + for (Transaction tx : txs) { + try { + Result rs = accountBlockHelper.blockAccountTxValidate(chain, tx); + if (rs.isFailed()) { + errorCode = rs.getErrorCode().getCode(); + txList.add(tx); + } + } catch (Exception e) { + chain.getLogger().error(e); + if (e instanceof NulsException) { + errorCode = ((NulsException)e).getErrorCode().getCode(); + } else { + errorCode = AccountErrorCode.DATA_ERROR.getCode(); + } + txList.add(tx); + } + } + result.put("txList", txList); + result.put("errorCode", errorCode); + } catch (Exception e) { + errorLogProcess(chain, e); + result.put("txList", txs); + result.put("errorCode", AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List commitSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List poList = Arrays.asList(addresses).stream().map(a -> new AccountBlockPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + result = accountBlockStorageService.saveAccountList(poList); + } catch (NulsException e) { + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_commitTx block_account tx commit error"); + break; + } + commitSucTxList.add(tx); + } + try { + //如果提交失败,将已经提交成功的交易回滚 + if (!result) { + boolean rollback = true; + for (Transaction tx : commitSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + rollback = accountBlockStorageService.removeAccountList(Arrays.asList(addresses)); + } + //回滚失败,抛异常 + if (!rollback) { + LoggerUtil.LOG.error("ac_commitTx block_account tx rollback error"); + throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + + return result; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List rollbackSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + result = accountBlockStorageService.removeAccountList(Arrays.asList(addresses)); + } catch (NulsException e) { + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_rollbackTx block_account tx rollback error"); + break; + } + rollbackSucTxList.add(tx); + } + //交易提交 + try { + //如果回滚失败,将已经回滚成功的交易重新保存 + if (!result) { + boolean commit = true; + for (Transaction tx : rollbackSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List poList = Arrays.asList(addresses).stream().map(a -> new AccountBlockPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + commit = accountBlockStorageService.saveAccountList(poList); + } + //保存失败,抛异常 + if (!commit) { + LoggerUtil.LOG.error("ac_rollbackTx block_account tx commit error"); + throw new NulsException(AccountErrorCode.ALIAS_SAVE_ERROR); + } + } + } catch (NulsException e) { + errorLogProcess(chain, e); + result = false; + } + return result; + } + + private void errorLogProcess(Chain chain, Exception e) { + if (chain == null) { + LOG.error(e); + } else { + chain.getLogger().error(e); + } + } + +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountUnlockProcessorV11.java b/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountUnlockProcessorV11.java new file mode 100644 index 0000000000..0599a3cd73 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/tx/v11/AccountUnlockProcessorV11.java @@ -0,0 +1,187 @@ +package io.nuls.account.tx.v11; + +import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.helper.AccountBlockHelper; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.txdata.AccountBlockData; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.service.AliasService; +import io.nuls.account.storage.AccountBlockStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.account.util.manager.ChainManager; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.*; +import java.util.stream.Collectors; + +import static io.nuls.account.util.LoggerUtil.LOG; + +@Component("AccountUnlockProcessorV11") +public class AccountUnlockProcessorV11 implements TransactionProcessor { + + @Autowired + private ChainManager chainManager; + @Autowired + private AliasService aliasService; + @Autowired + private AccountBlockHelper accountBlockHelper; + @Autowired + private AccountBlockStorageService accountBlockStorageService; + + @Override + public int getType() { + return TxType.UNBLOCK_ACCOUNT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + Map result = null; + Chain chain = null; + try { + chain = chainManager.getChain(chainId); + result = new HashMap<>(AccountConstant.INIT_CAPACITY_4); + String errorCode = null; + if (chain == null) { + errorCode = AccountErrorCode.CHAIN_NOT_EXIST.getCode(); + chain.getLogger().error("chain is not exist, -chainId:{}", chainId); + result.put("txList", txs); + result.put("errorCode", errorCode); + return result; + } + List txList = new ArrayList<>(); + for (Transaction tx : txs) { + try { + Result rs = accountBlockHelper.blockAccountTxValidate(chain, tx); + if (rs.isFailed()) { + errorCode = rs.getErrorCode().getCode(); + txList.add(tx); + } + } catch (Exception e) { + chain.getLogger().error(e); + if (e instanceof NulsException) { + errorCode = ((NulsException)e).getErrorCode().getCode(); + } else { + errorCode = AccountErrorCode.DATA_ERROR.getCode(); + } + txList.add(tx); + } + } + result.put("txList", txList); + result.put("errorCode", errorCode); + } catch (Exception e) { + errorLogProcess(chain, e); + result.put("txList", txs); + result.put("errorCode", AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List commitSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + result = accountBlockStorageService.removeAccountList(Arrays.asList(addresses)); + } catch (NulsException e) { + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_commitTx un_block_account tx commit error"); + break; + } + commitSucTxList.add(tx); + } + try { + //如果提交失败,将已经提交成功的交易回滚 + if (!result) { + boolean rollback = true; + for (Transaction tx : commitSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List poList = Arrays.asList(addresses).stream().map(a -> new AccountBlockPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + rollback = accountBlockStorageService.saveAccountList(poList); + } + //回滚失败,抛异常 + if (!rollback) { + LoggerUtil.LOG.error("ac_commitTx un_block_account tx rollback error"); + throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + + return result; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List rollbackSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List poList = Arrays.asList(addresses).stream().map(a -> new AccountBlockPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + result = accountBlockStorageService.saveAccountList(poList); + } catch (NulsException e) { + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_rollbackTx un_block_account tx rollback error"); + break; + } + rollbackSucTxList.add(tx); + } + //交易提交 + try { + //如果回滚失败,将已经回滚成功的交易重新保存 + if (!result) { + boolean commit = true; + for (Transaction tx : rollbackSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + commit = accountBlockStorageService.removeAccountList(Arrays.asList(addresses)); + } + //保存失败,抛异常 + if (!commit) { + LoggerUtil.LOG.error("ac_rollbackTx un_block_account tx commit error"); + throw new NulsException(AccountErrorCode.ALIAS_SAVE_ERROR); + } + } + } catch (NulsException e) { + errorLogProcess(chain, e); + result = false; + } + return result; + } + + private void errorLogProcess(Chain chain, Exception e) { + if (chain == null) { + LOG.error(e); + } else { + chain.getLogger().error(e); + } + } + +} diff --git a/module/nuls-account/src/main/resources/protocol-config.json b/module/nuls-account/src/main/resources/protocol-config.json index 65658d9614..a4251f6391 100644 --- a/module/nuls-account/src/main/resources/protocol-config.json +++ b/module/nuls-account/src/main/resources/protocol-config.json @@ -1,4 +1,29 @@ [ + { + "version": "11", + "extend": "1", + "validTxs": [ + { + "type": "63", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AccountLockProcessorV11" + }, + { + "type": "64", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AccountUnlockProcessorV11" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "1", "extend": "", diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index 5364ba41d4..cd45459b8c 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -25,12 +25,30 @@ package io.nuls.account.tx; import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; import io.nuls.account.constant.RpcConstant; +import io.nuls.account.model.bo.Account; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.config.ConfigBean; +import io.nuls.account.model.bo.tx.txdata.AccountBlockData; import io.nuls.account.model.dto.CoinDTO; +import io.nuls.account.util.AccountTool; import io.nuls.account.util.LoggerUtil; +import io.nuls.account.util.TxUtil; import io.nuls.base.RPCUtil; -import io.nuls.base.data.NulsHash; -import io.nuls.base.data.Transaction; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.*; +import io.nuls.base.signture.MultiSignTxSignature; +import io.nuls.base.signture.P2PHKSignature; +import io.nuls.base.signture.SignatureUtil; +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.constant.TxType; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.exception.NulsException; +import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.info.NoUse; @@ -38,10 +56,16 @@ import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import org.junit.Before; +import org.junit.Test; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.*; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; /** * @author: Charlie @@ -71,10 +95,12 @@ public class Transfer implements Runnable { private String addressTo; - public Transfer(String addressFrom, String addressTo) { - this.addressFrom = addressFrom; - this.addressTo = addressTo; - } + public Transfer(){} + + //public Transfer(String addressFrom, String addressTo) { + // this.addressFrom = addressFrom; + // this.addressTo = addressTo; + //} @Before public void before() throws Exception { @@ -82,6 +108,297 @@ public void before() throws Exception { ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); } + @Test + public void createMultiSigAccountTest() throws Exception { + //create 3 account + List accountList = new ArrayList<>(); + accountList.add(AccountTool.createAccount(2)); + accountList.add(AccountTool.createAccount(2)); + accountList.add(AccountTool.createAccount(2)); + + Map params = new HashMap<>(); + List pubKeys = new ArrayList<>(); + for (Account account:accountList ) { + System.out.println(HexUtil.encode(account.getPriKey())); + pubKeys.add(HexUtil.encode(account.getPubKey())); + } + params.put(Constants.VERSION_KEY_STR, "1.0"); + params.put(Constants.CHAIN_ID, chainId); + params.put("pubKeys", pubKeys); + params.put("minSigns", 2); + //create the multi sign accout + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.AC.abbr, "ac_createMultiSignAccount", params); + assertNotNull(cmdResp); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + HashMap result = (HashMap) ((HashMap) cmdResp.getResponseData()).get("ac_createMultiSignAccount"); + assertNotNull(result); + String address = (String) result.get("address"); + assertNotNull(address); + int resultMinSigns = (int) result.get("minSign"); + assertEquals(resultMinSigns,2); + List resultPubKeys = (List) result.get("pubKeys"); + assertNotNull(resultPubKeys); + assertEquals(pubKeys.size(),3); + } + + @Test + public void accountBlockTest() throws Exception { + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.BLOCK_ACCOUNT); + CoinData coinData = new CoinData(); + //String fromKey = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + //byte[] from = AddressTool.getAddress("tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); + String fromKey = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if(null == nonce){ + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom( + from, + assetChainId, + assetId, + new BigDecimal("0.001").movePointRight(8).toBigInteger(), + nonce, + (byte) 0 + )); + coinData.addTo(new CoinTo( + from, + assetChainId, + assetId, + BigInteger.ZERO, + (byte) 0 + )); + tx.setCoinData(coinData.serialize()); + AccountBlockData data = new AccountBlockData(); + data.setAddresses(new String[]{ + "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", + "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", + "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL" + }); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + //根据密码获得ECKey get ECKey from Password + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); + P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); + p2PHKSignatures.add(signature); + //交易签名 + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + @Test + public void accountBlockMultiSignTest() throws Exception { + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.BLOCK_ACCOUNT); + CoinData coinData = new CoinData(); + byte[] from = AddressTool.getAddress("tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if(null == nonce){ + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom( + from, + assetChainId, + assetId, + new BigDecimal("0.001").movePointRight(8).toBigInteger(), + nonce, + (byte) 0 + )); + coinData.addTo(new CoinTo( + from, + assetChainId, + assetId, + BigInteger.ZERO, + (byte) 0 + )); + tx.setCoinData(coinData.serialize()); + AccountBlockData data = new AccountBlockData(); + data.setAddresses(new String[]{ + "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", + "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", + "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja" + }); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + + String[] pubkeys = new String[]{"02f01ab55fff126dd22f7b13671829c1663a167f62553d9ac9a490785c72b38f42", "02721315241ba2511f757fffea4534fdef912e8c74a4f0df416809c9080a5393e6", "037623bbe485c3089180722114b524ec72a75a4f055b82ab25e28b5f03619d86cd"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + List p2PHKSignatures = new ArrayList<>(); + transactionSignature.setM((byte) 2); + transactionSignature.setPubKeyList(collect); + + List priKeyList = new ArrayList<>(); + priKeyList.add("dc9514bbb1b19337f39f2b90b39a4087a531e842727c3a1fa77c2e20fb8c7ce5"); + priKeyList.add("a4757aebd10331b52fd8bc3a4c79ac025187bc65f6c4d944a07f7b77a9ff9161"); + priKeyList.add("d5aa0f4b360a913fb01fd257e22a67916ac842467fb241ca692a60e4d85511b3"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + @Test + public void getAllBlockAccount() throws Exception { + // ac_getAllBlockAccount + Map params = new HashMap<>(); + params.put(Constants.VERSION_KEY_STR, "1.0"); + params.put(Constants.CHAIN_ID, chainId); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.AC.abbr, "ac_getAllBlockAccount", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + + @Test + public void accountUnBlockTest() throws Exception { + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.UNBLOCK_ACCOUNT); + CoinData coinData = new CoinData(); + String fromKey = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if(null == nonce){ + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom( + from, + assetChainId, + assetId, + new BigDecimal("0.001").movePointRight(8).toBigInteger(), + nonce, + (byte) 0 + )); + coinData.addTo(new CoinTo( + from, + assetChainId, + assetId, + BigInteger.ZERO, + (byte) 0 + )); + tx.setCoinData(coinData.serialize()); + AccountBlockData data = new AccountBlockData(); + data.setAddresses(new String[]{ + "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD" + }); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + //根据密码获得ECKey get ECKey from Password + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); + P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); + p2PHKSignatures.add(signature); + //交易签名 + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + @Test + public void accountUnBlockMultiSignTest() throws Exception { + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.UNBLOCK_ACCOUNT); + CoinData coinData = new CoinData(); + byte[] from = AddressTool.getAddress("tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if(null == nonce){ + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom( + from, + assetChainId, + assetId, + new BigDecimal("0.001").movePointRight(8).toBigInteger(), + nonce, + (byte) 0 + )); + coinData.addTo(new CoinTo( + from, + assetChainId, + assetId, + BigInteger.ZERO, + (byte) 0 + )); + tx.setCoinData(coinData.serialize()); + AccountBlockData data = new AccountBlockData(); + data.setAddresses(new String[]{ + "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", + "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", + "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL" + }); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + + String[] pubkeys = new String[]{"02f01ab55fff126dd22f7b13671829c1663a167f62553d9ac9a490785c72b38f42", "02721315241ba2511f757fffea4534fdef912e8c74a4f0df416809c9080a5393e6", "037623bbe485c3089180722114b524ec72a75a4f055b82ab25e28b5f03619d86cd"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + List p2PHKSignatures = new ArrayList<>(); + transactionSignature.setM((byte) 2); + transactionSignature.setPubKeyList(collect); + + List priKeyList = new ArrayList<>(); + priKeyList.add("dc9514bbb1b19337f39f2b90b39a4087a531e842727c3a1fa77c2e20fb8c7ce5"); + priKeyList.add("a4757aebd10331b52fd8bc3a4c79ac025187bc65f6c4d944a07f7b77a9ff9161"); + priKeyList.add("d5aa0f4b360a913fb01fd257e22a67916ac842467fb241ca692a60e4d85511b3"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + @Override public void run() { try { diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/TxTest.java b/module/nuls-account/src/test/java/io/nuls/account/tx/TxTest.java index 69c4d8bea5..597d801467 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/TxTest.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/TxTest.java @@ -87,13 +87,13 @@ public void importPriKeyTest() { @Test public void mTransfer() throws Exception { - Transfer transfer1 = new Transfer(address21, address20); - Thread thread1 = new Thread(transfer1); - thread1.start(); + //Transfer transfer1 = new Transfer(address21, address20); + //Thread thread1 = new Thread(transfer1); + //thread1.start(); // Transfer transfer2 = new Transfer(address25, address20); // Thread thread2 = new Thread(transfer2); // thread2.start(); - thread1.join(); +// thread1.join(); // thread2.join(); } diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 48e5e6ef5c..7ebae20a72 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -46,6 +46,10 @@ io.nuls.v2 nuls-core-h2 + + org.mybatis + mybatis + diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index 7f84e88476..f07fb0651f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -8,8 +8,10 @@ import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.exception.NulsException; +import io.nuls.core.io.IoUtils; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.I18nUtils; +import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.modulebootstrap.Module; @@ -18,8 +20,11 @@ import io.nuls.core.rpc.modulebootstrap.RpcModuleState; import io.nuls.core.rpc.util.AddressPrefixDatas; import io.nuls.provider.api.RpcServerManager; +import io.nuls.provider.api.config.Context; +import io.nuls.provider.utils.Log; import io.nuls.v2.NulsSDKBootStrap; +import java.util.List; import java.util.Map; import static io.nuls.provider.api.constant.SdkConstant.SDK_API; @@ -129,5 +134,4 @@ public RpcModuleState onDependenciesReady() { public RpcModuleState onDependenciesLoss(Module dependenciesModule) { return RpcModuleState.Running; } - } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java index d5973efbc0..e4fef1456c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java @@ -36,6 +36,7 @@ public class Config implements ModuleConfig { private int decimals; + public String getAddressPrefix() { return addressPrefix; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java index 6fe407f1b8..273a93b027 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java @@ -27,6 +27,7 @@ import io.nuls.provider.api.model.AssetInfo; import io.nuls.provider.api.model.ChainInfo; +import java.util.ArrayList; import java.util.List; /** @@ -43,6 +44,8 @@ public class Context { public static List assetList; + public static List blackAddressList = new ArrayList<>(); + public static ChainInfo defaultChain; @@ -57,4 +60,5 @@ public static Integer getChainId() { public static boolean isChainExist(int chainId) { return getChainId() == chainId; } + } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 616125761f..61f7eaf3fb 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -28,6 +28,9 @@ import io.nuls.base.api.provider.block.facade.GetBlockHeaderByHeightReq; import io.nuls.base.api.provider.crosschain.CrossChainProvider; import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.core.crypto.HexUtil; import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; import io.nuls.base.RPCUtil; @@ -52,10 +55,7 @@ import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.rpctools.ContractTools; import io.nuls.provider.rpctools.TransactionTools; -import io.nuls.provider.utils.Log; -import io.nuls.provider.utils.ResultUtil; -import io.nuls.provider.utils.Utils; -import io.nuls.provider.utils.VerifyUtils; +import io.nuls.provider.utils.*; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiOperation; import io.nuls.v2.model.annotation.ApiType; @@ -973,4 +973,5 @@ public RpcResult calcMultiSignTransferTxFee(List params) { return RpcResult.success(map); } + } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTokenInfoDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTokenInfoDto.java index 5b8442ac9e..06f8397b5f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTokenInfoDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTokenInfoDto.java @@ -40,8 +40,10 @@ public class ContractTokenInfoDto { private String name; @ApiModelProperty(description = "token符号") private String symbol; - @ApiModelProperty(description = "token数量") + @ApiModelProperty(description = "token可用数量") private String amount; + @ApiModelProperty(description = "token锁定数量") + private String lockAmount; @ApiModelProperty(description = "token支持的小数位数") private long decimals; @ApiModelProperty(description = "合约创建时的区块高度") @@ -81,6 +83,14 @@ public void setAmount(String amount) { this.amount = amount; } + public String getLockAmount() { + return lockAmount; + } + + public void setLockAmount(String lockAmount) { + this.lockAmount = lockAmount; + } + public long getDecimals() { return decimals; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/BlackListUtils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/BlackListUtils.java new file mode 100644 index 0000000000..2011619dc3 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/BlackListUtils.java @@ -0,0 +1,58 @@ +//package io.nuls.provider.utils; +// +//import io.nuls.core.basic.InitializingBean; +//import io.nuls.core.core.annotation.Autowired; +//import io.nuls.core.core.annotation.Component; +//import io.nuls.core.exception.NulsException; +//import io.nuls.core.model.StringUtils; +//import io.nuls.provider.api.config.Config; +// +//import java.io.*; +//import java.util.Set; +// +///** +// * @author zhoulijun +// * @description TODO +// * @date 2022/1/18 16:57 +// * @COPYRIGHT www.xianma360.com +// */ +//@Component +//public class BlackListUtils implements InitializingBean { +// +// public Set blackList; +// +// @Autowired +// Config config; +// +// /** +// * 是否不在黑名单中 +// * @param address +// * @return 黑名单中存在返回false +// */ +// public boolean isPass(String address){ +// return !blackList.contains(address); +// } +// +// @Override +// public void afterPropertiesSet() throws NulsException { +// if(StringUtils.isBlank(config.getBlackListPath())){ +// Log.error("未配置黑名单地址"); +// System.exit(0); +// } +// try { +// FileReader reader = new FileReader(new File(config.getBlackListPath())); +// BufferedReader buff = new BufferedReader(reader); +// String line = buff.readLine(); +// while(line != null){ +// blackList.add(line); +// } +// buff.close(); +// Log.info("初始化黑名单完成,共记录{}个黑名单地址", blackList.size()); +// } catch (FileNotFoundException e) { +// Log.error("黑名单地址错误,文件不存在"); +// System.exit(0); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +//} diff --git a/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/RegCrossChainTxTest.java b/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/RegCrossChainTxTest.java index a2be612bd6..a554286196 100644 --- a/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/RegCrossChainTxTest.java +++ b/module/nuls-chain-manager/src/test/java/io/nuls/chain/test/RegCrossChainTxTest.java @@ -1,44 +1,81 @@ -/* - * MIT License - * Copyright (c) 2017-2019 nuls.io - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.nuls.chain.test; - -import io.nuls.base.data.Transaction; -import io.nuls.chain.model.tx.txdata.TxChain; -import io.nuls.core.crypto.HexUtil; -import io.nuls.core.exception.NulsException; -import org.junit.Test; - -/** - * @author Niels - */ -public class RegCrossChainTxTest { - - @Test - public void test() throws NulsException { - String hex = "0b007821ca5d00fd1401057465737431013104585858585227000001030000000300255858586341376b6165514d506169524e507051534550385338744e584446654335766e4579255858586341376b61694b335968436453786658616166664875704244506a6d337665694545255858586341376b615959325172524658374c6539596477747a51394a7674525555333762784200c80063000100035858580358585800205fa012000000000000000000000000000000000000000000000000000000005847f80d00000000000000000000000000000000000000000000000000000000a0724e180900000000000000000000000000000000000000000000000000000800170200019a7c5f842094a73eb489d5678e446e3be57d689afd140101170200019a7c5f842094a73eb489d5678e446e3be57d689a02000100a03e66d94500000000000000000000000000000000000000000000000000000008d8a5882e038977e700031702000199092280b81a34b28901654601bbaa764ea0b385020001000040be40250000000000000000000000000000000000000000000000000000000000000000000000170200019a7c5f842094a73eb489d5678e446e3be57d689a0200010000205fa012000000000000000000000000000000000000000000000000000000ffffffffffffffff1702000129cfc6376255a78451eeb4b129ed8eacffa2feef02000100005847f80d00000000000000000000000000000000000000000000000000000000000000000000006b2102ff3511b8aabd6f598bda6b344a231a2bda8ffd236c13ef746342b0554a9839b7483046022100ecb92a5c6023cf398c62e964d9ef2428b4ec4a2c7ca8d5e75440430ce1696764022100e1f673547f9e0505c1d35b8ce74158f5e67cc483afc77461925dc9f0480bc3d3"; - Transaction transaction = new Transaction(); - transaction.parse(HexUtil.decode(hex),0); - TxChain txChain = new TxChain(); - txChain.parse(transaction.getTxData(),0); - System.out.println(txChain); - - } -} +///* +// * MIT License +// * Copyright (c) 2017-2019 nuls.io +// * Permission is hereby granted, free of charge, to any person obtaining a copy +// * of this software and associated documentation files (the "Software"), to deal +// * in the Software without restriction, including without limitation the rights +// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// * copies of the Software, and to permit persons to whom the Software is +// * furnished to do so, subject to the following conditions: +// * The above copyright notice and this permission notice shall be included in all +// * copies or substantial portions of the Software. +// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// * SOFTWARE. +// */ +// +//package io.nuls.chain.test; +// +//import io.nuls.base.data.Address; +//import io.nuls.base.data.Transaction; +//import io.nuls.base.signture.TransactionSignature; +//import io.nuls.chain.model.tx.txdata.TxChain; +//import io.nuls.core.constant.BaseConstant; +//import io.nuls.core.crypto.HexUtil; +//import io.nuls.core.exception.NulsException; +//import io.nuls.core.log.Log; +//import io.nuls.core.parse.SerializeUtils; +//import io.nuls.core.rockdb.service.RocksDBService; +//import org.junit.Test; +// +//import java.util.HashSet; +//import java.util.Set; +// +///** +// * @author Niels +// */ +//public class RegCrossChainTxTest { +// +// static String DB_PATH = "/Users/zhoulijun/workspace/nuls/resend-cross-tx/chain-manager"; +// +// static final String TABLE = "block_chain"; +// +// public static void readBlockChain() throws NulsException { +// RocksDBService.init(DB_PATH); +// byte[] b = RocksDBService.get(TABLE, TABLE.getBytes()); +// byte[] b = RocksDBService.entryList("block_chain"); +//// Log.info("{}", HexUtil.encode(b)); +// CtxStatusPO ctx = new CtxStatusPO(); +// try { +// ctx.parse(b, 0); +// Transaction tx = ctx.getTx(); +// TransactionSignature signature = new TransactionSignature(); +// signature.parse(tx.getTransactionSignature(), 0); +// Log.info("{}", HexUtil.encode(tx.serialize())); +// Log.info("{}",tx.getType()); +// Log.info("{}", signature.getSignersCount()); +// Set addressSets = new HashSet<>(); +// signature.getP2PHKSignatures().forEach(sign -> { +// Address address = new Address(CHAIN_ID, QZ, BaseConstant.DEFAULT_ADDRESS_TYPE, SerializeUtils.sha256hash160(sign.getPublicKey())); +// Log.info("{}", address.getBase58()); +// addressSets.add(address.getBase58()); +// }); +// if(addressSets.size() < 61){ +// Log.info("hash : {}:{}",hash,addressSets.size()); +// sets.add(hash); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// +// @Test +// public void test() throws NulsException { +// +// } +//} diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index a49a45efce..26ddb4d743 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -48,5 +48,10 @@ "version": "10", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "11", + "effectiveRatio": "70", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index c373b2a62e..267dd79740 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -139,6 +139,10 @@ 1.1.6.RELEASE test + + org.mybatis + mybatis + io.nuls.v2 nuls-core-h2 diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 01d3dd412d..2bf087dc35 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -515,6 +515,7 @@ public Result getContractAddressInfo(int chainId, byte[] return contractAddressStorageService.getContractAddressInfo(chainId, contractAddressBytes); } + private Set unlockedNrc20Set = new HashSet<>(); public Result getContractToken(int chainId, BlockHeader blockHeader, String address, String contractAddress) { try { if (StringUtils.isBlank(contractAddress) || StringUtils.isBlank(address)) { @@ -545,10 +546,23 @@ public Result getContractToken(int chainId, BlockHeader block result = getFailed(); result.setMsg(ContractUtil.simplifyErrorMsg(programResult.getErrorMessage())); } else { + BigInteger lockAmount = BigInteger.ZERO; + if (!unlockedNrc20Set.contains(contractAddress)) { + ProgramResult lockedProgramResult = this.invokeViewMethod(chainId, null, false, currentStateRoot, blockHeight, contractAddressBytes, "lockedBalanceOf", null, ContractUtil.twoDimensionalArray(new Object[]{address})); + if (!lockedProgramResult.isSuccess()) { + String errorMessage = lockedProgramResult.getErrorMessage(); + if (errorMessage != null && errorMessage.contains("can't find method")) { + unlockedNrc20Set.add(contractAddress); + } + } else { + lockAmount = new BigInteger(lockedProgramResult.getResult()); + } + } result = getSuccess(); ContractTokenInfo tokenInfo = new ContractTokenInfo(contractAddress, po.getNrc20TokenName(), po.getDecimals(), new BigInteger(programResult.getResult()), po.getNrc20TokenSymbol(), po.getBlockHeight()); ProgramExecutor track = getProgramExecutor(chainId).begin(currentStateRoot); tokenInfo.setStatus(ContractStatus.getStatus(track.status(AddressTool.getAddress(tokenInfo.getContractAddress())).ordinal())); + tokenInfo.setLockAmount(lockAmount); result.setData(tokenInfo); } return result; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractTokenInfo.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractTokenInfo.java index d4882b53b1..2fb31984c1 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractTokenInfo.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractTokenInfo.java @@ -39,6 +39,7 @@ public class ContractTokenInfo { private String name; private String symbol; private BigInteger amount; + private BigInteger lockAmount; private long decimals; private long blockHeight; private ContractStatus status; @@ -49,12 +50,21 @@ public ContractTokenInfo() { public ContractTokenInfo(String contractAddress, String name, long decimals, BigInteger amount, String symbol, long blockHeight) { this.name = name; this.amount = amount; + this.lockAmount = BigInteger.ZERO; this.contractAddress = contractAddress; this.decimals = decimals; this.symbol = symbol; this.blockHeight = blockHeight; } + public BigInteger getLockAmount() { + return lockAmount; + } + + public void setLockAmount(BigInteger lockAmount) { + this.lockAmount = lockAmount; + } + public ContractTokenInfo setName(String name) { this.name = name; return this; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenInfoDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenInfoDto.java index 4b0db0d169..042f6d3f28 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenInfoDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenInfoDto.java @@ -42,8 +42,10 @@ public class ContractTokenInfoDto { private String name; @ApiModelProperty(description = "token符号") private String symbol; - @ApiModelProperty(description = "token数量") + @ApiModelProperty(description = "token可用数量") private String amount; + @ApiModelProperty(description = "token锁定数量") + private String lockAmount; @ApiModelProperty(description = "token支持的小数位数") private long decimals; @ApiModelProperty(description = "合约创建时的区块高度") @@ -62,6 +64,7 @@ public ContractTokenInfoDto(ContractTokenInfo info) { this.name = info.getName(); this.symbol = info.getSymbol(); this.amount = ContractUtil.bigInteger2String(info.getAmount()); + this.lockAmount = ContractUtil.bigInteger2String(info.getLockAmount()); this.decimals = info.getDecimals(); this.blockHeight = info.getBlockHeight(); this.status = info.getStatus().status(); @@ -99,6 +102,14 @@ public void setAmount(String amount) { this.amount = amount; } + public String getLockAmount() { + return lockAmount; + } + + public void setLockAmount(String lockAmount) { + this.lockAmount = lockAmount; + } + public long getDecimals() { return decimals; } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 7d28f8c7b1..43bb14cd71 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -61,6 +61,7 @@ import org.junit.BeforeClass; import org.junit.Test; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.*; @@ -165,6 +166,16 @@ public void transfer() { System.out.println(transferService.transfer(builder.build(new TransferReq())).getData()); } + @Test + public void transferOne() { + String from = "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM"; + String to = "tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"; + TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(chain.getChainId(), chain.getConfig().getAssetId()) + .addForm(from, password, new BigDecimal("100.001").movePointRight(8).toBigInteger()) + .addTo(to, new BigDecimal("100").movePointRight(8).toBigInteger()); + System.out.println(transferService.transfer(builder.build(new TransferReq())).getData()); + } + @Test public void transferMultyAsset() { TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(2, 3) @@ -226,13 +237,26 @@ public void getBlockHeader() throws NulsException, JsonProcessingException { Log.info("\nstateRoot is " + HexUtil.encode(ContractUtil.getStateRoot(blockHeader)) + ", " + blockHeader.toString()); } + @Test + public void getAgentInfoForContractTest() throws Exception { + Map params = new HashMap(); + params.put("chainId", 2); + params.put("agentHash", "89109b062f7bf611421ac3c8c456ab29e8bf71b5f38622ede4943ec8a8f2a0cb"); + params.put("contractAddress", "tNULSeBaN3wibWfHcc1YhvszihX9eLS4ruueXY"); + params.put("contractSender", "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_getContractAgentInfo", params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get("cs_getContractAgentInfo")); + Assert.assertTrue(null != result); + Log.info("accountContracts-result:{}", JSONUtils.obj2PrettyJson(cmdResp2)); + } + @Test public void getBalance() throws Exception { //this.getBalanceByAccount("tNULSeBaNBJT6JuznGqhKM5q6jXFkuSoMUNkHK"); System.out.println("---------------------------------------------------"); //this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount("tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp"); + this.getBalanceByAccount("tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD"); } protected void getBalanceByAccount(String account) throws Exception { @@ -307,7 +331,7 @@ private Map makeContractInfoParams(String contractAddress) { */ @Test public void contractResult() throws Exception { - Object[] objects = getContractResult("edf019bbc5070181fae5fd97cf89d8574e53595686c336540934849981d3ade1"); + Object[] objects = getContractResult("177c05a636ca62aeb41564f413b4672f7e3d692e04481271d9d36dc95791edde"); Log.info("contractResult-result:{}", JSONUtils.obj2PrettyJson(objects[0])); Assert.assertTrue(null != objects[1]); } @@ -344,7 +368,7 @@ public void contractTx() throws Exception { public void getTxClient() throws Exception { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); - params.put("txHash", "f0de6f185c99dd2c8b20ec0a17e83d8278552fe5aaf4ed45e3f436ddaccbc8d1"); + params.put("txHash", "dddc5949ca4986528741c839e9131450c52fd684836622ad18222c3d959833f8"); Response dpResp = ResponseMessageProcessor.requestAndResponse(ModuleE.TX.abbr, "tx_getTxClient", params); Map record = (Map) dpResp.getResponseData(); Map resultMap = (Map) record.get("tx_getTxClient"); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index d2a3dd0227..e2d53c35b5 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -139,7 +139,7 @@ public void nulsTest() throws Exception { @Test public void otherAssetTest() throws Exception { // 转入 3.2 - this.callOfDesignatedAssetByParams("_payableMultyAsset", "3.2", null, 2, 2); + this.callOfDesignatedAssetByParams(contractAddress, "_payableMultyAsset", "3.2", null, 2, 2); // 转出 1.1 Object[] args = new Object[]{toAddress17, new BigDecimal("1.1").multiply(BigDecimal.TEN.pow(8)).toBigInteger(), 2, 2}; this.callByParams("transferDesignatedAsset", "0", args); @@ -197,7 +197,7 @@ public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { String methodName = "callWithReturnValueOfOtherContractOfDesignatedAsset"; // 转入 6.6 2-2 (外部合约) - this.callOfDesignatedAssetByParams("_payableMultyAsset", "6.6", null, 2, 2); + this.callOfDesignatedAssetByParams(contractAddress,"_payableMultyAsset", "6.6", null, 2, 2); // 转入 6.6 2-2 (内部合约) this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "_payableMultyAsset", null, "6.6", 2, 2); @@ -313,6 +313,12 @@ public void transferOutOfmanyAccountCall() throws Exception { this.callTxOffline(feeAccount, feeAccountPri, sender, senderPri, value, contractAddress, methodName, methodDesc, remark, args, argsType, null, true); } + @Test + public void sendPayableMultyAssetTest() throws Exception { + // 转入 + this.callOfDesignatedAssetByParams("tNULSeBaN7mVkoh9ArP6RGvwgs7wmMpRsD5tuM", "_payableMultyAsset", "1000000", null, 2, 2); + } + protected void callTxOffline(String feeAccount, String feeAccountPri, String contractSender, String contractSenderPri, BigInteger value, String contractAddress, @@ -553,7 +559,7 @@ protected void callByParams(String methodName, String valueStr, Object[] args) t Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); } - protected void callOfDesignatedAssetByParams(String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { + protected void callOfDesignatedAssetByParams(String contractAddress, String methodName, String valueStr, Object[] args, int assetChainId, int assetId) throws Exception { BigInteger value = new BigDecimal(valueStr).multiply(BigDecimal.TEN.pow(8)).toBigInteger(); Map params = this.makeCallParams(sender, null, gasLimit, gasPrice, contractAddress, methodName, null, "", new ProgramMultyAssetValue[]{new ProgramMultyAssetValue(value, assetChainId, assetId)}, args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index 5c02fd791d..f309ba72ae 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -60,11 +60,11 @@ public class ContractNRC20TokenSendTxTest extends BaseQuery { @Test public void createContract() throws Exception { //sender = toAddress32; - InputStream in = new FileInputStream(ContractTest.class.getResource("/nrc20").getFile()); + InputStream in = new FileInputStream(ContractTest.class.getResource("/nrc20-locked-token").getFile()); byte[] contractCode = IOUtils.toByteArray(in); String remark = "create contract test - 空气币"; - String name = "KQB"; - String symbol = "KongQiBi"; + String name = "LOCK_KQB"; + String symbol = "LOCK_KongQiBi"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; Map params = this.makeCreateParams("tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", contractCode, "kqb", remark, name, symbol, amount, decimals); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index e8301a4a3d..440926ba96 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -86,13 +86,55 @@ public void createAgent()throws Exception{ params.put(Constants.CHAIN_ID,2); params.put("deposit","2000000000000"); params.put("commissionRate",10); - params.put("packingAddress","tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD"); + params.put("packingAddress","tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn"); params.put("password","nuls123456"); - params.put("rewardAddress",sender); + params.put("rewardAddress","tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_createAgent", params); System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); } + /** + * 创建节点2 + * */ + @Test + public void createAgent2()throws Exception{ + Map params = new HashMap<>(); + params.put("agentAddress","tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + params.put(Constants.CHAIN_ID,2); + params.put("deposit","2000000000000"); + params.put("commissionRate",10); + params.put("packingAddress","tNULSeBaMuU6sq72mptyghDXDWQXKJ5QUaWhGj"); + params.put("password","nuls123456"); + params.put("rewardAddress","tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_createAgent", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + + + /** + * 停止节点 + * */ + @Test + public void stopAgent()throws Exception{ + Mapparams = new HashMap<>(); + params.put(Constants.CHAIN_ID,2); + //params.put("address","tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); + params.put("address","tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + params.put("password", "nuls123456"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_stopAgent", params); + System.out.println(cmdResp.getResponseData()); + } + + @Test + public void getAgentInfo()throws Exception{ + Mapparams = new HashMap<>(); + params.put(Constants.CHAIN_ID,2); + // c5f2c0d00cbca36c39912f9332e91ec3098aedc3e47c26e2135a2057949da989 + params.put("agentHash","07dece0a400508d749a5e4e5f7d821c3e2836cb4de78c5083897dbe1f4d9caf9"); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_getAgentInfo", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + /** * 委托节点 * */ @@ -122,15 +164,6 @@ public void withdraw()throws Exception{ System.out.println(cmdResp.getResponseData()); } - @Test - public void getAgentInfo()throws Exception{ - Mapparams = new HashMap<>(); - params.put(Constants.CHAIN_ID,2); - params.put("agentHash","4dce090750b1900c1e741b961b32e75ce9f9d9c69997388ec73e9dd62cb8c835"); - Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CS.abbr, "cs_getAgentInfo", params); - System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); - } - /** * 流程 - 创建TOKEN, POCM, 添加节点,抵押,退出 */ diff --git a/module/nuls-transaction/module.ncf b/module/nuls-transaction/module.ncf index 68b463b18c..3b9e33b276 100644 --- a/module/nuls-transaction/module.ncf +++ b/module/nuls-transaction/module.ncf @@ -10,5 +10,5 @@ JOPT_XMX=512 Managed=1 [transaction] +blackListPath=blacklist moduleDynamicDependent=protocol-update,smart-contract - diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java index 30ed957146..b4eda4a425 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java @@ -34,6 +34,16 @@ public class TxConfig extends ConfigBean implements ModuleConfig { private long unconfirmedTxExpire; private String blackHolePublicKey; + private String blackListPath; + + public String getBlackListPath() { + return blackListPath; + } + + public void setBlackListPath(String blackListPath) { + this.blackListPath = blackListPath; + } + public String getBlackHolePublicKey() { return blackHolePublicKey; } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java index c6604b8f28..7d41b00899 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java @@ -31,4 +31,6 @@ public class TxContext { public static short UPDATE_VERSION_V250 = 5; public static short UPDATE_VERSION_CONTRACT_ASSET = 8; + + public static short UPDATE_VERSION_ACCOUNT_BLOCK = 11; } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxErrorCode.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxErrorCode.java index beb0ec9a3a..4b83813807 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxErrorCode.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxErrorCode.java @@ -58,6 +58,7 @@ public interface TxErrorCode extends CommonCodeConstanst { ErrorCode SYS_CONTRACT_TX_NON_CIRCULATING = ErrorCode.init(ModuleE.TX.getPrefix() + "_0041"); ErrorCode CONTAINS_MULTIPLE_UNIQUE_TXS = ErrorCode.init(ModuleE.TX.getPrefix() + "_0042"); ErrorCode EXIST_GAS_RETURN_WITHOUT_SC_RETURN = ErrorCode.init(ModuleE.TX.getPrefix() + "_0043"); + ErrorCode BLOCK_ADDRESS = ErrorCode.init(ModuleE.TX.getPrefix() + "_0044"); } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java index 6f36b0c749..3758aae459 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java @@ -2,8 +2,10 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.MultiSigAccount; +import io.nuls.core.basic.Result; import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; +import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.transaction.constant.TxConstant; @@ -13,6 +15,8 @@ import java.util.HashMap; import java.util.Map; +import static io.nuls.core.constant.CommonCodeConstanst.NULL_PARAMETER; + /** * 调用其他模块跟交易相关的接口 * @@ -45,4 +49,20 @@ public static MultiSigAccount getMultiSigAccount(byte[] multiSignAddress) throws } } + public static boolean isBlockAccount(int chainId, String address) { + try { + if (StringUtils.isBlank(address)) { + return false; + } + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + Map resultMap = (Map) TransactionCall.requestAndResponse(ModuleE.AC.abbr, "ac_isBlockAccount", params); + boolean isBlock = (boolean) resultMap.get("value"); + return isBlock; + } catch (Exception e) { + Log.error(e); + return false; + } + } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index f8f6f09111..f3e86e8135 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -68,6 +68,7 @@ import io.nuls.transaction.service.TxService; import io.nuls.transaction.storage.ConfirmedTxStorageService; import io.nuls.transaction.storage.UnconfirmedTxStorageService; +import io.nuls.transaction.utils.BlackListUtils; import io.nuls.transaction.utils.TxDuplicateRemoval; import io.nuls.transaction.utils.TxUtil; @@ -91,6 +92,9 @@ public class TxServiceImpl implements TxService { @Autowired private PackablePool packablePool; + @Autowired + private BlackListUtils blackListUtils; + @Autowired private UnconfirmedTxStorageService unconfirmedTxStorageService; @@ -153,6 +157,7 @@ public void newTx(Chain chain, Transaction tx) throws NulsException { //节点区块同步中或回滚中,暂停接纳新交易 throw new NulsException(TxErrorCode.PAUSE_NEWTX); } + validateTxAddress(tx); NulsHash hash = tx.getHash(); if (isTxExists(chain, hash)) { throw new NulsException(TxErrorCode.TX_ALREADY_EXISTS); @@ -306,6 +311,7 @@ public void baseValidateTx(Chain chain, Transaction tx, TxRegister txRegister) t } //验证签名 validateTxSignature(tx, txRegister, chain); + //如果有coinData, 则进行验证,有一些交易(黄牌)没有coinData数据 int txType = tx.getType(); if (txType == TxType.YELLOW_PUNISH @@ -422,6 +428,9 @@ private void validateCoinFromBase(Chain chain, TxRegister txRegister, List packingT rs.put("hasTxbackPackablePool", hasTxbackPackablePool); return rs; } + + private void validateTxAddress(Transaction tx) throws NulsException { + CoinData coinData = tx.getCoinDataInstance(); + for (CoinFrom from : coinData.getFrom()) { + String address = AddressTool.getStringAddressByBytes(from.getAddress()); + if (!blackListUtils.isPass(address)) { + throw new NulsException(TxErrorCode.BLOCK_ADDRESS); + } + } + return; + } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java new file mode 100644 index 0000000000..e970cff483 --- /dev/null +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java @@ -0,0 +1,61 @@ +package io.nuls.transaction.utils; + +import io.nuls.core.basic.InitializingBean; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.model.StringUtils; +import io.nuls.transaction.constant.TxConfig; + +import java.io.*; +import java.util.HashSet; +import java.util.Set; + +/** + * @author zhoulijun + * @description TODO + * @date 2022/1/18 16:57 + * @COPYRIGHT www.xianma360.com + */ +@Component +public class BlackListUtils implements InitializingBean { + + public Set blackList = new HashSet<>(); + + @Autowired + TxConfig config; + + /** + * 是否不在黑名单中 + * @param address + * @return 黑名单中存在返回false + */ + public boolean isPass(String address){ + return !blackList.contains(address); + } + + @Override + public void afterPropertiesSet() throws NulsException { + if(StringUtils.isBlank(config.getBlackListPath())){ + Log.error("未配置黑名单地址"); + System.exit(0); + } + try { + FileReader reader = new FileReader(config.getBlackListPath()); + BufferedReader buff = new BufferedReader(reader); + String line = buff.readLine(); + while(line != null){ + blackList.add(line); + line = buff.readLine(); + } + buff.close(); + Log.info("初始化黑名单完成,共记录{}个黑名单地址", blackList.size()); + } catch (FileNotFoundException e) { + Log.error("黑名单地址错误,文件不存在"); + System.exit(0); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/TxUtil.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/TxUtil.java index 066f536086..4590fe1fc0 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/TxUtil.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/TxUtil.java @@ -40,6 +40,7 @@ import io.nuls.transaction.manager.TxManager; import io.nuls.transaction.model.bo.Chain; import io.nuls.transaction.model.bo.TxRegister; +import io.nuls.transaction.rpc.call.AccountCall; import java.io.UnsupportedEncodingException; import java.util.*; @@ -447,4 +448,17 @@ public static boolean isBlackHoleAddress(int chainId, byte[] address) { // end code by pierre return AddressTool.BLOCK_HOLE_ADDRESS_SET.contains(contractAddress); } + + public static boolean isBlockAddress(int chainId, byte[] address) { + // add by pierre at 2022-01-18 协议升级锁定地址 + if(address == null) { + return false; + } + if (ProtocolGroupManager.getCurrentVersion(chainId) < TxContext.UPDATE_VERSION_ACCOUNT_BLOCK) { + return false; + } + String addressStr = AddressTool.getStringAddressByBytes(address); + return AccountCall.isBlockAccount(chainId, addressStr); + // end code by pierre + } } diff --git a/module/nuls-transaction/src/main/resources/languages/en.properties b/module/nuls-transaction/src/main/resources/languages/en.properties index 77985d622a..f3e08bfbd9 100644 --- a/module/nuls-transaction/src/main/resources/languages/en.properties +++ b/module/nuls-transaction/src/main/resources/languages/en.properties @@ -41,3 +41,4 @@ tx_0040=System transactions cannot circulated directly through the network tx_0041=System contract transactions cannot circulated directly through the network tx_0042=Block Contains multiple unique transactions tx_0043=Exist gas transactions without smart contract return transactions +tx_0044=Block address diff --git a/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java b/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java index 93cba97523..0080971acc 100644 --- a/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java +++ b/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java @@ -20,43 +20,135 @@ package io.nuls.transaction.tx; -import io.nuls.base.basic.AddressTool; -import io.nuls.base.signture.P2PHKSignature; -import io.nuls.base.signture.TransactionSignature; -import io.nuls.core.crypto.ECKey; -import io.nuls.core.crypto.HexUtil; -import io.nuls.core.exception.NulsException; +import java.util.ArrayList; +import java.util.List; /** * @author Niels */ public class TxSignTest { - public static void main(String[] args) throws NulsException { - String txSign = "2102b0a6f555e548a43fb7ddb6560b7edf099b1a649be66b3cebfb3cfc3c589f502a473045022100ae6ab360460d937168a53f176a0ab2aa207d11ff4dc0c45f250f323ca7509d9a022005e2b00839860648078125348f42a86857d71bb7673c94516381bde8e05b38cf2102fc324c8e18dc0ee816bc186b3d4240ca856b80dc5312f96b207b8b84339f185a473045022100ae6ab360460d937168a53f176a0ab2aa207d11ff4dc0c45f250f323ca7509d9a022005e2b00839860648078125348f42a86857d71bb7673c94516381bde8e05b38cf"; - String txHash = "568533e38c472f9e0740f318038b49ebe6b59817ce374c6816bf645744beb6ed"; - - TransactionSignature sign = new TransactionSignature(); - sign.parse(HexUtil.decode(txSign),0); - byte[] pub = sign.getP2PHKSignatures().get(0).getPublicKey(); - System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); - ECKey ecKey = ECKey.fromPublicOnly(pub); - boolean result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(0).getSignData().getSignBytes()); - System.out.println(result); - - pub = sign.getP2PHKSignatures().get(1).getPublicKey(); - System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); - ecKey = ECKey.fromPublicOnly(pub); - result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(1).getSignData().getSignBytes()); - System.out.println(result); - - - for (P2PHKSignature signature : sign.getP2PHKSignatures()) { - if (!ECKey.verify(HexUtil.decode(txHash), signature.getSignData().getSignBytes(), signature.getPublicKey())) { - System.out.println("bbbbbbbbbb"); - throw new NulsException(new Exception("Transaction signature error !")); - } - System.out.println("aaaaaaaaa"); - } + public static void main(String[] args) throws Exception { + //String txSign = "2102c1ba01932d6451c6d64966151fef6ab1aa40f47b855d9576b7dc0412adffdbc2473045022100855d069fbb65f9dd3873fe3abba51246da671b3754ef4de0e55dfc0d176b051102203072e774ab3a66ddf3f140494d1d3f4cff19734aaca94ce8fba7070e879f9d15"; + //String txHash = "8ddbb4a504532defc35f8db6feb63fd205a3a4cde952f74a5ab2537c024ba95d"; + + //TransactionSignature sign = new TransactionSignature(); + //sign.parse(HexUtil.decode(txSign),0); + //byte[] pub = sign.getP2PHKSignatures().get(0).getPublicKey(); + //System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); + //ECKey ecKey = ECKey.fromPublicOnly(pub); + //boolean result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(0).getSignData().getSignBytes()); + //System.out.println(result); + + //pub = sign.getP2PHKSignatures().get(1).getPublicKey(); + //System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); + //ecKey = ECKey.fromPublicOnly(pub); + // result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(1).getSignData().getSignBytes()); + //System.out.println(result); + + + //for (P2PHKSignature signature : sign.getP2PHKSignatures()) { + // byte[] pub = signature.getPublicKey(); + // System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); + // ECKey ecKey = ECKey.fromPublicOnly(pub); + // boolean result = ecKey.verify(HexUtil.decode(txHash), signature.getSignData().getSignBytes()); + // System.out.println(result); + // //if (!ECKey.verify(HexUtil.decode(txHash), signature.getSignData().getSignBytes(), signature.getPublicKey())) { + // // System.out.println("bbbbbbbbbb"); + // // throw new NulsException(new Exception("Transaction signature error !")); + // //} + // System.out.println("aaaaaaaaa"); + //} + + List list = new ArrayList<>(); + list.add("NULSd6HggxbVpms48DxhAu6X8MdkrMCZLTrDq 265687 4e84a5a3398670920dd7b79e6d3854f88495aa34d22d720346a59dd9589dfdfa"); + list.add("NULSd6HggjUx7Yka54WXJVc82Di62gJ8XzZmV 140123 5038a9820e9560087f07e169717d00de2606b86d69b7474b1781fd97ee81ab4d"); + list.add("NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus 306132 8dd58cec6636a46d6b45e6c73795c87490efd3c17aa7d40a6c9b185c623a003f"); + list.add("NULSd6HgiQrKehxN6kL9qeNWVdZqhqLfkjHCk 30061.8 b06cc1b6f0af0f44c5a67fd9de4ebf5fe7a0ba80a3536636789662f40257dac7"); + list.add("NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr 258480 99612be08804132c23c6116335811116efd12738eacc17c8af2b707d22cd817e"); + list.add("NULSd6Hgbcn7gdGuapjgM8QsSTBtqsgKZ7Y8v 73758 ac027273c5df327ce23e78bed320fae845b02328e20d5c57252cfa16fb15c2b3"); + list.add("NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ 365615 8ddbb4a504532defc35f8db6feb63fd205a3a4cde952f74a5ab2537c024ba95d"); + list.add("NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ 6107 a7341611bc17338709d5587155cc590818b27fd59edad83644d56867a89d68f4"); + list.add("NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR 15654 0b5e52c2f4d7772279a00ffb43101cb332c10d6d8d8be4662e744c7eebe1db4f"); + list.add("NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk 105444 8c4215091a11fc5ea4d97a12a982525ae3a7f1cf7801c44faf8a51ba2db9e26c"); + list.add("NULSd6HgbJZ4n4roadePzyf8Zx2YkD8RcoYuc 215272 ba9b2cc987b888f95340e39dcb1942a71cf8dc1be052dea6f0b2199e35821d01"); + list.add("NULSd6HgbJZ4n4roadePzyf8Zx2YkD8RcoYuc 10000 12192e6ad13599b027ac07b0e51eeae948ee193e5d4c0ce75050c205f1f685a9"); + list.add("NULSd6HgXDFjzhjNANSNCH6sXvjP4d1Zu5vrV 15870 3108d428751d0c4ea70ea7b6218b08f78eb28b1b27d897e7623642778353e6df"); + list.add("NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By 21811 ebc8117c88f859ce271685533e36638d89106457ef53959cddcf34945e95e16c"); + list.add("NULSd6HgYpRtzGgRHy32ayZXZjVx5RuUNN7PD 10299 83359646d1a4bf60685f08d1900c9e5f2ae1c9cf25459fe87d839b2a3cad06af"); + list.add("NULSd6HgUXrV1fkbKwszFhSjhckZbW25TQeWj 12601 0f50082a8cee0e42d547f8c9c346898e3317050364c867e2a51c2c8d305b1904"); + list.add("NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx 3885 690661d1d5fc58bfbbdfa90f5874382b0f12ac5aa5382639bb956c14961236b6"); + list.add("NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp 2775 ddbcd47c767df7f89fa42412e9bf9105d498b452e6076852795b1590654473b5"); + //for (String aaa : list) { + // String[] aaas = aaa.split("\\s+"); + // String address = aaas[0].trim(); + // System.out.println(Arrays.toString(aaas)); + // String txInfo = HttpClientUtil.get(String.format("http://192.168.1.125:8004/api/tx/%s", aaas[2].trim())); + // Map objectMap = JSONUtils.json2map(txInfo); + // Map map = (Map) objectMap.get("data"); + // String txHash = map.get("hash").toString(); + // String txSign = map.get("transactionSignature").toString(); + // System.out.println(txHash); + // System.out.println(txSign); + // TransactionSignature sign = new TransactionSignature(); + // sign.parse(HexUtil.decode(txSign),0); + // //byte[] pub = sign.getP2PHKSignatures().get(0).getPublicKey(); + // //System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); + // //ECKey ecKey = ECKey.fromPublicOnly(pub); + // //boolean result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(0).getSignData().getSignBytes()); + // //System.out.println(result); + // + // //pub = sign.getP2PHKSignatures().get(1).getPublicKey(); + // //System.out.println(AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub,1))); + // //ecKey = ECKey.fromPublicOnly(pub); + // // result = ecKey.verify(HexUtil.decode(txHash),sign.getP2PHKSignatures().get(1).getSignData().getSignBytes()); + // //System.out.println(result); + // + // + // for (P2PHKSignature signature : sign.getP2PHKSignatures()) { + // byte[] pub = signature.getPublicKey(); + // String genAddress = AddressTool.getStringAddressByBytes(AddressTool.getAddress(pub, 1)); + // System.out.println(genAddress); + // boolean invalid = !address.equals(genAddress); + // if (invalid) { + // System.err.println("地址不一致"); + // } + // ECKey ecKey = ECKey.fromPublicOnly(pub); + // boolean result = ecKey.verify(HexUtil.decode(txHash), signature.getSignData().getSignBytes()); + // if (!result) { + // System.err.println("验证失败"); + // } + // System.out.println(result); + // //if (!ECKey.verify(HexUtil.decode(txHash), signature.getSignData().getSignBytes(), signature.getPublicKey())) { + // // System.out.println("bbbbbbbbbb"); + // // throw new NulsException(new Exception("Transaction signature error !")); + // //} + // System.out.println("aaaaaaaaa"); + // } + // System.out.println("---------------------------------------"); + //} + + + } + /* + list.add("NULSd6HggxbVpms48DxhAu6X8MdkrMCZLTrDq 265687 4e84a5a3398670920dd7b79e6d3854f88495aa34d22d720346a59dd9589dfdfa"); + list.add("NULSd6HggjUx7Yka54WXJVc82Di62gJ8XzZmV 140123 5038a9820e9560087f07e169717d00de2606b86d69b7474b1781fd97ee81ab4d"); + list.add("NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus 306132 8dd58cec6636a46d6b45e6c73795c87490efd3c17aa7d40a6c9b185c623a003f"); + list.add("NULSd6HgiQrKehxN6kL9qeNWVdZqhqLfkjHCk 30061.8 b06cc1b6f0af0f44c5a67fd9de4ebf5fe7a0ba80a3536636789662f40257dac7"); + list.add("NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr 258480 99612be08804132c23c6116335811116efd12738eacc17c8af2b707d22cd817e"); + list.add("NULSd6Hgbcn7gdGuapjgM8QsSTBtqsgKZ7Y8v 73758 ac027273c5df327ce23e78bed320fae845b02328e20d5c57252cfa16fb15c2b3"); + list.add("NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ 365615 8ddbb4a504532defc35f8db6feb63fd205a3a4cde952f74a5ab2537c024ba95d"); + list.add("NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ 6107 a7341611bc17338709d5587155cc590818b27fd59edad83644d56867a89d68f4"); + list.add("NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR 15654 0b5e52c2f4d7772279a00ffb43101cb332c10d6d8d8be4662e744c7eebe1db4f"); + list.add("NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk 105444 8c4215091a11fc5ea4d97a12a982525ae3a7f1cf7801c44faf8a51ba2db9e26c"); + list.add("NULSd6HgbJZ4n4roadePzyf8Zx2YkD8RcoYuc 215272 ba9b2cc987b888f95340e39dcb1942a71cf8dc1be052dea6f0b2199e35821d01"); + list.add("NULSd6HgbJZ4n4roadePzyf8Zx2YkD8RcoYuc 10000 12192e6ad13599b027ac07b0e51eeae948ee193e5d4c0ce75050c205f1f685a9"); + list.add("NULSd6HgXDFjzhjNANSNCH6sXvjP4d1Zu5vrV 15870 3108d428751d0c4ea70ea7b6218b08f78eb28b1b27d897e7623642778353e6df"); + list.add("NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By 21811 ebc8117c88f859ce271685533e36638d89106457ef53959cddcf34945e95e16c"); + list.add("NULSd6HgYpRtzGgRHy32ayZXZjVx5RuUNN7PD 10299 83359646d1a4bf60685f08d1900c9e5f2ae1c9cf25459fe87d839b2a3cad06af"); + list.add("NULSd6HgUXrV1fkbKwszFhSjhckZbW25TQeWj 12601 0f50082a8cee0e42d547f8c9c346898e3317050364c867e2a51c2c8d305b1904"); + list.add("NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx 3885 690661d1d5fc58bfbbdfa90f5874382b0f12ac5aa5382639bb956c14961236b6"); + list.add("NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp 2775 ddbcd47c767df7f89fa42412e9bf9105d498b452e6076852795b1590654473b5"); + */ } diff --git a/test/nuls-test/src/main/java/io/nuls/test/Test.java b/test/nuls-test/src/main/java/io/nuls/test/Test.java index ae7ead10e1..baf34f7685 100644 --- a/test/nuls-test/src/main/java/io/nuls/test/Test.java +++ b/test/nuls-test/src/main/java/io/nuls/test/Test.java @@ -1,11 +1,15 @@ package io.nuls.test; import io.nuls.base.api.provider.account.facade.AccountInfo; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.crypto.Sha256Hash; import io.nuls.test.cases.SleepAdapter; import io.nuls.test.controller.RemoteCaseReq; import io.nuls.test.controller.RemoteResult; import io.nuls.test.utils.RestFulUtils; import io.nuls.core.parse.MapUtils; +import org.bouncycastle.jcajce.provider.digest.SHA256; +import org.bouncycastle.util.encoders.Hex; /** * @Author: zhoulijun @@ -15,12 +19,17 @@ public class Test { public static void main(String[] args) { - RemoteCaseReq req = new RemoteCaseReq(); - req.setCaseClass(SleepAdapter.$15SEC.class); - req.setParam("5MR_2CaLdKkCgdLAg9NYnppSRU9o5Lkx9wT"); - RestFulUtils.getInstance().setServerUri("http://192.168.1.115:9999/api"); - RemoteResult res = RestFulUtils.getInstance().post("/remote/call", MapUtils.beanToMap(req)); - System.out.println("res:{}" + res); +// RemoteCaseReq req = new RemoteCaseReq(); +// req.setCaseClass(SleepAdapter.$15SEC.class); +// req.setParam("5MR_2CaLdKkCgdLAg9NYnppSRU9o5Lkx9wT"); +// RestFulUtils.getInstance().setServerUri("http://192.168.1.115:9999/api"); +// RemoteResult res = RestFulUtils.getInstance().post("/remote/call", MapUtils.beanToMap(req)); +// System.out.println("res:{}" + res); + + String str = "ABCd"; + str = HexUtil.encode(Sha256Hash.hash(str.getBytes())); + System.out.println(str); + System.out.println("0cda48b9b56125648510ec9cd3ad8d3858ba73db9fe3c84e706585c6005d7bdc".length()); } } diff --git a/version b/version index c6436a8536..ed0edc885b 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.10.2 +2.11.0 \ No newline at end of file From 3595561d7da0299c66394dbf4138524f24012dfd Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Wed, 19 Jan 2022 15:44:54 +0800 Subject: [PATCH 287/304] Prod 19 (#653) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels Co-authored-by: NaboxAdmin --- .../core/exception/NulsRuntimeException.java | 16 +- module-beta.ncf | 162 ++++++++++++++++++ module-dev.ncf | 62 ++++--- module.ncf | 42 +++-- .../provider/model/jsonrpc/RpcResult.java | 8 + .../nuls/provider/rpctools/LegderTools.java | 8 +- .../transaction/utils/BlackListUtils.java | 32 +++- 7 files changed, 262 insertions(+), 68 deletions(-) create mode 100644 module-beta.ncf diff --git a/common/nuls-core/src/main/java/io/nuls/core/exception/NulsRuntimeException.java b/common/nuls-core/src/main/java/io/nuls/core/exception/NulsRuntimeException.java index b970a6d80b..920802d0c6 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/exception/NulsRuntimeException.java +++ b/common/nuls-core/src/main/java/io/nuls/core/exception/NulsRuntimeException.java @@ -66,8 +66,12 @@ public NulsRuntimeException(ErrorCode errorCode) { public NulsRuntimeException(ErrorCode errorCode, String message) { super(errorCode.getMsg()); this.code = errorCode.getCode(); - this.message = errorCode.getMsg() + ";" + message; this.errorCode = errorCode; + if (StringUtils.isNotBlank(errorCode.getMsg())) { + this.message = errorCode.getMsg() + ";" + message; + } else { + this.message = message; + } } /** @@ -111,8 +115,12 @@ public NulsRuntimeException(ErrorCode errorCode, Throwable cause) { public NulsRuntimeException(ErrorCode errorCode, String message, Throwable cause) { super(errorCode.getMsg(), cause); this.code = errorCode.getCode(); - this.message = errorCode.getMsg() + ":" + message; this.errorCode = errorCode; + if (StringUtils.isNotBlank(errorCode.getMsg())) { + this.message = errorCode.getMsg() + ";" + message; + } else { + this.message = message; + } } /** @@ -183,7 +191,7 @@ public ErrorCode getErrorCode() { return errorCode; } - public String format(){ - return MessageFormat.format("NulsRuntimeException -code: [{0}], -msg: {1}", this.code, this.message); + public String format() { + return MessageFormat.format("NulsRuntimeException -code: [{0}], -msg: {1}", this.code, this.message); } } diff --git a/module-beta.ncf b/module-beta.ncf new file mode 100644 index 0000000000..5072899777 --- /dev/null +++ b/module-beta.ncf @@ -0,0 +1,162 @@ +[global] +encoding=UTF-8 +language=en +logPath=../../../../Logs +logLevel=DEBUG +dataPath=../../../../data +#默认本链ID +chainId=2 +#地址前缀 +addressPrefix=tNULS +#默认本链主资产ID +assetId=1 +#默认链名称 +chainName=nuls2 +#本链默认资产符号 +symbol=NULS +#默认资产的小数精确位数 +decimals=8 +#主网链id +mainChainId=2 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=2.7.0-a4354e9 + + + +[network] +port=18001 +crossPort=18002 +#魔法参数 +packetMagic=20200120 +#种子节点 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +#主网的跨链种子连接节点 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +#最大入网连接数 +maxInCount=100 +#最大出网连接数 +maxOutCount=20 + +[account] +blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt +keystoreFolder=/keystore/backup + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=2 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json +dependent=cross-chain,protocol-update,smart-contract + +[consensus] +#种子节点列表 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=2 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/265*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=99.6 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs +dependent=protocol-update,smart-contract,cross-chain + +[transaction] +dependent=protocol-update,smart-contract +blackListPath=/Users/zhouwei/data/nuls-v2/account + +[ledger] +dependent=protocol-update + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd +dependent=protocol-update + +[chain-manager] +dependent=smart-contract,protocol-update + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=18003 +#数据库url地址 +databaseUrl=192.168.1.204 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 +#连接超时时间 +connectTimeOut=30000 +dependent=smart-contract,cross-chain,chain-manager + +[cross-chain] +#跨链节点链接的最小值 +minNodeAmount=2 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +#主网验证人列表 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 +dataPath=../../../../../data +logPath=../../../../../Logs +dependent=protocol-update,smart-contract + +[nuls-api] +#httpServer的启动ip +serverIp=0.0.0.0 +#httpServer的启动port +serverPort=18004 +dependent=smart-contract,cross-chain,chain-manager + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=10 +dependent=smart-contract,cross-chain + +[cmd-client] +clientVersion=2.7.0 diff --git a/module-dev.ncf b/module-dev.ncf index 15f2136eb6..6dfb503277 100644 --- a/module-dev.ncf +++ b/module-dev.ncf @@ -2,18 +2,18 @@ encoding=UTF-8 language=en logPath=../../../../Logs -logLevel=INFO +logLevel=DEBUG dataPath=../../../../data #默认本链ID chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 #默认资产小数位数 decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS #主网链id @@ -25,14 +25,14 @@ mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=20200908 +packetMagic=202001177 #种子节点 -selfSeedIps=192.168.1.37:8001 +selfSeedIps=192.168.1.204:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.37:8002 +moonSeedIps=192.168.1.204:18002 #最大入网连接数 maxInCount=300 #最大出网连接数 @@ -40,6 +40,7 @@ maxOutCount=20 [account] keystoreFolder=/keystore/backup +blockAccountManager=tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD dependent=protocol-update [block] @@ -58,18 +59,18 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block.json -dependent=cross-chain,smart-contract,protocol-update +genesisBlockPath=genesis-block_dev.json +dependent=cross-chain,protocol-update,smart-contract [consensus] #种子节点列表 -seedNodes=tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -93,10 +94,13 @@ dependent=protocol-update,smart-contract,cross-chain [transaction] dependent=protocol-update,smart-contract +[ledger] +dependent=protocol-update + [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH dependent=protocol-update [chain-manager] @@ -104,9 +108,9 @@ dependent=smart-contract,protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 -databaseUrl=127.0.0.1 +databaseUrl=192.168.1.204 #数据库端口号 databasePort=27017 #连接池最大数 @@ -117,17 +121,9 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM -teamAddress=NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L -communityAddress=NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3 -dependent=smart-contract,cross-chain +dependent=smart-contract,cross-chain,chain-manager [cross-chain] -dataPath=../../../../../data -logPath=../../../../../Logs #跨链节点链接的最小值 minNodeAmount=3 #跨链节点链接的最大值 @@ -135,27 +131,29 @@ sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.37:8002 +crossSeedIps=192.168.1.39:18002 #主网验证人列表 -verifiers=tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract [nuls-api] #httpServer的启动ip -serverIp=127.0.0.1 +serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 -dependent=smart-contract,cross-chain +serverPort=18004 +dependent=smart-contract,cross-chain,chain-manager [protocol-update] +continuousIntervalCountMinimum=2 #每隔多少个区块统计一次协议占比 -interval=1000 +interval=2 dependent=smart-contract,cross-chain [cmd-client] -clientVersion=2.5.0 - +clientVersion=2.7.0 diff --git a/module.ncf b/module.ncf index 5072899777..c749785e1d 100644 --- a/module.ncf +++ b/module.ncf @@ -10,12 +10,12 @@ chainId=2 addressPrefix=tNULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -23,27 +23,25 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=2.7.0-a4354e9 - - [network] port=18001 crossPort=18002 #魔法参数 -packetMagic=20200120 +packetMagic=202001177 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=192.168.1.204:18001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=192.168.1.204:18002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] -blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt keystoreFolder=/keystore/backup +blockAccountManager=tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD +dependent=protocol-update [block] #区块最大字节数 @@ -53,7 +51,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=2 +minNodeAmount=0 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -61,12 +59,12 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block.json +genesisBlockPath=genesis-block_dev.json dependent=cross-chain,protocol-update,smart-contract [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -81,12 +79,12 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dataPath=../../../../../data @@ -94,8 +92,8 @@ logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [transaction] -dependent=protocol-update,smart-contract blackListPath=/Users/zhouwei/data/nuls-v2/account +dependent=protocol-update,smart-contract [ledger] dependent=protocol-update @@ -103,8 +101,7 @@ dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd +crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH dependent=protocol-update [chain-manager] @@ -129,15 +126,15 @@ dependent=smart-contract,cross-chain,chain-manager [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=192.168.1.39:18002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 @@ -154,8 +151,9 @@ serverPort=18004 dependent=smart-contract,cross-chain,chain-manager [protocol-update] +continuousIntervalCountMinimum=2 #每隔多少个区块统计一次协议占比 -interval=10 +interval=2 dependent=smart-contract,cross-chain [cmd-client] diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java b/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java index 3a833eed60..0749f3dd49 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import io.nuls.core.basic.Result; import io.nuls.core.constant.ErrorCode; +import io.nuls.core.model.StringUtils; /** * @author Niels @@ -103,6 +104,9 @@ public static RpcResult failed(Result result) { public static RpcResult failed(ErrorCode errorCode) { RpcResult rpcResult = new RpcResult(); RpcResultError error = new RpcResultError(errorCode.getCode(), errorCode.getMsg(), null); + if(StringUtils.isBlank(error.getMessage())){ + error.setMessage(error.getData().toString()); + } rpcResult.setError(error); return rpcResult; } @@ -110,7 +114,11 @@ public static RpcResult failed(ErrorCode errorCode) { public static RpcResult failed(ErrorCode errorCode, String data) { RpcResult rpcResult = new RpcResult(); RpcResultError error = new RpcResultError(errorCode.getCode(), errorCode.getMsg(), data); + if(StringUtils.isBlank(error.getMessage())){ + error.setMessage(error.getData().toString()); + } rpcResult.setError(error); + return rpcResult; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 8cf627fe23..4e7e7b019a 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -100,13 +100,15 @@ public Result> getBalanceList(int chainId, List coinDt if (dto == null) { accountBalance.setBalance("0"); accountBalance.setTotalBalance("0"); + accountBalance.setConsensusLock("0"); } else { accountBalance.setBalance(dto.getAmount()); - accountBalance.setTotalBalance(dto.getAmount()); + accountBalance.setConsensusLock(dto.getLockAmount()); + BigInteger balance = new BigInteger(dto.getAmount()); + BigInteger lockBalance = new BigInteger(dto.getLockAmount()); + accountBalance.setTotalBalance(balance.add(lockBalance).toString()); } - accountBalance.setTimeLock("0"); - accountBalance.setConsensusLock("0"); accountBalance.setFreeze("0"); accountBalanceList.add(accountBalance); } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java index e970cff483..58f699ca28 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java @@ -11,6 +11,10 @@ import java.io.*; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * @author zhoulijun @@ -19,9 +23,9 @@ * @COPYRIGHT www.xianma360.com */ @Component -public class BlackListUtils implements InitializingBean { +public class BlackListUtils implements InitializingBean,Runnable { - public Set blackList = new HashSet<>(); + public Set blackList = new CopyOnWriteArraySet<>(); @Autowired TxConfig config; @@ -34,14 +38,27 @@ public class BlackListUtils implements InitializingBean { public boolean isPass(String address){ return !blackList.contains(address); } + + @Override public void afterPropertiesSet() throws NulsException { if(StringUtils.isBlank(config.getBlackListPath())){ - Log.error("未配置黑名单地址"); - System.exit(0); + Log.warn("未配置黑名单地址"); + return ; + } + if(!new File(config.getBlackListPath()).exists()){ + Log.warn("黑名单地址文件不存在,黑名单地址为空"); + return ; } + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); + executorService.scheduleAtFixedRate(this, 2, 60, TimeUnit.SECONDS); + } + + @Override + public void run() { try { + blackList.clear(); FileReader reader = new FileReader(config.getBlackListPath()); BufferedReader buff = new BufferedReader(reader); String line = buff.readLine(); @@ -50,12 +67,13 @@ public void afterPropertiesSet() throws NulsException { line = buff.readLine(); } buff.close(); - Log.info("初始化黑名单完成,共记录{}个黑名单地址", blackList.size()); + Log.info("重置黑名单地址完成,共记录{}个黑名单地址", blackList.size()); } catch (FileNotFoundException e) { - Log.error("黑名单地址错误,文件不存在"); + Log.error("黑名单地址错误,文件不存在",e); System.exit(0); } catch (IOException e) { - e.printStackTrace(); + Log.error("读取黑名单文件错误",e); + System.exit(0); } } } From 505f0eda3f1f32db297ce942a7e5d1f4539029a7 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 23 Jan 2022 15:06:56 +0800 Subject: [PATCH 288/304] Develop add api (#654) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * 提交协议升级配置 * update block * update pom * update test case * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * add api for block account Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- module/nuls-account/pom.xml | 16 ++ .../account/helper/AccountBlockHelper.java | 2 +- .../java/io/nuls/account/tx/Transfer.java | 219 ++++++++++++------ .../jsonrpc/controller/AccountController.java | 32 +++ .../nuls/provider/rpctools/AccountTools.java | 24 ++ .../nuls/chain/service/ValidateService.java | 1 + .../service/impl/ValidateServiceImpl.java | 24 ++ .../tx/v12/AddAssetTransferProcessor.java | 109 +++++++++ .../src/main/resources/protocol-config.json | 18 ++ .../src/main/resources/versions.json | 5 + version | 2 +- 11 files changed, 382 insertions(+), 70 deletions(-) create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v12/AddAssetTransferProcessor.java diff --git a/module/nuls-account/pom.xml b/module/nuls-account/pom.xml index 54d23e2664..ca25e652f7 100644 --- a/module/nuls-account/pom.xml +++ b/module/nuls-account/pom.xml @@ -21,6 +21,22 @@ io.nuls.v2 nuls-base-protocol-update + + io.nuls.v2 + sdk4j + 1.1.6.RELEASE + test + + + org.mybatis + mybatis + + + io.nuls.v2 + nuls-core-h2 + + + nuls-module-account diff --git a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java index 8ddea68f0a..2cd3e0762b 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java +++ b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java @@ -68,7 +68,7 @@ public Result blockAccountTxValidate(Chain chain, Transaction tx) throws NulsExc CoinFrom coinFrom = listFrom.get(0); String fromStr = AddressTool.getStringAddressByBytes(coinFrom.getAddress()); if (!fromStr.equals(accountConfig.getBlockAccountManager())) { - chain.getLogger().error("error: not manager"); + chain.getLogger().error("error: not manager, tx: {}, config: {}", fromStr, accountConfig.getBlockAccountManager()); return Result.getFailed(AccountErrorCode.COINDATA_IS_INCOMPLETE); } AccountBlockData txData = new AccountBlockData(); diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index cd45459b8c..81766702d6 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -48,6 +48,7 @@ import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.io.IoUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.info.HostInfo; @@ -55,12 +56,19 @@ import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.v2.model.dto.RpcResult; +import io.nuls.v2.util.HttpClientUtil; +import io.nuls.v2.util.JsonRpcUtil; +import org.apache.commons.io.IOUtils; import org.junit.Before; import org.junit.Test; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -102,10 +110,18 @@ public Transfer(){} // this.addressTo = addressTo; //} - @Before - public void before() throws Exception { - NoUse.mockModule(); - ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); + //@Before + //public void before() throws Exception { + // NoUse.mockModule(); + // ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); + //} + + @Test + public void createAccount() throws NulsException { + Account account = AccountTool.createAccount(1); + System.out.println(HexUtil.encode(account.getPriKey())); + System.out.println(HexUtil.encode(account.getPubKey())); + System.out.println(account.getAddress().toString()); } @Test @@ -152,9 +168,9 @@ public void accountBlockTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.BLOCK_ACCOUNT); CoinData coinData = new CoinData(); - //String fromKey = "9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"; + //String fromKey = "???"; //byte[] from = AddressTool.getAddress("tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); - String fromKey = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + String fromKey = "???"; byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); if(null == nonce){ @@ -203,6 +219,9 @@ public void accountBlockTest() throws Exception { @Test public void accountBlockMultiSignTest() throws Exception { + chainId = 1; + assetChainId = 1; + assetId = 1; Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -212,16 +231,24 @@ public void accountBlockMultiSignTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.BLOCK_ACCOUNT); CoinData coinData = new CoinData(); - byte[] from = AddressTool.getAddress("tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"); - byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); - if(null == nonce){ + + String fromStr = "NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx"; + byte[] from = AddressTool.getAddress(fromStr); + + byte[] nonce; + RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + Map result = (Map) request.getResult(); + String nonceStr = (String) result.get("nonce"); + if(null == nonceStr){ nonce = HexUtil.decode("0000000000000000"); + } else { + nonce = HexUtil.decode(nonceStr); } coinData.addFrom(new CoinFrom( from, assetChainId, assetId, - new BigDecimal("0.001").movePointRight(8).toBigInteger(), + new BigDecimal("0.1").movePointRight(8).toBigInteger(), nonce, (byte) 0 )); @@ -234,29 +261,34 @@ public void accountBlockMultiSignTest() throws Exception { )); tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); - data.setAddresses(new String[]{ - "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja" - }); + //File file = new File("/Users/pierreluo/Nuls/address_block_finally"); + //List list = IOUtils.readLines(new FileInputStream(file), StandardCharsets.UTF_8.name()); + //System.out.println("read length: " + list.size()); + //Set set = list.stream().map(a -> a.trim()).collect(Collectors.toSet()); + //System.out.println("deduplication length: " + set.size()); + //data.setAddresses(set.toArray(new String[set.size()])); + data.setAddresses(new String[]{"NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY"}); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); tx.setHash(NulsHash.calcHash(tx.serializeForHash())); - - String[] pubkeys = new String[]{"02f01ab55fff126dd22f7b13671829c1663a167f62553d9ac9a490785c72b38f42", "02721315241ba2511f757fffea4534fdef912e8c74a4f0df416809c9080a5393e6", "037623bbe485c3089180722114b524ec72a75a4f055b82ab25e28b5f03619d86cd"}; + System.out.println(String.format("交易大小: %s", tx.size())); + + String[] pubkeys = new String[]{ + "0225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad", + "029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae1020", + "02784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb", + "020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf8", + "02b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa93195"}; List pubkeyList = Arrays.asList(pubkeys); List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); - List p2PHKSignatures = new ArrayList<>(); - transactionSignature.setM((byte) 2); + transactionSignature.setM((byte) 3); transactionSignature.setPubKeyList(collect); + tx.setTransactionSignature(transactionSignature.serialize()); + List p2PHKSignatures = new ArrayList<>(); List priKeyList = new ArrayList<>(); - priKeyList.add("dc9514bbb1b19337f39f2b90b39a4087a531e842727c3a1fa77c2e20fb8c7ce5"); - priKeyList.add("a4757aebd10331b52fd8bc3a4c79ac025187bc65f6c4d944a07f7b77a9ff9161"); - priKeyList.add("d5aa0f4b360a913fb01fd257e22a67916ac842467fb241ca692a60e4d85511b3"); + priKeyList.add("???"); for (String pri : priKeyList) { ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); @@ -264,8 +296,30 @@ public void accountBlockMultiSignTest() throws Exception { transactionSignature.setP2PHKSignatures(p2PHKSignatures); } tx.setTransactionSignature(transactionSignature.serialize()); - Response response = this.newTx(tx); - System.out.println(JSONUtils.obj2PrettyJson(response)); + System.out.println(HexUtil.encode(tx.serialize())); + //Response response = this.newTx(tx); + //System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + @Test + public void txMultiSignTest() throws Exception { + String pri = "???"; + String filePath = "???"; + String txHex = IoUtils.readBytesToString(new File(filePath)); + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(txHex), 0); + + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.parse(tx.getTransactionSignature(), 0); + + List p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + System.out.println(HexUtil.encode(tx.serialize())); } @Test @@ -278,8 +332,13 @@ public void getAllBlockAccount() throws Exception { System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); } + + @Test - public void accountUnBlockTest() throws Exception { + public void accountUnBlockMultiSignTest() throws Exception { + chainId = 1; + assetChainId = 1; + assetId = 1; Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -289,17 +348,23 @@ public void accountUnBlockTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.UNBLOCK_ACCOUNT); CoinData coinData = new CoinData(); - String fromKey = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; - byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); - byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); - if(null == nonce){ + String fromStr = "NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx"; + byte[] from = AddressTool.getAddress(fromStr); + + byte[] nonce; + RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + Map result = (Map) request.getResult(); + String nonceStr = (String) result.get("nonce"); + if(null == nonceStr){ nonce = HexUtil.decode("0000000000000000"); + } else { + nonce = HexUtil.decode(nonceStr); } coinData.addFrom(new CoinFrom( from, assetChainId, assetId, - new BigDecimal("0.001").movePointRight(8).toBigInteger(), + new BigDecimal("0.1").movePointRight(8).toBigInteger(), nonce, (byte) 0 )); @@ -313,29 +378,40 @@ public void accountUnBlockTest() throws Exception { tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ - "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD" + "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); - tx.setHash(NulsHash.calcHash(tx.serializeForHash())); - TransactionSignature transactionSignature = new TransactionSignature(); + + String[] pubkeys = new String[]{ + "0225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad", + "029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae1020", + "02784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb", + "020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf8", + "02b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa93195"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.setM((byte) 3); + transactionSignature.setPubKeyList(collect); + tx.setTransactionSignature(transactionSignature.serialize()); + List p2PHKSignatures = new ArrayList<>(); - //根据密码获得ECKey get ECKey from Password - ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); - byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); - P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); - p2PHKSignatures.add(signature); - //交易签名 - transactionSignature.setP2PHKSignatures(p2PHKSignatures); + List priKeyList = new ArrayList<>(); + priKeyList.add("???"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } tx.setTransactionSignature(transactionSignature.serialize()); - Response response = this.newTx(tx); - System.out.println(JSONUtils.obj2PrettyJson(response)); + System.out.println(HexUtil.encode(tx.serialize())); } @Test - public void accountUnBlockMultiSignTest() throws Exception { + public void accountUnBlockTest() throws Exception { Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -345,7 +421,8 @@ public void accountUnBlockMultiSignTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.UNBLOCK_ACCOUNT); CoinData coinData = new CoinData(); - byte[] from = AddressTool.getAddress("tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"); + String fromKey = "???"; + byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); if(null == nonce){ nonce = HexUtil.decode("0000000000000000"); @@ -368,37 +445,43 @@ public void accountUnBlockMultiSignTest() throws Exception { tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ - "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL" + "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", + "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); - tx.setHash(NulsHash.calcHash(tx.serializeForHash())); - String[] pubkeys = new String[]{"02f01ab55fff126dd22f7b13671829c1663a167f62553d9ac9a490785c72b38f42", "02721315241ba2511f757fffea4534fdef912e8c74a4f0df416809c9080a5393e6", "037623bbe485c3089180722114b524ec72a75a4f055b82ab25e28b5f03619d86cd"}; - List pubkeyList = Arrays.asList(pubkeys); - List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); - MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + TransactionSignature transactionSignature = new TransactionSignature(); List p2PHKSignatures = new ArrayList<>(); - transactionSignature.setM((byte) 2); - transactionSignature.setPubKeyList(collect); - - List priKeyList = new ArrayList<>(); - priKeyList.add("dc9514bbb1b19337f39f2b90b39a4087a531e842727c3a1fa77c2e20fb8c7ce5"); - priKeyList.add("a4757aebd10331b52fd8bc3a4c79ac025187bc65f6c4d944a07f7b77a9ff9161"); - priKeyList.add("d5aa0f4b360a913fb01fd257e22a67916ac842467fb241ca692a60e4d85511b3"); - for (String pri : priKeyList) { - ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); - P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); - p2PHKSignatures.add(p2PHKSignature); - transactionSignature.setP2PHKSignatures(p2PHKSignatures); - } + //根据密码获得ECKey get ECKey from Password + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); + P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); + p2PHKSignatures.add(signature); + //交易签名 + transactionSignature.setP2PHKSignatures(p2PHKSignatures); tx.setTransactionSignature(transactionSignature.serialize()); Response response = this.newTx(tx); System.out.println(JSONUtils.obj2PrettyJson(response)); } + @Test + public void blockTest() { + Set nodes = new HashSet<>(); + for (int i=7396000;i<7399782;i++) { + System.out.println(String.format("load block header: %s", i)); + RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getHeaderByHeight", List.of(1, Long.valueOf(i))); + Map result = (Map) request.getResult(); + String packingAddress = (String) result.get("packingAddress"); + Integer blockVersion = (Integer) result.get("blockVersion"); + if (blockVersion.intValue() < 11) { + nodes.add(packingAddress); + } + } + nodes.stream().forEach(n -> System.out.println(n)); + } + @Override public void run() { try { diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 3344bb000f..d00b23297a 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -840,6 +840,38 @@ public RpcResult sign(List params) { return ResultUtil.getJsonRpcResult(result); } + @RpcMethod("isBlockAccount") + @ApiOperation(description = "是否锁定账户", order = 165) + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "账户地址"), + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", description = "是否锁定"), + })) + public RpcResult isBlockAccount(List params) { + int chainId; + String address; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + boolean blockAccount = accountTools.isBlockAccount(chainId, address); + return RpcResult.success(Map.of("value", blockAccount)); + } + @RpcMethod("encryptedPriKeySign") @ApiOperation(description = "密文私钥摘要签名", order = 156) @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java index 8dbe8056a1..699a14a99e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java @@ -7,6 +7,8 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.model.StringUtils; import io.nuls.core.parse.MapUtils; import io.nuls.core.parse.SerializeUtils; import io.nuls.core.rpc.info.Constants; @@ -83,6 +85,28 @@ private T getAddressInfo(int chainId, String address, String password,String } + public boolean isBlockAccount(int chainId, String address) { + try { + if (StringUtils.isBlank(address)) { + return false; + } + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + boolean isBlock = callRpc(ModuleE.AC.abbr, "ac_isBlockAccount", params, (Function, Boolean>) res -> { + if (res == null) { + return false; + } + return (boolean) res.get("value"); + + }); + return isBlock; + } catch (Exception e) { + Log.error(e); + return false; + } + } + public MultiSigAccount createMultiSigAccount(int chainId, List pubKeys, int minSigns) throws NulsException { //验证公钥是否重复 Set pubkeySet = new HashSet<>(pubKeys); diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java index 9d6bc0fee6..823054994b 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java @@ -57,4 +57,5 @@ public interface ValidateService { ChainEventResult batchChainRegValidatorV7(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception; + ChainEventResult batchAssetRegValidatorV12(Asset asset, Map tempAssets) throws Exception; } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index 2de46b5622..d4e67d55b6 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -337,6 +337,30 @@ public ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception { + if (assetService.regChainAssetExist(asset, tempAssets)) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_ID_EXIST); + } + if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DECIMALPLACES); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_SYMBOL); + } + if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); + } + //判断黑洞资产与锁定资产 +// if (!BigIntegerUtils.isEqual(asset.getDepositNuls(), nulsChainConfig.getAssetDepositNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } +// if (!BigIntegerUtils.isEqual(asset.getDestroyNuls(), nulsChainConfig.getAssetDestroyNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); // } return ChainEventResult.getResultSuccess(); } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v12/AddAssetTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v12/AddAssetTransferProcessor.java new file mode 100644 index 0000000000..80be561dce --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v12/AddAssetTransferProcessor.java @@ -0,0 +1,109 @@ +package io.nuls.chain.service.tx.v12; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.*; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("AddAssetTxProcessorV12") +public class AddAssetTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private AssetService assetService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.ADD_ASSET_TO_CHAIN; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map assetMap = new HashMap<>(); + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + asset = TxUtil.buildAssetWithTxAssetV5(tx); + String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); + chainEventResult = validateService.batchAssetRegValidatorV12(asset, assetMap); + if (chainEventResult.isSuccess()) { + assetMap.put(assetKey, 1); + LoggerUtil.logger().debug("txHash = {},assetKey={} reg batchValidate success!", txHash, assetKey); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},assetKey={} reg batchValidate fail!", txHash, assetKey); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + long commitHeight = blockHeader.getHeight(); + List assets = new ArrayList<>(); + Asset asset = null; + try { + for (Transaction tx : txs) { + asset = TxUtil.buildAssetWithTxAssetV5(tx); + assetService.registerAsset(asset); + assets.add(asset); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.registerCrossAsset(assets, blockHeader.getTime()); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-chain-manager/src/main/resources/protocol-config.json b/module/nuls-chain-manager/src/main/resources/protocol-config.json index 6fe2b3cdd1..faa6d7d0f0 100644 --- a/module/nuls-chain-manager/src/main/resources/protocol-config.json +++ b/module/nuls-chain-manager/src/main/resources/protocol-config.json @@ -1,4 +1,22 @@ [ + { + "version": "12", + "extend": "7", + "validTxs": [ + { + "type": "13", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AddAssetTxProcessorV12" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, + { "version": "7", "extend": "", diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 26ddb4d743..1d75c7b6a8 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -53,5 +53,10 @@ "version": "11", "effectiveRatio": "70", "continuousIntervalCount": "10" + }, + { + "version": "12", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/version b/version index ed0edc885b..a0e106b70c 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.11.0 \ No newline at end of file +2.12.0-beta \ No newline at end of file From 0cef233713122b568162f98136ba106d36fa8f1c Mon Sep 17 00:00:00 2001 From: Niels Date: Thu, 27 Jan 2022 09:47:54 +0800 Subject: [PATCH 289/304] Release/pre prod (#655) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * 2.12.0 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- module.ncf | 47 +- .../account/helper/AccountBlockHelper.java | 13 + .../model/bo/tx/AccountBlockExtend.java | 97 ++++ .../account/model/bo/tx/AccountBlockInfo.java | 144 ++++++ .../account/model/dto/AccountBlockDTO.java | 76 ++++ .../model/po/AccountBlockExtendPO.java | 160 +++++++ .../nuls/account/model/po/AccountBlockPO.java | 7 + .../nuls/account/model/vo/AccountBlockVO.java | 59 +++ .../nuls/account/rpc/cmd/AccountBlockCmd.java | 88 ++++ .../storage/AccountBlockStorageService.java | 6 +- .../impl/AccountBlockStorageServiceImpl.java | 167 ++++++- .../tx/v12/AccountLockProcessorV12.java | 234 ++++++++++ .../src/main/resources/protocol-config.json | 17 + .../java/io/nuls/account/tx/Transfer.java | 426 +++++++++++------- .../jsonrpc/controller/AccountController.java | 34 ++ .../provider/model/dto/AccountBlockDTO.java | 61 +++ .../nuls/provider/rpctools/AccountTools.java | 32 ++ .../java/io/nuls/chain/rpc/cmd/AssetCmd.java | 2 +- .../io/nuls/chain/service/AssetService.java | 2 + .../chain/service/impl/AssetServiceImpl.java | 6 + module/nuls-transaction/module.ncf | 1 - .../transaction/TransactionBootstrap.java | 17 +- .../nuls/transaction/constant/TxConfig.java | 9 + .../nuls/transaction/constant/TxContext.java | 9 + .../model/dto/AccountBlockDTO.java | 68 +++ .../model/po/AccountBlockExtendPO.java | 145 ++++++ .../transaction/model/po/AccountBlockPO.java | 86 ++++ .../transaction/rpc/call/AccountCall.java | 38 +- .../service/impl/TxServiceImpl.java | 182 +++++++- .../transaction/utils/BlackListUtils.java | 79 ---- .../src/main/resources/module.json | 3 +- version | 2 +- 32 files changed, 2028 insertions(+), 289 deletions(-) create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockExtend.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockInfo.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/dto/AccountBlockDTO.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockExtendPO.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/vo/AccountBlockVO.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/tx/v12/AccountLockProcessorV12.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBlockDTO.java create mode 100644 module/nuls-transaction/src/main/java/io/nuls/transaction/model/dto/AccountBlockDTO.java create mode 100644 module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockExtendPO.java create mode 100644 module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockPO.java delete mode 100644 module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java diff --git a/module.ncf b/module.ncf index c749785e1d..6f5af965fd 100644 --- a/module.ncf +++ b/module.ncf @@ -10,12 +10,12 @@ chainId=2 addressPrefix=tNULS #默认本链主资产ID assetId=1 -#默认资产小数位数 -decimals=8 #默认链名称 chainName=nuls2 #本链默认资产符号 symbol=NULS +#默认资产的小数精确位数 +decimals=8 #主网链id mainChainId=2 #主网主资产id @@ -23,25 +23,27 @@ mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=2.7.0-a4354e9 + + [network] port=18001 crossPort=18002 #魔法参数 -packetMagic=202001177 +packetMagic=20200120 #种子节点 -selfSeedIps=192.168.1.204:18001 +selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 #主网的跨链种子连接节点 -moonSeedIps=192.168.1.204:18002 +moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 #最大入网连接数 -maxInCount=300 +maxInCount=100 #最大出网连接数 maxOutCount=20 [account] +blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt keystoreFolder=/keystore/backup -blockAccountManager=tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD -dependent=protocol-update [block] #区块最大字节数 @@ -51,7 +53,7 @@ extendMaxSize=1024 #引发分叉链切换的高度差阈值 chainSwtichThreshold=3 #最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 -minNodeAmount=0 +minNodeAmount=2 #区块同步过程中,每次从网络上节点下载的区块数量 downloadNumber=10 #从网络节点下载单个区块的超时时间 @@ -59,12 +61,12 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block_dev.json +genesisBlockPath=genesis-block.json dependent=cross-chain,protocol-update,smart-contract [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) @@ -79,29 +81,26 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/365*30 +#初始通胀金额500w/265*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=0.4 +deflationRatio=99.6 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 dataPath=../../../../../data logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain -[transaction] -blackListPath=/Users/zhouwei/data/nuls-v2/account -dependent=protocol-update,smart-contract - [ledger] dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=tNULSeBaN2Agkr2cuMPvzXb337jubehUgLQPSH +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd dependent=protocol-update [chain-manager] @@ -124,17 +123,20 @@ socketTimeout=300000 connectTimeOut=30000 dependent=smart-contract,cross-chain,chain-manager +[transaction] +dependent=protocol-update,smart-contract + [cross-chain] #跨链节点链接的最小值 -minNodeAmount=3 +minNodeAmount=2 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.1.39:18002 +crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 @@ -151,9 +153,8 @@ serverPort=18004 dependent=smart-contract,cross-chain,chain-manager [protocol-update] -continuousIntervalCountMinimum=2 #每隔多少个区块统计一次协议占比 -interval=2 +interval=10 dependent=smart-contract,cross-chain [cmd-client] diff --git a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java index 2cd3e0762b..9621c2d382 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java +++ b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java @@ -27,6 +27,8 @@ import io.nuls.account.config.NulsConfig; import io.nuls.account.constant.AccountErrorCode; import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.AccountBlockExtend; +import io.nuls.account.model.bo.tx.AccountBlockInfo; import io.nuls.account.model.bo.tx.txdata.AccountBlockData; import io.nuls.account.util.TxUtil; import io.nuls.base.basic.AddressTool; @@ -78,6 +80,17 @@ public Result blockAccountTxValidate(Chain chain, Transaction tx) throws NulsExc chain.getLogger().error("empty addresses"); return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); } + // 检查白名单 + byte[] txDataExtend = txData.getExtend(); + if (txDataExtend != null) { + AccountBlockExtend abExtend = new AccountBlockExtend(); + abExtend.parse(txDataExtend, 0); + AccountBlockInfo[] infos = abExtend.getInfos(); + if (addresses.length != infos.length) { + chain.getLogger().error("inconsistent address data in txData"); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + } for (String addr : addresses) { if (addr.equals(accountConfig.getBlockAccountManager())) { chain.getLogger().error("error: manager can not in it"); diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockExtend.java b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockExtend.java new file mode 100644 index 0000000000..57c1e16542 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockExtend.java @@ -0,0 +1,97 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.bo.tx; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/21 + */ +public class AccountBlockExtend extends BaseNulsData { + + private AccountBlockInfo[] infos; + + private byte[] extend; + + public AccountBlockExtend() { + } + + @Override + public int size() { + int size = 0; + // length + size += SerializeUtils.sizeOfUint16(); + for (AccountBlockInfo info : infos) { + size += SerializeUtils.sizeOfNulsData(info); + } + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint16(infos.length); + for (AccountBlockInfo info : infos) { + stream.writeNulsData(info); + } + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + int length = byteBuffer.readUint16(); + AccountBlockInfo[] _infos = new AccountBlockInfo[length]; + for (int i = 0; i < length; i++) { + _infos[i] = byteBuffer.readNulsData(new AccountBlockInfo()); + } + this.infos = _infos; + this.extend = byteBuffer.readByLengthByte(); + } + + public AccountBlockInfo[] getInfos() { + return infos; + } + + public void setInfos(AccountBlockInfo[] infos) { + this.infos = infos; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockInfo.java b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockInfo.java new file mode 100644 index 0000000000..7d4456c078 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/AccountBlockInfo.java @@ -0,0 +1,144 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.bo.tx; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/21 + */ +public class AccountBlockInfo extends BaseNulsData { + + /** + * 1-增加白名单 2-删除白名单 + */ + private int operationType; + private int[] types; + private String[] contracts; + private byte[] extend; + + public AccountBlockInfo() { + } + + @Override + public int size() { + int size = 0; + size += SerializeUtils.sizeOfUint16(); + // length + size += SerializeUtils.sizeOfUint16(); + if (types != null) { + size += SerializeUtils.sizeOfUint16() * types.length; + } + size += SerializeUtils.sizeOfUint16(); + if (contracts != null) { + for (String contract : contracts) { + size += SerializeUtils.sizeOfString(contract); + } + } + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint16(operationType); + if (types == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(types.length); + for (int type : types) { + stream.writeUint16(type); + } + } + if (contracts == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(contracts.length); + for (String address : contracts) { + stream.writeString(address); + } + } + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.operationType = byteBuffer.readUint16(); + int length0 = byteBuffer.readUint16(); + int[] _types = new int[length0]; + for (int i = 0; i < length0; i++) { + _types[i] = byteBuffer.readUint16(); + } + int length = byteBuffer.readUint16(); + String[] _addresses = new String[length]; + for (int i = 0; i < length; i++) { + _addresses[i] = byteBuffer.readString(); + } + this.types = _types; + this.contracts = _addresses; + this.extend = byteBuffer.readByLengthByte(); + } + + public int getOperationType() { + return operationType; + } + + public void setOperationType(int operationType) { + this.operationType = operationType; + } + + public int[] getTypes() { + return types; + } + + public void setTypes(int[] types) { + this.types = types; + } + + public String[] getContracts() { + return contracts; + } + + public void setContracts(String[] contracts) { + this.contracts = contracts; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/dto/AccountBlockDTO.java b/module/nuls-account/src/main/java/io/nuls/account/model/dto/AccountBlockDTO.java new file mode 100644 index 0000000000..61af16258f --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/dto/AccountBlockDTO.java @@ -0,0 +1,76 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.dto; + + +import io.nuls.account.model.bo.tx.AccountBlockInfo; +import io.nuls.account.model.po.AccountBlockExtendPO; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/23 + */ +public class AccountBlockDTO { + + private byte[] address; + private AccountBlockInfo info; + + public AccountBlockDTO() { + } + + public AccountBlockDTO(byte[] address) { + this.address = address; + } + + public AccountBlockDTO(byte[] address, AccountBlockInfo info) throws NulsException, IOException { + this.address = address; + this.info = info; + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public AccountBlockInfo getInfo() { + return info; + } + + public void setInfo(AccountBlockInfo info) { + this.info = info; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockExtendPO.java b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockExtendPO.java new file mode 100644 index 0000000000..64fb8fe8bb --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockExtendPO.java @@ -0,0 +1,160 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.po; + + +import io.nuls.account.model.bo.tx.AccountBlockInfo; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public class AccountBlockExtendPO extends BaseNulsData { + + private byte[] address; + + private int[] types; + + private String[] contracts; + + private byte[] extend; + + public AccountBlockExtendPO() { + } + + public AccountBlockExtendPO(byte[] address, AccountBlockInfo info) { + this.address = address; + this.types = info.getTypes(); + this.contracts = info.getContracts(); + this.extend = info.getExtend(); + } + + public AccountBlockExtendPO(byte[] address, int[] types, String[] contracts, byte[] extend) { + this.address = address; + this.types = types; + this.contracts = contracts; + this.extend = extend; + } + + @Override + public int size() { + int size = 0; + size += Address.ADDRESS_LENGTH; + // length + size += SerializeUtils.sizeOfUint16(); + if (types != null) { + size += SerializeUtils.sizeOfUint16() * types.length; + } + size += SerializeUtils.sizeOfUint16(); + if (contracts != null) { + for (String contract : contracts) { + size += SerializeUtils.sizeOfString(contract); + } + } + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(address); + if (types == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(types.length); + for (int type : types) { + stream.writeUint16(type); + } + } + if (contracts == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(contracts.length); + for (String address : contracts) { + stream.writeString(address); + } + } + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + int length0 = byteBuffer.readUint16(); + int[] _types = new int[length0]; + for (int i = 0; i < length0; i++) { + _types[i] = byteBuffer.readUint16(); + } + int length = byteBuffer.readUint16(); + String[] _addresses = new String[length]; + for (int i = 0; i < length; i++) { + _addresses[i] = byteBuffer.readString(); + } + this.types = _types; + this.contracts = _addresses; + this.extend = byteBuffer.readByLengthByte(); + } + + public int[] getTypes() { + return types; + } + + public void setTypes(int[] types) { + this.types = types; + } + + public String[] getContracts() { + return contracts; + } + + public void setContracts(String[] contracts) { + this.contracts = contracts; + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java index da204d0154..93cecbee09 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java +++ b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountBlockPO.java @@ -26,6 +26,7 @@ package io.nuls.account.model.po; +import io.nuls.account.model.bo.tx.AccountBlockInfo; import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.basic.NulsOutputStreamBuffer; import io.nuls.base.data.Address; @@ -52,6 +53,12 @@ public AccountBlockPO(byte[] address) { this.address = address; } + public AccountBlockPO(byte[] address, AccountBlockInfo info) throws IOException { + this.address = address; + AccountBlockExtendPO po = new AccountBlockExtendPO(address, info); + this.extend = po.serialize(); + } + @Override public int size() { int size = 0; diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/vo/AccountBlockVO.java b/module/nuls-account/src/main/java/io/nuls/account/model/vo/AccountBlockVO.java new file mode 100644 index 0000000000..e8bc3ee34b --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/vo/AccountBlockVO.java @@ -0,0 +1,59 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.account.model.vo; + +/** + * @author: PierreLuo + * @date: 2022/1/25 + */ +public class AccountBlockVO { + + private String address; + private int[] types; + private String[] contracts; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int[] getTypes() { + return types; + } + + public void setTypes(int[] types) { + this.types = types; + } + + public String[] getContracts() { + return contracts; + } + + public void setContracts(String[] contracts) { + this.contracts = contracts; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java index 1f4d80e1ab..15fbc3ac87 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java +++ b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountBlockCmd.java @@ -4,12 +4,15 @@ import io.nuls.account.constant.AccountErrorCode; import io.nuls.account.constant.RpcParameterNameConstant; import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.po.AccountBlockExtendPO; import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.model.vo.AccountBlockVO; import io.nuls.account.storage.AccountBlockStorageService; import io.nuls.account.util.manager.ChainManager; import io.nuls.base.basic.AddressTool; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.rpc.cmd.BaseCmd; import io.nuls.core.rpc.model.*; @@ -106,6 +109,91 @@ public Response getAllBlockAccount(Map params) { } } + @CmdAnnotation(cmd = "ac_getBlockAccountBytes", version = 1.0, description = "查询锁定账户的信息") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "地址") + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "value", valueType = String.class, description = "锁定账户的序列化字符串") + })) + public Response getBlockAccountBytes(Map params) { + Chain chain = null; + try { + String address; + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + Object addressObj = params == null ? null : params.get("address"); + // check parameters + if (params == null || chainIdObj == null || addressObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + address = (String) addressObj; + byte[] bytes = accountBlockStorageService.getAccountBytes(AddressTool.getAddress(address)); + Map result = new HashMap<>(AccountConstant.INIT_CAPACITY_2); + String resultHex; + if (bytes == null) { + resultHex = ""; + } else { + resultHex = HexUtil.encode(bytes); + } + result.put("value", resultHex); + return success(result); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + } + + @CmdAnnotation(cmd = "ac_getBlockAccountInfo", version = 1.0, description = "查询锁定账户的信息") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "地址") + }) + @ResponseData(name = "返回值", description = "返回一个对象", responseType = @TypeDescriptor(value = AccountBlockVO.class)) + public Response getBlockAccountInfo(Map params) { + Chain chain = null; + try { + String address; + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + Object addressObj = params == null ? null : params.get("address"); + // check parameters + if (params == null || chainIdObj == null || addressObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + address = (String) addressObj; + AccountBlockPO account = accountBlockStorageService.getAccount(AddressTool.getAddress(address)); + if (account == null) { + return failed(AccountErrorCode.DATA_NOT_FOUND); + } + AccountBlockVO vo = new AccountBlockVO(); + vo.setAddress(AddressTool.getStringAddressByBytes(account.getAddress())); + if (account.getExtend() != null) { + AccountBlockExtendPO extendPO = new AccountBlockExtendPO(); + extendPO.parse(account.getExtend(), 0); + vo.setTypes(extendPO.getTypes()); + vo.setContracts(extendPO.getContracts()); + } + return success(vo); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + } + private void errorLogProcess(Chain chain, Exception e) { if (chain == null) { LOG.error(e); diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java index bde8877d2a..7954d54979 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountBlockStorageService.java @@ -25,9 +25,8 @@ package io.nuls.account.storage; +import io.nuls.account.model.dto.AccountBlockDTO; import io.nuls.account.model.po.AccountBlockPO; -import io.nuls.account.model.po.AccountPO; -import io.nuls.base.data.Address; import java.util.List; @@ -37,10 +36,13 @@ */ public interface AccountBlockStorageService { + boolean operateAccountList(List accountList) throws Exception; + boolean cancelOperateAccountList(List accountList)throws Exception; boolean saveAccountList(List accountList); boolean removeAccountList(List accountList); List getAccountList(); AccountBlockPO getAccount(byte[] address); + byte[] getAccountBytes(byte[] address); boolean existAccount(byte[] address); } diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java index 50758681d7..00d6c6125e 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountBlockStorageServiceImpl.java @@ -27,6 +27,9 @@ import io.nuls.account.constant.AccountErrorCode; import io.nuls.account.constant.AccountStorageConstant; +import io.nuls.account.model.bo.tx.AccountBlockInfo; +import io.nuls.account.model.dto.AccountBlockDTO; +import io.nuls.account.model.po.AccountBlockExtendPO; import io.nuls.account.model.po.AccountBlockPO; import io.nuls.account.storage.AccountBlockStorageService; import io.nuls.account.util.LoggerUtil; @@ -36,10 +39,8 @@ import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.rockdb.service.RocksDBService; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +53,155 @@ public class AccountBlockStorageServiceImpl implements AccountBlockStorageServic public void afterPropertiesSet() { } + private Set intArray2set(int[] _array) { + Set result = new HashSet<>(); + for (int a : _array) { + result.add(Integer.valueOf(a)); + } + return result; + } + + private int[] set2intArray(Set set) { + int[] result = new int[set.size()]; + int i = 0; + for (Integer s : set) { + result[i++] = s.intValue(); + } + return result; + } + + @Override + public boolean operateAccountList(List accountList) throws Exception { + if (null == accountList || accountList.size() == 0) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + List poList = new ArrayList<>(); + for (AccountBlockDTO dto : accountList) { + byte[] address = dto.getAddress(); + AccountBlockInfo info = dto.getInfo(); + if (info == null) { + // 账户完全锁定 + poList.add(new AccountBlockPO(address)); + } else { + AccountBlockPO po = this.getAccount(address); + if (po == null) { + // 首次添加白名单 + poList.add(new AccountBlockPO(address, info)); + } else if (po.getExtend() == null) { + // 首次添加白名单 + po.setExtend(new AccountBlockExtendPO(address, info).serialize()); + poList.add(po); + } else { + // 更新白名单 + AccountBlockExtendPO extendPO = new AccountBlockExtendPO(); + extendPO.parse(po.getExtend(), 0); + int[] types = extendPO.getTypes(); + String[] contracts = extendPO.getContracts(); + int operationType = info.getOperationType(); + if (operationType == 1) { + // 添加白名单 + int[] _types = info.getTypes(); + if (_types != null) { + Set typeSet = types == null ? new HashSet<>() : this.intArray2set(types); + typeSet.addAll(this.intArray2set(_types)); + extendPO.setTypes(this.set2intArray(typeSet)); + } + String[] _contracts = info.getContracts(); + if (_contracts != null) { + Set contractSet = contracts == null ? new HashSet<>() : new HashSet<>(Arrays.asList(contracts)); + contractSet.addAll(Arrays.asList(_contracts)); + extendPO.setContracts(contractSet.toArray(new String[contractSet.size()])); + } + po.setExtend(extendPO.serialize()); + poList.add(po); + } else if (operationType == 2) { + // 移除白名单 + int[] _types = info.getTypes(); + if (_types != null) { + Set typeSet = types == null ? new HashSet<>() : this.intArray2set(types); + typeSet.removeAll(this.intArray2set(_types)); + extendPO.setTypes(this.set2intArray(typeSet)); + } + String[] _contracts = info.getContracts(); + if (_contracts != null) { + Set contractSet = contracts == null ? new HashSet<>() : new HashSet<>(Arrays.asList(contracts)); + contractSet.removeAll(Arrays.asList(_contracts)); + extendPO.setContracts(contractSet.toArray(new String[contractSet.size()])); + } + po.setExtend(extendPO.serialize()); + poList.add(po); + } + } + } + } + return this.saveAccountList(poList); + } + + @Override + public boolean cancelOperateAccountList(List accountList) throws Exception { + if (null == accountList || accountList.size() == 0) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + List accountRemoveList = new ArrayList<>(); + List poList = new ArrayList<>(); + for (AccountBlockDTO dto : accountList) { + byte[] address = dto.getAddress(); + AccountBlockInfo info = dto.getInfo(); + if (info == null) { + // 取消账户完全锁定 + accountRemoveList.add(address); + } else { + AccountBlockPO po = this.getAccount(address); + if (po == null) { + continue; + } + // 取消更新白名单 + AccountBlockExtendPO extendPO = new AccountBlockExtendPO(); + extendPO.parse(po.getExtend(), 0); + int[] types = extendPO.getTypes(); + String[] contracts = extendPO.getContracts(); + int operationType = info.getOperationType(); + if (operationType == 1) { + // 取消添加白名单 + int[] _types = info.getTypes(); + if (_types != null) { + Set typeSet = types == null ? new HashSet<>() : this.intArray2set(types); + typeSet.removeAll(this.intArray2set(_types)); + extendPO.setTypes(this.set2intArray(typeSet)); + } + String[] _contracts = info.getContracts(); + if (_contracts != null) { + Set contractSet = contracts == null ? new HashSet<>() : new HashSet<>(Arrays.asList(contracts)); + contractSet.removeAll(Arrays.asList(_contracts)); + extendPO.setContracts(contractSet.toArray(new String[contractSet.size()])); + } + po.setExtend(extendPO.serialize()); + poList.add(po); + } else if (operationType == 2) { + // 取消移除白名单 + int[] _types = info.getTypes(); + if (_types != null) { + Set typeSet = types == null ? new HashSet<>() : this.intArray2set(types); + typeSet.addAll(this.intArray2set(_types)); + extendPO.setTypes(this.set2intArray(typeSet)); + } + String[] _contracts = info.getContracts(); + if (_contracts != null) { + Set contractSet = contracts == null ? new HashSet<>() : new HashSet<>(Arrays.asList(contracts)); + contractSet.addAll(Arrays.asList(_contracts)); + extendPO.setContracts(contractSet.toArray(new String[contractSet.size()])); + } + po.setExtend(extendPO.serialize()); + poList.add(po); + } + } + } + if (!accountRemoveList.isEmpty()) { + RocksDBService.deleteKeys(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, accountRemoveList); + } + return this.saveAccountList(poList); + } + @Override public boolean saveAccountList(List accountPOList) { if (null == accountPOList || accountPOList.size() == 0) { @@ -117,6 +267,15 @@ public AccountBlockPO getAccount(byte[] address) { } return accountPo; } + @Override + public byte[] getAccountBytes(byte[] address) { + byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, address); + if (null == accountBytes) { + return null; + } + return accountBytes; + } + @Override public boolean existAccount(byte[] address) { byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK, address); diff --git a/module/nuls-account/src/main/java/io/nuls/account/tx/v12/AccountLockProcessorV12.java b/module/nuls-account/src/main/java/io/nuls/account/tx/v12/AccountLockProcessorV12.java new file mode 100644 index 0000000000..08c284c5cb --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/tx/v12/AccountLockProcessorV12.java @@ -0,0 +1,234 @@ +package io.nuls.account.tx.v12; + +import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.helper.AccountBlockHelper; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.AccountBlockExtend; +import io.nuls.account.model.bo.tx.AccountBlockInfo; +import io.nuls.account.model.bo.tx.txdata.AccountBlockData; +import io.nuls.account.model.dto.AccountBlockDTO; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.service.AliasService; +import io.nuls.account.storage.AccountBlockStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.account.util.manager.ChainManager; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.*; +import java.util.stream.Collectors; + +import static io.nuls.account.util.LoggerUtil.LOG; + +@Component("AccountLockProcessorV12") +public class AccountLockProcessorV12 implements TransactionProcessor { + + @Autowired + private ChainManager chainManager; + @Autowired + private AliasService aliasService; + @Autowired + private AccountBlockHelper accountBlockHelper; + @Autowired + private AccountBlockStorageService accountBlockStorageService; + + @Override + public int getType() { + return TxType.BLOCK_ACCOUNT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + Map result = null; + Chain chain = null; + try { + chain = chainManager.getChain(chainId); + result = new HashMap<>(AccountConstant.INIT_CAPACITY_4); + String errorCode = null; + if (chain == null) { + errorCode = AccountErrorCode.CHAIN_NOT_EXIST.getCode(); + chain.getLogger().error("chain is not exist, -chainId:{}", chainId); + result.put("txList", txs); + result.put("errorCode", errorCode); + return result; + } + List txList = new ArrayList<>(); + for (Transaction tx : txs) { + try { + Result rs = accountBlockHelper.blockAccountTxValidate(chain, tx); + if (rs.isFailed()) { + errorCode = rs.getErrorCode().getCode(); + txList.add(tx); + } + } catch (Exception e) { + chain.getLogger().error(e); + if (e instanceof NulsException) { + errorCode = ((NulsException)e).getErrorCode().getCode(); + } else { + errorCode = AccountErrorCode.DATA_ERROR.getCode(); + } + txList.add(tx); + } + } + result.put("txList", txList); + result.put("errorCode", errorCode); + } catch (Exception e) { + errorLogProcess(chain, e); + result.put("txList", txs); + result.put("errorCode", AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List commitSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List list = Arrays.asList(addresses).stream().map(a -> new AccountBlockDTO(AddressTool.getAddress(a))).collect(Collectors.toList()); + byte[] extend = data.getExtend(); + if (extend != null) { + AccountBlockExtend abExtend = new AccountBlockExtend(); + abExtend.parse(extend, 0); + AccountBlockInfo[] infos = abExtend.getInfos(); + int i = 0; + for (AccountBlockDTO dto : list) { + dto.setInfo(infos[i++]); + } + } + result = accountBlockStorageService.operateAccountList(list); + } catch (Exception e) { + LoggerUtil.LOG.error("ac_commitTx block_account tx commit error", e); + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_commitTx block_account tx commit error"); + break; + } + commitSucTxList.add(tx); + } + try { + //如果提交失败,将已经提交成功的交易回滚 + if (!result) { + boolean rollback = true; + for (Transaction tx : commitSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List list = Arrays.asList(addresses).stream().map(a -> new AccountBlockDTO(AddressTool.getAddress(a))).collect(Collectors.toList()); + byte[] extend = data.getExtend(); + if (extend != null) { + AccountBlockExtend abExtend = new AccountBlockExtend(); + abExtend.parse(extend, 0); + AccountBlockInfo[] infos = abExtend.getInfos(); + int i = 0; + for (AccountBlockDTO dto : list) { + dto.setInfo(infos[i++]); + } + } + rollback = accountBlockStorageService.cancelOperateAccountList(list); + } + //回滚失败,抛异常 + if (!rollback) { + LoggerUtil.LOG.error("ac_commitTx block_account tx rollback error"); + throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + + return result; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List rollbackSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountBlockData data = new AccountBlockData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List list = Arrays.asList(addresses).stream().map(a -> new AccountBlockDTO(AddressTool.getAddress(a))).collect(Collectors.toList()); + byte[] extend = data.getExtend(); + if (extend != null) { + AccountBlockExtend abExtend = new AccountBlockExtend(); + abExtend.parse(extend, 0); + AccountBlockInfo[] infos = abExtend.getInfos(); + int i = 0; + for (AccountBlockDTO dto : list) { + dto.setInfo(infos[i++]); + } + } + result = accountBlockStorageService.cancelOperateAccountList(list); + } catch (Exception e) { + LoggerUtil.LOG.error("ac_rollbackTx block_account tx rollback error", e); + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("ac_rollbackTx block_account tx rollback error"); + break; + } + rollbackSucTxList.add(tx); + } + //交易提交 + try { + //如果回滚失败,将已经回滚成功的交易重新保存 + if (!result) { + boolean commit = true; + for (Transaction tx : rollbackSucTxList) { + AccountBlockData data = new AccountBlockData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + List list = Arrays.asList(addresses).stream().map(a -> new AccountBlockDTO(AddressTool.getAddress(a))).collect(Collectors.toList()); + byte[] extend = data.getExtend(); + if (extend != null) { + AccountBlockExtend abExtend = new AccountBlockExtend(); + abExtend.parse(extend, 0); + AccountBlockInfo[] infos = abExtend.getInfos(); + int i = 0; + for (AccountBlockDTO dto : list) { + dto.setInfo(infos[i++]); + } + } + commit = accountBlockStorageService.operateAccountList(list); + } + //保存失败,抛异常 + if (!commit) { + LoggerUtil.LOG.error("ac_rollbackTx block_account tx commit error"); + throw new NulsException(AccountErrorCode.ALIAS_SAVE_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + return result; + } + + private void errorLogProcess(Chain chain, Exception e) { + if (chain == null) { + LOG.error(e); + } else { + chain.getLogger().error(e); + } + } + +} diff --git a/module/nuls-account/src/main/resources/protocol-config.json b/module/nuls-account/src/main/resources/protocol-config.json index a4251f6391..ba1031b62b 100644 --- a/module/nuls-account/src/main/resources/protocol-config.json +++ b/module/nuls-account/src/main/resources/protocol-config.json @@ -1,4 +1,21 @@ [ + { + "version": "12", + "extend": "11", + "validTxs": [ + { + "type": "63", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AccountLockProcessorV12" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "11", "extend": "1", diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index 81766702d6..de0c715b3b 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -25,11 +25,12 @@ package io.nuls.account.tx; import io.nuls.account.constant.AccountConstant; -import io.nuls.account.constant.AccountErrorCode; import io.nuls.account.constant.RpcConstant; import io.nuls.account.model.bo.Account; import io.nuls.account.model.bo.Chain; import io.nuls.account.model.bo.config.ConfigBean; +import io.nuls.account.model.bo.tx.AccountBlockExtend; +import io.nuls.account.model.bo.tx.AccountBlockInfo; import io.nuls.account.model.bo.tx.txdata.AccountBlockData; import io.nuls.account.model.dto.CoinDTO; import io.nuls.account.util.AccountTool; @@ -37,7 +38,6 @@ import io.nuls.account.util.TxUtil; import io.nuls.base.RPCUtil; import io.nuls.base.basic.AddressTool; -import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.data.*; import io.nuls.base.signture.MultiSignTxSignature; import io.nuls.base.signture.P2PHKSignature; @@ -47,28 +47,21 @@ import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; -import io.nuls.core.exception.NulsRuntimeException; -import io.nuls.core.io.IoUtils; +import io.nuls.core.log.Log; +import io.nuls.core.parse.I18nUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; -import io.nuls.core.rpc.info.HostInfo; -import io.nuls.core.rpc.info.NoUse; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import io.nuls.v2.model.dto.RpcResult; -import io.nuls.v2.util.HttpClientUtil; import io.nuls.v2.util.JsonRpcUtil; -import org.apache.commons.io.IOUtils; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -110,11 +103,17 @@ public Transfer(){} // this.addressTo = addressTo; //} - //@Before - //public void before() throws Exception { - // NoUse.mockModule(); - // ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); - //} + @BeforeClass + public static void initClass() { + Log.info("init log."); + I18nUtils.loadLanguage(Transfer.class, "languages", "en"); + } + + @Before + public void before() throws Exception { + //NoUse.mockModule(); + //ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); + } @Test public void createAccount() throws NulsException { @@ -157,8 +156,38 @@ public void createMultiSigAccountTest() throws Exception { assertEquals(pubKeys.size(),3); } + String fromStr,rpcAddress; + String fromKey; + private void setDev() { + chainId = 2; + assetChainId = 2; + assetId = 1; + fromKey = "2cca1c7f69f929680a00d45298dca7b705d87d34ae1dbbcb4125b5663552db36"; + // tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ + byte[] addressByPrikey = AddressTool.getAddress(ECKey.fromPrivate(HexUtil.decode(fromKey)).getPubKey(), chainId, "tNuls"); + fromStr = AddressTool.getStringAddressByBytes(addressByPrikey); + } + + private void setTest() { + chainId = 2; + assetChainId = 2; + assetId = 1; + fromStr = "tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt"; + rpcAddress = "http://beta.api.nuls.io/jsonrpc"; + } + + private void setMain() { + chainId = 1; + assetChainId = 1; + assetId = 1; + fromStr = "NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx"; + rpcAddress = "https://api.nuls.io/jsonrpc"; + } + @Test - public void accountBlockTest() throws Exception { + public void accountBlockMultiSignTest() throws Exception { + setMain(); + //setTest(); Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -168,60 +197,72 @@ public void accountBlockTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.BLOCK_ACCOUNT); CoinData coinData = new CoinData(); - //String fromKey = "???"; - //byte[] from = AddressTool.getAddress("tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG"); - String fromKey = "???"; - byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); - byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); - if(null == nonce){ + + + + byte[] from = AddressTool.getAddress(fromStr); + byte[] nonce; + RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + Map result = (Map) request.getResult(); + String nonceStr = (String) result.get("nonce"); + if(null == nonceStr){ nonce = HexUtil.decode("0000000000000000"); + } else { + nonce = HexUtil.decode(nonceStr); } - coinData.addFrom(new CoinFrom( - from, - assetChainId, - assetId, - new BigDecimal("0.001").movePointRight(8).toBigInteger(), - nonce, - (byte) 0 - )); - coinData.addTo(new CoinTo( - from, - assetChainId, - assetId, - BigInteger.ZERO, - (byte) 0 - )); + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); - data.setAddresses(new String[]{ - "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL" - }); + /*File file0 = new File("/Users/pierreluo/Nuls/address_block_finally"); + List list0 = IOUtils.readLines(new FileInputStream(file0), StandardCharsets.UTF_8.name()); + System.out.println("read 0 length: " + list0.size()); + Set set0 = list0.stream().map(a -> a.trim()).collect(Collectors.toSet()); + System.out.println("deduplication 0 length: " + set0.size()); + + File file1 = new File("/Users/pierreluo/Nuls/address_block_for_nerve"); + List list = IOUtils.readLines(new FileInputStream(file1), StandardCharsets.UTF_8.name()); + System.out.println("read length: " + list.size()); + Set set = list.stream().map(a -> a.trim()).filter(a -> !set0.contains(a)).collect(Collectors.toSet()); + System.out.println("deduplication length: " + set.size()); + System.out.println(Arrays.toString(set.toArray())); + data.setAddresses(set.toArray(new String[set.size()]));*/ + data.setAddresses(new String[]{"NULSd6HgijKWAgsFDf469CSgzUA4x3vUqh9Ky"}); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); - tx.setHash(NulsHash.calcHash(tx.serializeForHash())); - TransactionSignature transactionSignature = new TransactionSignature(); + System.out.println(String.format("交易大小: %s", tx.size())); + + String[] pubkeys = new String[]{ + "0225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad", + "029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae1020", + "02784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb", + "020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf8", + "02b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa93195"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.setM((byte) 3); + transactionSignature.setPubKeyList(collect); + tx.setTransactionSignature(transactionSignature.serialize()); + List p2PHKSignatures = new ArrayList<>(); - //根据密码获得ECKey get ECKey from Password - ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); - byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); - P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); - p2PHKSignatures.add(signature); - //交易签名 - transactionSignature.setP2PHKSignatures(p2PHKSignatures); + List priKeyList = new ArrayList<>(); + priKeyList.add("???"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } tx.setTransactionSignature(transactionSignature.serialize()); - Response response = this.newTx(tx); - System.out.println(JSONUtils.obj2PrettyJson(response)); + System.out.println(HexUtil.encode(tx.serialize())); } @Test - public void accountBlockMultiSignTest() throws Exception { - chainId = 1; - assetChainId = 1; - assetId = 1; + public void accountBlockMultiSignProtocol12Test() throws Exception { + setMain(); + //setTest(); Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -231,12 +272,9 @@ public void accountBlockMultiSignTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.BLOCK_ACCOUNT); CoinData coinData = new CoinData(); - - String fromStr = "NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx"; byte[] from = AddressTool.getAddress(fromStr); - byte[] nonce; - RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); Map result = (Map) request.getResult(); String nonceStr = (String) result.get("nonce"); if(null == nonceStr){ @@ -244,30 +282,18 @@ public void accountBlockMultiSignTest() throws Exception { } else { nonce = HexUtil.decode(nonceStr); } - coinData.addFrom(new CoinFrom( - from, - assetChainId, - assetId, - new BigDecimal("0.1").movePointRight(8).toBigInteger(), - nonce, - (byte) 0 - )); - coinData.addTo(new CoinTo( - from, - assetChainId, - assetId, - BigInteger.ZERO, - (byte) 0 - )); + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); - AccountBlockData data = new AccountBlockData(); - //File file = new File("/Users/pierreluo/Nuls/address_block_finally"); - //List list = IOUtils.readLines(new FileInputStream(file), StandardCharsets.UTF_8.name()); - //System.out.println("read length: " + list.size()); - //Set set = list.stream().map(a -> a.trim()).collect(Collectors.toSet()); - //System.out.println("deduplication length: " + set.size()); - //data.setAddresses(set.toArray(new String[set.size()])); - data.setAddresses(new String[]{"NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY"}); + + List blockDatas = new ArrayList<>(); + // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 + blockDatas.add(new Object[]{"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", 1, List.of(2, 3)}); + blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 1, List.of(61), List.of("", "")}); + blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 1, List.of(71)}); + blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of()}); + AccountBlockData data = this.makeTxData(blockDatas); + tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); tx.setHash(NulsHash.calcHash(tx.serializeForHash())); @@ -301,44 +327,9 @@ public void accountBlockMultiSignTest() throws Exception { //System.out.println(JSONUtils.obj2PrettyJson(response)); } - @Test - public void txMultiSignTest() throws Exception { - String pri = "???"; - String filePath = "???"; - String txHex = IoUtils.readBytesToString(new File(filePath)); - Transaction tx = new Transaction(); - tx.parse(HexUtil.decode(txHex), 0); - - MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); - transactionSignature.parse(tx.getTransactionSignature(), 0); - - List p2PHKSignatures = transactionSignature.getP2PHKSignatures(); - - ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); - P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); - p2PHKSignatures.add(p2PHKSignature); - transactionSignature.setP2PHKSignatures(p2PHKSignatures); - tx.setTransactionSignature(transactionSignature.serialize()); - System.out.println(HexUtil.encode(tx.serialize())); - } - - @Test - public void getAllBlockAccount() throws Exception { - // ac_getAllBlockAccount - Map params = new HashMap<>(); - params.put(Constants.VERSION_KEY_STR, "1.0"); - params.put(Constants.CHAIN_ID, chainId); - Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.AC.abbr, "ac_getAllBlockAccount", params); - System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); - } - - - @Test public void accountUnBlockMultiSignTest() throws Exception { - chainId = 1; - assetChainId = 1; - assetId = 1; + setMain(); Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -348,11 +339,10 @@ public void accountUnBlockMultiSignTest() throws Exception { Transaction tx = new Transaction(); tx.setType(TxType.UNBLOCK_ACCOUNT); CoinData coinData = new CoinData(); - String fromStr = "NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx"; byte[] from = AddressTool.getAddress(fromStr); byte[] nonce; - RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); Map result = (Map) request.getResult(); String nonceStr = (String) result.get("nonce"); if(null == nonceStr){ @@ -360,25 +350,14 @@ public void accountUnBlockMultiSignTest() throws Exception { } else { nonce = HexUtil.decode(nonceStr); } - coinData.addFrom(new CoinFrom( - from, - assetChainId, - assetId, - new BigDecimal("0.1").movePointRight(8).toBigInteger(), - nonce, - (byte) 0 - )); - coinData.addTo(new CoinTo( - from, - assetChainId, - assetId, - BigInteger.ZERO, - (byte) 0 - )); + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ - "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY" + "NULSd6HgbbZXaNpTnsX8xV6Ba71LcZTHj8h2m", + "NULSd6HgcepyBE29opHVxRe45i6hj1CkRFC77", + "NULSd6HgfigP5197KYBha4wjMavVfgXaZLT4z" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); @@ -410,6 +389,154 @@ public void accountUnBlockMultiSignTest() throws Exception { System.out.println(HexUtil.encode(tx.serialize())); } + @Test + public void appendSignature() throws Exception { + setDev(); + String pri = fromKey; + String txHex = "020042dff06100008c011702000125d3ea472bcaf2e917dc94d8adb8b63b98a5267002000100a06a0d540200000000000000000000000000000000000000000000000000000008bf3753c5a554083b000117020003a5ddfee2b74c41e0ed2c6a42e0fa305578ab26e40200010000e40b54020000000000000000000000000000000000000000000000000000000000000000000000692102c4171414b582549b178b148e5825d372ac8c4217832f111da56185d6c8b97a0246304402200ba77797e2e4b8f6f0d5245b036091319db1755eebf08c403691644c0de4bc8f0220173edbb8c5bc5991b1b9e54b1ddc58c20d064c9b8e3376b3874196b9e6727335"; + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(txHex), 0); + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(tx.getTransactionSignature(), 0); + List p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + tx.setTransactionSignature(transactionSignature.serialize()); + System.out.println(HexUtil.encode(tx.serialize())); + } + + @Test + public void txMultiSignTest() throws Exception { + //String filePath = "???"; + //String txHex = IoUtils.readBytesToString(new File(filePath)); + String txHex = "40003ffbef6100290100254e554c536436486758506772733263386d4341364d6251794c445a357061474d5948656773008c011701000345b919fcffa7d778598fc60864819d6c1127a0770100010080969800000000000000000000000000000000000000000000000000000000000872421542c80a40e900011701000345b919fcffa7d778598fc60864819d6c1127a0770100010000000000000000000000000000000000000000000000000000000000000000000000000000000000fd7e010305210225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad21029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae10202102784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb21020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf82102b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa931952102b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa931954630440220125a086dc6262f5c9ff5b372ac5781d5a3fa8e70d6353fea02035f0cebf84f58022061da9fee4bdc4f0e5c92324b0172e632aa1761be77320cd485c5431a2d301b1d21029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae10204630440220053d02a0da09ff43e1e6b9551fe79809c06f59d829bc205c9814860476cfb64f02200a6d09c8d57a8c53c5b4963e838bdaea20ba1a7a59fe5528bf0a83c26b0fcaed"; + String pri = "???"; + Transaction tx = new Transaction(); + tx.parse(HexUtil.decode(txHex), 0); + + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.parse(tx.getTransactionSignature(), 0); + + List p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + System.out.println(HexUtil.encode(tx.serialize())); + } + + @Test + public void getAllBlockAccount() throws Exception { + Map params = new HashMap<>(); + params.put(Constants.VERSION_KEY_STR, "1.0"); + params.put(Constants.CHAIN_ID, chainId); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.AC.abbr, "ac_getAllBlockAccount", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + + @Test + public void getBlockAccountInfo() throws Exception { + List list = new ArrayList<>(); + list.add("tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM"); + list.add("tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29"); + list.add("tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf"); + list.add("tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S"); + list.add("tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja"); + list.add("tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv"); + + for (String address : list) { + Map params = new HashMap<>(); + params.put(Constants.VERSION_KEY_STR, "1.0"); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + Response cmdResp = ResponseMessageProcessor.requestAndResponse(ModuleE.AC.abbr, "ac_getBlockAccountInfo", params); + System.out.println(JSONUtils.obj2PrettyJson(cmdResp)); + } + } + + private int[] list2array(List list) { + int[] result = new int[list.size()]; + int i = 0; + for(Integer a : list) { + result[i++] = a.intValue(); + } + return result; + } + private AccountBlockData makeTxData(List list) throws Exception { + List infoList = new ArrayList<>(); + String[] addresses = new String[list.size()]; + int i = 0; + for (Object[] objs : list) { + String address = (String) objs[0]; + Integer operationType = (Integer) objs[1]; + List types = (List) objs[2]; + addresses[i++] = address; + AccountBlockInfo info = new AccountBlockInfo(); + info.setOperationType(operationType); + info.setTypes(this.list2array(types)); + if (objs.length > 3) { + List contracts = (List) objs[3]; + info.setContracts(contracts.toArray(new String[contracts.size()])); + } + infoList.add(info); + } + AccountBlockData data = new AccountBlockData(); + data.setAddresses(addresses); + AccountBlockExtend extend = new AccountBlockExtend(); + extend.setInfos(infoList.toArray(new AccountBlockInfo[infoList.size()])); + data.setExtend(extend.serialize()); + return data; + } + + @Test + public void accountBlockTest() throws Exception { + setDev(); + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.BLOCK_ACCOUNT); + CoinData coinData = new CoinData(); + byte[] from = AddressTool.getAddress(fromStr); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if(null == nonce){ + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); + tx.setCoinData(coinData.serialize()); + + List blockDatas = new ArrayList<>(); + // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单 + blockDatas.add(new Object[]{"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", 2, List.of(3)}); + blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 2, List.of(), List.of("tNULSeBaNA8cXq6wxnAwtgCJrYX9P1iosCzd1H")}); + blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 1, List.of(2,3)}); + blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of(3)}); + AccountBlockData data = this.makeTxData(blockDatas); + + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + //根据密码获得ECKey get ECKey from Password + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); + P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); + p2PHKSignatures.add(signature); + //交易签名 + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + @Test public void accountUnBlockTest() throws Exception { Chain chain = new Chain(); @@ -427,21 +554,8 @@ public void accountUnBlockTest() throws Exception { if(null == nonce){ nonce = HexUtil.decode("0000000000000000"); } - coinData.addFrom(new CoinFrom( - from, - assetChainId, - assetId, - new BigDecimal("0.001").movePointRight(8).toBigInteger(), - nonce, - (byte) 0 - )); - coinData.addTo(new CoinTo( - from, - assetChainId, - assetId, - BigInteger.ZERO, - (byte) 0 - )); + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index d00b23297a..c89d834726 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -39,6 +39,7 @@ import io.nuls.core.rpc.model.*; import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; +import io.nuls.provider.model.dto.AccountBlockDTO; import io.nuls.provider.model.dto.AccountKeyStoreDto; import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.model.form.PriKeyForm; @@ -872,6 +873,39 @@ public RpcResult isBlockAccount(List params) { return RpcResult.success(Map.of("value", blockAccount)); } + @RpcMethod("getBlockAccountInfo") + @ApiOperation(description = "查询锁定账户信息", order = 166) + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "账户地址"), + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = AccountBlockDTO.class)) + public RpcResult getBlockAccountInfo(List params) { + int chainId; + String address; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + AccountBlockDTO dto = accountTools.getBlockAccountInfo(chainId, address); + if (dto == null) { + return RpcResult.failed(AccountErrorCode.DATA_NOT_FOUND); + } + return RpcResult.success(dto); + } + @RpcMethod("encryptedPriKeySign") @ApiOperation(description = "密文私钥摘要签名", order = 156) @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBlockDTO.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBlockDTO.java new file mode 100644 index 0000000000..7d2df8ac8b --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBlockDTO.java @@ -0,0 +1,61 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.provider.model.dto; + +import java.util.List; + +/** + * @author: PierreLuo + * @date: 2022/1/25 + */ +public class AccountBlockDTO { + + private String address; + private List types; + private List contracts; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public List getTypes() { + return types; + } + + public void setTypes(List types) { + this.types = types; + } + + public List getContracts() { + return contracts; + } + + public void setContracts(List contracts) { + this.contracts = contracts; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java index 699a14a99e..836dd91cc0 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java @@ -13,6 +13,7 @@ import io.nuls.core.parse.SerializeUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; +import io.nuls.provider.model.dto.AccountBlockDTO; import io.nuls.provider.rpctools.vo.Account; import io.nuls.v2.error.AccountErrorCode; import io.nuls.v2.util.AccountTool; @@ -107,6 +108,37 @@ public boolean isBlockAccount(int chainId, String address) { } } + public AccountBlockDTO getBlockAccountInfo(int chainId, String address) { + try { + if (StringUtils.isBlank(address)) { + return null; + } + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + AccountBlockDTO dto = callRpc(ModuleE.AC.abbr, "ac_getBlockAccountInfo", params, (Function, AccountBlockDTO>) res -> { + if (res == null) { + return null; + } + AccountBlockDTO result = new AccountBlockDTO(); + result.setAddress((String) res.get("address")); + Object obj0 = res.get("types"); + if (obj0 != null) { + result.setTypes((List) obj0); + } + Object obj1 = res.get("contracts"); + if (obj1 != null) { + result.setContracts((List) obj1); + } + return result; + }); + return dto; + } catch (Exception e) { + io.nuls.provider.utils.Log.error(e); + return null; + } + } + public MultiSigAccount createMultiSigAccount(int chainId, List pubKeys, int minSigns) throws NulsException { //验证公钥是否重复 Set pubkeySet = new HashSet<>(pubKeys); diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java index a38b474374..af0356f5c1 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java @@ -108,7 +108,7 @@ public Response assetReg(Map params) { if (dbChain.isDelete()) { return failed(CmErrorCode.ERROR_CHAIN_REG_CMD); } - if (assetService.assetExist(asset) && asset.isAvailable()) { + if (assetService.assetExistAndAvailable(asset)) { return failed(CmErrorCode.ERROR_ASSET_ID_EXIST); } /* 组装交易发送 (Send transaction) */ diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/AssetService.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/AssetService.java index ee8a30bf54..af0e3af5f2 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/AssetService.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/AssetService.java @@ -81,6 +81,8 @@ public interface AssetService { */ boolean assetExist(Asset asset) throws Exception; + boolean assetExistAndAvailable(Asset asset) throws Exception; + /** * juge asset exist in chain * diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java index 99fc4c219f..5bf30af682 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/AssetServiceImpl.java @@ -233,6 +233,12 @@ public boolean assetExist(Asset asset) throws Exception { return dbAsset != null; } + @Override + public boolean assetExistAndAvailable(Asset asset) throws Exception { + Asset dbAsset = assetStorage.load(CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId())); + return dbAsset != null&&dbAsset.isAvailable(); + } + @Override public boolean assetExist(Asset asset, Map map) throws Exception { String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); diff --git a/module/nuls-transaction/module.ncf b/module/nuls-transaction/module.ncf index 3b9e33b276..e10cd8e77e 100644 --- a/module/nuls-transaction/module.ncf +++ b/module/nuls-transaction/module.ncf @@ -10,5 +10,4 @@ JOPT_XMX=512 Managed=1 [transaction] -blackListPath=blacklist moduleDynamicDependent=protocol-update,smart-contract diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java index 9e7350bf2c..8eb244b847 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/TransactionBootstrap.java @@ -31,6 +31,7 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; +import io.nuls.core.model.StringUtils; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; @@ -42,12 +43,15 @@ import io.nuls.core.rpc.util.NulsDateUtils; import io.nuls.transaction.constant.TxConfig; import io.nuls.transaction.constant.TxConstant; +import io.nuls.transaction.constant.TxContext; import io.nuls.transaction.constant.TxDBConstant; import io.nuls.transaction.manager.ChainManager; import io.nuls.transaction.model.bo.Chain; import io.nuls.transaction.utils.DBUtil; import io.nuls.transaction.utils.TxUtil; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Set; import static io.nuls.transaction.utils.LoggerUtil.LOG; @@ -83,6 +87,7 @@ public void init() { initSys(); //初始化数据库配置文件 initDB(); + initTransactionContext(); chainManager.initChain(); TxUtil.blackHolePublicKey = HexUtil.decode(txConfig.getBlackHolePublicKey()); ModuleHelper.init(this); @@ -197,5 +202,15 @@ public void initDB() { } } - + private void initTransactionContext(){ + String accountBlockManagerPublicKeys = txConfig.getAccountBlockManagerPublicKeys(); + if (StringUtils.isNotBlank(accountBlockManagerPublicKeys)) { + String[] split = accountBlockManagerPublicKeys.split(","); + for (String pubkey : split) { + TxContext.ACCOUNT_BLOCK_MANAGER_ADDRESS_SET.add(AddressTool.getAddressString(HexUtil.decode(pubkey.trim()), txConfig.getChainId())); + } + int size = TxContext.ACCOUNT_BLOCK_MANAGER_ADDRESS_SET.size(); + TxContext.ACCOUNT_BLOCK_MIN_SIGN_COUNT = BigDecimal.valueOf(size).multiply(BigDecimal.valueOf(6)).divide(BigDecimal.TEN, 0, RoundingMode.UP).intValue(); + } + } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java index b4eda4a425..6884d78a96 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxConfig.java @@ -35,6 +35,15 @@ public class TxConfig extends ConfigBean implements ModuleConfig { private String blackHolePublicKey; private String blackListPath; + private String accountBlockManagerPublicKeys; + + public String getAccountBlockManagerPublicKeys() { + return accountBlockManagerPublicKeys; + } + + public void setAccountBlockManagerPublicKeys(String accountBlockManagerPublicKeys) { + this.accountBlockManagerPublicKeys = accountBlockManagerPublicKeys; + } public String getBlackListPath() { return blackListPath; diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java index 7d41b00899..9747ee51bd 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/constant/TxContext.java @@ -23,6 +23,9 @@ */ package io.nuls.transaction.constant; +import java.util.HashSet; +import java.util.Set; + /** * @author: PierreLuo * @date: 2019-12-04 @@ -33,4 +36,10 @@ public class TxContext { public static short UPDATE_VERSION_CONTRACT_ASSET = 8; public static short UPDATE_VERSION_ACCOUNT_BLOCK = 11; + + public static short UPDATE_VERSION_ACCOUNT_BLOCK_UPGRADE = 12; + + public static Set ACCOUNT_BLOCK_MANAGER_ADDRESS_SET = new HashSet<>(); + // 最小签名数 + public static int ACCOUNT_BLOCK_MIN_SIGN_COUNT = 0; } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/dto/AccountBlockDTO.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/dto/AccountBlockDTO.java new file mode 100644 index 0000000000..ae07ec6f5d --- /dev/null +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/dto/AccountBlockDTO.java @@ -0,0 +1,68 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.transaction.model.dto; + +/** + * @author: PierreLuo + * @date: 2022/1/24 + */ +public class AccountBlockDTO { + + private byte[] address; + private int[] types; + private String[] contracts; + private byte[] extend; + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public int[] getTypes() { + return types; + } + + public void setTypes(int[] types) { + this.types = types; + } + + public String[] getContracts() { + return contracts; + } + + public void setContracts(String[] contracts) { + this.contracts = contracts; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockExtendPO.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockExtendPO.java new file mode 100644 index 0000000000..69b1c3d7d4 --- /dev/null +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockExtendPO.java @@ -0,0 +1,145 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.transaction.model.po; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public class AccountBlockExtendPO extends BaseNulsData { + + private byte[] address; + + private int[] types; + + private String[] contracts; + + private byte[] extend; + + public AccountBlockExtendPO() { + } + + @Override + public int size() { + int size = 0; + size += Address.ADDRESS_LENGTH; + // length + size += SerializeUtils.sizeOfUint16(); + if (types != null) { + size += SerializeUtils.sizeOfUint16() * types.length; + } + size += SerializeUtils.sizeOfUint16(); + if (contracts != null) { + for (String contract : contracts) { + size += SerializeUtils.sizeOfString(contract); + } + } + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(address); + if (types == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(types.length); + for (int type : types) { + stream.writeUint16(type); + } + } + if (contracts == null) { + stream.writeUint16(0); + } else { + stream.writeUint16(contracts.length); + for (String address : contracts) { + stream.writeString(address); + } + } + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + int length0 = byteBuffer.readUint16(); + int[] _types = new int[length0]; + for (int i = 0; i < length0; i++) { + _types[i] = byteBuffer.readUint16(); + } + int length = byteBuffer.readUint16(); + String[] _addresses = new String[length]; + for (int i = 0; i < length; i++) { + _addresses[i] = byteBuffer.readString(); + } + this.types = _types; + this.contracts = _addresses; + this.extend = byteBuffer.readByLengthByte(); + } + + public int[] getTypes() { + return types; + } + + public void setTypes(int[] types) { + this.types = types; + } + + public String[] getContracts() { + return contracts; + } + + public void setContracts(String[] contracts) { + this.contracts = contracts; + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockPO.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockPO.java new file mode 100644 index 0000000000..30f06cecab --- /dev/null +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/model/po/AccountBlockPO.java @@ -0,0 +1,86 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.transaction.model.po; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +public class AccountBlockPO extends BaseNulsData { + + private byte[] address; + + private byte[] extend; + + public AccountBlockPO() { + } + + @Override + public int size() { + int size = 0; + size += Address.ADDRESS_LENGTH; + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(address); + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + this.extend = byteBuffer.readByLengthByte(); + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java index 3758aae459..cc2fa6fa44 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/rpc/call/AccountCall.java @@ -2,7 +2,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.MultiSigAccount; -import io.nuls.core.basic.Result; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; @@ -10,13 +10,14 @@ import io.nuls.core.rpc.model.ModuleE; import io.nuls.transaction.constant.TxConstant; import io.nuls.transaction.constant.TxErrorCode; +import io.nuls.transaction.model.dto.AccountBlockDTO; +import io.nuls.transaction.model.po.AccountBlockExtendPO; +import io.nuls.transaction.model.po.AccountBlockPO; import io.nuls.transaction.utils.TxUtil; import java.util.HashMap; import java.util.Map; -import static io.nuls.core.constant.CommonCodeConstanst.NULL_PARAMETER; - /** * 调用其他模块跟交易相关的接口 * @@ -65,4 +66,35 @@ public static boolean isBlockAccount(int chainId, String address) { return false; } } + + public static AccountBlockDTO getBlockAccount(int chainId, String address) { + try { + if (StringUtils.isBlank(address)) { + return null; + } + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + Map resultMap = (Map) TransactionCall.requestAndResponse(ModuleE.AC.abbr, "ac_getBlockAccountBytes", params); + String hex = (String) resultMap.get("value"); + if (StringUtils.isBlank(hex)) { + return null; + } + AccountBlockPO po = new AccountBlockPO(); + po.parse(HexUtil.decode(hex), 0); + AccountBlockDTO dto = new AccountBlockDTO(); + dto.setAddress(po.getAddress()); + if (po.getExtend() != null) { + AccountBlockExtendPO extendPO = new AccountBlockExtendPO(); + extendPO.parse(po.getExtend(), 0); + dto.setTypes(extendPO.getTypes()); + dto.setContracts(extendPO.getContracts()); + dto.setExtend(extendPO.getExtend()); + } + return dto; + } catch (Exception e) { + Log.error(e); + return null; + } + } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index f3e86e8135..536ae9c993 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -59,6 +59,7 @@ import io.nuls.transaction.constant.TxErrorCode; import io.nuls.transaction.manager.TxManager; import io.nuls.transaction.model.bo.*; +import io.nuls.transaction.model.dto.AccountBlockDTO; import io.nuls.transaction.model.dto.ModuleTxRegisterDTO; import io.nuls.transaction.model.po.TransactionConfirmedPO; import io.nuls.transaction.model.po.TransactionNetPO; @@ -68,7 +69,6 @@ import io.nuls.transaction.service.TxService; import io.nuls.transaction.storage.ConfirmedTxStorageService; import io.nuls.transaction.storage.UnconfirmedTxStorageService; -import io.nuls.transaction.utils.BlackListUtils; import io.nuls.transaction.utils.TxDuplicateRemoval; import io.nuls.transaction.utils.TxUtil; @@ -92,9 +92,6 @@ public class TxServiceImpl implements TxService { @Autowired private PackablePool packablePool; - @Autowired - private BlackListUtils blackListUtils; - @Autowired private UnconfirmedTxStorageService unconfirmedTxStorageService; @@ -157,7 +154,6 @@ public void newTx(Chain chain, Transaction tx) throws NulsException { //节点区块同步中或回滚中,暂停接纳新交易 throw new NulsException(TxErrorCode.PAUSE_NEWTX); } - validateTxAddress(tx); NulsHash hash = tx.getHash(); if (isTxExists(chain, hash)) { throw new NulsException(TxErrorCode.TX_ALREADY_EXISTS); @@ -310,7 +306,11 @@ public void baseValidateTx(Chain chain, Transaction tx, TxRegister txRegister) t throw new NulsException(TxErrorCode.TX_SIZE_TOO_LARGE); } //验证签名 - validateTxSignature(tx, txRegister, chain); + if (ProtocolGroupManager.getCurrentVersion(chain.getChainId()) >= TxContext.UPDATE_VERSION_ACCOUNT_BLOCK_UPGRADE) { + validateTxSignatureProtocol12(tx, txRegister, chain); + } else { + validateTxSignature(tx, txRegister, chain); + } //如果有coinData, 则进行验证,有一些交易(黄牌)没有coinData数据 int txType = tx.getType(); @@ -409,6 +409,164 @@ private void validateTxSignature(Transaction tx, TxRegister txRegister, Chain ch } } + private void validateTxSignatureProtocol12(Transaction tx, TxRegister txRegister, Chain chain) throws NulsException { + //只需要验证,需要验证签名的交易(一些系统交易不用签名) + if (!txRegister.getVerifySignature()) { + //注册时不需要验证签名的交易(一些系统交易) + return; + } + CoinData coinData = TxUtil.getCoinData(tx); + if (null == coinData || null == coinData.getFrom() || coinData.getFrom().size() <= 0) { + throw new NulsException(TxErrorCode.COINDATA_NOT_FOUND); + } + if (txRegister.getModuleCode().equals(ModuleE.CC.abbr)) { + if (tx.getType() != TxType.CROSS_CHAIN) { + // 跨链模块的非本链协议的跨链转账交易(单独处理). + return; + } + int fromChainId = AddressTool.getChainIdByAddress(coinData.getFrom().get(0).getAddress()); + // 跨链模块的非本链协议跨链交易(单独处理). + if (chain.getChainId() != fromChainId) { + return; + } + } + //获取交易签名者地址列表 + Set addressSet = SignatureUtil.getAddressFromTX(tx, chain.getChainId()); + if (addressSet == null) { + throw new NulsException(TxErrorCode.SIGNATURE_ERROR); + } + int chainId = chain.getChainId(); + byte[] multiSignAddress = null; + if (tx.isMultiSignTx()) { + /** + * 如果是多签交易, 则先从签名对象中取出多签地址原始创建者的公钥列表和最小签名数, + * 生成一个新的多签地址,来与交易from中的多签地址匹配,匹配不上这验证不通过. + */ + MultiSignTxSignature multiSignTxSignature = new MultiSignTxSignature(); + multiSignTxSignature.parse(new NulsByteBuffer(tx.getTransactionSignature())); + //验证签名者够不够最小签名数 + if (addressSet.size() < multiSignTxSignature.getM()) { + throw new NulsException(TxErrorCode.INSUFFICIENT_SIGNATURES); + } + //签名者是否是多签账户创建者之一 + for (String address : addressSet) { + boolean rs = false; + for (byte[] bytes : multiSignTxSignature.getPubKeyList()) { + String addr = AddressTool.getStringAddressByBytes(AddressTool.getAddress(bytes, chainId)); + if (address.equals(addr)) { + rs = true; + } + } + if (!rs) { + throw new NulsException(TxErrorCode.SIGN_ADDRESS_NOT_MATCH_COINFROM); + } + } + //生成一个多签地址 + List pubKeys = new ArrayList<>(); + for (byte[] pubkey : multiSignTxSignature.getPubKeyList()) { + pubKeys.add(HexUtil.encode(pubkey)); + } + try { + byte[] hash160 = SerializeUtils.sha256hash160(AddressTool.createMultiSigAccountOriginBytes(chainId, multiSignTxSignature.getM(), pubKeys)); + Address address = new Address(chainId, BaseConstant.P2SH_ADDRESS_TYPE, hash160); + multiSignAddress = address.getAddressBytes(); + } catch (Exception e) { + chain.getLogger().error(e); + throw new NulsException(TxErrorCode.SIGNATURE_ERROR); + } + } + for (CoinFrom coinFrom : coinData.getFrom()) { + if (tx.getType() == TxType.STOP_AGENT) { + //停止节点from中第一笔为签名地址, 只验证from中第一个 + break; + } + if (tx.isMultiSignTx()) { + if (!Arrays.equals(coinFrom.getAddress(), multiSignAddress)) { + throw new NulsException(TxErrorCode.SIGNATURE_ERROR); + } + } else if (!addressSet.contains(AddressTool.getStringAddressByBytes(coinFrom.getAddress()))) { + throw new NulsException(TxErrorCode.SIGN_ADDRESS_NOT_MATCH_COINFROM); + } + } + do { + int txType = tx.getType(); + // 质押和退出质押不验证锁定地址 + if (txType == TxType.DEPOSIT || txType == TxType.CANCEL_DEPOSIT || txType == TxType.STOP_AGENT) { + break; + } + boolean needAccountManagerSign = false; + for (CoinFrom coinFrom : coinData.getFrom()) { + byte[] fromAddress = coinFrom.getAddress(); + AccountBlockDTO dto = AccountCall.getBlockAccount(chainId, AddressTool.getStringAddressByBytes(fromAddress)); + if (dto == null) { + continue; + } + int[] types = dto.getTypes(); + if (types == null) { + // 完全锁定账户,需要验证签名 + needAccountManagerSign = true; + break; + } else { + // 交易类型白名单 + boolean whiteType = false; + for (int type : types) { + if (txType == type) { + whiteType = true; + break; + } + } + if (!whiteType) { + // 不在交易类型白名单中,需要验证签名 + needAccountManagerSign = true; + break; + } + // 验证合约地址白名单 + if (txType == TxType.CALL_CONTRACT) { + if (dto.getContracts() == null || dto.getContracts().length == 0) { + // 不在合约地址白名单中,需要验证签名 + needAccountManagerSign = true; + break; + } + String[] contracts = dto.getContracts(); + NulsByteBuffer byteBuffer = new NulsByteBuffer(tx.getTxData()); + byteBuffer.readBytes(Address.ADDRESS_LENGTH); + byte[] contractAddressBytes = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + String contractAddress = AddressTool.getStringAddressByBytes(contractAddressBytes); + // 合约地址白名单 + boolean whiteContract = false; + for (String contract : contracts) { + if (contractAddress.equals(contract)) { + whiteContract = true; + break; + } + } + if (!whiteContract) { + // 不在合约地址白名单中,需要验证签名 + needAccountManagerSign = true; + break; + } + } + } + } + if (needAccountManagerSign) { + // 五分之三签名,从配置文件中读取锁定账户管理员公钥,算出地址,在`addressSet`中匹配,>=60% 即满足 + int count = 0; + for (String signedAddress : addressSet) { + if (TxContext.ACCOUNT_BLOCK_MANAGER_ADDRESS_SET.contains(signedAddress)) { + count++; + } + } + if (count < TxContext.ACCOUNT_BLOCK_MIN_SIGN_COUNT) { + throw new NulsException(TxErrorCode.BLOCK_ADDRESS, "address is blockAddress Exception"); + } + } + } while (false); + + if (!SignatureUtil.validateTransactionSignture(chainId, tx)) { + throw new NulsException(TxErrorCode.SIGNATURE_ERROR); + } + } + private void validateCoinFromBase(Chain chain, TxRegister txRegister, List listFrom) throws NulsException { int type = txRegister.getTxType(); //coinBase交易/智能合约退还gas交易没有from @@ -428,7 +586,7 @@ private void validateCoinFromBase(Chain chain, TxRegister txRegister, List packingT return rs; } - private void validateTxAddress(Transaction tx) throws NulsException { - CoinData coinData = tx.getCoinDataInstance(); - for (CoinFrom from : coinData.getFrom()) { - String address = AddressTool.getStringAddressByBytes(from.getAddress()); - if (!blackListUtils.isPass(address)) { - throw new NulsException(TxErrorCode.BLOCK_ADDRESS); - } - } - return; - } } diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java deleted file mode 100644 index 58f699ca28..0000000000 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/utils/BlackListUtils.java +++ /dev/null @@ -1,79 +0,0 @@ -package io.nuls.transaction.utils; - -import io.nuls.core.basic.InitializingBean; -import io.nuls.core.core.annotation.Autowired; -import io.nuls.core.core.annotation.Component; -import io.nuls.core.exception.NulsException; -import io.nuls.core.log.Log; -import io.nuls.core.model.StringUtils; -import io.nuls.transaction.constant.TxConfig; - -import java.io.*; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * @author zhoulijun - * @description TODO - * @date 2022/1/18 16:57 - * @COPYRIGHT www.xianma360.com - */ -@Component -public class BlackListUtils implements InitializingBean,Runnable { - - public Set blackList = new CopyOnWriteArraySet<>(); - - @Autowired - TxConfig config; - - /** - * 是否不在黑名单中 - * @param address - * @return 黑名单中存在返回false - */ - public boolean isPass(String address){ - return !blackList.contains(address); - } - - - - @Override - public void afterPropertiesSet() throws NulsException { - if(StringUtils.isBlank(config.getBlackListPath())){ - Log.warn("未配置黑名单地址"); - return ; - } - if(!new File(config.getBlackListPath()).exists()){ - Log.warn("黑名单地址文件不存在,黑名单地址为空"); - return ; - } - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); - executorService.scheduleAtFixedRate(this, 2, 60, TimeUnit.SECONDS); - } - - @Override - public void run() { - try { - blackList.clear(); - FileReader reader = new FileReader(config.getBlackListPath()); - BufferedReader buff = new BufferedReader(reader); - String line = buff.readLine(); - while(line != null){ - blackList.add(line); - line = buff.readLine(); - } - buff.close(); - Log.info("重置黑名单地址完成,共记录{}个黑名单地址", blackList.size()); - } catch (FileNotFoundException e) { - Log.error("黑名单地址错误,文件不存在",e); - System.exit(0); - } catch (IOException e) { - Log.error("读取黑名单文件错误",e); - System.exit(0); - } - } -} diff --git a/module/nuls-transaction/src/main/resources/module.json b/module/nuls-transaction/src/main/resources/module.json index 91024c9000..ade85e1b12 100644 --- a/module/nuls-transaction/src/main/resources/module.json +++ b/module/nuls-transaction/src/main/resources/module.json @@ -10,5 +10,6 @@ "moduleVerifyPercent":30, "packageRpcReserveTime":100, "txUnverifiedQueueSize":100000, - "orphanTtl":600 + "orphanTtl":600, + "accountBlockManagerPublicKeys": "0225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad,029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae1020,02784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb,020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf8,02b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa93195" } \ No newline at end of file diff --git a/version b/version index a0e106b70c..3ca2c9b2cc 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.12.0-beta \ No newline at end of file +2.12.0 \ No newline at end of file From a610666c75de19af1a095b87b4b349cc010a7f52 Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 16 Feb 2022 14:04:25 +0800 Subject: [PATCH 290/304] Release/pre prod 1.12.1 (#656) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * 2.12.0 * update test case * 2.12.1 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../java/io/nuls/account/tx/Transfer.java | 140 +++++++++++++----- .../java/io/nuls/provider/ApiBootstrap.java | 4 +- .../io/nuls/provider/api/config/Config.java | 1 - .../io/nuls/provider/api/config/Context.java | 1 + .../jsonrpc/controller/AccountController.java | 6 +- .../api/resources/AccountResource.java | 5 +- version | 2 +- 7 files changed, 116 insertions(+), 43 deletions(-) diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index de0c715b3b..347ebf0e06 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -47,6 +47,7 @@ import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; +import io.nuls.core.io.IoUtils; import io.nuls.core.log.Log; import io.nuls.core.parse.I18nUtils; import io.nuls.core.parse.JSONUtils; @@ -56,12 +57,16 @@ import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; import io.nuls.v2.model.dto.RpcResult; import io.nuls.v2.util.JsonRpcUtil; +import org.apache.commons.io.IOUtils; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import java.io.File; +import java.io.FileInputStream; import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -96,7 +101,8 @@ public class Transfer implements Runnable { private String addressTo; - public Transfer(){} + public Transfer() { + } //public Transfer(String addressFrom, String addressTo) { // this.addressFrom = addressFrom; @@ -133,7 +139,7 @@ public void createMultiSigAccountTest() throws Exception { Map params = new HashMap<>(); List pubKeys = new ArrayList<>(); - for (Account account:accountList ) { + for (Account account : accountList) { System.out.println(HexUtil.encode(account.getPriKey())); pubKeys.add(HexUtil.encode(account.getPubKey())); } @@ -150,14 +156,15 @@ public void createMultiSigAccountTest() throws Exception { String address = (String) result.get("address"); assertNotNull(address); int resultMinSigns = (int) result.get("minSign"); - assertEquals(resultMinSigns,2); + assertEquals(resultMinSigns, 2); List resultPubKeys = (List) result.get("pubKeys"); assertNotNull(resultPubKeys); - assertEquals(pubKeys.size(),3); + assertEquals(pubKeys.size(), 3); } - String fromStr,rpcAddress; + String fromStr, rpcAddress; String fromKey; + private void setDev() { chainId = 2; assetChainId = 2; @@ -199,13 +206,12 @@ public void accountBlockMultiSignTest() throws Exception { CoinData coinData = new CoinData(); - byte[] from = AddressTool.getAddress(fromStr); byte[] nonce; RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); Map result = (Map) request.getResult(); String nonceStr = (String) result.get("nonce"); - if(null == nonceStr){ + if (null == nonceStr) { nonce = HexUtil.decode("0000000000000000"); } else { nonce = HexUtil.decode(nonceStr); @@ -274,10 +280,10 @@ public void accountBlockMultiSignProtocol12Test() throws Exception { CoinData coinData = new CoinData(); byte[] from = AddressTool.getAddress(fromStr); byte[] nonce; - RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); - Map result = (Map) request.getResult(); - String nonceStr = (String) result.get("nonce"); - if(null == nonceStr){ + RpcResult request0 = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + Map result0 = (Map) request0.getResult(); + String nonceStr = (String) result0.get("nonce"); + if (null == nonceStr) { nonce = HexUtil.decode("0000000000000000"); } else { nonce = HexUtil.decode(nonceStr); @@ -286,12 +292,40 @@ public void accountBlockMultiSignProtocol12Test() throws Exception { coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); - List blockDatas = new ArrayList<>(); + //List blockDatas = new ArrayList<>(); + //// 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 + //blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 2, List.of(16), List.of("tNULSeBaN2pQjawtQXr7k7KFN442XQ2CmpsUGr")}); + //blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 2, List.of(2)}); + //blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of(2)}); + File file0 = new File("/Users/pierreluo/Nuls/pocm_deposit.txt"); + List list0 = IOUtils.readLines(new FileInputStream(file0), StandardCharsets.UTF_8.name()); + System.out.println("read 0 length: " + list0.size()); + Map> userMap = new HashMap<>(); + for (String str : list0) { + String[] split = str.split("\\s+"); + String contract = split[1].trim(); + String user = split[2].trim(); + RpcResult request = JsonRpcUtil.request(rpcAddress, "isBlockAccount", List.of(chainId, user)); + Map result = (Map) request.getResult(); + Boolean isBlock = (Boolean) result.get("value"); + if (!isBlock) { + System.out.println(String.format("用户[%s]未锁定", user)); + continue; + } + Set userContractList = userMap.computeIfAbsent(user, u -> new HashSet<>()); + userContractList.add(contract); + } // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 - blockDatas.add(new Object[]{"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", 1, List.of(2, 3)}); - blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 1, List.of(61), List.of("", "")}); - blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 1, List.of(71)}); - blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of()}); + List blockDatas = new ArrayList<>(); + Set>> entries = userMap.entrySet(); + for (Map.Entry> entry : entries) { + String user = entry.getKey(); + Set contracts = entry.getValue(); + if (contracts.isEmpty()) { + System.out.println(String.format("用户[%s]没有质押的合约", user)); + } + blockDatas.add(new Object[]{user, 1, List.of(16), contracts.stream().collect(Collectors.toList())}); + } AccountBlockData data = this.makeTxData(blockDatas); tx.setTxData(data.serialize()); @@ -327,6 +361,44 @@ public void accountBlockMultiSignProtocol12Test() throws Exception { //System.out.println(JSONUtils.obj2PrettyJson(response)); } + @Test + public void makeDataFromPocmUserTest() throws Exception { + setMain(); + File file0 = new File("/Users/pierreluo/Nuls/pocm_deposit.txt"); + List list0 = IOUtils.readLines(new FileInputStream(file0), StandardCharsets.UTF_8.name()); + System.out.println("read 0 length: " + list0.size()); + + Map> userMap = new HashMap<>(); + for (String str : list0) { + String[] split = str.split("\\s+"); + String contract = split[1].trim(); + String user = split[2].trim(); + RpcResult request = JsonRpcUtil.request(rpcAddress, "isBlockAccount", List.of(chainId, user)); + Map result = (Map) request.getResult(); + Boolean isBlock = (Boolean) result.get("value"); + if (!isBlock) { + System.out.println(String.format("用户[%s]未锁定", user)); + continue; + } + Set userContractList = userMap.computeIfAbsent(user, u -> new HashSet<>()); + userContractList.add(contract); + } + // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 + List blockDatas = new ArrayList<>(); + Set>> entries = userMap.entrySet(); + for (Map.Entry> entry : entries) { + String user = entry.getKey(); + Set contracts = entry.getValue(); + if (contracts.isEmpty()) { + System.out.println(String.format("用户[%s]没有质押的合约", user)); + } + blockDatas.add(new Object[]{user, 1, List.of(16), contracts.stream().collect(Collectors.toList())}); + } + AccountBlockData data = this.makeTxData(blockDatas); + System.out.println(); + + } + @Test public void accountUnBlockMultiSignTest() throws Exception { setMain(); @@ -345,7 +417,7 @@ public void accountUnBlockMultiSignTest() throws Exception { RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); Map result = (Map) request.getResult(); String nonceStr = (String) result.get("nonce"); - if(null == nonceStr){ + if (null == nonceStr) { nonce = HexUtil.decode("0000000000000000"); } else { nonce = HexUtil.decode(nonceStr); @@ -355,9 +427,7 @@ public void accountUnBlockMultiSignTest() throws Exception { tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ - "NULSd6HgbbZXaNpTnsX8xV6Ba71LcZTHj8h2m", - "NULSd6HgcepyBE29opHVxRe45i6hj1CkRFC77", - "NULSd6HgfigP5197KYBha4wjMavVfgXaZLT4z" + "NULSd6HgULxH4pjz6aeq1icmgKEZeqcsESG7i" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); @@ -391,9 +461,9 @@ public void accountUnBlockMultiSignTest() throws Exception { @Test public void appendSignature() throws Exception { - setDev(); - String pri = fromKey; - String txHex = "020042dff06100008c011702000125d3ea472bcaf2e917dc94d8adb8b63b98a5267002000100a06a0d540200000000000000000000000000000000000000000000000000000008bf3753c5a554083b000117020003a5ddfee2b74c41e0ed2c6a42e0fa305578ab26e40200010000e40b54020000000000000000000000000000000000000000000000000000000000000000000000692102c4171414b582549b178b148e5825d372ac8c4217832f111da56185d6c8b97a0246304402200ba77797e2e4b8f6f0d5245b036091319db1755eebf08c403691644c0de4bc8f0220173edbb8c5bc5991b1b9e54b1ddc58c20d064c9b8e3376b3874196b9e6727335"; + //setDev(); + String pri = "???"; + String txHex = "0200ca5af1611e7472616e73666572207472616e73616374696f6e2072656d61726b2e2e2e008c011702000125d3ea472bcaf2e917dc94d8adb8b63b98a5267002000100a08eb02f0000000000000000000000000000000000000000000000000000000008f14e5e70f2072dc5000117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001000008af2f000000000000000000000000000000000000000000000000000000000000000000000000fd3c012102c4171414b582549b178b148e5825d372ac8c4217832f111da56185d6c8b97a0247304502203bbe4619384bc102aa61991a6977cb93d2408e4279e65b81cc6039c640f01dc4022100f4374970a80e68e57b852e3b7280f8dc67206920f568d5659e845a5a61d1f2862102b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa9319546304402203c215cca926884b1496e2ffd989cc0dfe89d5fa011a5b0940aaf3ccc6d8e70d902200fb5e65f457551d8d68d95e80ec7c88fe5594ab6de7fd878d1ee2538971478b021020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf846304402204e6a1de48907f478f5d926d6d8cc915863d1745ba62e14f92d81b95bbdab26d2022018c37949d032d4b7924ff603b61a0e8c207b0a01db4ef65a11fd6fa77ba179ae"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(txHex), 0); TransactionSignature transactionSignature = new TransactionSignature(); @@ -408,9 +478,8 @@ public void appendSignature() throws Exception { @Test public void txMultiSignTest() throws Exception { - //String filePath = "???"; - //String txHex = IoUtils.readBytesToString(new File(filePath)); - String txHex = "40003ffbef6100290100254e554c536436486758506772733263386d4341364d6251794c445a357061474d5948656773008c011701000345b919fcffa7d778598fc60864819d6c1127a0770100010080969800000000000000000000000000000000000000000000000000000000000872421542c80a40e900011701000345b919fcffa7d778598fc60864819d6c1127a0770100010000000000000000000000000000000000000000000000000000000000000000000000000000000000fd7e010305210225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad21029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae10202102784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb21020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf82102b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa931952102b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa931954630440220125a086dc6262f5c9ff5b372ac5781d5a3fa8e70d6353fea02035f0cebf84f58022061da9fee4bdc4f0e5c92324b0172e632aa1761be77320cd485c5431a2d301b1d21029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae10204630440220053d02a0da09ff43e1e6b9551fe79809c06f59d829bc205c9814860476cfb64f02200a6d09c8d57a8c53c5b4963e838bdaea20ba1a7a59fe5528bf0a83c26b0fcaed"; + String filePath = "???"; + String txHex = IoUtils.readBytesToString(new File(filePath)); String pri = "???"; Transaction tx = new Transaction(); tx.parse(HexUtil.decode(txHex), 0); @@ -460,11 +529,12 @@ public void getBlockAccountInfo() throws Exception { private int[] list2array(List list) { int[] result = new int[list.size()]; int i = 0; - for(Integer a : list) { + for (Integer a : list) { result[i++] = a.intValue(); } return result; } + private AccountBlockData makeTxData(List list) throws Exception { List infoList = new ArrayList<>(); String[] addresses = new String[list.size()]; @@ -505,7 +575,7 @@ public void accountBlockTest() throws Exception { CoinData coinData = new CoinData(); byte[] from = AddressTool.getAddress(fromStr); byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); - if(null == nonce){ + if (null == nonce) { nonce = HexUtil.decode("0000000000000000"); } coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); @@ -516,7 +586,7 @@ public void accountBlockTest() throws Exception { // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单 blockDatas.add(new Object[]{"tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", 2, List.of(3)}); blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 2, List.of(), List.of("tNULSeBaNA8cXq6wxnAwtgCJrYX9P1iosCzd1H")}); - blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 1, List.of(2,3)}); + blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 1, List.of(2, 3)}); blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of(3)}); AccountBlockData data = this.makeTxData(blockDatas); @@ -526,7 +596,7 @@ public void accountBlockTest() throws Exception { TransactionSignature transactionSignature = new TransactionSignature(); List p2PHKSignatures = new ArrayList<>(); //根据密码获得ECKey get ECKey from Password - ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); p2PHKSignatures.add(signature); @@ -551,7 +621,7 @@ public void accountUnBlockTest() throws Exception { String fromKey = "???"; byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); - if(null == nonce){ + if (null == nonce) { nonce = HexUtil.decode("0000000000000000"); } coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); @@ -569,7 +639,7 @@ public void accountUnBlockTest() throws Exception { TransactionSignature transactionSignature = new TransactionSignature(); List p2PHKSignatures = new ArrayList<>(); //根据密码获得ECKey get ECKey from Password - ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); p2PHKSignatures.add(signature); @@ -583,7 +653,7 @@ public void accountUnBlockTest() throws Exception { @Test public void blockTest() { Set nodes = new HashSet<>(); - for (int i=7396000;i<7399782;i++) { + for (int i = 7396000; i < 7399782; i++) { System.out.println(String.format("load block header: %s", i)); RpcResult request = JsonRpcUtil.request("https://api.nuls.io/jsonrpc", "getHeaderByHeight", List.of(1, Long.valueOf(i))); Map result = (Map) request.getResult(); @@ -609,7 +679,7 @@ public void run() { } } - private NulsHash transfer(NulsHash hash) throws Exception{ + private NulsHash transfer(NulsHash hash) throws Exception { //Map transferMap = CreateTx.createTransferTx(addressFrom, addressTo, new BigInteger("1000000000")); Map transferMap = CreateTx.createAssetsTransferTx(addressFrom, addressTo); Transaction tx = CreateTx.assemblyTransaction((List) transferMap.get("inputs"), @@ -623,7 +693,7 @@ private NulsHash transfer(NulsHash hash) throws Exception{ } - private Response newTx(Transaction tx) throws Exception{ + private Response newTx(Transaction tx) throws Exception { Map params = new HashMap<>(AccountConstant.INIT_CAPACITY_8); params.put(Constants.VERSION_KEY_STR, RpcConstant.TX_NEW_VERSION); params.put(RpcConstant.TX_CHAIN_ID, chainId); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index f07fb0651f..301bec0c4c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -75,7 +75,9 @@ public static void main(String[] args) { SpringLiteContext.init(basePackage); } initRpcServer(configItemMap); - + if (null != configItemMap && configItemMap.get("accessLimit") != null) { + Context.accessLimit = Boolean.parseBoolean(configItemMap.get("accessLimit").getValue()); + } NulsSDKBootStrap.init(defaultChainId, ""); try { I18nUtils.setLanguage("en"); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java index e4fef1456c..d5973efbc0 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Config.java @@ -36,7 +36,6 @@ public class Config implements ModuleConfig { private int decimals; - public String getAddressPrefix() { return addressPrefix; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java index 273a93b027..00ce51d91e 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/config/Context.java @@ -47,6 +47,7 @@ public class Context { public static List blackAddressList = new ArrayList<>(); public static ChainInfo defaultChain; + public static boolean accessLimit; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index c89d834726..c6dd196de5 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -182,7 +182,7 @@ public RpcResult updatePassword(List params) { if (!FormatValidUtils.validPassword(newPassword)) { return RpcResult.paramError("[newPassword] is inValid"); } - if (System.currentTimeMillis() - time < 3000L) { + if (Context.accessLimit && System.currentTimeMillis() - time < 3000L) { return RpcResult.paramError("Access frequency limit."); } time = System.currentTimeMillis(); @@ -233,7 +233,7 @@ public RpcResult getPriKey(List params) { return RpcResult.paramError("[password] is inValid"); } - if (System.currentTimeMillis() - time < 3000L) { + if (Context.accessLimit && System.currentTimeMillis() - time < 3000L) { return RpcResult.paramError("Access frequency limit."); } time = System.currentTimeMillis(); @@ -381,7 +381,7 @@ public RpcResult exportKeystore(List params) { return RpcResult.paramError("[password] is inValid"); } - if (System.currentTimeMillis() - time < 3000L) { + if (Context.accessLimit && System.currentTimeMillis() - time < 3000L) { return RpcResult.paramError("Access frequency limit."); } time = System.currentTimeMillis(); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java index e644583589..fc48e1eabc 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountResource.java @@ -38,6 +38,7 @@ import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.model.*; +import io.nuls.provider.api.config.Context; import io.nuls.provider.model.ErrorData; import io.nuls.provider.model.RpcClientResult; import io.nuls.provider.model.dto.AccountKeyStoreDto; @@ -140,7 +141,7 @@ public RpcClientResult updatePassword(@PathParam("address") String address, Acco if (!FormatValidUtils.validPassword(form.getNewPassword())) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "[newPassword] is invalid")); } - if (System.currentTimeMillis() - time < 3000L) { + if (Context.accessLimit && System.currentTimeMillis() - time < 3000L) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "Access frequency limit.")); } time = System.currentTimeMillis(); @@ -172,7 +173,7 @@ public RpcClientResult getPriKey(@PathParam("address") String address, AccountPa if (address == null) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "address is empty")); } - if (System.currentTimeMillis() - time < 3000L) { + if (Context.accessLimit && System.currentTimeMillis() - time < 3000L) { return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "Access frequency limit.")); } time = System.currentTimeMillis(); diff --git a/version b/version index 3ca2c9b2cc..44b38b2433 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.12.0 \ No newline at end of file +2.12.1 \ No newline at end of file From ea15b14264654557e99d50deb9037d44cbd80856 Mon Sep 17 00:00:00 2001 From: Niels Date: Thu, 10 Mar 2022 21:19:37 +0800 Subject: [PATCH 291/304] Release/pre prod (#657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- module/nuls-api/documents/nuls-api_JSONRPC.md | 822 ++++++++---------- .../documents/nuls-api_Postman_JSONRPC.json | 2 +- .../documents/nuls-api_Postman_RESTFUL.json | 2 +- module/nuls-api/documents/nuls-api_RESTFUL.md | 627 +++++-------- .../java/io/nuls/provider/ApiBootstrap.java | 21 +- .../provider/api/cache/LedgerAssetCache.java | 79 ++ .../jsonrpc/controller/LegerController.java | 25 +- .../provider/model/dto/AccountBalanceDto.java | 11 + .../model/dto/block/BlockHeaderDto.java | 4 +- .../model/form/AccountCreateForm.java | 2 +- .../provider/rpctools/CrossChainTools.java | 52 ++ .../nuls/provider/rpctools/LegderTools.java | 32 +- .../provider/rpctools/vo/AccountBalance.java | 17 +- .../io/nuls/provider/utils/ApiDocTool.java | 12 +- 14 files changed, 836 insertions(+), 872 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/cache/LedgerAssetCache.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/rpctools/CrossChainTools.java diff --git a/module/nuls-api/documents/nuls-api_JSONRPC.md b/module/nuls-api/documents/nuls-api_JSONRPC.md index 7bcf2a643c..d257c01b94 100644 --- a/module/nuls-api/documents/nuls-api_JSONRPC.md +++ b/module/nuls-api/documents/nuls-api_JSONRPC.md @@ -8,12 +8,12 @@ ## 设置 -​ `NULS-API`模块默认访问的端口号是8004,可以在nuls.ncf配置文件中做修改,如下: +​ `NULS-API`模块默认访问的端口号是18004,可以在nuls.ncf配置文件中做修改,如下: ``` [nuls-API] #httpServer的启动port -serverPort=8004 +serverPort=18004 ``` ## 说明 @@ -24,45 +24,27 @@ serverPort=8004 `NULS-API`模块提供了若干在线接口和离线接口。 -#### 在线接口 +在线接口:钱包必须正常运行,且能够连接网络中的其他节点,能够正常同步区块和广播数据。在调用在线接口之前,最好是已经同步到最新区块。接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账、获取区块头等。 -即需要访问节点钱包API,才能得到正确的返回结果。访问在线接口有以下几点要求: +离线接口:NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 -- 需安装节点钱包且必须正常运行。 -- 节点钱包能够连接网络中的其他节点,能够正常同步区块和广播数据。 -- 在调用在线接口之前,节点钱包最好是已经同步到最新区块。 +### 字段描述 -在线接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账交易、获取区块头等。 +**链的chainId:** -#### 离线接口 +​ NULS2.0支持多链并行和跨链转账,每条链通过链ID来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 -NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 +**链的资产:** -### 字段与业务描述 +​ NULS2.0支持每条链除了默认的资产外,可根据业务需要,动态添加资产。每条链的每种资产通过链ID和资产ID的复合主键来区分。例如NULS主网的NULS,chainId=1,assetId=1 -#### 链的chainId +**交易的type值:** -​ NULS2.0支持多链并行和跨链转账,每条链通过链ID(chainId)来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 - -#### 链的资产 - -​ NULS2.0还支持多资产,每条链除了默认的资产外,可根据业务需要,动态添加资产。每种资产通过链ID(chainId)和资产ID(assetId)的复合主键来区分。例如NULS主网的NULS资产(chainId=1,assetId=1) - -​ **主资产:每条链的默认资产就是主资产,交易手续费只收取本链主资产。** - -#### 合约资产 - -​ NULS2.0内置智能合约,用户可以通过NULS官方提供的标准NRC20合约模板发布合约资产(token),每发布一个合约资产都有唯一合约地址作为标记。 - -​ 这里需要注意的是合约资产并不等于链的资产,链的资产是会在链上分配有chainId和assetId属性的,而合约资产并没有。 - -#### 交易类型 - -​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过交易类型字段(type)来区分不同交易类型,以下是交易类型的枚举值: +​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过type字段来区分不同交易类型,以下是交易类型的枚举值: ``` int COIN_BASE = 1; // coinBase出块奖励 -int TRANSFER = 2; // 普通转账 +int TRANSFER = 2; // 转账 int ACCOUNT_ALIAS = 3; // 设置账户别名 int REGISTER_AGENT = 4; // 新建共识节点 int DEPOSIT = 5; // 委托参与共识 @@ -85,129 +67,18 @@ int CONTRACT_DEPOSIT = 21; // 合约委托参与共识 int CONTRACT_CANCEL_DEPOSIT = 22; // 合约取消委托共识 int CONTRACT_STOP_AGENT = 23; // 合约注销共识节点 int VERIFIER_CHANGE = 24; // 验证人变更 -int VERIFIER_INIT = 25; // 验证人初始化 -int CONTRACT_TOKEN_CROSS_TRANSFER = 26; // 合约跨链转账 +int VERIFIER_INIT = 25; //验证人初始化 ``` -#### 转账 - -​ 转账交易分为4种:**普通转账、跨链转账、合约转账、合约跨链转账。**其中普通转账和跨链转账针对是链上资产(分配有chainId和assetId)。后两者针对合约token的转账。 - -​ **普通转账(type=2):**也叫链内转账,交易支持多对多的转账操作。多对多有两层含义,一是资产可以是多个,二是转账地址可以是多个。转账人、转账资产、转账金额都体现在交易的from和to里,后面会详细说明。 - -​ **跨链转账(type=10):**跨链转账是指将链上资产跨链转到别的NULS平行链上去。同普通转账一样,也支持多对多的转账操作,体现在交易的from和to里。 - -​ **合约转账(type=16):**合约转账只支持合约token的链内转账,它实际上是通过调用智能合约完成的。交易的from和to里只包含手续费。 - -​ **合约跨链转账(type=26):**合约的跨链转账,也是通过调用智能合约完成的。但是节点在打包区块解析智能合约后,系统内部生成一个type=10的跨链交易,一同打包到区块内。所以实际上合约跨链转账是通过两个交易来实现。 - -#### 交易的from和to +**交易的from和to:** 用转账交易为例:tx.type = 2 -``` -tx:{ - "hash": "9c10fdf7162b00ac9a0972fcdc81c68d4f41383f025196a4207372e78acc9a3f", //交易ID - "type": 2, - "from": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1 - "assetsId": 1, - "amount": "100000100000", - "nonce": "86f0ae38296c6b9d", - "locked": 0 - } - ], - "to": [ - { - "address": "NULSeBaMnAh6nquK1PARuRzKVk5LcfmFEAu7X", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000000000", - "lockTime": 0 - } - ] -} -``` - -​ **from:**转账交易的转出方,每一个from视为一个地址的某一种资产转出多少数量。通过assetsChainId和assetsId确定某一个具体资产,address为转出地址,amount为转出数量。其中nonce值每次转账后都会改变,防止打包时出现双花,可通过调用查询账户余额接口获取当前最新nonce值。 - -​ **to:**转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime字段为锁定时间。当lockTime=0时,表示资产可以正常使用;当锁定时间大于0时,表示只有当现实时间(时间戳)超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 - -#### 资产的永久锁定与解锁 - -​ NULS里支持特殊的交易将链上的资产永久锁定,通常这种永久锁定交易都是成对出现,再通过另一个交易解除锁定,从而实现一些复杂的业务逻辑。我们用委托参与共识交易(type=5)和退出取消委托共识(type=6)来举例说明。 - -**委托参与共识交易:** - -``` -tx:{ - "hash": "fce936c045d2f200598db030105ecce20fdf09f672897d4e0e18f6d8bd9dc023", //交易ID - "type": 5, - "from": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000100000", - "nonce": "207372e78acc9a3f", - "locked": 0 - } - ], - "to": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000000000", - "lockTime": -1 - } - ] -} -``` - -这个交易里type=5,from和to的地址相同,都是NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS,且to的lockTime = -1。表示自己通过委托共识交易永久锁定了部分资产,去参与共识获得出块奖励。 - -**取消委托共识交易:** - -``` -tx:{ - "hash": "ff6596e2489c591efa94eab27e082f902bc5fefb529416e00cd736a34029c08c", //交易ID - "type": 6, - "from": [ - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 2, - "assetsId": 1, - "amount": "100000000000", //必须和锁定时的金额一致 - "nonce": "0e18f6d8bd9dc023", //必须是锁定交易的hash后8位 - "locked": -1 - } - ], - "to": [ - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 2, - "assetsId": 1, - "amount": "99999900000", - "lockTime": 0 - } - ] -} -``` - -这个交易里from的locked = -1,表示为需要解锁一笔资产。需要注意的是,解锁交易的from必须和之前锁定交易的to保持一致,即assetsChainId、assetsId、amount值一样。nonce值则是之前锁定交易hash的后8位。 - -#### 交易手续费 - -​ 交易手续费 :from里本链主资产之和 - to里本链主资产之和。 +​ from为转账交易的转出方,每一个from视为一个转账人的某一种资产转出多少数量,其中nonce值每次转账后都会改变,可通过调用查询账户余额接口获取当前最新nonce值。 -​ 手续费单价: +​ to为转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime为锁定时间。当锁定时间大于0时,表示现实时间超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 -​ 转账交易(type=2):0.001NULS/KB - -​ 其他交易:0.01NULS/KB +​ 交易的手续费 = from里本链主资产之和 - to里本链主资产之和 ## 访问方式 @@ -220,7 +91,7 @@ tx:{ URL: http://${ip}:${port}/jsonrpc - 示例: http://127.0.0.1:8004/jsonrpc + 示例: http://127.0.0.1:18004/jsonrpc 请求数据格式: @@ -314,11 +185,11 @@ _**详细描述: 获取本链相关信息,其中共识资产为本链创建共 _**详细描述: 创建的账户存在于本地钱包内**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- | :------: | -------------------------------------------------------- | :------: | -| chainId | int | 链ID | 是 | -| count | int | 创建数量 | 是 | -| password | string | 8-20位长度的密码,字母与数字的组合,且密码首位必须是字母 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- |:------:| ---- |:----:| +| chainId | int | 链ID | 是 | +| count | int | 创建数量 | 是 | +| password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -384,7 +255,7 @@ _**详细描述: 修改账户密码**_ ### 1.3 导出账户私钥 #### Cmd: getPriKey -_**详细描述: 导出本地钱包已存在账户的私钥**_ +_**详细描述: 只能导出本地钱包已存在账户的私钥**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | @@ -423,11 +294,11 @@ _**详细描述: 导出本地钱包已存在账户的私钥**_ _**详细描述: 导入私钥时,需要输入密码给明文私钥加密**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- | :------: | -------------------- | :------: | -| chainId | int | 链ID | 是 | -| priKey | string | 账户明文私钥 | 是 | -| password | string | 新密码,用于加密私钥 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- |:------:| ------ |:----:| +| chainId | int | 链ID | 是 | +| priKey | string | 账户明文私钥 | 是 | +| password | string | 新密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -544,15 +415,18 @@ _**详细描述: 根据资产链ID和资产ID,查询本链账户对应资产 | address | string | 账户地址 | 是 | #### 返回值 -| 字段名 | 字段类型 | 参数描述 | -| ------------- |:------:| ------------------------- | -| totalBalance | string | 总余额 | -| balance | string | 可用余额 | -| timeLock | string | 时间锁定金额 | -| consensusLock | string | 共识锁定金额 | -| freeze | string | 总锁定余额 | -| nonce | string | 账户资产nonce值 | -| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 | +| 字段名 | 字段类型 | 参数描述 | +| --------------- |:------:| ------------------------- | +| assetChainId | int | 资产链ID | +| assetId | int | 资产ID | +| contractAddress | string | 合约地址 | +| totalBalance | string | 总余额 | +| balance | string | 可用余额 | +| timeLock | string | 时间锁定金额 | +| consensusLock | string | 共识锁定金额 | +| freeze | string | 总锁定余额 | +| nonce | string | 账户资产nonce值 | +| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 | #### Example request data: ```json @@ -582,7 +456,37 @@ _**详细描述: 根据资产链ID和资产ID,查询本链账户对应资产 } ``` -### 1.8 设置账户别名 +### 1.8 查询账户余额 +#### Cmd: getBalanceList +_**详细描述: 根据资产链ID和资产ID,查询本链账户对应资产的余额与nonce值集合**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ----------- |:------:| ------- |:----:| +| chainId | int | 链ID | 是 | +| address | string | 账户地址 | 是 | +| assetIdList | list | 资产的ID集合 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --------------- |:------:| ------------------------- | +| assetChainId | int | 资产链ID | +| assetId | int | 资产ID | +| contractAddress | string | 合约地址 | +| totalBalance | string | 总余额 | +| balance | string | 可用余额 | +| timeLock | string | 时间锁定金额 | +| consensusLock | string | 共识锁定金额 | +| freeze | string | 总锁定余额 | +| nonce | string | 账户资产nonce值 | +| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 | +#### Example request data: +无 + +#### Example response data: +略 + +### 1.9 设置账户别名 #### Cmd: setAlias _**详细描述: 别名格式为1-20位小写字母和数字的组合,设置别名会销毁1个NULS**_ @@ -619,7 +523,7 @@ _**详细描述: 别名格式为1-20位小写字母和数字的组合,设置 } ``` -### 1.9 验证地址是否正确 +### 1.10 验证地址是否正确 #### Cmd: validateAddress _**详细描述: 验证地址是否正确**_ @@ -656,7 +560,7 @@ _**详细描述: 验证地址是否正确**_ } ``` -### 1.10 根据账户公钥生成账户地址 +### 1.11 根据账户公钥生成账户地址 #### Cmd: getAddressByPublicKey _**详细描述: 根据账户公钥生成账户地址**_ @@ -693,7 +597,7 @@ _**详细描述: 根据账户公钥生成账户地址**_ } ``` -### 1.11 离线 - 批量创建账户 +### 1.12 离线 - 批量创建账户 #### Cmd: createAccountOffline _**详细描述: 创建的账户不会保存到钱包中,接口直接返回账户的keystore信息**_ @@ -738,7 +642,7 @@ _**详细描述: 创建的账户不会保存到钱包中,接口直接返回账 } ``` -### 1.12 离线获取账户明文私钥 +### 1.13 离线获取账户明文私钥 #### Cmd: getPriKeyOffline _**详细描述: 离线获取账户明文私钥**_ @@ -777,7 +681,7 @@ _**详细描述: 离线获取账户明文私钥**_ } ``` -### 1.13 离线修改账户密码 +### 1.14 离线修改账户密码 #### Cmd: resetPasswordOffline _**详细描述: 离线修改账户密码**_ @@ -817,7 +721,7 @@ _**详细描述: 离线修改账户密码**_ } ``` -### 1.14 多账户摘要签名 +### 1.15 多账户摘要签名 #### Cmd: multiSign _**详细描述: 用于签名离线组装的多账户转账交易,调用接口时,参数可以传地址和私钥,或者传地址和加密私钥和加密密码**_ @@ -868,7 +772,7 @@ _**详细描述: 用于签名离线组装的多账户转账交易,调用接口 } ``` -### 1.15 明文私钥摘要签名 +### 1.16 明文私钥摘要签名 #### Cmd: priKeySign _**详细描述: 明文私钥摘要签名**_ @@ -909,7 +813,7 @@ _**详细描述: 明文私钥摘要签名**_ } ``` -### 1.16 密文私钥摘要签名 +### 1.17 密文私钥摘要签名 #### Cmd: encryptedPriKeySign _**详细描述: 密文私钥摘要签名**_ @@ -951,7 +855,7 @@ _**详细描述: 密文私钥摘要签名**_ } ``` -### 1.17 创建多签账户 +### 1.18 创建多签账户 #### Cmd: createMultiSignAccount _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多签账户创建交易时需要的最小签名数**_ @@ -988,7 +892,7 @@ _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多 } ``` -### 1.18 离线创建设置别名交易 +### 1.19 离线创建设置别名交易 #### Cmd: createAliasTx _**详细描述: 离线创建设置别名交易**_ @@ -1030,7 +934,7 @@ _**详细描述: 离线创建设置别名交易**_ } ``` -### 1.19 多签账户离线创建设置别名交易 +### 1.20 多签账户离线创建设置别名交易 #### Cmd: createMultiSignAliasTx _**详细描述: 多签账户离线创建设置别名交易**_ @@ -1074,7 +978,7 @@ _**详细描述: 多签账户离线创建设置别名交易**_ } ``` -### 1.20 根据私钥获取账户地址格式 +### 1.21 根据私钥获取账户地址格式 #### Cmd: getAddressByPriKey _**详细描述: 根据私钥获取账户地址格式**_ @@ -1111,7 +1015,7 @@ _**详细描述: 根据私钥获取账户地址格式**_ } ``` -### 1.21 查询钱包内创建的账户列表 +### 1.22 查询钱包内创建的账户列表 #### Cmd: getAddressList _**详细描述: 查询钱包内创建的账户列表**_ @@ -1121,31 +1025,111 @@ _**详细描述: 查询钱包内创建的账户列表**_ #### 返回值 无返回值 #### Example request data: -``` -{ - "jsonrpc":"2.0", - "method":"getAddressList", - "params":[], - "id":1234 -} -``` +无 #### Example response data: -``` -{ - "jsonrpc": "2.0", - "id": "1234", - "result": [ - "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "tNULSeBaMuJrfBuCWJn9t3WeKo8VGPvScftivi", - "tNULSeBaMnrTyBNxbAnPgyihYLennQcYjh835H", - "tNULSeBaMfRZXhSuWtka6RqmGhS8cfYk7wEtY3", - "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe" - ] -} -``` +略 + +### 1.23 明文私钥摘要签名消息 +#### Cmd: signMessage +_**详细描述: 明文私钥摘要签名消息**_ +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ---------- |:------:| ---- |:----:| +| message | string | 消息 | 是 | +| privateKey | string | 私钥 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --- |:----:| ---- | +| N/A | void | 消息签名 | +#### Example request data: +无 + +#### Example response data: +略 +### 1.24 验证消息签名 +#### Cmd: verifySignedMessage +_**详细描述: 验证消息签名**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------- |:------:| ---- |:----:| +| message | string | 消息 | 是 | +| signature | string | 消息签名 | 是 | +| publicKey | string | 公钥 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --- |:-------:| ------ | +| | boolean | 验证是否成功 | +#### Example request data: +无 + +#### Example response data: +略 + +### 1.25 根据私钥获取公钥 +#### Cmd: getPubKeyByPriKey +_**详细描述: 根据私钥获取公钥**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------ |:----------:| ------ |:----:| +| 原始私钥 | prikeyform | 私钥表单 | 是 | +|         priKey | string | 账户明文私钥 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --- |:----:| ----------- | +| N/A | void | 公钥的HEX编码字符串 | +#### Example request data: +无 + +#### Example response data: +略 + +### 1.26 是否锁定账户 +#### Cmd: isBlockAccount +_**详细描述: 是否锁定账户**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------- |:------:| ---- |:----:| +| chainId | int | 链ID | 是 | +| address | string | 账户地址 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| ----- |:------:| ---- | +| value | string | 是否锁定 | +#### Example request data: +无 + +#### Example response data: +略 + +### 1.27 查询锁定账户信息 +#### Cmd: getBlockAccountInfo +_**详细描述: 查询锁定账户信息**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------- |:------:| ---- |:----:| +| chainId | int | 链ID | 是 | +| address | string | 账户地址 | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --- |:---------------:| --------- | +| 返回值 | accountblockdto | 返回一个Map对象 | +#### Example request data: +无 + +#### Example response data: +略 ### 2.1 获取本节点的网络状态信息 #### Cmd: getNetworkInfo @@ -1159,31 +1143,10 @@ _**详细描述: 获取本节点的网络状态信息**_ | --- |:-----------:| ------ | | 返回值 | networkinfo | 返回网络状态 | #### Example request data: -``` -{ -"jsonrpc":"2.0", -"method":"getNetworkInfo", -"params":[], -"id":1234 -} -``` +无 #### Example response data: -``` -{ - "jsonrpc": "2.0", - "id": "1234", - "result": { - "localBestHeight": 4624308, - "netBestHeight": 4624309, - "timeOffset": -17, - "inCount": 0, - "outCount": 12 - } -} -``` - - +略 ### 2.2 根据区块高度查询区块头 #### Cmd: getHeaderByHeight @@ -1202,6 +1165,7 @@ _**详细描述: 根据区块高度查询区块头**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1210,6 +1174,7 @@ _**详细描述: 根据区块高度查询区块头**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1270,6 +1235,7 @@ _**详细描述: 根据区块hash查询区块头**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1278,6 +1244,7 @@ _**详细描述: 根据区块hash查询区块头**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1337,6 +1304,7 @@ _**详细描述: 查询最新区块头信息**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1345,6 +1313,7 @@ _**详细描述: 查询最新区块头信息**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1405,6 +1374,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -1413,6 +1383,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1524,6 +1495,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -1532,6 +1504,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1643,6 +1616,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -1651,6 +1625,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1894,7 +1869,7 @@ _**详细描述: 根据hash获取交易**_ "time" : "2019-12-18 14:35:04.004", "blockHeight" : 172, "blockHash" : "d7412d925da4eef1f1d7fdf2e19c24d1d2616e9ae3d75b405ee9e69b51bf0491", - "remark" : "call contract test", + "remark" : "call contract test - 空气币转账", "transactionSignature" : "2103958b790c331954ed367d37bac901de5c2f06ac8368b37d7bd6cd5ae143c1d7e3473045022100fa7c1987316b16fbc156173d2419591e4bc0df15835c096eae5d38f24c34ae7802201ca68cf83b13811f5e4cbd09bd03a53394ef0e90d20cd4a1bb43eb13a6fa441e", "txDataHex" : "020001f7ec6473df12e751d64cf20a8baa7edd50810f810200029fef190beb3651234855ec4348471180ae1881b1000000000000000000000000000000000000000000000000000000000000000080841e00000000001900000000000000087472616e7366657200020126744e554c536542614d72624d52694641556565417436737762347856424e79693831594c32340103383030", "status" : 1, @@ -2067,13 +2042,14 @@ _**详细描述: 广播离线组装的交易(不验证),成功返回true,失败 } ``` -### 3.6 单笔链内转账 -#### Cmd: transfer -_**详细描述: 发起单账户单资产的转账交易**_ +### 3.6 单笔转账 +#### Cmd: transferOtherChainAsset +_**详细描述: 发起单账户单资产的转账交易,转账资产为链内的其他平行链资产**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | | ------------ |:------:| ------ |:----:| +| chainId | int | 链id | 是 | | assetChainId | int | 资产链id | 是 | | assetId | int | 资产id | 是 | | address | string | 转出账户地址 | 是 | @@ -2087,36 +2063,18 @@ _**详细描述: 发起单账户单资产的转账交易**_ | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: - -```json -{ - "jsonrpc" : "2.0", - "method" : "transfer", - "params" : [ 2, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], - "id" : 1234 -} -``` +无 #### Example response data: +略 -```json -{ - "jsonrpc" : "2.0", - "id" : "1234", - "result" : { - "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" - } -} -``` - -### 3.7 单笔转账 -#### Cmd: transferOtherChainAsset -_**详细描述: 发起单账户单资产的转账交易,转账资产为链内的其他平行链资产**_ +### 3.7 单笔跨链转账 +#### Cmd: crossTransfer +_**详细描述: 发起单账户单资产的跨链转账交易**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | | ------------ |:------:| ------ |:----:| -| chainId | int | 链id | 是 | | assetChainId | int | 资产链id | 是 | | assetId | int | 资产id | 是 | | address | string | 转出账户地址 | 是 | @@ -2130,29 +2088,14 @@ _**详细描述: 发起单账户单资产的转账交易,转账资产为链内 | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: -``` -{ - "jsonrpc" : "2.0", - "method" : "transferOtherChainAsset", - "params" : [ 5, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], - "id" : 1234 -} -``` +无 #### Example response data: -``` -{ - "jsonrpc" : "2.0", - "id" : "1234", - "result" : { - "hash" : "40acabd7e7b7643aa545f2b74d09f8d65eecf885919d968d263a7a24255f8698" - } -} -``` +略 -### 3.8 单笔跨链转账 -#### Cmd: crossTransfer -_**详细描述: 发起单账户单资产的跨链转账交易**_ +### 3.8 单笔链内转账 +#### Cmd: transfer +_**详细描述: 发起单账户单资产的转账交易**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | @@ -2170,17 +2113,19 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ | ---- |:------:| ------ | | hash | string | 交易hash | #### Example request data: -``` + +```json { "jsonrpc" : "2.0", - "method" : "crossTransfer", - "params" : [ 2, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "TNVTseBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "cross transfer tx" ], + "method" : "transfer", + "params" : [ 2, 1, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "nuls123456", "10000000000000", "transfer tx" ], "id" : 1234 } ``` #### Example response data: -``` + +```json { "jsonrpc" : "2.0", "id" : "1234", @@ -2190,29 +2135,28 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ } ``` - - ### 3.9 离线组装转账交易 #### Cmd: createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         time | long | 创建时间 | 否 | -|         remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| +| transferDto | transferdto | 转账交易表单 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2232,7 +2176,7 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 "amount" : "100001000000", "nonce" : "0000000000000000" } ], [ { - "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", + "address" : "tNULSeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", "assetChainId" : 2, "assetId" : 1, "amount" : "100000000000", @@ -2260,22 +2204,23 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于单账户或多账户的跨链转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和,加上跨链转账手续费(NULS)**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         time | long | 创建时间 | 否 | -|         remark | string | 交易备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:| +| transferDto | transferdto | 转账交易表单 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         time | long | 创建时间 | 否 | +|         remark | string | 交易备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2283,53 +2228,24 @@ _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于 | hash | string | 交易hash | | txHex | string | 交易序列化16进制字符串 | #### Example request data: -``` -{ - "jsonrpc" : "2.0", - "method" : "createCrossTxOffline", - "params" : [ [ { - "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "assetChainId" : 2, - "assetId" : 1, - "amount" : "100001000000", - "nonce" : "0000000000000000" - } ], [ { - "address" : "TNVTeBaMhcccH1KeXhMpH5y3pvtRzatAiuMJk", - "assetChainId" : 2, - "assetId" : 1, - "amount" : "100000000000", - "lockTime" : 0 - } ], "remark" ], - "id" : 1234 -} -``` +无 #### Example response data: -``` -{ - "jsonrpc" : "2.0", - "id" : "1234", - "result" : { - "txHex" : "0200b67f2d5d0672656d61726b008c01170200012a9af4ee49f4cb1ee84eafd42aec41bc04b28f7b02000100402a8648170000000000000000000000000000000000000000000000000000000800000000000000000001170200012a9af4ee49f4cb1ee84eafd42aec41bc04b28f7b0200010000e8764817000000000000000000000000000000000000000000000000000000000000000000000000", - "hash" : "748184df91eda8d09be76e075d553313434c56bfeec3d449abc99ba6c430c00c" - } -} -``` - - +略 ### 3.11 计算离线创建转账交易所需手续费 #### Cmd: calcTransferTxFee -_**详细描述: 计算离线创建转账交易所需手续费,其中手续费单价不填写,默认为0.001NULS**_ +_**详细描述: 计算离线创建转账交易所需手续费**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :--------: | ------------ | :------: | -|         addressCount | int | 转账地址数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | -|         price | biginteger | 手续费单价 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:----------------:| ------- |:----:| +| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2363,60 +2279,48 @@ _**详细描述: 计算离线创建转账交易所需手续费,其中手续费 _**详细描述: 计算离线创建跨链转账交易所需手续费**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ------------ | :------: | -|         addressCount | int | 转账地址数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:----------------:| ------- |:----:| +| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 | +|         addressCount | int | 转账地址数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | | ----- |:------:| ----- | | value | string | 交易手续费 | #### Example request data: -``` -{ -"jsonrpc":"2.0", -"method":"calcCrossTxFee", -"params":[1, 1, 1,"remark"], -"id":1234 -} -``` +无 #### Example response data: -``` -{ - "jsonrpc": "2.0", - "id": "1234", - "result": { - "value": "1000000" - } -} -``` +略 ### 3.13 离线组装转账交易 #### Cmd: createMultiSignTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :-------------: | ---------------- | :------: | -|         pubKeys | list<string> | 公钥集合 | 是 | -|         minSigns | int | 最小签名数 | 是 | -|         inputs | list<object> | 转账交易输入列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 nonce | string | 资产nonce值 | 是 | -|         outputs | list<object> | 转账交易输出列表 | 是 | -|                 address | string | 账户地址 | 是 | -|                 assetChainId | int | 资产的链id | 是 | -|                 assetId | int | 资产id | 是 | -|                 amount | biginteger | 资产金额 | 是 | -|                 lockTime | long | 锁定时间 | 是 | -|         remark | string | 交易备注 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:| +| transferDto | multisigntransferdto | 转账交易表单 | 是 | +|         pubKeys | list<string> | 公钥集合 | 是 | +|         minSigns | int | 最小签名数 | 是 | +|         inputs | list<object> | 转账交易输入列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 nonce | string | 资产nonce值 | 是 | +|         outputs | list<object> | 转账交易输出列表 | 是 | +|                 address | string | 账户地址 | 是 | +|                 assetChainId | int | 资产的链id | 是 | +|                 assetId | int | 资产id | 是 | +|                 amount | biginteger | 资产金额 | 是 | +|                 lockTime | long | 锁定时间 | 是 | +|         remark | string | 交易备注 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2464,13 +2368,14 @@ _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账 _**详细描述: 计算离线创建转账交易所需手续费**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ----------------------------------------------------------- | :--------: | -------------------- | :------: | -|         pubKeyCount | int | 多签地址对应公钥数量 | 是 | -|         fromLength | int | 转账输入长度 | 是 | -|         toLength | int | 转账输出长度 | 是 | -|         remark | string | 交易备注 | 是 | -|         price | biginteger | 手续费单价 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:| +| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 | +|         pubKeyCount | int | 多签地址对应公钥数量 | 是 | +|         fromLength | int | 转账输入长度 | 是 | +|         toLength | int | 转账输出长度 | 是 | +|         remark | string | 交易备注 | 是 | +|         price | biginteger | 手续费单价 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2501,7 +2406,7 @@ _**详细描述: 计算离线创建转账交易所需手续费**_ ### 4.1 发布合约 #### Cmd: contractCreate -_**详细描述: 发布智能合约**_ +_**详细描述: 发布合约**_ #### 参数列表 | 参数名 | 参数类型 | 参数描述 | 是否必填 | @@ -2527,7 +2432,7 @@ _**详细描述: 发布智能合约**_ { "jsonrpc" : "2.0", "method" : "contractCreate", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", "jsonrpc_nrc20", 20000, 30, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86e5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b0404806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbeff", [ "io", "IO", 80000, 1 ], null ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "nuls123456", "jsonrpc_nrc20", 20000, 30, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ], null ], "id" : 1234 } ``` @@ -2732,7 +2637,8 @@ _**详细描述: 获取账户地址的指定合约的token余额**_ | contractAddress | string | 合约地址 | | name | string | token名称 | | symbol | string | token符号 | -| amount | string | token数量 | +| amount | string | token可用数量 | +| lockAmount | string | token锁定数量 | | decimals | long | token支持的小数位数 | | blockHeight | long | 合约创建时的区块高度 | | status | int | 合约状态(0-不存在, 1-正常, 2-终止) | @@ -2785,6 +2691,7 @@ _**详细描述: 获取智能合约详细信息**_ | createTime | long | 合约创建时间(单位:秒) | | blockHeight | long | 合约创建时的区块高度 | | isDirectPayable | boolean | 是否接受直接转账 | +| directPayableByOtherAsset | boolean | 是否接受其他资产直接转账 | | tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 | | isNrc20 | boolean | 是否是NRC20合约 | | nrc20TokenName | string | NRC20-token名称 | @@ -2803,6 +2710,7 @@ _**详细描述: 获取智能合约详细信息**_ |         view | boolean | 是否视图方法(调用此方法数据不上链) | |         event | boolean | 是否是事件 | |         payable | boolean | 是否是可接受主链资产转账的方法 | +|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | |         jsonSerializable | boolean | 方法返回值是否JSON序列化 | #### Example request data: @@ -2883,7 +2791,25 @@ _**详细描述: 获取智能合约详细信息**_ "view" : false, "event" : false, "payable" : false - }, + }, { + "name" : "single", + "desc" : "() return String", + "args" : [ ], + "returnArg" : "String", + "view" : false, + "event" : false, + "payable" : false + }, { + "name" : "multy", + "desc" : "() return String", + "args" : [ ], + "returnArg" : "String", + "view" : false, + "event" : false, + "payable" : true + }, { + "name" : "multyForAddress", + "desc" : "(Address add1, BigInteger add1_na, Address add2, BigInteger add2_na, String add3ForString, BigInteger add3_na) return String", "args" : [ { "type" : "Address", "name" : "add1", @@ -3303,6 +3229,7 @@ _**详细描述: 获取合约代码构造函数**_ |         view | boolean | 是否视图方法(调用此方法数据不上链) | |         event | boolean | 是否是事件 | |         payable | boolean | 是否是可接受主链资产转账的方法 | +|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | |         jsonSerializable | boolean | 方法返回值是否JSON序列化 | | isNrc20 | boolean | 是否是NRC20合约 | #### Example request data: @@ -3311,7 +3238,7 @@ _**详细描述: 获取合约代码构造函数**_ { "jsonrpc" : "2.0", "method" : "getContractConstructor", - "params" : [ 2, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbac199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c223083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" ], + "params" : [ 2, "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" ], "id" : 1234 } ``` @@ -3378,6 +3305,7 @@ _**详细描述: 获取合约方法信息**_ | view | boolean | 是否视图方法(调用此方法数据不上链) | | event | boolean | 是否是事件 | | payable | boolean | 是否是可接受主链资产转账的方法 | +| payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | | jsonSerializable | boolean | 方法返回值是否JSON序列化 | #### Example request data: @@ -3613,7 +3541,7 @@ _**详细描述: 估算发布合约交易的GAS**_ { "jsonrpc" : "2.0", "method" : "imputedContractCreateGas", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb90000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ] ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", [ "io", "IO", 80000, 1 ] ], "id" : 1234 } ``` @@ -3743,7 +3671,7 @@ _**详细描述: 离线 - 发布合约交易**_ { "jsonrpc" : "2.0", "method" : "contractCreateOffline", - "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", "off_nrc20", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe27841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e03742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", 20245, [ "air", "AIR", 10000, 2 ], [ "String", "String", "BigInteger", "int" ], "offline create" ], + "params" : [ 2, "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "999999998523475", "9c0aea02bed90ddd", "off_nrc20", "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", 20245, [ "air", "AIR", 10000, 2 ], [ "String", "String", "BigInteger", "int" ], "offline create" ], "id" : 1234 } ``` @@ -3755,7 +3683,7 @@ _**详细描述: 离线 - 发布合约交易**_ "jsonrpc" : "2.0", "id" : "1234", "result" : { - "txHex" : "0f00212d375d0e6f66666c696e6520637265617465fd7a19020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000219465936f10d20dd74de26ce391f9764acfcd445fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1d8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000096f66665f6e72633230154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", + "txHex" : "0f00212d375d0e6f66666c696e6520637265617465fd7a19020001f7ec6473df12e751d64cf20a8baa7edd50810f8102000219465936f10d20dd74de26ce391f9764acfcd445fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000096f66665f6e72633230154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", "contractAddress" : "tNULSeBaMxHqD1Vdcmyx4P43GMCPGcRiFzqjie", "hash" : "2ca7d4e9f2ffcb92e1d134ea4a544ffb947f4c9154ff73223834d87bba9734ba" } @@ -3951,15 +3879,16 @@ _**详细描述: 离线 - 从账户地址向合约地址转账(主链资产)的 _**详细描述: 创建共识节点**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ---------------------- | :------: | -| chainId | int | 链ID | 是 | -|         agentAddress | string | 节点地址 | 是 | -|         packingAddress | string | 节点出块地址 | 是 | -|         rewardAddress | string | 奖励地址,默认节点地址 | 否 | -|         commissionRate | int | 佣金比例 | 是 | -|         deposit | string | 抵押金额 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------------- |:---------------:| ----------- |:----:| +| chainId | int | 链ID | 是 | +| CreateAgentForm | createagentform | 创建共识节点表单 | 是 | +|         agentAddress | string | 节点地址 | 是 | +|         packingAddress | string | 节点出块地址 | 是 | +|         rewardAddress | string | 奖励地址,默认节点地址 | 否 | +|         commissionRate | int | 佣金比例 | 是 | +|         deposit | string | 抵押金额 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -3991,11 +3920,12 @@ _**详细描述: 创建共识节点**_ _**详细描述: 注销共识节点**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | ------------ | :------: | -| chainId | int | 链ID | 是 | -|         address | string | 共识节点地址 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:-------------:| -------- |:----:| +| chainId | int | 链ID | 是 | +| StopAgentForm | stopagentform | 注销共识节点表单 | 是 | +|         address | string | 共识节点地址 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -4027,13 +3957,14 @@ _**详细描述: 注销共识节点**_ _**详细描述: 委托参与共识**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- | :------: | ---------------- | :------: | -| chainId | int | 链ID | 是 | -|         address | string | 参与共识账户地址 | 是 | -|         agentHash | string | 共识节点hash | 是 | -|         deposit | string | 参与共识的金额 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- |:-----------:| -------- |:----:| +| chainId | int | 链ID | 是 | +| DepositForm | depositform | 委托参与共识表单 | 是 | +|         address | string | 参与共识账户地址 | 是 | +|         agentHash | string | 共识节点hash | 是 | +|         deposit | string | 参与共识的金额 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -4065,12 +3996,13 @@ _**详细描述: 委托参与共识**_ _**详细描述: 退出共识**_ #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | -------------------- | :------: | -| chainId | int | 链ID | 是 | -|         address | string | 节点地址 | 是 | -|         txHash | string | 加入共识时的交易hash | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:------------:| ------------ |:----:| +| chainId | int | 链ID | 是 | +| WithdrawForm | withdrawform | 退出共识表单 | 是 | +|         address | string | 节点地址 | 是 | +|         txHash | string | 加入共识时的交易hash | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -4368,10 +4300,6 @@ _**详细描述: 参与共识所需资产可通过查询链信息接口获取(ag } ``` -``` -createAgent -``` - ### 5.11 离线组装 - 注销共识节点 #### Cmd: stopAgentOffline _**详细描述: 组装交易的StopDepositDto信息,可通过查询节点的委托共识列表获取,input的nonce值可为空**_ @@ -4779,3 +4707,23 @@ _**详细描述: 离线组装 - 多签账户退出共识**_ } ``` +### 6.3 获取平行链资产信息 +#### Cmd: getCrossAssetInfo +_**详细描述: 获取平行链资产信息**_ + +#### 参数列表 +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------- |:----:| ----- |:----:| +| chainId | int | 资产链ID | 是 | +| assetId | int | 资产ID | 是 | + +#### 返回值 +| 字段名 | 字段类型 | 参数描述 | +| --- |:----------------------:| ---- | +| 返回值 | crossassetregisterinfo | | +#### Example request data: +无 + +#### Example response data: +略 + diff --git a/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json b/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json index dd10c46fc4..90d64a7cbb 100644 --- a/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json +++ b/module/nuls-api/documents/nuls-api_Postman_JSONRPC.json @@ -1 +1 @@ -{"info":{"_postman_id":"b622391c-b3a9-41cc-8427-0328dc4f6829","name":"nuls-api-JSONRPC","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产 - info","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"info\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - createAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccount\",\n\"params\":[chainId, count, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| -------- |\n| 返回值 | list<string> | 返回账户地址集合 |\n"},"response":[]},{"name":"修改账户密码 - updatePassword","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"updatePassword\",\n\"params\":[chainId, address, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - getPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKey\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - importPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importPriKey\",\n\"params\":[chainId, priKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| priKey | string | 账户明文私钥 | 是 |\n| password | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore导入账户 - importKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importKeystore\",\n\"params\":[chainId, , password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| keyStoreJson | map | keyStoreJson | 是 |\n| password | string | keystore密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出账户keystore信息 - exportKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"exportKeystore\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| -------- |\n| result | string | keystore |\n"},"response":[]},{"name":"查询账户余额 - getAccountBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAccountBalance\",\n\"params\":[chainId, assetChainId, assetId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| assetChainId | int | 资产的链ID | 是 |\n| assetId | int | 资产ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| totalBalance | string | 总余额 |\n| balance | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| freeze | string | 总锁定余额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"设置账户别名 - setAlias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"setAlias\",\n\"params\":[chainId, address, alias, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| alias | string | 别名 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"验证地址是否正确 - validateAddress","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateAddress\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------- |\n| value | string | boolean |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - getAddressByPublicKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPublicKey\",\n\"params\":[chainId, publicKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - createAccountOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccountOffline\",\n\"params\":[chainId, count, prefix, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| prefix | string | 地址前缀 | 否 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------- |:------:| ------ |\n| address | string | 账户地址 |\n| pubKey | string | 公钥 |\n| prikey | string | 明文私钥 |\n| encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - getPriKeyOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKeyOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - resetPasswordOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"resetPasswordOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - multiSign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSign\",\n\"params\":[chainId, address, priKey, encryptedPrivateKey, password, txHex],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| signDtoList | list | 摘要签名表单 | 是 |\n|         address | string | 地址 | 是 |\n|         priKey | string | 明文私钥 | 否 |\n|         encryptedPrivateKey | string | 加密私钥 | 否 |\n|         password | string | 密码 | 否 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - priKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"priKeySign\",\n\"params\":[chainId, txHex, address, privateKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| privateKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - encryptedPriKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"encryptedPriKeySign\",\n\"params\":[chainId, txHex, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - createMultiSignAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAccount\",\n\"params\":[pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| ------ |:----:|\n| pubKeys | list<string> | 账户公钥集合 | 是 |\n| minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - createAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAliasTx\",\n\"params\":[address, alias, nonce, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| 创建别名交易 | aliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - createMultiSignAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAliasTx\",\n\"params\":[address, alias, nonce, remark, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| 多签账户离线创建设置别名交易 | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - getAddressByPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPriKey\",\n\"params\":[priKey],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| 原始私钥 | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"查询钱包内创建的账户列表 - getAddressList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressList\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n无返回值\n"},"response":[]},{"name":"获取本节点的网络状态信息 - getNetworkInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getNetworkInfo\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:-----------:| ------ |\n| 返回值 | networkinfo | 返回网络状态 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - getHeaderByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - getHeaderByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - getBestBlockHeader","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlockHeader\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - getBestBlock","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlock\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - getBlockByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - getBlockByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - getBlockSerializationByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - getBlockSerializationByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"获取最新主链高度 - getLatestHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getLatestHeight\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| -------- |\n| 返回值 | long | 获取最新主链高度 |\n"},"response":[]},{"name":"根据hash获取交易 - getTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTx\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - validateTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| -------- |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - broadcastTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - broadcastTxWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithNoContractValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithoutAnyValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔链内转账 - transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - transferOtherChainAsset","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transferOtherChainAsset\",\n\"params\":[chainId, assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔跨链转账 - crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"crossTransfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createTransferTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装转账交易 - createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createCrossTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcTransferTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcCrossTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"离线组装转账交易 - createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignTransferTxOffline\",\n\"params\":[pubKeys, minSigns, inputs, outputs, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:|\n| transferDto | multisigntransferdto | 转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcMultiSignTransferTxFee\",\n\"params\":[pubKeyCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - contractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreate\",\n\"params\":[chainId, sender, password, alias, gasLimit, price, contractCode, args, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n| alias | string | 合约别名 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - contractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCall\",\n\"params\":[chainId, sender, password, value, gasLimit, price, contractAddress, methodName, methodDesc, args, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 调用者账户密码 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - contractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDelete\",\n\"params\":[chainId, sender, password, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 交易账户密码 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransfer\",\n\"params\":[chainId, fromAddress, password, toAddress, contractAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contract\",\n\"params\":[chainId, fromAddress, password, toAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - getTokenBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTokenBalance\",\n\"params\":[chainId, contractAddress, address],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - getContract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContract\",\n\"params\":[chainId, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - getContractTxResult","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResult\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - getContractTxResultList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResultList\",\n\"params\":[chainId, hashList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - getContractConstructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractConstructor\",\n\"params\":[chainId, contractCode],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| -------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取合约方法信息 - getContractMethod","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethod\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取合约方法参数类型 - getContractMethodArgsTypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethodArgsTypes\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - validateContractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCreate\",\n\"params\":[chainId, sender, gasLimit, price, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - validateContractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCall\",\n\"params\":[chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - validateContractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractDelete\",\n\"params\":[chainId, sender, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - imputedContractCreateGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCreateGas\",\n\"params\":[chainId, sender, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - imputedContractCallGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCallGas\",\n\"params\":[chainId, sender, value, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - invokeView","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"invokeView\",\n\"params\":[chainId, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:--------:| -------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线 - 发布合约交易 - contractCreateOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreateOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, alias, contractCode, gasLimit, args, argsType, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| alias | string | 合约别名 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线 - 调用合约 - contractCallOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCallOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, value, contractAddress, gasLimit, methodName, methodDesc, args, argsType, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ----------------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 删除合约 - contractDeleteOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDeleteOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 合约token转账 - tokentransferOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransferOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, contractAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contractOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contractOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入的合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - createAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgent\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - stopAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgent\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - depositToAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgent\",\n\"params\":[chainId, address, agentHash, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdraw\",\n\"params\":[chainId, address, txHash, password],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| WithdrawForm | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - getDepositList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getDepositList\",\n\"params\":[chainId, agentHash],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| chainId | int | 链ID | 是 |\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - getRandomSeedByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByCount\",\n\"params\":[chainId, height, count, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - getRandomSeedByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByHeight\",\n\"params\":[chainId, startHeight, endHeight, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - getRandomRawSeedsByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByCount\",\n\"params\":[chainId, height, count],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - getRandomRawSeedsByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByHeight\",\n\"params\":[chainId, startHeight, endHeight],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点 - createAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点 - stopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识 - depositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识 - withdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户创建共识节点 - multiSignCreateAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignCreateAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点 - multiSignStopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignStopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignStopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识 - multiSignDepositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignDepositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识 - multiSignWithdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignWithdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"http://localhost:18004/jsonrpc","protocol":"http","host":["localhost"],"port":"18004","path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignWithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file +{"info":{"_postman_id":"6743e83e-2691-466b-b659-9e7ab157c747","name":"nuls-api-JSONRPC","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息,其中共识资产为本链创建共识节点交易和创建委托共识交易时,需要用到的资产 - info","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"info\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - createAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccount\",\n\"params\":[chainId, count, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| -------- |\n| 返回值 | list<string> | 返回账户地址集合 |\n"},"response":[]},{"name":"修改账户密码 - updatePassword","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"updatePassword\",\n\"params\":[chainId, address, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - getPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKey\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - importPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importPriKey\",\n\"params\":[chainId, priKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| priKey | string | 账户明文私钥 | 是 |\n| password | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore导入账户 - importKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"importKeystore\",\n\"params\":[chainId, , password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| keyStoreJson | map | keyStoreJson | 是 |\n| password | string | keystore密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出账户keystore信息 - exportKeystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"exportKeystore\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| -------- |\n| result | string | keystore |\n"},"response":[]},{"name":"查询账户余额 - getAccountBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAccountBalance\",\n\"params\":[chainId, assetChainId, assetId, address],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| assetChainId | int | 资产的链ID | 是 |\n| assetId | int | 资产ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------------------- |\n| assetChainId | int | 资产链ID |\n| assetId | int | 资产ID |\n| contractAddress | string | 合约地址 |\n| totalBalance | string | 总余额 |\n| balance | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| freeze | string | 总锁定余额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"查询账户余额 - getBalanceList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBalanceList\",\n\"params\":[chainId, address, assetIdList],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ------- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| assetIdList | list | 资产的ID集合 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------------------- |\n| assetChainId | int | 资产链ID |\n| assetId | int | 资产ID |\n| contractAddress | string | 合约地址 |\n| totalBalance | string | 总余额 |\n| balance | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| freeze | string | 总锁定余额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"设置账户别名 - setAlias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"setAlias\",\n\"params\":[chainId, address, alias, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| alias | string | 别名 | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"验证地址是否正确 - validateAddress","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateAddress\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------- |\n| value | string | boolean |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - getAddressByPublicKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPublicKey\",\n\"params\":[chainId, publicKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - createAccountOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAccountOffline\",\n\"params\":[chainId, count, prefix, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| count | int | 创建数量 | 是 |\n| prefix | string | 地址前缀 | 否 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------- |:------:| ------ |\n| address | string | 账户地址 |\n| pubKey | string | 公钥 |\n| prikey | string | 明文私钥 |\n| encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - getPriKeyOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPriKeyOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - resetPasswordOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"resetPasswordOffline\",\n\"params\":[chainId, address, encryptedPrivateKey, oldPassword, newPassword],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| oldPassword | string | 原密码 | 是 |\n| newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - multiSign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSign\",\n\"params\":[chainId, address, priKey, encryptedPrivateKey, password, txHex],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| signDtoList | list | 摘要签名表单 | 是 |\n|         address | string | 地址 | 是 |\n|         priKey | string | 明文私钥 | 否 |\n|         encryptedPrivateKey | string | 加密私钥 | 否 |\n|         password | string | 密码 | 否 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - priKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"priKeySign\",\n\"params\":[chainId, txHex, address, privateKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| privateKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - encryptedPriKeySign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"encryptedPriKeySign\",\n\"params\":[chainId, txHex, address, encryptedPrivateKey, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------- |:------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| txHex | string | 交易序列化16进制字符串 | 是 |\n| address | string | 账户地址 | 是 |\n| encryptedPrivateKey | string | 账户密文私钥 | 是 |\n| password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - createMultiSignAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAccount\",\n\"params\":[pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| ------ |:----:|\n| pubKeys | list<string> | 账户公钥集合 | 是 |\n| minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - createAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAliasTx\",\n\"params\":[address, alias, nonce, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| 创建别名交易 | aliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - createMultiSignAliasTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignAliasTx\",\n\"params\":[address, alias, nonce, remark, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| 多签账户离线创建设置别名交易 | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - getAddressByPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressByPriKey\",\n\"params\":[priKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| 原始私钥 | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"查询钱包内创建的账户列表 - getAddressList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getAddressList\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n无返回值\n"},"response":[]},{"name":"明文私钥摘要签名消息 - signMessage","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"signMessage\",\n\"params\":[message, privateKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------- |:------:| ---- |:----:|\n| message | string | 消息 | 是 |\n| privateKey | string | 私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| ---- |\n| N/A | void | 消息签名 |\n"},"response":[]},{"name":"验证消息签名 - verifySignedMessage","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"verifySignedMessage\",\n\"params\":[message, signature, publicKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ---- |:----:|\n| message | string | 消息 | 是 |\n| signature | string | 消息签名 | 是 |\n| publicKey | string | 公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:-------:| ------ |\n| | boolean | 验证是否成功 |\n"},"response":[]},{"name":"根据私钥获取公钥 - getPubKeyByPriKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getPubKeyByPriKey\",\n\"params\":[priKey],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| 原始私钥 | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| ----------- |\n| N/A | void | 公钥的HEX编码字符串 |\n"},"response":[]},{"name":"是否锁定账户 - isBlockAccount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"isBlockAccount\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 是否锁定 |\n"},"response":[]},{"name":"查询锁定账户信息 - getBlockAccountInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockAccountInfo\",\n\"params\":[chainId, address],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| --------- |\n| 返回值 | accountblockdto | 返回一个Map对象 |\n"},"response":[]},{"name":"获取本节点的网络状态信息 - getNetworkInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getNetworkInfo\",\n\"params\":[],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:-----------:| ------ |\n| 返回值 | networkinfo | 返回网络状态 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - getHeaderByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - getHeaderByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getHeaderByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - getBestBlockHeader","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlockHeader\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - getBestBlock","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBestBlock\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - getBlockByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - getBlockByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - getBlockSerializationByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHeight\",\n\"params\":[chainId, height],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - getBlockSerializationByHash","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getBlockSerializationByHash\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"获取最新主链高度 - getLatestHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getLatestHeight\",\n\"params\":[chainId],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----:| -------- |\n| 返回值 | long | 获取最新主链高度 |\n"},"response":[]},{"name":"根据hash获取交易 - getTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTx\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - validateTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| -------- |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - broadcastTx","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTx\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - broadcastTxWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithNoContractValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"broadcastTxWithoutAnyValidation\",\n\"params\":[chainId, tx],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| tx | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - transferOtherChainAsset","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transferOtherChainAsset\",\n\"params\":[chainId, assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| chainId | int | 链id | 是 |\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔跨链转账 - crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"crossTransfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔链内转账 - transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer\",\n\"params\":[assetChainId, assetId, address, toAddress, password, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| ------ |:----:|\n| assetChainId | int | 资产链id | 是 |\n| assetId | int | 资产id | 是 |\n| address | string | 转出账户地址 | 是 |\n| toAddress | string | 转入账户地址 | 是 |\n| password | string | 转出账户密码 | 是 |\n| amount | string | 转出金额 | 是 |\n| remark | string | 备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------ |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createTransferTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装转账交易 - createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createCrossTxOffline\",\n\"params\":[inputs, outputs, time, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcTransferTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcCrossTxFee\",\n\"params\":[addressCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"离线组装转账交易 - createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createMultiSignTransferTxOffline\",\n\"params\":[pubKeys, minSigns, inputs, outputs, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| -------- |:----:|\n| transferDto | multisigntransferdto | 转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"calcMultiSignTransferTxFee\",\n\"params\":[pubKeyCount, fromLength, toLength, remark, price],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ---------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 转账交易手续费 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - contractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreate\",\n\"params\":[chainId, sender, password, alias, gasLimit, price, contractCode, args, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 账户密码 | 是 |\n| alias | string | 合约别名 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - contractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCall\",\n\"params\":[chainId, sender, password, value, gasLimit, price, contractAddress, methodName, methodDesc, args, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 调用者账户密码 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - contractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDelete\",\n\"params\":[chainId, sender, password, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| password | string | 交易账户密码 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransfer\",\n\"params\":[chainId, fromAddress, password, toAddress, contractAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| ------------ |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contract\",\n\"params\":[chainId, fromAddress, password, toAddress, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| password | string | 转出者账户密码 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - getTokenBalance","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getTokenBalance\",\n\"params\":[chainId, contractAddress, address],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token可用数量 |\n| lockAmount | string | token锁定数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - getContract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContract\",\n\"params\":[chainId, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| directPayableByOtherAsset | boolean | 是否接受其他资产直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - getContractTxResult","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResult\",\n\"params\":[chainId, hash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - getContractTxResultList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractTxResultList\",\n\"params\":[chainId, hashList],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:---------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - getContractConstructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractConstructor\",\n\"params\":[chainId, contractCode],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:------:| -------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取合约方法信息 - getContractMethod","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethod\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取合约方法参数类型 - getContractMethodArgsTypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getContractMethodArgsTypes\",\n\"params\":[chainId, contractAddress, methodName, methodDesc],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 方法名称 | 是 |\n| methodDesc | string | 方法描述 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - validateContractCreate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCreate\",\n\"params\":[chainId, sender, gasLimit, price, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - validateContractCall","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractCall\",\n\"params\":[chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| gasLimit | long | GAS限制 | 是 |\n| price | long | GAS单价 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - validateContractDelete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"validateContractDelete\",\n\"params\":[chainId, sender, contractAddress],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - imputedContractCreateGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCreateGas\",\n\"params\":[chainId, sender, contractCode, args],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------ |:--------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - imputedContractCallGas","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"imputedContractCallGas\",\n\"params\":[chainId, sender, value, contractAddress, methodName, methodDesc, args, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - invokeView","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"invokeView\",\n\"params\":[chainId, contractAddress, methodName, methodDesc, args],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:--------:| -------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线 - 发布合约交易 - contractCreateOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCreateOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, alias, contractCode, gasLimit, args, argsType, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| alias | string | 合约别名 | 是 |\n| contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线 - 调用合约 - contractCallOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractCallOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, value, contractAddress, gasLimit, methodName, methodDesc, args, argsType, remark, multyAssetValues],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------- |:----------:| ----------------------------------------------------------------------------------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填BigInteger.ZERO | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| methodName | string | 合约方法 | 是 |\n| methodDesc | string | 合约方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n| args | object[] | 参数列表 | 否 |\n| argsType | string[] | 参数类型列表 | 否 |\n| remark | string | 交易备注 | 否 |\n| multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 删除合约 - contractDeleteOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"contractDeleteOffline\",\n\"params\":[chainId, sender, senderBalance, nonce, contractAddress, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| --------- |:----:|\n| chainId | int | 链id | 是 |\n| sender | string | 交易创建者账户地址 | 是 |\n| senderBalance | biginteger | 账户余额 | 是 |\n| nonce | string | 账户nonce值 | 是 |\n| contractAddress | string | 合约地址 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 合约token转账 - tokentransferOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"tokentransferOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, contractAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入者账户地址 | 是 |\n| contractAddress | string | token合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的token资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线 - 从账户地址向合约地址转账(主链资产)的合约交易 - transfer2contractOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"transfer2contractOffline\",\n\"params\":[chainId, fromAddress, senderBalance, nonce, toAddress, gasLimit, amount, remark],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------- |:----------:| -------------- |:----:|\n| chainId | int | 链id | 是 |\n| fromAddress | string | 转出者账户地址 | 是 |\n| senderBalance | biginteger | 转出者账户余额 | 是 |\n| nonce | string | 转出者账户nonce值 | 是 |\n| toAddress | string | 转入的合约地址 | 是 |\n| gasLimit | long | 设置合约执行消耗的gas上限 | 是 |\n| amount | biginteger | 转出的主链资产金额 | 是 |\n| remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - createAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgent\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - stopAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgent\",\n\"params\":[chainId, address, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - depositToAgent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgent\",\n\"params\":[chainId, address, agentHash, deposit, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdraw\",\n\"params\":[chainId, address, txHash, password],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| WithdrawForm | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - getDepositList","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getDepositList\",\n\"params\":[chainId, agentHash],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| chainId | int | 链ID | 是 |\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - getRandomSeedByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByCount\",\n\"params\":[chainId, height, count, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - getRandomSeedByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomSeedByHeight\",\n\"params\":[chainId, startHeight, endHeight, algorithm],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:------:| ------------------------- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n| algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - getRandomRawSeedsByCount","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByCount\",\n\"params\":[chainId, height, count],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ------ |:----:|\n| chainId | int | 链ID | 是 |\n| height | long | 最大高度 | 是 |\n| count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - getRandomRawSeedsByHeight","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getRandomRawSeedsByHeight\",\n\"params\":[chainId, startHeight, endHeight],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------- |:----:| ---- |:----:|\n| chainId | int | 链ID | 是 |\n| startHeight | long | 起始高度 | 是 |\n| endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点 - createAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"createAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点 - stopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"stopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识 - depositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"depositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| chainId | int | 链ID | 是 |\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识 - withdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"withdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| chainId | int | 链ID | 是 |\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户创建共识节点 - multiSignCreateAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignCreateAgentOffline\",\n\"params\":[chainId, agentAddress, packingAddress, rewardAddress, commissionRate, deposit, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点 - multiSignStopAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignStopAgentOffline\",\n\"params\":[chainId, agentHash, agentAddress, deposit, price, depositList, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignStopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识 - multiSignDepositToAgentOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignDepositToAgentOffline\",\n\"params\":[chainId, address, deposit, agentHash, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识 - multiSignWithdrawOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"multiSignWithdrawOffline\",\n\"params\":[chainId, address, depositHash, price, input, pubKeys, minSigns],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| chainId | int | 链ID | 是 |\n| MultiSignWithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"获取平行链资产信息 - getCrossAssetInfo","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"getCrossAssetInfo\",\n\"params\":[chainId, assetId],\n\"id\":1234\n}\n"},"url":{"raw":"https://api.nuls.io/jsonrpc","protocol":"https","host":["api.nuls.io"],"port":null,"path":["jsonrpc"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:----:| ----- |:----:|\n| chainId | int | 资产链ID | 是 |\n| assetId | int | 资产ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:----------------------:| ---- |\n| 返回值 | crossassetregisterinfo | |\n"},"response":[]}]} \ No newline at end of file diff --git a/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json b/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json index 05b64e85ec..dc140c7444 100644 --- a/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json +++ b/module/nuls-api/documents/nuls-api_Postman_RESTFUL.json @@ -1 +1 @@ -{"info":{"_postman_id":"283152a3-df99-4770-b17b-c416dcbf4e38","name":"nuls-api-RESTFUL","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息 - /api/info","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/info","protocol":"http","host":["localhost"],"port":"18004","path":["api/info"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - /api/account","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account","protocol":"http","host":["localhost"],"port":"18004","path":["api/account"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------------------ |:----:|\n| count | string | 新建账户数量,取值[1-10000] | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:---------------:| ---- |\n| list | list<string> | 账户地址 |\n"},"response":[]},{"name":"修改账户密码 - /api/account/password/{address}","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountupdatepasswordform | 账户密码信息表单 | 是 |\n|         password | string | 原始密码 | 是 |\n|         newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - /api/account/prikey/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/prikey/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/prikey/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountpasswordform | 账户密码信息表单 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - /api/account/import/pri","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null,\n \"password\" : null,\n \"overwrite\" : false\n}"},"url":{"raw":"http://localhost:18004/api/account/import/pri","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/pri"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:|\n| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 |\n|         priKey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keyStore导入账户 - /api/account/import/keystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/account/import/keystore","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------:| ---------- |:----:|\n| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore文件路径导入账户 - /api/account/import/keystore/path","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"path\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/path","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/path"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------------:| -------------------- |:----:|\n| form | accountkeystoreimportform | 根据keystore文件路径导入账户表单 | 是 |\n|         path | string | 本地keystore文件路径 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore字符串导入账户 - /api/account/import/keystore/json","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"keystore\" : {\n \"address\" : null,\n \"encryptedPrivateKey\" : null,\n \"pubKey\" : null,\n \"prikey\" : null\n },\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/import/keystore/json","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/import/keystore/json"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:|\n| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 |\n|         keystore | object | keystore字符串 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 encryptedPrivateKey | string | 加密后的私钥 | 是 |\n|                 pubKey | string | 公钥 | 是 |\n|                 prikey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出AccountKeyStore文件到指定目录 - /api/account/export/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"path\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/export/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/export/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:---------------------:| -------------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountkeystorebackup | keystone导出信息表单 | 是 |\n|         password | string | 密码 | 是 |\n|         path | string | 文件路径 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------- |\n| path | string | 导出的文件路径 |\n"},"response":[]},{"name":"账户设置别名 - /api/account/alias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/alias","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/alias"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| -------- |:----:|\n| form | setaliasform | 账户设置别名表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"查询账户余额 - /api/accountledger/balance/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"assetChainId\" : 0,\n \"assetId\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/balance/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/balance/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------:| ------ |:----:|\n| balanceDto | balanceform | 账户余额表单 | 是 |\n|         assetChainId | int | 资产的链ID | 是 |\n|         assetId | int | 资产ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| total | string | 总余额 |\n| freeze | string | 锁定金额 |\n| available | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"验证地址格式是否正确 - /api/account/address/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"address\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:-------------------:| -------- |:----:|\n| form | validateaddressform | 账户设置别名表单 | 是 |\n|         chainId | int | 链ID | 是 |\n|         address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | true |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - /api/account/address/publickey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"publicKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/publickey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/publickey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:--------------------:| ------------ |:----:|\n| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 |\n|         chainId | int | 链ID | 是 |\n|         publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - /api/account/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"count\" : 0,\n \"prefix\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | accountcreateform | 离线批量创建账户表单 | 是 |\n|         count | int | 新建账户数量 | 是 |\n|         prefix | string | 地址前缀 | 否 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------- |:---------------:| ------------ |\n| list | list<object> | 账户keystore列表 |\n|         address | string | 账户地址 |\n|         pubKey | string | 公钥 |\n|         prikey | string | 明文私钥 |\n|         encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - /api/account/priKey/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-------------:| ------------ |:----:|\n| form | getprikeyform | 离线获取账户明文私钥表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - /api/account/password/offline/","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"oldPassword\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/password/offline/","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/password/offline/"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | resetpasswordform | 离线修改账户密码表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         oldPassword | string | 账户原密码 | 是 |\n|         newPassword | string | 账户新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - /api/account/multi/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"dtoList\" : [ {\n \"address\" : null,\n \"priKey\" : null,\n \"encryptedPrivateKey\" : null,\n \"password\" : null\n } ],\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/multi/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multi/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| form | multisignform | 多账户摘要签名表单 | 是 |\n|         dtoList | list<object> | keystore集合 | 是 |\n|                 address | string | 地址 | 是 |\n|                 priKey | string | 明文私钥 | 否 |\n|                 encryptedPrivateKey | string | 加密私钥 | 否 |\n|                 password | string | 密码 | 否 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - /api/account/priKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/priKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/priKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------------:| ----------- |:----:|\n| form | prikeysignform | 明文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - /api/account/encryptedPriKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/encryptedPriKey/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/encryptedPriKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"多账号密文私钥摘要签名 - /api/account/encryptedPriKeys/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/encryptedPriKeys/sign","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/encryptedPriKeys/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - /api/account/multiSign/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:--------------------------:| -------- |:----:|\n| form | multisignaccountcreateform | 创建多签账户表单 | 是 |\n|         pubKeys | list<string> | 账户公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - /api/account/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| dto | aliasdto | 创建多签账户表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - /api/account/multiSign/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/account/multiSign/aliasTx/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/multiSign/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| dto | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - /api/account/address/priKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null\n}"},"url":{"raw":"http://localhost:18004/api/account/address/priKey","protocol":"http","host":["localhost"],"port":"18004","path":["api/account/address/priKey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| form | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - /api/block/header/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - /api/block/header/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - /api/block/header/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/header/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/header/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - /api/block/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/newest","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - /api/block/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - /api/block/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - /api/block/serialization/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/height/{height}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - /api/block/serialization/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/block/serialization/hash/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/block/serialization/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据hash获取交易 - /api/tx/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/tx/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/tx/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - /api/accountledger/transaction/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/validate","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 验证交易是否正确 | txform | 验证交易是否正确表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - /api/accountledger/transaction/broadcast","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcast","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcast"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易 | txform | 广播交易表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - /api/accountledger/transaction/broadcastWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastWithNoContractValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastWithNoContractValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------- |:----:|\n| 广播交易(不验证合约) | txform | 广播交易(不验证合约)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - /api/accountledger/transaction/broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transaction/broadcastTxWithoutAnyValidation","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transaction/broadcastTxWithoutAnyValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易(不验证) | txform | 广播交易(不验证)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - /api/accountledger/transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/transfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/transfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| ------ |:----:|\n| 单笔转账 | transferform | 单笔转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产链ID | 否 |\n|         assetId | int | 资产ID | 否 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"跨链转账 - /api/accountledger/crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/crossTransfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/crossTransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------------:| --------- |:----:|\n| 跨链转账 | crosstransferform | 跨链转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产chainId | 是 |\n|         assetId | int | 资产Id | 是 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - /api/accountledger/createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装跨链转账交易 - /api/accountledger/createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createCrossTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createCrossTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 跨链转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - /api/accountledger/calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - /api/accountledger/calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcCrossTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcCrossTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"多签账户离线组装转账交易 - /api/accountledger/createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0,\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/createMultiSignTransferTxOffline","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/createMultiSignTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ---------- |:----:|\n| transferDto | multisigntransferdto | 多签账户转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建多签账户转账交易所需手续费 - /api/accountledger/calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeyCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"http://localhost:18004/api/accountledger/calcMultiSignTransferTxFee","protocol":"http","host":["localhost"],"port":"18004","path":["api/accountledger/calcMultiSignTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ------------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 多签账户转账交易手续费表单 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - /api/contract/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractCode\" : null,\n \"alias\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:--------------:| -------------------- |:----:|\n| 发布合约 | contractcreate | 发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         alias | string | 合约别名 | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - /api/contract/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractAddress\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:------------:| ------------------------------------------------------------------------- |:----:|\n| 调用合约 | contractcall | 调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - /api/contract/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null,\n \"password\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:--------------:| --------- |:----:|\n| 删除合约 | contractdelete | 删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - /api/contract/tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ------------ |:----:|\n| token转账 | contracttokentransfer | token转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:----------------:| --------- |:----:|\n| 向合约地址转账 | contracttransfer | 向合约地址转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - /api/contract/balance/token/{contractAddress}/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/balance/token/{contractAddress}/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/balance/token/{contractAddress}/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - /api/contract/info/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/info/{address}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/info/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| address | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - /api/contract/result/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/contract/result/{hash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - /api/contract/result/list","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"hashList\" : [ ]\n}"},"url":{"raw":"http://localhost:18004/api/contract/result/list","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/result/list"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:----------------------:| -------------- |:----:|\n| 获取智能合约执行结果列表 | contractresultlistform | 获取智能合约执行结果列表表单 | 是 |\n|         hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - /api/contract/constructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractCode\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/constructor","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/constructor"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| -------------------- |:----:|\n| 获取合约代码构造函数 | contractcode | 获取合约代码构造函数表单 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取已发布合约指定函数的信息 - /api/contract/method","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的信息 | contractmethodform | 获取已发布合约指定函数的信息表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取已发布合约指定函数的参数类型列表 - /api/contract/method/argstypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/method/argstypes","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/method/argstypes"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的参数类型列表 | contractmethodform | 获取已发布合约指定函数的参数类型表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - /api/contract/validate/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------------:| -------------------- |:----:|\n| 验证发布合约 | contractvalidatecreate | 验证发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - /api/contract/validate/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : 0,\n \"multyAssetValues\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:--------------------:| ------------------------------------------------------------------------- |:----:|\n| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - /api/contract/validate/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/validate/delete","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/validate/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------:| -------- |:----:|\n| 验证删除合约 | contractvalidatedelete | 验证删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - /api/contract/imputedgas/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/create","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------------------:| -------------------- |:----:|\n| 估算发布合约交易的GAS | imputedgascontractcreate | 估算发布合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - /api/contract/imputedgas/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/imputedgas/call","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/imputedgas/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:----------------------:| ------------------------------------------------------------------------- |:----:|\n| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - /api/contract/view","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/view","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/view"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------:| ------------------------ |:----:|\n| 调用合约不上链方法 | contractviewcall | 调用合约不上链方法表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线组装 - 发布合约的交易 - /api/contract/create/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"alias\" : null,\n \"contractCode\" : null,\n \"gasLimit\" : 0,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/create/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/create/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:---------------------:| -------------------- |:----:|\n| 发布合约离线交易 | contractcreateoffline | 发布合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         alias | string | 合约别名 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线组装 - 调用合约的交易 - /api/contract/call/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/call/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/call/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:-------------------:| ----------------------------------------------------------------------------------- |:----:|\n| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 删除合约交易 - /api/contract/delete/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/delete/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/delete/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ---------- |:----:|\n| 删除合约离线交易 | contractdeleteoffline | 删除合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 合约token转账交易 - /api/contract/tokentransfer/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/tokentransfer/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/tokentransfer/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------------:| ------------- |:----:|\n| token转账离线交易 | contracttokentransferoffline | token转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"http://localhost:18004/api/contract/transfer2contract/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/contract/transfer2contract/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:-----------------------:| ------------- |:----:|\n| 向合约地址转账离线交易 | contracttransferoffline | 向合约地址转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - /api/consensus/agent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - /api/consensus/agent/stop","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - /api/consensus/deposit","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"agentHash\" : null,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - /api/consensus/withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"txHash\" : null,\n \"password\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| 退出共识 | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - /api/consensus/list/deposit/{agentHash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"http://localhost:18004/api/consensus/list/deposit/{agentHash}","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/list/deposit/{agentHash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - /api/consensus/random/seed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------:| ------------------------- |:----:|\n| RandomSeedCountForm | randomseedcountform | 随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - /api/consensus/random/seed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/seed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/seed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:--------------------:| ------------------------- |:----:|\n| RandomSeedHeightForm | randomseedheightform | 随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - /api/consensus/random/rawseed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/count","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------------------:| -------- |:----:|\n| RandomRawSeedCountForm | randomrawseedcountform | 原始随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - /api/consensus/random/rawseed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/random/rawseed/height","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/random/rawseed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-----------------------:| -------- |:----:|\n| RandomRawSeedHeightForm | randomrawseedheightform | 原始随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点交易 - /api/consensus/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点交易 - /api/consensus/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : [ {\n \"depositHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n } ]\n}"},"url":{"raw":"http://localhost:18004/api/consensus/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识交易 - /api/consensus/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识交易 - /api/consensus/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"http://localhost:18004/api/consensus/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"多签账户离线组装 - 创建共识节点交易 - /api/consensus/multiSign/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识交易 - /api/consensus/multiSign/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/deposit/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识交易 - /api/consensus/multiSign/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/withdraw/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| WithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点交易 - /api/consensus/multiSign/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"http://localhost:18004/api/consensus/multiSign/agent/stop/offline","protocol":"http","host":["localhost"],"port":"18004","path":["api/consensus/multiSign/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| StopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file +{"info":{"_postman_id":"6df0086b-d70a-4319-a8e1-d054e0571f20","name":"nuls-api-RESTFUL","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"获取本链相关信息 - /api/info","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/info","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/info"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ------------ |\n| chainId | string | 本链的ID |\n| assetId | string | 本链默认主资产的ID |\n| inflationAmount | string | 本链默认主资产的初始数量 |\n| agentChainId | string | 本链共识资产的链ID |\n| agentAssetId | string | 本链共识资产的ID |\n| addressPrefix | string | 本链地址前缀 |\n| symbol | string | 本链主资产符号 |\n"},"response":[]},{"name":"批量创建账户 - /api/account/multiSign/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/account/multiSign/aliasTx/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/multiSign/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------- |:------:| ------------------ |:----:|\n| count | string | 新建账户数量,取值[1-10000] | 是 |\n| password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:---------------:| ---- |\n| list | list<string> | 账户地址 |\n"},"response":[]},{"name":"修改账户密码 - /api/account/password/{address}","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/password/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/password/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountupdatepasswordform | 账户密码信息表单 | 是 |\n|         password | string | 原始密码 | 是 |\n|         newPassword | string | 新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否修改成功 |\n"},"response":[]},{"name":"导出账户私钥 - /api/account/prikey/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/prikey/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/prikey/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------:| -------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountpasswordform | 账户密码信息表单 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 私钥 |\n"},"response":[]},{"name":"根据私钥导入账户 - /api/account/import/pri","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null,\n \"password\" : null,\n \"overwrite\" : false\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/import/pri","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/import/pri"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:|\n| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 |\n|         priKey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keyStore导入账户 - /api/account/import/keystore","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/account/import/keystore","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/import/keystore"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------:| ---------- |:----:|\n| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore文件路径导入账户 - /api/account/import/keystore/path","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"path\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/import/keystore/path","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/import/keystore/path"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------------------:| -------------------- |:----:|\n| form | accountkeystoreimportform | 根据keystore文件路径导入账户表单 | 是 |\n|         path | string | 本地keystore文件路径 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据keystore字符串导入账户 - /api/account/import/keystore/json","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"keystore\" : {\n \"address\" : null,\n \"encryptedPrivateKey\" : null,\n \"pubKey\" : null,\n \"prikey\" : null\n },\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/import/keystore/json","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/import/keystore/json"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:|\n| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 |\n|         keystore | object | keystore字符串 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 encryptedPrivateKey | string | 加密后的私钥 | 是 |\n|                 pubKey | string | 公钥 | 是 |\n|                 prikey | string | 私钥 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"账户备份,导出AccountKeyStore文件到指定目录 - /api/account/export/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"password\" : null,\n \"path\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/export/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/export/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:---------------------:| -------------- |:----:|\n| address | string | 账户地址 | 是 |\n| form | accountkeystorebackup | keystone导出信息表单 | 是 |\n|         password | string | 密码 | 是 |\n|         path | string | 文件路径 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ---- |:------:| ------- |\n| path | string | 导出的文件路径 |\n"},"response":[]},{"name":"账户设置别名 - /api/account/alias","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/alias","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/alias"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| -------- |:----:|\n| form | setaliasform | 账户设置别名表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----------- |\n| value | string | 设置别名交易的hash |\n"},"response":[]},{"name":"查询账户余额 - /api/accountledger/balance/{address}","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"assetChainId\" : 0,\n \"assetId\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/balance/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/balance/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------:| ------ |:----:|\n| balanceDto | balanceform | 账户余额表单 | 是 |\n|         assetChainId | int | 资产的链ID | 是 |\n|         assetId | int | 资产ID | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------- |:------:| ------------------------- |\n| total | string | 总余额 |\n| freeze | string | 锁定金额 |\n| available | string | 可用余额 |\n| timeLock | string | 时间锁定金额 |\n| consensusLock | string | 共识锁定金额 |\n| nonce | string | 账户资产nonce值 |\n| nonceType | int | 1:已确认的nonce值,0:未确认的nonce值 |\n"},"response":[]},{"name":"验证地址格式是否正确 - /api/account/address/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"address\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/address/validate","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/address/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:-------------------:| -------- |:----:|\n| form | validateaddressform | 账户设置别名表单 | 是 |\n|         chainId | int | 链ID | 是 |\n|         address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | true |\n"},"response":[]},{"name":"根据账户公钥生成账户地址 - /api/account/address/publickey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"publicKey\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/address/publickey","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/address/publickey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:--------------------:| ------------ |:----:|\n| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 |\n|         chainId | int | 链ID | 是 |\n|         publicKey | string | 账户公钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:------:| ---- |\n| address | string | 账户地址 |\n"},"response":[]},{"name":"离线 - 批量创建账户 - /api/account/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"chainId\" : 0,\n \"count\" : 0,\n \"prefix\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | accountcreateform | 离线批量创建账户表单 | 是 |\n|         chainId | int | 链ID | 是 |\n|         count | int | 新建账户数量 | 是 |\n|         prefix | string | 地址前缀 | 否 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------- |:---------------:| ------------ |\n| list | list<object> | 账户keystore列表 |\n|         address | string | 账户地址 |\n|         pubKey | string | 公钥 |\n|         prikey | string | 明文私钥 |\n|         encryptedPrivateKey | string | 加密后的私钥 |\n"},"response":[]},{"name":"离线获取账户明文私钥 - /api/account/priKey/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/priKey/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/priKey/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-------------:| ------------ |:----:|\n| form | getprikeyform | 离线获取账户明文私钥表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 明文私钥 |\n"},"response":[]},{"name":"离线修改账户密码 - /api/account/password/offline/","request":{"method":"PUT","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"oldPassword\" : null,\n \"newPassword\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/password/offline/","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/password/offline/"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------:| ---------- |:----:|\n| form | resetpasswordform | 离线修改账户密码表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         oldPassword | string | 账户原密码 | 是 |\n|         newPassword | string | 账户新密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---------- |\n| value | string | 重置密码后的加密私钥 |\n"},"response":[]},{"name":"多账户摘要签名 - /api/account/multi/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"dtoList\" : [ {\n \"address\" : null,\n \"priKey\" : null,\n \"encryptedPrivateKey\" : null,\n \"password\" : null\n } ],\n \"txHex\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/multi/sign","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/multi/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| form | multisignform | 多账户摘要签名表单 | 是 |\n|         dtoList | list<object> | keystore集合 | 是 |\n|                 address | string | 地址 | 是 |\n|                 priKey | string | 明文私钥 | 否 |\n|                 encryptedPrivateKey | string | 加密私钥 | 否 |\n|                 password | string | 密码 | 否 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"明文私钥摘要签名 - /api/account/priKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"priKey\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/priKey/sign","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/priKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------------:| ----------- |:----:|\n| form | prikeysignform | 明文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"密文私钥摘要签名 - /api/account/encryptedPriKey/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/encryptedPriKey/sign","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/encryptedPriKey/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"多账号密文私钥摘要签名 - /api/account/encryptedPriKeys/sign","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null,\n \"address\" : null,\n \"encryptedPriKey\" : null,\n \"password\" : null,\n \"chainId\" : 0,\n \"prefix\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/encryptedPriKeys/sign","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/encryptedPriKeys/sign"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:|\n| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 |\n|         txHex | string | 交易序列化Hex字符串 | 是 |\n|         address | string | 账户地址 | 是 |\n|         encryptedPriKey | string | 账户密文私钥 | 是 |\n|         password | string | 账户密码 | 是 |\n|         chainId | int | 地址链ID | 是 |\n|         prefix | string | 地址前缀 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------- |\n| hash | string | 交易hash |\n| txHex | string | 签名后的交易16进制字符串 |\n"},"response":[]},{"name":"创建多签账户 - /api/account/multiSign/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/multiSign/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/multiSign/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:--------------------------:| -------- |:----:|\n| form | multisignaccountcreateform | 创建多签账户表单 | 是 |\n|         pubKeys | list<string> | 账户公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 账户的地址 |\n"},"response":[]},{"name":"离线创建设置别名交易 - /api/account/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/aliasTx/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------- |:--------:| -------- |:----:|\n| dto | aliasdto | 创建多签账户表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"多签账户离线创建设置别名交易 - /api/account/multiSign/aliasTx/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"alias\" : null,\n \"nonce\" : null,\n \"remark\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/multiSign/aliasTx/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/multiSign/aliasTx/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-----------------:| -------- |:----:|\n| dto | multisignaliasdto | 创建别名交易表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         alias | string | 别名 | 是 |\n|         nonce | string | 资产nonce值 | 是 |\n|         remark | string | 交易备注 | 否 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"根据私钥获取账户地址格式 - /api/account/address/priKey","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"priKey\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/account/address/priKey","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/account/address/priKey"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------:| ------ |:----:|\n| form | prikeyform | 私钥表单 | 是 |\n|         priKey | string | 账户明文私钥 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ---- |\n| value | string | 账户地址 |\n"},"response":[]},{"name":"根据区块高度查询区块头 - /api/block/header/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/header/height/{height}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/header/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"根据区块hash查询区块头 - /api/block/header/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/header/hash/{hash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/header/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块头信息 - /api/block/header/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/header/newest","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/header/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------- |:---------------:| -------------------- |\n| hash | string | 区块的hash值 |\n| preHash | string | 上一个区块的hash值 |\n| merkleHash | string | 梅克尔hash |\n| time | string | 区块生成时间 |\n| timestamp | long | 区块生成时间戳 |\n| height | long | 区块高度 |\n| txCount | int | 区块打包交易数量 |\n| blockSignature | string | 签名Hex.encode(byte[]) |\n| size | int | 大小 |\n| packingAddress | string | 打包地址 |\n| roundIndex | long | 共识轮次 |\n| consensusMemberCount | int | 参与共识成员数量 |\n| roundStartTime | string | 当前共识轮开始时间 |\n| roundStartTimestamp | long | 当前共识轮开始时间戳 |\n| packingIndexOfRound | int | 当前轮次打包出块的名次 |\n| mainVersion | short | 主网当前生效的版本 |\n| blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n| stateRoot | string | 智能合约世界状态根 |\n| txHashList | list<string> | 区块打包的交易hash集合 |\n"},"response":[]},{"name":"查询最新区块 - /api/block/newest","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/newest","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/newest"]},"description":"\n\n#### 参数列表\n无参数\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块 - /api/block/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/height/{height}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块hash查询区块 - /api/block/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/hash/{hash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| header | object | 区块头信息, 只返回对应的部分数据 |\n|         hash | string | 区块的hash值 |\n|         preHash | string | 上一个区块的hash值 |\n|         merkleHash | string | 梅克尔hash |\n|         time | string | 区块生成时间 |\n|         timestamp | long | 区块生成时间戳 |\n|         height | long | 区块高度 |\n|         txCount | int | 区块打包交易数量 |\n|         blockSignature | string | 签名Hex.encode(byte[]) |\n|         size | int | 大小 |\n|         packingAddress | string | 打包地址 |\n|         roundIndex | long | 共识轮次 |\n|         consensusMemberCount | int | 参与共识成员数量 |\n|         roundStartTime | string | 当前共识轮开始时间 |\n|         roundStartTimestamp | long | 当前共识轮开始时间戳 |\n|         packingIndexOfRound | int | 当前轮次打包出块的名次 |\n|         mainVersion | short | 主网当前生效的版本 |\n|         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 |\n|         stateRoot | string | 智能合约世界状态根 |\n|         txHashList | list<string> | 区块打包的交易hash集合 |\n| txs | list<object> | 交易列表 |\n|         hash | string | 交易的hash值 |\n|         type | int | 交易类型 |\n|         time | string | 交易时间 |\n|         timestamp | long | 交易时间戳 |\n|         blockHeight | long | 区块高度 |\n|         blockHash | string | 区块hash |\n|         remark | string | 交易备注 |\n|         transactionSignature | string | 交易签名 |\n|         txDataHex | string | 交易业务数据序列化字符串 |\n|         status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n|         size | int | 交易大小 |\n|         inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n|         from | list<object> | 输入 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|                 locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n|         to | list<object> | 输出 |\n|                 address | string | 账户地址 |\n|                 assetsChainId | int | 资产发行链的id |\n|                 assetsId | int | 资产id |\n|                 amount | string | 数量 |\n|                 lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"根据区块高度查询区块序列化字符串 - /api/block/serialization/height/{height}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/serialization/height/{height}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/serialization/height/{height}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------ |:----:| ---- |:----:|\n| height | long | 区块高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据区块hash查询区块序列化字符串 - /api/block/serialization/hash/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/block/serialization/hash/{hash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/block/serialization/hash/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 区块hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:------:| --------------- |\n| 返回值 | string | 返回区块序列化后的HEX字符串 |\n"},"response":[]},{"name":"根据hash获取交易 - /api/tx/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/tx/{hash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/tx/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------- |:---------------:| ----------------------------------------- |\n| hash | string | 交易的hash值 |\n| type | int | 交易类型 |\n| time | string | 交易时间 |\n| timestamp | long | 交易时间戳 |\n| blockHeight | long | 区块高度 |\n| blockHash | string | 区块hash |\n| remark | string | 交易备注 |\n| transactionSignature | string | 交易签名 |\n| txDataHex | string | 交易业务数据序列化字符串 |\n| status | int | 交易状态 0:unConfirm(待确认), 1:confirm(已确认) |\n| size | int | 交易大小 |\n| inBlockIndex | int | 在区块中的顺序,存储在rocksDB中是无序的,保存区块时赋值,取出后根据此值排序 |\n| from | list<object> | 输入 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         nonce | string | 账户nonce值的Hex字符串,防止双花交易,取上一笔交易hash的最后8个字节 |\n|         locked | byte | 0普通交易,-1解锁金额交易(退出共识,退出委托) |\n| to | list<object> | 输出 |\n|         address | string | 账户地址 |\n|         assetsChainId | int | 资产发行链的id |\n|         assetsId | int | 资产id |\n|         amount | string | 数量 |\n|         lockTime | long | 解锁时间,-1为永久锁定 |\n"},"response":[]},{"name":"验证交易 - /api/accountledger/transaction/validate","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/transaction/validate","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/transaction/validate"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 验证交易是否正确 | txform | 验证交易是否正确表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"广播交易 - /api/accountledger/transaction/broadcast","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/transaction/broadcast","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/transaction/broadcast"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易 | txform | 广播交易表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证合约) - /api/accountledger/transaction/broadcastWithNoContractValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/transaction/broadcastWithNoContractValidation","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/transaction/broadcastWithNoContractValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------- |:----:|\n| 广播交易(不验证合约) | txform | 广播交易(不验证合约)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"广播交易(不验证) - /api/accountledger/transaction/broadcastTxWithoutAnyValidation","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"txHex\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/transaction/broadcastTxWithoutAnyValidation","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/transaction/broadcastTxWithoutAnyValidation"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------- |:------:| ------------ |:----:|\n| 广播交易(不验证) | txform | 广播交易(不验证)表单 | 是 |\n|         txHex | string | 交易序列化16进制字符串 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:-------:| ------ |\n| value | boolean | 是否成功 |\n| hash | string | 交易hash |\n"},"response":[]},{"name":"跨链转账 - /api/accountledger/crossTransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/crossTransfer","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/crossTransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:-----------------:| --------- |:----:|\n| 跨链转账 | crosstransferform | 跨链转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产chainId | 是 |\n|         assetId | int | 资产Id | 是 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"单笔转账 - /api/accountledger/transfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"toAddress\" : null,\n \"password\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/transfer","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/transfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| ------ |:----:|\n| 单笔转账 | transferform | 单笔转账表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         toAddress | string | 账户地址 | 是 |\n|         password | string | 账户密码 | 是 |\n|         assetChainId | int | 资产链ID | 否 |\n|         assetId | int | 资产ID | 否 |\n|         amount | biginteger | 金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"离线组装转账交易 - /api/accountledger/createTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/createTransferTxOffline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/createTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"离线组装跨链转账交易 - /api/accountledger/createCrossTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"time\" : 0,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/createCrossTxOffline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/createCrossTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| -------- |:----:|\n| transferDto | transferdto | 跨链转账交易表单 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         time | long | 创建时间 | 否 |\n|         remark | string | 交易备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建转账交易所需手续费 - /api/accountledger/calcTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/calcTransferTxFee","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/calcTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"计算离线创建跨链转账交易所需手续费 - /api/accountledger/calcCrossTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"addressCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/calcCrossTxFee","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/calcCrossTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------:| ------- |:----:|\n| TransferTxFeeDto | transfertxfeedto | 转账交易手续费 | 是 |\n|         addressCount | int | 转账地址数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"多签账户离线组装转账交易 - /api/accountledger/createMultiSignTransferTxOffline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeys\" : [ ],\n \"minSigns\" : 0,\n \"inputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n } ],\n \"outputs\" : [ {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"lockTime\" : 0\n } ],\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/createMultiSignTransferTxOffline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/createMultiSignTransferTxOffline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ---------- |:----:|\n| transferDto | multisigntransferdto | 多签账户转账交易表单 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n|         inputs | list<object> | 转账交易输入列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         outputs | list<object> | 转账交易输出列表 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 lockTime | long | 锁定时间 | 是 |\n|         remark | string | 交易备注 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------------ |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化16进制字符串 |\n"},"response":[]},{"name":"计算离线创建多签账户转账交易所需手续费 - /api/accountledger/calcMultiSignTransferTxFee","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"pubKeyCount\" : 0,\n \"fromLength\" : 0,\n \"toLength\" : 0,\n \"remark\" : null,\n \"price\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/accountledger/calcMultiSignTransferTxFee","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/accountledger/calcMultiSignTransferTxFee"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-------------------------:| ------------- |:----:|\n| MultiSignTransferTxFeeDto | multisigntransfertxfeedto | 多签账户转账交易手续费表单 | 是 |\n|         pubKeyCount | int | 多签地址对应公钥数量 | 是 |\n|         fromLength | int | 转账输入长度 | 是 |\n|         toLength | int | 转账输出长度 | 是 |\n|         remark | string | 交易备注 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ----- |\n| value | string | 交易手续费 |\n"},"response":[]},{"name":"发布合约 - /api/contract/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractCode\" : null,\n \"alias\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:--------------:| -------------------- |:----:|\n| 发布合约 | contractcreate | 发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         alias | string | 合约别名 | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------- |\n| txHash | string | 发布合约的交易hash |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"调用合约 - /api/contract/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"password\" : null,\n \"remark\" : null,\n \"contractAddress\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/call","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:------------:| ------------------------------------------------------------------------- |:----:|\n| 调用合约 | contractcall | 调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 调用合约的交易hash |\n"},"response":[]},{"name":"删除合约 - /api/contract/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null,\n \"password\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/delete","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:--------------:| --------- |:----:|\n| 删除合约 | contractdelete | 删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         password | string | 交易创建者账户密码 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ----------- |\n| txHash | string | 删除合约的交易hash |\n"},"response":[]},{"name":"合约token转账 - /api/contract/tokentransfer","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/tokentransfer","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/tokentransfer"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ------------ |:----:|\n| token转账 | contracttokentransfer | token转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"password\" : null,\n \"toAddress\" : null,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/transfer2contract","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/transfer2contract"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:----------------:| --------- |:----:|\n| 向合约地址转账 | contracttransfer | 向合约地址转账表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         password | string | 转出者账户地址密码 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| ------ |\n| txHash | string | 交易hash |\n"},"response":[]},{"name":"获取账户地址的指定合约的token余额 - /api/contract/balance/token/{contractAddress}/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/contract/balance/token/{contractAddress}/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/balance/token/{contractAddress}/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------- |:------:| ---- |:----:|\n| contractAddress | string | 合约地址 | 是 |\n| address | string | 账户地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| ----------------------- |\n| contractAddress | string | 合约地址 |\n| name | string | token名称 |\n| symbol | string | token符号 |\n| amount | string | token可用数量 |\n| lockAmount | string | token锁定数量 |\n| decimals | long | token支持的小数位数 |\n| blockHeight | long | 合约创建时的区块高度 |\n| status | int | 合约状态(0-不存在, 1-正常, 2-终止) |\n"},"response":[]},{"name":"获取智能合约详细信息 - /api/contract/info/{address}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/contract/info/{address}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/info/{address}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------- |:------:| ---- |:----:|\n| address | string | 合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------------------------------ |\n| createTxHash | string | 发布合约的交易hash |\n| address | string | 合约地址 |\n| creater | string | 合约创建者地址 |\n| alias | string | 合约别名 |\n| createTime | long | 合约创建时间(单位:秒) |\n| blockHeight | long | 合约创建时的区块高度 |\n| isDirectPayable | boolean | 是否接受直接转账 |\n| directPayableByOtherAsset | boolean | 是否接受其他资产直接转账 |\n| tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n| nrc20TokenName | string | NRC20-token名称 |\n| nrc20TokenSymbol | string | NRC20-token符号 |\n| decimals | long | NRC20-token支持的小数位数 |\n| totalSupply | string | NRC20-token发行总量 |\n| status | string | 合约状态(not_found, normal, stop) |\n| method | list<object> | 合约方法列表 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取智能合约执行结果 - /api/contract/result/{hash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/contract/result/{hash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/result/{hash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---- |:------:| ------ |:----:|\n| hash | string | 交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| success | boolean | 合约执行是否成功 |\n| errorMessage | string | 执行失败信息 |\n| contractAddress | string | 合约地址 |\n| result | string | 合约执行结果 |\n| gasLimit | long | GAS限制 |\n| gasUsed | long | 已使用GAS |\n| price | long | GAS单价 |\n| totalFee | string | 交易总手续费 |\n| txSizeFee | string | 交易大小手续费 |\n| actualContractFee | string | 实际执行合约手续费 |\n| refundFee | string | 合约返回的手续费 |\n| value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n| stackTrace | string | 异常堆栈踪迹 |\n| transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|         txHash | string | 合约生成交易:合约转账交易hash |\n|         from | string | 转出的合约地址 |\n|         value | string | 转账金额 |\n|         assetChainId | int | 转账金额资产链ID |\n|         assetId | int | 转账金额资产ID |\n|         outputs | list<object> | 转入的地址列表 |\n|                 to | string | 转入地址 |\n|                 value | string | 转入金额 |\n|                 assetChainId | int | 转入金额资产链ID |\n|                 assetId | int | 转入金额资产ID |\n|                 lockTime | long | 转入金额锁定时间 |\n|         orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n| events | list<string> | 合约事件列表 |\n| debugEvents | list<string> | 调式合约事件列表 |\n| tokenTransfers | list<object> | 合约token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         value | string | 转账金额 |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n|         decimals | long | token支持的小数位数 |\n| token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|         contractAddress | string | 合约地址 |\n|         from | string | 付款方 |\n|         to | string | 收款方 |\n|         tokenId | string | tokenId |\n|         name | string | token名称 |\n|         symbol | string | token符号 |\n| invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|         cmdName | string | 命令名称 |\n|         args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|         cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|         newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n| contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n| remark | string | 备注 |\n"},"response":[]},{"name":"获取智能合约执行结果列表 - /api/contract/result/list","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"hashList\" : [ ]\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/result/list","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/result/list"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:----------------------:| -------------- |:----:|\n| 获取智能合约执行结果列表 | contractresultlistform | 获取智能合约执行结果列表表单 | 是 |\n|         hashList | list<string> | 交易hash列表 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------:| ------------------------------------------- |\n| hash1 or hash2 or hash3... | object | 以交易hash列表中的hash值作为key,这里的key name是动态的 |\n|         success | boolean | 合约执行是否成功 |\n|         errorMessage | string | 执行失败信息 |\n|         contractAddress | string | 合约地址 |\n|         result | string | 合约执行结果 |\n|         gasLimit | long | GAS限制 |\n|         gasUsed | long | 已使用GAS |\n|         price | long | GAS单价 |\n|         totalFee | string | 交易总手续费 |\n|         txSizeFee | string | 交易大小手续费 |\n|         actualContractFee | string | 实际执行合约手续费 |\n|         refundFee | string | 合约返回的手续费 |\n|         value | string | 调用者向合约地址转入的主网资产金额,没有此业务时则为0 |\n|         stackTrace | string | 异常堆栈踪迹 |\n|         transfers | list<object> | 合约转账列表(从合约转出主资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         multyAssetTransfers | list<object> | 合约转账列表(从合约转出其他资产) |\n|                 txHash | string | 合约生成交易:合约转账交易hash |\n|                 from | string | 转出的合约地址 |\n|                 value | string | 转账金额 |\n|                 assetChainId | int | 转账金额资产链ID |\n|                 assetId | int | 转账金额资产ID |\n|                 outputs | list<object> | 转入的地址列表 |\n|                         to | string | 转入地址 |\n|                         value | string | 转入金额 |\n|                         assetChainId | int | 转入金额资产链ID |\n|                         assetId | int | 转入金额资产ID |\n|                         lockTime | long | 转入金额锁定时间 |\n|                 orginTxHash | string | 调用合约交易hash(源交易hash,合约交易由调用合约交易派生而来) |\n|         events | list<string> | 合约事件列表 |\n|         debugEvents | list<string> | 调式合约事件列表 |\n|         tokenTransfers | list<object> | 合约token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 value | string | 转账金额 |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|                 decimals | long | token支持的小数位数 |\n|         token721Transfers | list<object> | 合约NRC721-token转账列表 |\n|                 contractAddress | string | 合约地址 |\n|                 from | string | 付款方 |\n|                 to | string | 收款方 |\n|                 tokenId | string | tokenId |\n|                 name | string | token名称 |\n|                 symbol | string | token符号 |\n|         invokeRegisterCmds | list<object> | 合约调用外部命令的调用记录列表 |\n|                 cmdName | string | 命令名称 |\n|                 args | map | 命令参数,参数不固定,依据不同的命令而来,故此处不作描述,结构为 {参数名称=参数值} |\n|                 cmdRegisterMode | string | 注册的命令模式(QUERY\\_DATA or NEW\\_TX) |\n|                 newTxHash | string | 生成的交易hash(当调用的命令模式是 NEW\\_TX 时,会生成交易) |\n|         contractTxList | list<string> | 合约生成交易的序列化字符串列表 |\n|         remark | string | 备注 |\n"},"response":[]},{"name":"获取合约代码构造函数 - /api/contract/constructor","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractCode\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/constructor","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/constructor"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------:| -------------------- |:----:|\n| 获取合约代码构造函数 | contractcode | 获取合约代码构造函数表单 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------------------------------------------------------- |:---------------:| ------------------ |\n| constructor | object | 合约构造函数详情 |\n|         name | string | 方法名称 |\n|         desc | string | 方法描述 |\n|         args | list<object> | 方法参数列表 |\n|                 type | string | 参数类型 |\n|                 name | string | 参数名称 |\n|                 required | boolean | 是否必填 |\n|         returnArg | string | 返回值类型 |\n|         view | boolean | 是否视图方法(调用此方法数据不上链) |\n|         event | boolean | 是否是事件 |\n|         payable | boolean | 是否是可接受主链资产转账的方法 |\n|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n|         jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n| isNrc20 | boolean | 是否是NRC20合约 |\n"},"response":[]},{"name":"获取已发布合约指定函数的信息 - /api/contract/method","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/method","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/method"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的信息 | contractmethodform | 获取已发布合约指定函数的信息表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------------------------------------------------------- |:---------------:| ------------------ |\n| name | string | 方法名称 |\n| desc | string | 方法描述 |\n| args | list<object> | 方法参数列表 |\n|         type | string | 参数类型 |\n|         name | string | 参数名称 |\n|         required | boolean | 是否必填 |\n| returnArg | string | 返回值类型 |\n| view | boolean | 是否视图方法(调用此方法数据不上链) |\n| event | boolean | 是否是事件 |\n| payable | boolean | 是否是可接受主链资产转账的方法 |\n| payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 |\n| jsonSerializable | boolean | 方法返回值是否JSON序列化 |\n"},"response":[]},{"name":"获取已发布合约指定函数的参数类型列表 - /api/contract/method/argstypes","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/method/argstypes","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/method/argstypes"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:------------------:| ------------------------ |:----:|\n| 获取已发布合约指定函数的参数类型列表 | contractmethodform | 获取已发布合约指定函数的参数类型表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --- |:---------------:| ---- |\n| 返回值 | list<string> | |\n"},"response":[]},{"name":"验证发布合约 - /api/contract/validate/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/validate/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/validate/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:----------------------:| -------------------- |:----:|\n| 验证发布合约 | contractvalidatecreate | 验证发布合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证调用合约 - /api/contract/validate/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : 0,\n \"multyAssetValues\" : null,\n \"gasLimit\" : 0,\n \"price\" : 0,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/validate/call","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/validate/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:--------------------:| ------------------------------------------------------------------------- |:----:|\n| 验证调用合约 | contractvalidatecall | 验证调用合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | long | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         gasLimit | long | 最大gas消耗 | 是 |\n|         price | long | 执行合约单价 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"验证删除合约 - /api/contract/validate/delete","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractAddress\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/validate/delete","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/validate/delete"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------:| -------- |:----:|\n| 验证删除合约 | contractvalidatedelete | 验证删除合约表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------- |:-------:| --------- |\n| success | boolean | 验证成功与否 |\n| code | string | 验证失败的错误码 |\n| msg | string | 验证失败的错误信息 |\n"},"response":[]},{"name":"估算发布合约交易的GAS - /api/contract/imputedgas/create","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"contractCode\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/imputedgas/create","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/imputedgas/create"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------ |:------------------------:| -------------------- |:----:|\n| 估算发布合约交易的GAS | imputedgascontractcreate | 估算发布合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"估算调用合约交易的GAS - /api/contract/imputedgas/call","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/imputedgas/call","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/imputedgas/call"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:----------------------:| ------------------------------------------------------------------------- |:----:|\n| 估算调用合约交易的GAS | imputedgascontractcall | 估算调用合约交易的GAS表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 否 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\]] | 否 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| -------- |:----:| ----------------- |\n| gasLimit | long | 消耗的gas值,执行失败返回数值1 |\n"},"response":[]},{"name":"调用合约不上链方法 - /api/contract/view","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"contractAddress\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/view","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/view"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------:| ------------------------ |:----:|\n| 调用合约不上链方法 | contractviewcall | 调用合约不上链方法表单 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         methodName | string | 方法名称 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:------:| --------- |\n| result | string | 视图方法的调用结果 |\n"},"response":[]},{"name":"离线组装 - 发布合约的交易 - /api/contract/create/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"alias\" : null,\n \"contractCode\" : null,\n \"gasLimit\" : 0,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/create/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/create/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:---------------------:| -------------------- |:----:|\n| 发布合约离线交易 | contractcreateoffline | 发布合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         alias | string | 合约别名 | 是 |\n|         contractCode | string | 智能合约代码(字节码的Hex编码字符串) | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------------- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n| contractAddress | string | 生成的合约地址 |\n"},"response":[]},{"name":"离线组装 - 调用合约的交易 - /api/contract/call/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"value\" : null,\n \"multyAssetValues\" : null,\n \"methodName\" : null,\n \"methodDesc\" : null,\n \"args\" : null,\n \"argsType\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/call/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/call/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ---------------------------------------------------------------- |:-------------------:| ----------------------------------------------------------------------------------- |:----:|\n| 调用合约离线交易 | contractcalloffline | 调用合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         value | biginteger | 调用者向合约地址转入的主网资产金额,没有此业务时填0 | 是 |\n|         multyAssetValues | string[][] | 调用者向合约地址转入的其他资产金额,没有此业务时填空,规则: [[\\,\\,\\,\\]] | 否 |\n|         methodName | string | 方法名 | 是 |\n|         methodDesc | string | 方法描述,若合约内方法没有重载,则此参数可以为空 | 否 |\n|         args | object[] | 参数列表 | 否 |\n|         argsType | string[] | 参数类型列表 | 否 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 删除合约交易 - /api/contract/delete/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"sender\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"contractAddress\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/delete/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/delete/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:---------------------:| ---------- |:----:|\n| 删除合约离线交易 | contractdeleteoffline | 删除合约离线交易表单 | 是 |\n|         sender | string | 交易创建者 | 是 |\n|         senderBalance | biginteger | 账户余额 | 是 |\n|         nonce | string | 账户nonce值 | 是 |\n|         contractAddress | string | 智能合约地址 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 合约token转账交易 - /api/contract/tokentransfer/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"contractAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/tokentransfer/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/tokentransfer/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------------- |:----------------------------:| ------------- |:----:|\n| token转账离线交易 | contracttokentransferoffline | token转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入者账户地址 | 是 |\n|         contractAddress | string | 合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的token资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 从账户地址向合约地址转账(主链资产)的合约交易 - /api/contract/transfer2contract/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"fromAddress\" : null,\n \"senderBalance\" : null,\n \"nonce\" : null,\n \"toAddress\" : null,\n \"gasLimit\" : 0,\n \"amount\" : null,\n \"remark\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/contract/transfer2contract/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/contract/transfer2contract/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------- |:-----------------------:| ------------- |:----:|\n| 向合约地址转账离线交易 | contracttransferoffline | 向合约地址转账离线交易表单 | 是 |\n|         fromAddress | string | 转出者账户地址 | 是 |\n|         senderBalance | biginteger | 转出者账户余额 | 是 |\n|         nonce | string | 转出者账户nonce值 | 是 |\n|         toAddress | string | 转入的合约地址 | 是 |\n|         gasLimit | long | GAS限制 | 是 |\n|         amount | biginteger | 转出的主链资产金额 | 是 |\n|         remark | string | 备注 | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"创建共识节点 - /api/consensus/agent","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/agent","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/agent"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------------- |:---------------:| ----------- |:----:|\n| CreateAgentForm | createagentform | 创建共识节点表单 | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 奖励地址,默认节点地址 | 否 |\n|         commissionRate | int | 佣金比例 | 是 |\n|         deposit | string | 抵押金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"注销共识节点 - /api/consensus/agent/stop","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/agent/stop","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/agent/stop"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:-------------:| -------- |:----:|\n| StopAgentForm | stopagentform | 注销共识节点表单 | 是 |\n|         address | string | 共识节点地址 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"委托参与共识 - /api/consensus/deposit","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"agentHash\" : null,\n \"deposit\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/deposit","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/deposit"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-----------:| -------- |:----:|\n| DepositForm | depositform | 委托参与共识表单 | 是 |\n|         address | string | 参与共识账户地址 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         deposit | string | 参与共识的金额 | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"退出共识 - /api/consensus/withdraw","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"txHash\" : null,\n \"password\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/withdraw","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/withdraw"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| -------------------------------------------------------- |:------------:| ------------ |:----:|\n| 退出共识 | withdrawform | 退出共识表单 | 是 |\n|         address | string | 节点地址 | 是 |\n|         txHash | string | 加入共识时的交易hash | 是 |\n|         password | string | 密码 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| ------ |\n| value | string | 交易hash |\n"},"response":[]},{"name":"查询节点的委托共识列表 - /api/consensus/list/deposit/{agentHash}","request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":null},"url":{"raw":"https://api.nuls.io:null/api/consensus/list/deposit/{agentHash}","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/list/deposit/{agentHash}"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------- |:------:| ------------- |:----:|\n| agentHash | string | 创建共识节点的交易hash | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----------- |:------:| --------- |\n| deposit | string | 委托金额 |\n| agentHash | string | 节点hash |\n| address | string | 账户地址 |\n| time | long | 委托时间 |\n| txHash | string | 委托交易hash |\n| blockHeight | long | 委托时的区块高度 |\n| delHeight | long | 退出委托的区块高度 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数生成一个随机种子并返回 - /api/consensus/random/seed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/random/seed/count","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/random/seed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| --------------------------------------------------------- |:-------------------:| ------------------------- |:----:|\n| RandomSeedCountForm | randomseedcountform | 随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据高度区间生成一个随机种子并返回 - /api/consensus/random/seed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0,\n \"algorithm\" : null\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/random/seed/height","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/random/seed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:--------------------:| ------------------------- |:----:|\n| RandomSeedHeightForm | randomseedheightform | 随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n|         algorithm | string | 算法标识:SHA3, KECCAK, MERKLE | 否 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| --------- |:------:| ------- |\n| seed | string | 生成的随机种子 |\n| algorithm | string | 算法标识 |\n| count | int | 原始种子个数 |\n"},"response":[]},{"name":"根据最大高度和原始种子个数查找原始种子列表并返回 - /api/consensus/random/rawseed/count","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"height\" : 0,\n \"count\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/random/rawseed/count","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/random/rawseed/count"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------ |:----------------------:| -------- |:----:|\n| RandomRawSeedCountForm | randomrawseedcountform | 原始随机种子表单 | 是 |\n|         height | long | 最大高度 | 是 |\n|         count | int | 原始种子个数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"根据高度区间查找原始种子列表并返回 - /api/consensus/random/rawseed/height","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startHeight\" : 0,\n \"endHeight\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/random/rawseed/height","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/random/rawseed/height"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ----------------------------------------------------------- |:-----------------------:| -------- |:----:|\n| RandomRawSeedHeightForm | randomrawseedheightform | 原始随机种子表单 | 是 |\n|         startHeight | long | 起始高度 | 是 |\n|         endHeight | long | 截止高度 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ------ |:---------------:| ---- |\n| 原始种子列表 | list<string> | |\n"},"response":[]},{"name":"离线组装 - 创建共识节点交易 - /api/consensus/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/agent/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:------------:| ---------- |:----:|\n| ConsensusDto | consensusdto | 离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 注销共识节点交易 - /api/consensus/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : [ {\n \"depositHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n } ]\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/agent/stop/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:----------------:| ----------- |:----:|\n| StopConsensusDto | stopconsensusdto | 离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 委托参与共识交易 - /api/consensus/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/deposit/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:----------:| ---------- |:----:|\n| DepositDto | depositdto | 离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 退出共识交易 - /api/consensus/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : {\n \"address\" : null,\n \"assetChainId\" : 0,\n \"assetId\" : 0,\n \"amount\" : null,\n \"nonce\" : null\n }\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/withdraw/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-----------:| ----------- |:----:|\n| WithDrawDto | withdrawdto | 离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"多签账户离线组装 - 创建共识节点交易 - /api/consensus/multiSign/agent/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentAddress\" : null,\n \"packingAddress\" : null,\n \"rewardAddress\" : null,\n \"commissionRate\" : 0,\n \"deposit\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/multiSign/agent/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/multiSign/agent/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:---------------------:| -------------- |:----:|\n| MultiSignConsensusDto | multisignconsensusdto | 多签账户离线创建共识节点表单 | 是 |\n|         agentAddress | string | 节点创建地址 | 是 |\n|         packingAddress | string | 节点出块地址 | 是 |\n|         rewardAddress | string | 获取共识奖励地址 | 是 |\n|         commissionRate | int | 节点佣金比例 | 是 |\n|         deposit | biginteger | 创建节点保证金 | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户委托参与共识交易 - /api/consensus/multiSign/deposit/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"deposit\" : null,\n \"agentHash\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/multiSign/deposit/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/multiSign/deposit/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:-------------------:| -------------- |:----:|\n| MultiSignDepositDto | multisigndepositdto | 多签账户离线委托参与共识表单 | 是 |\n|         address | string | 账户地址 | 是 |\n|         deposit | biginteger | 委托金额 | 是 |\n|         agentHash | string | 共识节点hash | 是 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户退出共识交易 - /api/consensus/multiSign/withdraw/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"address\" : null,\n \"depositHash\" : null,\n \"price\" : null,\n \"input\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/multiSign/withdraw/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/multiSign/withdraw/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------ |:--------------------:| ------------ |:----:|\n| WithDrawDto | multisignwithdrawdto | 多签账户离线退出共识表单 | 是 |\n|         address | string | 地址 | 是 |\n|         depositHash | string | 委托共识交易的hash | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         input | object | 交易输入信息 | 是 |\n|                 address | string | 账户地址 | 是 |\n|                 assetChainId | int | 资产的链id | 是 |\n|                 assetId | int | 资产id | 是 |\n|                 amount | biginteger | 资产金额 | 是 |\n|                 nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]},{"name":"离线组装 - 多签账户注销共识节点交易 - /api/consensus/multiSign/agent/stop/offline","request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=UTF-8","type":"text"}],"body":{"mode":"raw","raw":"{\n \"agentHash\" : null,\n \"agentAddress\" : null,\n \"deposit\" : null,\n \"price\" : null,\n \"depositList\" : null,\n \"pubKeys\" : [ ],\n \"minSigns\" : 0\n}"},"url":{"raw":"https://api.nuls.io:null/api/consensus/multiSign/agent/stop/offline","protocol":"https","host":["api.nuls.io"],"port":null,"path":["api/consensus/multiSign/agent/stop/offline"]},"description":"\n\n#### 参数列表\n| 参数名 | 参数类型 | 参数描述 | 是否必填 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------ |:-------------------------:| -------------- |:----:|\n| StopConsensusDto | multisignstopconsensusdto | 多签账户离线注销共识节点表单 | 是 |\n|         agentHash | string | 创建节点的交易hash | 是 |\n|         agentAddress | string | 节点地址 | 是 |\n|         deposit | biginteger | 创建节点的保证金 | 是 |\n|         price | biginteger | 手续费单价 | 否 |\n|         depositList | list<object> | 停止委托列表 | 是 |\n|                 depositHash | string | 委托共识的交易hash | 是 |\n|                 input | object | 交易输入信息 | 是 |\n|                         address | string | 账户地址 | 是 |\n|                         assetChainId | int | 资产的链id | 是 |\n|                         assetId | int | 资产id | 是 |\n|                         amount | biginteger | 资产金额 | 是 |\n|                         nonce | string | 资产nonce值 | 是 |\n|         pubKeys | list<string> | 公钥集合 | 是 |\n|         minSigns | int | 最小签名数 | 是 |\n\n#### 返回值\n| 字段名 | 字段类型 | 参数描述 |\n| ----- |:------:| -------- |\n| hash | string | 交易hash |\n| txHex | string | 交易序列化字符串 |\n"},"response":[]}]} \ No newline at end of file diff --git a/module/nuls-api/documents/nuls-api_RESTFUL.md b/module/nuls-api/documents/nuls-api_RESTFUL.md index 7397c2ce81..ed95661a95 100644 --- a/module/nuls-api/documents/nuls-api_RESTFUL.md +++ b/module/nuls-api/documents/nuls-api_RESTFUL.md @@ -8,12 +8,12 @@ ## 设置 -​ `NULS-API`模块默认访问的端口号是8004,可以在nuls.ncf配置文件中做修改,如下: +​ `NULS-API`模块默认访问的端口号是18004,可以在nuls.ncf配置文件中做修改,如下: ``` [nuls-API] #httpServer的启动port -serverPort=8004 +serverPort=18004 ``` ## 说明 @@ -24,41 +24,23 @@ serverPort=8004 `NULS-API`模块提供了若干在线接口和离线接口。 -#### 在线接口 +在线接口:钱包必须正常运行,且能够连接网络中的其他节点,能够正常同步区块和广播数据。在调用在线接口之前,最好是已经同步到最新区块。接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账、获取区块头等。 -即需要访问节点钱包API,才能得到正确的返回结果。访问在线接口有以下几点要求: +离线接口:NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 -- 需安装节点钱包且必须正常运行。 -- 节点钱包能够连接网络中的其他节点,能够正常同步区块和广播数据。 -- 在调用在线接口之前,节点钱包最好是已经同步到最新区块。 +### 字段描述 -在线接口所产生的数据都会保存在钱包中。例如创建账户、修改密码、转账交易、获取区块头等。 +**链的chainId:** -#### 离线接口 +​ NULS2.0支持多链并行和跨链转账,每条链通过链ID来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 -NULS2.0提供了一个专门用于[离线操作的NULS-API工具](http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/2.1/NULS_API-offline_v2.0.0.tar.gz)。无需安装钱包,可独立运行在一台没有连接网络的服务器上。用户通过调用离线接口,传入相关的参数,获取返回值,相应数据不会存入钱包。例如离线创建账户、离线组装转账交易、离线签名等。 +**链的资产:** -### 字段与业务描述 +​ NULS2.0支持每条链除了默认的资产外,可根据业务需要,动态添加资产。每条链的每种资产通过链ID和资产ID的复合主键来区分。例如NULS主网的NULS,chainId=1,assetId=1 -#### 链的chainId +**交易的type值:** -​ NULS2.0支持多链并行和跨链转账,每条链通过链ID(chainId)来区分,NULS主网的链ID为1,NULS测试网的链ID为2。 - -#### 链的资产 - -​ NULS2.0还支持多资产,每条链除了默认的资产外,可根据业务需要,动态添加资产。每种资产通过链ID(chainId)和资产ID(assetId)的复合主键来区分。例如NULS主网的NULS资产(chainId=1,assetId=1) - -​ **主资产:每条链的默认资产就是主资产,交易手续费只收取本链主资产。** - -#### 合约资产 - -​ NULS2.0内置智能合约,用户可以通过NULS官方提供的标准NRC20合约模板发布合约资产(token),每发布一个合约资产都有唯一合约地址作为标记。 - -​ 这里需要注意的是合约资产并不等于链的资产,链的资产是会在链上分配有chainId和assetId属性的,而合约资产并没有。 - -#### 交易类型 - -NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过交易类型字段(type)来区分不同交易类型,以下是交易类型的枚举值: +​ NULS2.0默认有多种交易,每种交易的功能不同,调用接口查询交易详情时,可通过type字段来区分不同交易类型,以下是交易类型的枚举值: ``` int COIN_BASE = 1; // coinBase出块奖励 @@ -86,130 +68,17 @@ int CONTRACT_CANCEL_DEPOSIT = 22; // 合约取消委托共识 int CONTRACT_STOP_AGENT = 23; // 合约注销共识节点 int VERIFIER_CHANGE = 24; // 验证人变更 int VERIFIER_INIT = 25; //验证人初始化 -int CONTRACT_TOKEN_CROSS_TRANSFER = 26; // 合约跨链转账 ``` -#### 转账 - -​ 转账交易分为4种:**普通转账、跨链转账、合约转账、合约跨链转账。**其中普通转账和跨链转账针对是链上资产(分配有chainId和assetId)。后两者针对合约token的转账。 - -​ **普通转账(type=2):**也叫链内转账,交易支持多对多的转账操作。多对多有两层含义,一是资产可以是多个,二是转账地址可以是多个。转账人、转账资产、转账金额都体现在交易的from和to里,后面会详细说明。 - -​ **跨链转账(type=10):**跨链转账是指将链上资产跨链转到别的NULS平行链上去。同普通转账一样,也支持多对多的转账操作,体现在交易的from和to里。 - -​ **合约转账(type=16):**合约转账只支持合约token的链内转账,它实际上是通过调用智能合约完成的。交易的from和to里只包含手续费。 - -​ **合约跨链转账(type=26):**合约的跨链转账,也是通过调用智能合约完成的。但是节点在打包区块解析智能合约后,系统内部生成一个type=10的跨链交易,一同打包到区块内。所以实际上合约跨链转账是通过两个交易来实现。 - -#### 交易的from和to +**交易的from和to:** 用转账交易为例:tx.type = 2 -``` -tx:{ - "hash": "9c10fdf7162b00ac9a0972fcdc81c68d4f41383f025196a4207372e78acc9a3f", //交易ID - "type": 2, - "from": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1 - "assetsId": 1, - "amount": "100000100000", - "nonce": "86f0ae38296c6b9d", - "locked": 0 - } - ], - "to": [ - { - "address": "NULSeBaMnAh6nquK1PARuRzKVk5LcfmFEAu7X", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000000000", - "lockTime": 0 - } - ] -} -``` - -​ **from:**转账交易的转出方,每一个from视为一个地址的某一种资产转出多少数量。通过assetsChainId和assetsId确定某一个具体资产,address为转出地址,amount为转出数量。其中nonce值每次转账后都会改变,防止打包时出现双花,可通过调用查询账户余额接口获取当前最新nonce值。 - -​ **to:**转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime字段为锁定时间。当lockTime=0时,表示资产可以正常使用;当锁定时间大于0时,表示只有当现实时间(时间戳)超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 - -#### 资产的永久锁定与解锁 - -​ NULS里支持特殊的交易将链上的资产永久锁定,通常这种永久锁定交易都是成对出现,再通过另一个交易解除锁定,从而实现一些复杂的业务逻辑。我们用委托参与共识交易(type=5)和退出取消委托共识(type=6)来举例说明。 - -**委托参与共识交易:** - -``` -tx:{ - "hash": "fce936c045d2f200598db030105ecce20fdf09f672897d4e0e18f6d8bd9dc023", //交易ID - "type": 5, - "from": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000100000", - "nonce": "207372e78acc9a3f", - "locked": 0 - } - ], - "to": [ - { - "address": "NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 1, - "assetsId": 1, - "amount": "100000000000", - "lockTime": -1 - } - ] -} -``` - -这个交易里type=5,from和to的地址相同,都是NULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS,且to的lockTime = -1。表示自己通过委托共识交易永久锁定了部分资产,去参与共识获得出块奖励。 - -**取消委托共识交易:** - -``` -tx:{ - "hash": "ff6596e2489c591efa94eab27e082f902bc5fefb529416e00cd736a34029c08c", //交易ID - "type": 6, - "from": [ - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 2, - "assetsId": 1, - "amount": "100000000000", //必须和锁定时的金额一致 - "nonce": "0e18f6d8bd9dc023", //必须是锁定交易的hash后8位 - "locked": -1 - } - ], - "to": [ - { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "assetsChainId": 2, - "assetsId": 1, - "amount": "99999900000", - "lockTime": 0 - } - ] -} -``` - -这个交易里from的locked = -1,表示为需要解锁一笔资产。需要注意的是,解锁交易的from必须和之前锁定交易的to保持一致,即assetsChainId、assetsId、amount值一样。nonce值则是之前锁定交易hash的后8位。 - -#### 交易手续费 - -​ 交易手续费 :from里本链主资产之和 - to里本链主资产之和。 - -​ 手续费单价: - -​ 转账交易(type=2):0.001NULS/KB - -​ 其他交易:0.01NULS/KB +​ from为转账交易的转出方,每一个from视为一个转账人的某一种资产转出多少数量,其中nonce值每次转账后都会改变,可通过调用查询账户余额接口获取当前最新nonce值。 +​ to为转账交易的接收方,每一个to视为接收人接收到某一种资产多少数量,其中lockTime为锁定时间。当锁定时间大于0时,表示现实时间超过这个值之后,这笔资产才能正常使用;当lockTime =-1时,表示永久锁定中,需要特殊的交易才能解除锁定,例如参与委托共识和取消委托共识。 +​ 交易的手续费 = from里本链主资产之和 - to里本链主资产之和 ## 访问方式 @@ -309,16 +178,15 @@ _**request form data:**_ ``` ### 1.1 批量创建账户 -#### Cmd: /api/account +#### Cmd: /api/account/multiSign/aliasTx/create _**详细描述: 创建的账户存在于本地钱包内**_ #### HttpMethod: POST #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------- | :------: | -------------------------- | :------: | -| form | | 表单 | -- | -| count | string | 新建账户数量,取值[1-10000] | 是 | -| password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------- |:------:| ------------------ |:----:| +| count | string | 新建账户数量,取值[1-10000] | 是 | +| password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -327,14 +195,18 @@ _**详细描述: 创建的账户存在于本地钱包内**_ #### Example request data: _**request path:**_ -/api/account +/api/account/multiSign/aliasTx/create _**request form data:**_ ```json { - "count" : 1, - "password" : "abcd1234" + "address" : "tNULSeBaNLp2p5hhAapaZz7AYXw6Ysw5t4Ph8M", + "alias" : "taksk2", + "nonce" : "0000000000000000", + "remark" : "", + "pubKeys" : [ "026f5ba56158da0b5ff545c1016ee2a00d9302fbcd6e0e3f3a8cacc8a3a6e19f54", "03245193eaef6f91de9444ffcc48c9944e140337ba1f855a1d6d2a98e3bf048053" ], + "minSigns" : 2 } ``` @@ -344,7 +216,8 @@ _**request form data:**_ { "success" : true, "data" : { - "list" : [ "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG" ] + "txHex" : "03009d77775d001f170200038783e2c78cbe6aca9298f83952ea56518ec577300674616b736b328c01170200038783e2c78cbe6aca9298f83952ea56518ec57730020001004023050600000000000000000000000000000000000000000000000000000000080000000000000000000117020001e2f297763765bc154afaac7aec5e7899a729fed20200010000e1f50500000000000000000000000000000000000000000000000000000000000000000000000046020221026f5ba56158da0b5ff545c1016ee2a00d9302fbcd6e0e3f3a8cacc8a3a6e19f542103245193eaef6f91de9444ffcc48c9944e140337ba1f855a1d6d2a98e3bf048053", + "hash" : "eb23f03966a31538edc648fa68040828ff2b0b18de6d575245118540e3b0a054" } } ``` @@ -364,12 +237,12 @@ _**详细描述: 修改账户密码**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ----------------------------------------------------------- | :------: | -------- | :------: | -| address | string | 账户地址 | 是 | -| form | | 表单 | -- | -|         password | string | 原始密码 | 是 | -|         newPassword | string | 新密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ----------------------------------------------------------- |:-------------------------:| -------- |:----:| +| address | string | 账户地址 | 是 | +| form | accountupdatepasswordform | 账户密码信息表单 | 是 | +|         password | string | 原始密码 | 是 | +|         newPassword | string | 新密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -414,11 +287,11 @@ _**详细描述: 只能导出本地钱包已存在账户的私钥**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | -------- | :------: | -| address | string | 账户地址 | 是 | -| form | | 表单 | -- | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:-------------------:| -------- |:----:| +| address | string | 账户地址 | 是 | +| form | accountpasswordform | 账户密码信息表单 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -464,12 +337,12 @@ _**详细描述: 导入私钥时,需要输入密码给明文私钥加密**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- | :------: | --------------------------------------------- | :------: | -| form | | 表单 | -- | -|         priKey | string | 私钥 | 是 | -|         password | string | 密码 | 是 | -|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- |:-------------------------:| ------------------------------ |:----:| +| form | accountprikeypasswordform | 根据私钥导入账户表单 | 是 | +|         priKey | string | 私钥 | 是 | +|         password | string | 密码 | 是 | +|         overwrite | boolean | 是否覆盖账户: false:不覆盖导入, true:覆盖导入 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -507,10 +380,10 @@ _**详细描述: 根据keyStore导入账户**_ #### HttpMethod: POST #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :---------: | ------------ | :------: | -| form | | 表单 | -- | -|         keystore | inputstream | keystore文件 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:-----------:| ---------- |:----:| +| 根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 | +|         根据私钥导入账户 | inputstream | 根据私钥导入账户表单 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -597,15 +470,15 @@ _**详细描述: 根据keystore字符串导入账户**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ------------------------------ | :------: | -| form | | 根据keystore字符串导入账户表单 | -- | -|         keystore | object | keystore字符串 | 是 | -|                 address | string | 账户地址 | 是 | -|                 encryptedPrivateKey | string | 加密后的私钥 | 是 | -|                 pubKey | string | 公钥 | 是 | -|                 prikey | string | 私钥 | 是 | -|         password | string | 密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------------- |:-----------------------------:| ------------------- |:----:| +| form | accountkeystorejsonimportform | 根据keystore字符串导入账户表单 | 是 | +|         keystore | object | keystore字符串 | 是 | +|                 address | string | 账户地址 | 是 | +|                 encryptedPrivateKey | string | 加密后的私钥 | 是 | +|                 pubKey | string | 公钥 | 是 | +|                 prikey | string | 私钥 | 是 | +|         password | string | 密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -657,12 +530,12 @@ _**详细描述: 账户备份,导出AccountKeyStore文件到指定目录**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | -------- | :------: | -| address | string | 账户地址 | 是 | -| form | | 表单 | -- | -|         password | string | 密码 | 是 | -|         path | string | 文件路径 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:---------------------:| -------------- |:----:| +| address | string | 账户地址 | 是 | +| form | accountkeystorebackup | keystone导出信息表单 | 是 | +|         password | string | 密码 | 是 | +|         path | string | 文件路径 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -709,12 +582,12 @@ _**详细描述: 别名格式为1-20位小写字母和数字的组合,设置 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | -------- | :------: | -| form | -- | 表单 | -- | -|         address | string | 账户地址 | 是 | -|         alias | string | 别名 | 是 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:------------:| -------- |:----:| +| form | setaliasform | 账户设置别名表单 | 是 | +|         address | string | 账户地址 | 是 | +|         alias | string | 别名 | 是 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -761,11 +634,11 @@ _**详细描述: 根据资产链ID和资产ID,查询本链账户对应资产 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ---------- | :------: | -| balanceDto | -- | 表单 | -- | -|         assetChainId | int | 资产的链ID | 是 | -|         assetId | int | 资产ID | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:-----------:| ------ |:----:| +| balanceDto | balanceform | 账户余额表单 | 是 | +|         assetChainId | int | 资产的链ID | 是 | +|         assetId | int | 资产ID | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -823,11 +696,11 @@ _**详细描述: 验证地址格式是否正确**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------- | :------: | -------- | :------: | -| form | -- | 表单 | -- | -|         chainId | int | 链ID | 是 | -|         address | string | 账户地址 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------- |:-------------------:| -------- |:----:| +| form | validateaddressform | 账户设置别名表单 | 是 | +|         chainId | int | 链ID | 是 | +|         address | string | 账户地址 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -873,11 +746,11 @@ _**详细描述: 根据账户公钥生成账户地址**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| --------------------------------------------------------- | :------: | -------- | :------: | -| form | -- | 表单 | -- | -|         chainId | int | 链ID | 是 | -|         publicKey | string | 账户公钥 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------- |:--------------------:| ------------ |:----:| +| form | accountpublickeyform | 根据账户公钥生成账户地址 | 是 | +|         chainId | int | 链ID | 是 | +|         publicKey | string | 账户公钥 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -925,12 +798,13 @@ _**详细描述: 创建的账户不会保存到钱包中,接口直接返回账 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :------: | ------------ | :------: | -| form | -- | 表单 | -- | -|         count | int | 新建账户数量 | 是 | -|         prefix | string | 地址前缀 | 否 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:-----------------:| ---------- |:----:| +| form | accountcreateform | 离线批量创建账户表单 | 是 | +|         chainId | int | 链ID | 是 | +|         count | int | 新建账户数量 | 是 | +|         prefix | string | 地址前缀 | 否 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -985,12 +859,12 @@ _**详细描述: 离线获取账户明文私钥**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ------------ | :------: | -| form | -- | 表单 | -- | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------------- |:-------------:| ------------ |:----:| +| form | getprikeyform | 离线获取账户明文私钥表单 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1039,13 +913,13 @@ _**详细描述: 离线修改账户密码**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ------------ | :------: | -| form | -- | 表单 | -- | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         oldPassword | string | 账户原密码 | 是 | -|         newPassword | string | 账户新密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------------- |:-----------------:| ---------- |:----:| +| form | resetpasswordform | 离线修改账户密码表单 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         oldPassword | string | 账户原密码 | 是 | +|         newPassword | string | 账户新密码 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1098,15 +972,15 @@ _**详细描述: 用于签名离线组装的多账户转账交易,调用接口 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :-------------: | ------------------- | :------: | -| form | -- | 表单 | -- | -|         dtoList | list<object> | keystore集合 | 是 | -|                 address | string | 地址 | 是 | -|                 priKey | string | 明文私钥 | 否 | -|                 encryptedPrivateKey | string | 加密私钥 | 否 | -|                 password | string | 密码 | 否 | -|         txHex | string | 交易序列化Hex字符串 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------------------------------------------------------------- |:---------------:| ----------- |:----:| +| form | multisignform | 多账户摘要签名表单 | 是 | +|         dtoList | list<object> | keystore集合 | 是 | +|                 address | string | 地址 | 是 | +|                 priKey | string | 明文私钥 | 否 | +|                 encryptedPrivateKey | string | 加密私钥 | 否 | +|                 password | string | 密码 | 否 | +|         txHex | string | 交易序列化Hex字符串 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1160,12 +1034,12 @@ _**详细描述: 明文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------- | :------: | ------------------- | :------: | -| form | -- | 表单 | -- | -|         txHex | string | 交易序列化Hex字符串 | 是 | -|         address | string | 账户地址 | 是 | -|         priKey | string | 账户明文私钥 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------- |:--------------:| ----------- |:----:| +| form | prikeysignform | 明文私钥摘要签名表单 | 是 | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         priKey | string | 账户明文私钥 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1181,7 +1055,6 @@ _**request form data:**_ ```json { - "chainId":1, "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", "priKey" : "c55c80b0afcbebea36bc2cc1f07a1946935fe578c0c8c35190180f99619d5f48" @@ -1194,7 +1067,7 @@ _**request form data:**_ { "success" : true, "data" : { - "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0ae925ded6bed", + "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0fbc5fe9335ab91ae925ded6bed", "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" } } @@ -1219,15 +1092,15 @@ _**详细描述: 密文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | ------------------- | :------: | -| form | -- | 表单 | -- | -|         txHex | string | 交易序列化Hex字符串 | 是 | -|         address | string | 账户地址 | 是 | -|         encryptedPriKey | string | 账户密文私钥 | 是 | -|         password | string | 账户密码 | 是 | -|         chainId | int | 地址链ID | 是 | -|         prefix | string | 地址前缀 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:| +| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | +|         chainId | int | 地址链ID | 是 | +|         prefix | string | 地址前缀 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1243,7 +1116,6 @@ _**request form data:**_ ```json { - "chainId":1, "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", "encryptedPriKey" : "54793157409d0414248ef290eac96270c1a0115d712e845f0eb372bb977cbc0cafe39d598175473fa1bd5329dd1fae95", @@ -1282,16 +1154,15 @@ _**详细描述: 多账号密文私钥摘要签名**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ | :------: | -------------------- | :------: | -| form | -- | 密文私钥摘要签名表单 | -- | -|     chainId | int | 地址链ID | | -|     txHex | string | 交易序列化Hex字符串 | 是 | -|    prefix | string | 地址前缀 | 是 | -| signDtoList | | | | -|           address | string | 账户地址 | 是 | -|            encryptedPriKey | string | 账户密文私钥 | 是 | -|           password | string | 账户密码 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| --------------------------------------------------------------- |:-----------------------:| ----------- |:----:| +| form | encryptedprikeysignform | 密文私钥摘要签名表单 | 是 | +|         txHex | string | 交易序列化Hex字符串 | 是 | +|         address | string | 账户地址 | 是 | +|         encryptedPriKey | string | 账户密文私钥 | 是 | +|         password | string | 账户密码 | 是 | +|         chainId | int | 地址链ID | 是 | +|         prefix | string | 地址前缀 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1301,37 +1172,13 @@ _**详细描述: 多账号密文私钥摘要签名**_ #### Example request data: _**request path:**_ -/api/account/encryptedPriKeys/sign +略 _**request form data:**_ - -``` -{ - "chainId":1, - "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", - "prefix":"tNULS", - "signDtoList":[ - { - "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", - "encryptedPriKey" : "54793157409d0414248ef290eac96270c1a0115d712e845f0eb372bb977cbc0cafe39d598175473fa1bd5329dd1fae95", - "password" : "abcd1234" - } - ] -} -``` +无 #### Example response data: -``` -{ - "success" : true, - "data" : { - "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f000000000000000000000000000000000000000000000000000000000000000000000000006921023cee1aa6158ee640c8f48f9a9fa9735c8ed5426f2c353b0ed65e123033d820e646304402203c376fd0121fce6228516c011126a8526c5bc543afb7e4272c0de708a55d834f02204ebcd942e019b77bbec37f7e2b77b591ba4ce0fbc5fe9335ab91ae925ded6bed", - "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" - } -} -``` - - +略 ### 1.20 创建多签账户 #### Cmd: /api/account/multiSign/create @@ -1348,11 +1195,11 @@ _**详细描述: 根据多个账户的公钥创建多签账户,minSigns为多 ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| -------------------------------------------------------- | :-------------: | ---------------- | :------: | -| form | -- | 创建多签账户表单 | 是 | -|         pubKeys | list<string> | 账户公钥集合 | 是 | -|         minSigns | int | 最小签名数 | 是 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| -------------------------------------------------------- |:--------------------------:| -------- |:----:| +| form | multisignaccountcreateform | 创建多签账户表单 | 是 | +|         pubKeys | list<string> | 账户公钥集合 | 是 | +|         minSigns | int | 最小签名数 | 是 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -1569,6 +1416,7 @@ _**详细描述: 根据区块高度查询区块头**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1577,6 +1425,7 @@ _**详细描述: 根据区块高度查询区块头**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1633,6 +1482,7 @@ _**详细描述: 根据区块hash查询区块头**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1641,6 +1491,7 @@ _**详细描述: 根据区块hash查询区块头**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1695,6 +1546,7 @@ _**详细描述: 查询最新区块头信息**_ | preHash | string | 上一个区块的hash值 | | merkleHash | string | 梅克尔hash | | time | string | 区块生成时间 | +| timestamp | long | 区块生成时间戳 | | height | long | 区块高度 | | txCount | int | 区块打包交易数量 | | blockSignature | string | 签名Hex.encode(byte[]) | @@ -1703,6 +1555,7 @@ _**详细描述: 查询最新区块头信息**_ | roundIndex | long | 共识轮次 | | consensusMemberCount | int | 参与共识成员数量 | | roundStartTime | string | 当前共识轮开始时间 | +| roundStartTimestamp | long | 当前共识轮开始时间戳 | | packingIndexOfRound | int | 当前轮次打包出块的名次 | | mainVersion | short | 主网当前生效的版本 | | blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1758,6 +1611,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -1766,6 +1620,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -1895,6 +1750,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -1903,6 +1759,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -2032,6 +1889,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         preHash | string | 上一个区块的hash值 | |         merkleHash | string | 梅克尔hash | |         time | string | 区块生成时间 | +|         timestamp | long | 区块生成时间戳 | |         height | long | 区块高度 | |         txCount | int | 区块打包交易数量 | |         blockSignature | string | 签名Hex.encode(byte[]) | @@ -2040,6 +1898,7 @@ _**详细描述: 包含区块打包的所有交易信息,此接口返回数据 |         roundIndex | long | 共识轮次 | |         consensusMemberCount | int | 参与共识成员数量 | |         roundStartTime | string | 当前共识轮开始时间 | +|         roundStartTimestamp | long | 当前共识轮开始时间戳 | |         packingIndexOfRound | int | 当前轮次打包出块的名次 | |         mainVersion | short | 主网当前生效的版本 | |         blockVersion | short | 区块的版本,可以理解为本地钱包的版本 | @@ -2483,9 +2342,9 @@ _**request form data:**_ } ``` -### 3.6 单笔转账 -#### Cmd: /api/accountledger/transfer -_**详细描述: 发起单账户单资产的转账交易**_ +### 3.6 跨链转账 +#### Cmd: /api/accountledger/crossTransfer +_**详细描述: 发起单账户单资产的跨链转账交易**_ #### HttpMethod: POST #### Form json data: @@ -2503,16 +2362,16 @@ _**详细描述: 发起单账户单资产的转账交易**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ |:------------:| ------ |:----:| -| 单笔转账 | transferform | 单笔转账表单 | 是 | -|         address | string | 账户地址 | 是 | -|         toAddress | string | 账户地址 | 是 | -|         password | string | 账户密码 | 是 | -|         assetChainId | int | 资产链ID | 否 | -|         assetId | int | 资产ID | 否 | -|         amount | biginteger | 金额 | 是 | -|         remark | string | 备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:-----------------:| --------- |:----:| +| 跨链转账 | crosstransferform | 跨链转账表单 | 是 | +|         address | string | 账户地址 | 是 | +|         toAddress | string | 账户地址 | 是 | +|         password | string | 账户密码 | 是 | +|         assetChainId | int | 资产chainId | 是 | +|         assetId | int | 资产Id | 是 | +|         amount | biginteger | 金额 | 是 | +|         remark | string | 备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2521,34 +2380,17 @@ _**详细描述: 发起单账户单资产的转账交易**_ #### Example request data: _**request path:**_ -/api/accountledger/transfer +略 _**request form data:**_ - -```json -{ - "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "toAddress" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", - "password" : "nuls123456", - "amount" : 10000000000, - "remark" : "remark" -} -``` +无 #### Example response data: +略 -```json -{ - "success" : true, - "data" : { - "value" : "89368623898cde34fe81b5ede6fe5bed75ffb61021ec6caa01a9a5dcd9262d69" - } -} -``` - -### 3.7 跨链转账 -#### Cmd: /api/accountledger/crossTransfer -_**详细描述: 发起单账户单资产的跨链转账交易**_ +### 3.7 单笔转账 +#### Cmd: /api/accountledger/transfer +_**详细描述: 发起单账户单资产的转账交易**_ #### HttpMethod: POST #### Form json data: @@ -2566,16 +2408,16 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ ``` #### 参数列表 -| 参数名 | 参数类型 | 参数描述 | 是否必填 | -| ------------------------------------------------------------ |:-----------------:| --------- |:----:| -| 跨链转账 | crosstransferform | 跨链转账表单 | 是 | -|         address | string | 账户地址 | 是 | -|         toAddress | string | 账户地址 | 是 | -|         password | string | 账户密码 | 是 | -|         assetChainId | int | 资产chainId | 是 | -|         assetId | int | 资产Id | 是 | -|         amount | biginteger | 金额 | 是 | -|         remark | string | 备注 | 否 | +| 参数名 | 参数类型 | 参数描述 | 是否必填 | +| ------------------------------------------------------------ |:------------:| ------ |:----:| +| 单笔转账 | transferform | 单笔转账表单 | 是 | +|         address | string | 账户地址 | 是 | +|         toAddress | string | 账户地址 | 是 | +|         password | string | 账户密码 | 是 | +|         assetChainId | int | 资产链ID | 否 | +|         assetId | int | 资产ID | 否 | +|         amount | biginteger | 金额 | 是 | +|         remark | string | 备注 | 否 | #### 返回值 | 字段名 | 字段类型 | 参数描述 | @@ -2584,24 +2426,23 @@ _**详细描述: 发起单账户单资产的跨链转账交易**_ #### Example request data: _**request path:**_ -/api/accountledger/crossTransfer +/api/accountledger/transfer _**request form data:**_ -``` +```json { "address" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "toAddress" : "TNVTeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", + "toAddress" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", "password" : "nuls123456", "amount" : 10000000000, - "assetChainId":2, - "assetId":1, "remark" : "remark" } ``` #### Example response data: -``` + +```json { "success" : true, "data" : { @@ -2610,8 +2451,6 @@ _**request form data:**_ } ``` - - ### 3.8 离线组装转账交易 #### Cmd: /api/accountledger/createTransferTxOffline _**详细描述: 根据inputs和outputs离线组装转账交易,用于单账户或多账户的转账交易。交易手续费为inputs里本链主资产金额总和,减去outputs里本链主资产总和**_ @@ -2758,42 +2597,13 @@ _**详细描述: 根据inputs和outputs离线组装跨链转账交易,用于 #### Example request data: _**request path:**_ -/api/accountledger/createCrossTxOffline +略 _**request form data:**_ - -``` -{ - "inputs" : [ { - "address" : "tNULSeBaMujLBcZWfE2wHKnZo7PGvqvNrt6yWG", - "assetChainId" : 2, - "assetId" : 1, - "amount" : 1100000, - "nonce" : "0000000000000000" - } ], - "outputs" : [ { - "address" : "TNVTeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "assetChainId" : 2, - "assetId" : 1, - "amount" : "1000000", - "lockTime" : 0 - } ], - "remark" : null -} -``` +无 #### Example response data: -``` -{ - "success" : true, - "data" : { - "txHex" : "02003fac2d5d00008c0117020001efa328e600912da9872390a675486ab9e8ec211402000100e0c8100000000000000000000000000000000000000000000000000000000000080000000000000000000117020001f7ec6473df12e751d64cf20a8baa7edd50810f810200010040420f0000000000000000000000000000000000000000000000000000000000000000000000000000", - "hash" : "5a91b75e6a6d1f415638375627933b42ce7179b4c6390ca0dcc5a0c2c74bd34a" - } -} -``` - - +略 ### 3.10 计算离线创建转账交易所需手续费 #### Cmd: /api/accountledger/calcTransferTxFee @@ -2888,31 +2698,13 @@ _**详细描述: 计算离线创建跨链转账交易所需手续费**_ #### Example request data: _**request path:**_ -/api/accountledger/calcCrossTxFee +略 _**request form data:**_ - -``` -{ - "addressCount" : 6, - "fromLength" : 6, - "toLength" : 2, - "remark" : "remark", - "price" : "100000" -} -``` +无 #### Example response data: -``` -{ - "success" : true, - "data" : { - "value" : 2000000 - } -} -``` - - +略 ### 3.12 多签账户离线组装转账交易 #### Cmd: /api/accountledger/createMultiSignTransferTxOffline @@ -3120,7 +2912,7 @@ _**request form data:**_ "price" : 25, "password" : "nuls123456", "remark" : "restful-nrc20-remark", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a26923f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e6377505aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "alias" : "restful_nrc20", "args" : [ "io", "IO", 80000, 1 ] } @@ -3409,7 +3201,8 @@ _**详细描述: 获取账户地址的指定合约的token余额**_ | contractAddress | string | 合约地址 | | name | string | token名称 | | symbol | string | token符号 | -| amount | string | token数量 | +| amount | string | token可用数量 | +| lockAmount | string | token锁定数量 | | decimals | long | token支持的小数位数 | | blockHeight | long | 合约创建时的区块高度 | | status | int | 合约状态(0-不存在, 1-正常, 2-终止) | @@ -3458,6 +3251,7 @@ _**详细描述: 获取智能合约详细信息**_ | createTime | long | 合约创建时间(单位:秒) | | blockHeight | long | 合约创建时的区块高度 | | isDirectPayable | boolean | 是否接受直接转账 | +| directPayableByOtherAsset | boolean | 是否接受其他资产直接转账 | | tokenType | int | token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 | | isNrc20 | boolean | 是否是NRC20合约 | | nrc20TokenName | string | NRC20-token名称 | @@ -3476,6 +3270,7 @@ _**详细描述: 获取智能合约详细信息**_ |         view | boolean | 是否视图方法(调用此方法数据不上链) | |         event | boolean | 是否是事件 | |         payable | boolean | 是否是可接受主链资产转账的方法 | +|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | |         jsonSerializable | boolean | 方法返回值是否JSON序列化 | #### Example request data: @@ -4008,6 +3803,7 @@ _**详细描述: 获取合约代码构造函数**_ |         view | boolean | 是否视图方法(调用此方法数据不上链) | |         event | boolean | 是否是事件 | |         payable | boolean | 是否是可接受主链资产转账的方法 | +|         payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | |         jsonSerializable | boolean | 方法返回值是否JSON序列化 | | isNrc20 | boolean | 是否是NRC20合约 | #### Example request data: @@ -4019,7 +3815,7 @@ _**request form data:**_ ```json { - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ab46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf5d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301084035c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000" } ``` @@ -4095,6 +3891,7 @@ _**详细描述: 获取已发布合约指定函数的信息**_ | view | boolean | 是否视图方法(调用此方法数据不上链) | | event | boolean | 是否是事件 | | payable | boolean | 是否是可接受主链资产转账的方法 | +| payableMultyAsset | boolean | 是否是可接受其他资产转账的方法 | | jsonSerializable | boolean | 方法返回值是否JSON序列化 | #### Example request data: @@ -4248,7 +4045,7 @@ _**request form data:**_ "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", "gasLimit" : 20000, "price" : 25, - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e33734a552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c14959666d8f2f52d12542f89d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a039742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "args" : [ "io", "IO", 80000, 1 ] } ``` @@ -4433,7 +4230,7 @@ _**request form data:**_ ```json { "sender" : "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebe9b930eb64e2706114a2639488f97d6152c9b0587a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd9804b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "args" : [ "io", "IO", 80000, 1 ] } ``` @@ -4624,7 +4421,7 @@ _**request form data:**_ "alias" : "rf_nrc20_offline", "senderBalance" : "999999998523475", "nonce" : "9c0aea02bed90ddd", - "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd726b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d491872d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", + "contractCode" : "504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b31600000000", "gasLimit" : 20245, "args" : [ "air", "AIR", 10000, 2 ], "argsType" : [ "String", "String", "BigInteger", "int" ], @@ -4638,7 +4435,7 @@ _**request form data:**_ { "success" : true, "data" : { - "txHex" : "0f008629375d0e28292072657475726e20766f6964fd8119020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e78b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436c156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c723e2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bff16f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b316000000001072665f6e726332305f6f66666c696e65154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", + "txHex" : "0f008629375d0e28292072657475726e20766f6964fd8119020001f7ec6473df12e751d64cf20a8baa7edd50810f810200020d2f73cb93099a8cfd0cbdd060155abfe2f50917fd1a19504b03040a0000080000aa7b564e00000000000000000000000003000400696f2ffeca0000504b03040a0000080000aa7b564e00000000000000000000000008000000696f2f6e756c732f504b03040a0000080000aa7b564e00000000000000000000000011000000696f2f6e756c732f636f6e74726163742f504b03040a0000080000aa7b564e00000000000000000000000017000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b0304140008080800aa7b564e00000000000000000000000028000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373b558f97754e5197eeecc90990c972d9090059209a498cc9291a58a8152020d35ca5602b1605bbd99b9492ecc12670922b46ead4babd56aeb5ad1565bd4aa2c020169d59ed353cfe93fd17f84d3d3e7fdee9d3b37612639d5d31ff2ddf77ecbfb3eeff67c77f2afff7cf639804df87b23a23825c323329c96e14c1831fcb411cdf859108f86119497281e93e171997e22cce149197e1ec62ff0d462acc2d3413c13c672fc2a8ce7f0bcccfc3a8817827831cc53bf91e125195e96e5df8af4bb205e09a3430e44f19a0cafcbf086a87d5386df87f096cc9c9597b7457a27843fc8f38f21bc2b7ade0be24f41fc39887341bcaf219033b2a686a6bdc78d692399317213c99152c1ca4d6cd3d0503c951dcb673484d266caca1a99a2066d58c3e252be646446ca535399531a5aeca359a33499dc654d0ce74ae68459e0f1d098417d2993a796d97bca252b93dc674c71b171c49ac819a57281c68766af6edf6be593b972a6984ce573a582912a258be913c9c174ba60168bdb6a9bdb419d412393c99f34d31a4a5f43e337342f0056f5f6d58a6360773e6d4a10ac9cb9bf9c1d330b878db18c8a7a3e6564468d8225efce64a0346931643db7c228e54f98b9e488959de26691a9bbed503957b2b2e6a855b4787c3097636e4a563e47151b6a7b62b87b92a39679924afcbd7d4c6b6b05fdada96cd86ee5acd20e0d3b7a6f75b0decc5c35c37da31a968822cbc80c66f304ae61dd6cfc078d02ebb164166639125dd09143e64365ab60a6a5b2541548e16938dcbb4032e75dad1b8e45f99339b3a0a173fef3acc8e294994bcb565d1d19ac14e8a269235336a5796655c0a9a94a152c192919a9132c47f56eb302b5d048ae386e16f614f2590d47be917bb5bdeb3bc6121c57ea7da53cc3e974f181710d772c60af6ec0828e129242c5030d772e84be2ebea0313555c84f53dd722b972a9846d11c543306c92a6ca4d3667ad48eef7232d79cf565c5f29832e66e0ae53315510ebb49fabf84973d1032ec2d1babe2260f2ed77eb868565f96550e559739b3ab12d7af19cc5109a6bdc583c0d5ba283569a64e90657aeb9f4fd659ab7fa24115ffc68a40df63f3eaf0528b9cf7678b131a06ff27bbb5358547f2e542cadc6349cb2df7306bbf6cd7d18fa48edb65d8884d3a36638b8e217ca0e3436cd1b0a27a6fdc6d1427d9ac3abe8d3b74dc25c35f64f347f858c727381fc4051d177149c7a7b84c42abc3edca76cf61a74586a64da1c82573def5e11ca96477c62816cda2e0213d5cd17115333aaee13a0fccbacf782dd58a888e49983a72c8e83821c367b8a1c382b910ba4a2755d0cd7ad79116adf7e05e1d79301e7fc5df747c8ef31a3a8673c5f2f8b895b2b82fe274703aa254cbe6691d5fe0bc8ea36087270e4f9a11551d916cb9588a8c999109f6312f864869d2c845f2850819dfc8f078e4f67e394e289db32c389413c98fdb36fac5c52f79e32c7cafb216aae57260ecb899a2f6b535fb6bb7f3a261cd7c5153772c0b2e706ce8d001be1c1edacf712a7f527a6bb82e6f86b2e54cc9529f59fdf55ab0ded9d69a78f749eb34149d5b29c22b7f812bcc3f55a6735bbdf7be1d916db7cef4dd3aa5a1bda68123ac4e524ec0cc5a54df5587bd544dd93d3f6172df861a306a1a0d16ec0f025ae83d26e71b53f9ec9451607ee761337e04f9c9868c7b85097943f71eabc51de8e637750c3ec49140039a842af8e3a049d8423d49187cfa8433d493c400d2b492b7f2ef2ecffb003fd699616ca3bc9d3349be697c2e8a5e8676416df90ec70635b9163b38eaf6067c173bf91c745677f1a911422d45beb98ad62fa8682376d750e4ff688ea2be05156dc6f76a280acc45945c50d110f6388afecd1d8bf834a3335476090d571088de40f0e80c4257d05815c3d1d81568d1f815f8a2cd812bf0471397b0b8397015fa552c915397d1780d4b05d0752cf3e3be1b587e54736666b0e21a9a2eba40fbb158fd060c30658bb11a2d6865296cc606a639c6246f645a0799d6434c729a491687b6d8401d8744ea57711049cac5a7a4ef739f5f491b95febb29b705b86d58797eeb4892e50189c51754212692441c8e5dc74a1fbec4aafd89af1064602e24e2ce54f340a02df015429c1449c21f505e75f2f72a887529313611650bc3bd8ec9bf8d798b33e4552f92ae1749ecc53e276dfb29f978ba1b07e8bf9f6797e0204f04f00327a1f6da56ae1de2cc52f86ea22588919b680ee2f0ac248bdf4b7c737c3d825127ef670823c0674f34c6142566d0128d715c1d8d736c95d4c54492ac05aa85daa2c0df8b46825e46b0cd84bc8e80c4b1a8adcf75ac07f7398ef5e087ca31910eaaf408b895fe9ae9e0bde5a4e3491e914cf6c4fe8960e01c02fe6b68932aaba4a6795fdc4ecdbeb8e4c0ef817884d11a453b2174d2f83aea1488115b9f07a21dfb7684713f81f9545417c31fdaa9dd446bad90063517e98ff0632798166d8ae6ae2863199728c6e24e143921f29c3836a9583d80101e64120d92d1980760970bb04b454e53d24105b0665a7fe22279d041d21e750cb7df404705c49ad92096aa9d134ce624bbcff200687701b4ab9ad494340f80075c00136c0151d15d01b0b602404d5c45671d1c59e2c8d1cdbc0747b78ba3dbc5d14d1febe2305c1c978943623c142586ae8aedfdf1c45544ce62859a60e53040e7a057b0b6cc83d5efe9f022a35c22ee32ab6d9a55f4302faf47d8e7a73d8d30e4621f72b10f31cd5b5487df89946a04a9b746e9e21e165ba896533ef914a42c4e3de1907584f545740381685b40bc4bc8108bb705e85d375daaf2acdd0d8fb2d01ea3d5c7b1923abad85955268ab83823187770469846bb61234ec3865821f72826f2c907af83e78c83a7d38327d1b46e06eb2b687a66a1b1cbfe296a7b1a2bf00ccbfe590f924e1749a78ba4d345d2e922697191582e927f7045740cd8b1f0f2b74dd66dce453610508b6dce1dd51688276c49507a59fc39ea7b5efe958836bc40067991fcfc126fa2973d88075cc4032ee20117f1808378156fb5e3e4f32a8bdb335b3923f90f816493248bf3147f42381e9de6aa448ba1bc8a6fed8fc69b36cce0b68a7b8db10423de5d85ee4df72b64ac577975bcc680bf4ee86f78ca72bd0b793d5b6e9ff30563b776031372bf82ec931f340e90a203a4cb01928837f54a862b207ae682b0b3fc16d59d65cdbdcd78bee301e025b7ec1c726b60ac2b00f8b3c701708c6f12cfd5bc075648d3b285dfacde0817dde60cab6def320aef29832df631d7e06a654653415f045fd34e4dd979c8b133e5dc371dd19804597843cabab62ddbc973d4f33eed7e407afcd0435c1daecd0e14944d918aee1543eb2d8ef59263dd74acb7d6f0327e0d7d73ddfc98ee7ce231d9ea9a6c75dc14a9acbe8be6383ced96984f79b1a68ec38959666d8f2f52d12542f894fe5cf6a4758d6b7e8debf11ac7639104887fb6ef2755c53c8c5f2ae53e2c278b3e4b36ece0f35534fe17504b0708ec308779cb09000028180000504b0304140008080800aa7b564e00000000000000000000000022000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373a552d14e1341143d03b5cb16aa28a8a0284a08697970131ff481a76a24694282a19507dfa6bb431d989da933b325fc9a0f7e801f65bc534ba5b6a5896eb23b3be79e7bcebd33f7c7cf6fdf01bcc64e84e711b623bc60a8367a3d6bfa5c7de80bed19569a5a0bfb5e71e7848bf092186dcbb53b1376c828699e0b86f55afde89cf779a2b8ee262d6fa5ee1e306c9e14dacb5c9c4a273b4a34b4369e7b69b463d83b9226d18572496ab4b73cf589cb2e123ee224a7525c9248d95de51da318963291ca9c2b4a5eacd59b0ccb9ea8aa55f47aea8a61e3ba869cfb2fc93bd96d6a2fbac29244dce154582a8ecf18ded4a61b37b2cc0ae70e668aec8c37f3915b6add0b3bd6d5fedcae4ec4d7425a9191e2921f1e26c3db39554d2faafe99eee85ae4d09a9ce1d33ca17fb489f86034e8ae63ae94b90cc7c9d0fe2fb799475d6999c2a6e2502af2a8b4cd85d0af0295616b42d0876832e030acfe19c2e3ceb9486942f76fcbd8fd6be06f278fcd7e99816101e1894b749788695fa15d99d66580b0952958157727b07b589dc0eee301a9dfc0b0466f144cd70784877844ff01ac2efc0647a1c7d81886d6166f864684cdd9b94ff0748aef388d085b83ef33dca135141a7c4ad46e488a10ff02504b070868fe421cca0100005e040000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c6173738d565b6f1b4514fec6bbde75b69bbb49d224b46929e05b6a2ee19a4b73218140d2943835b4406163af926d9cdd74771d90a0129540ea033c801020242e2f252f790089b80824c45390f82ffc03049c995dbb89e3243cf8ccd93367e67cdf7c6746fef39f5f7e03f018ae6988e34213148c7333c1cd248f4da998d63083e735bcc0cd0c66b937abe2450d2770218697f838c7cd7c0c176358e0ee256e5e56b1a822c71075deb64d97e1d49ce564ed72c9cb161cdb778d829ff58a6bd98962d1353d6f9841f5364cbbc853a39b46a96c3274cd5d37368decbae1af6627ad9559db37574c97529511cbb6fc3186cb89a3773d66b6e1f6c93c833ce5140940eb9c659b17cbebcba6bb642c9728d231e7148c52de702dfe1d06657fd5f2189a2736365c87b04f6f9ab6cfa0cfdac47caa64789e49d39983607c67cdb4b34bdc9edbb798389e5d2cdbbeb56ee62dcfa22a970cd758377dd39db06dc7377ccbb169cf546382462d27bb68de285bae59a41d632ba6bf10883190481e2747ccab659f39e694f98969b479ae2aa0e6edf9e065f381a03d54f6104979b930eb64e2706114a2639488f97d6152c9b057b20bcbd7cd823f9cbccac01c2ed28129219241a234e77ca3b0366f6c08eda8c1a9f4aae1ad06824b89e42c152156e5122533fa88f94ece772d7b85215e852f760ea2b4b39673ca6ec19cb1782f6842cdf33c4d471f967474a15b470f3727d1abe332f22a5e21e9fe7f37a87855c7237854c5151d4fe16986ee7a189365ab244e3bbe6fe5bbe2f28deab88ad7b8799d006606c28b364ae43203e2ae898c37740c6384a1adfef4187a1bea1ff6391d5a3e9059f43a43e7be7312413aa6fea308379aded362c4ab514b9054c60627c330983828cd41b5c2631aaecbaff6cf11f9fd89a9c3a771869ecc38a82b2121c215a78735c2451723e94ea346f37de8a7effbe9ab44a34c633c75172c95de412495d981941adc81fca358758a6c17a2646f50a68b267868818f4e94719aa2a9603d06f000203c5e97098f578e088fd796708efc4e89261f2467bf7d080f93e590b234f2e5d1d44f88fc50c3a088e03ba2a61e248435191248868bc7289b575404977b0c34117d8fd6dc143b74055935d44a889a2e444320523d90f71b0249370622d503f980d67c7808909e104806830d80c8f5406e3704725e2c3a0044ae07f211adf9f810205c335e98ae7cb8d75f9423d1782b95fe1e51793bbd8b965405d134fdee202a6da77f8732cf75dba58ea22143bf0ad4afd0ba45375ec4298b9f679020514cda9b205513e45db4f381627205b12db472ef0fa8f21664699b404882462f01053e818a4fe9e43e23989f13e52ff026be14b40602c0355ab7e89fc6e3824e1143148be009d1a0badac2fe46bf8a2715d6adb0b836cea9d32b1752ff393cc6e9805d734a306be26046da4ef7ad069c78580ac36f55e37210271a5a10efbb07bf43dc9eafe9367d43cdf32da6f0dd1e35a643d89d04fa193c4b5038d84128ede3ec5fbae511824b30c947e84718cbefffa445f49c862caed1b6bc51867ec5892b77a1773457484141a5b5a32df025eeb7073e616e6dbb594147059df58d77674fe30d8540231815760c67c3a746c173f42c35fd07504b0708ea7bbc798f040000e6090000504b0304140008080800aa7b564e00000000000000000000000030000000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c6173738d56df531b5514fe6e76b31bb60be19740015b5aab8624b06ad156c36f84160da5051a0bd5da25d9c296b08bbb1b5e1c1ffa6ff8aebcf0a033923a3ae3f88433fe2ffe078e7aeedd854212c0879c7bf6dc73eef9cef9cebd933ffff9e53700efe189864e4c3441c12417535c4c73db8c8a590d73b8a3e12e177398e7dabc8a4f345cc244029ff235cfc54202f71258e4ea7d2e1ea85852b1cc203ff3dc6d862b79db359c4ad9378aae1378663130fcd29631552a7996efe7186281cb10df35cb158ba12bffdcdc358d6d33d834a6ed8d7927b0362c8fbc9451dbb183718687a9f30fbc60b7e1f18305823be3960840326f3bd6bdcaf6bae5ad98eb65b2b4e7dda2592e989ecdbf23a31c6cda3e43f38a673afe33cb9bddb59c80419f771ccb9b299bbe6fd176b61e4ce06e598eb1c2e58d53c154e3f5a58a13d8db56c1f66dca72dff4cc6d2bb0bc29c7710333b05d87ce4c372ed03cf63196acaf2ab66795e84475c30ae6040d03a9c18b8850fd23e76b17f498f72b4e47af70e6fc704dd0772124b187729d4163c23ff6ba9c3a9b0c854a30cb54ed6b9153d974368cc5f5e75631c80dae3130971353b72588318988e6e5c02c6e2d983b822f1a674abd69fa9b21c9526a709e92502d95323933fa4804ee72e0d9ce0643e7117c717268a593b565b7e215ad399bf3af090687b99b8e3eace8e842b78e1e2e2ea357c74314547c4674fdff0950f148c73b7857c5aa8e5bb8cdd05d0b63ba62974b96c7d0712af26b7ed5c674ace131179f132bd981c01da3b2b203e26689cd2f74e430cad05adb3786de867c47534ded2a84048bc9a6eca73a248cd4a0fef34a6db47d62a4a8eb8d8681483277762ca7c43094aa27a59ea7a841b91affa3c939c7bf3f3573f636aed1d3d8099a47488871aee9018d71bac54a8cd3aad17e1ffae9fb75fa2ad32ad3da997e0996ce1c2096ce1e404a0f1d40fe51445d21d98538c92c790ea109c36881810e1a82ab644d87f118c01b80d0785e26349e3926349e5bc20dd293120986374fc8b7f036490ec7a09587c6d33f21f6c3717e45186f8a7c7ae810e5634861300a1e276f9e4d1175bc42af09eb2d8ab92d4ee80abd8e112b1162ba060d8148b540720d81641a03916a814c50cce419407a2220596a743d10b916c84c4320c322a80e885c0be40ec5dc3d0308e78b27a68b1e9df517f970ea5ea433df232eef670ed192ae229ea1df77884bfb99dfa12c70de0e699a68c9d2af0af55b24f7a065859dbc783f4307896cd24907e9c8413e441b5fc8265791d843926b7f4095f7204bfb04421265f41250200f150bd4b94582f9804a5ec2975816650d84808fcb7a41ff266e8a724a18215b0cef8be1d4d516f637fa557ca0b06e85756a93bc747adba2d27f8eda381b56d79c1695357130a3ad57fb36c39ab8598acc4f8fec7268a732b4d0def70a7ebbb8398fe826add2f0ac119b8f4fb0311bc1ee20d01fe22382c2c10e41699b64ffd20d8f115c82493a223dc658e1f42705d1531a55f1848ee58332f22b2eadbe84dede5c25064529c9f6d65097b8de16ea8439d9fa4d15ed5574d40eded313833712018d614cc8715c8f9e19051fd393d4f41f504b0708826261e37e040000ca090000504b01020a000a0000080000aa7b564e000000000000000000000000030004000000000000000000000000000000696f2ffeca0000504b01020a000a0000080000aa7b564e000000000000000000000000080000000000000000000000000025000000696f2f6e756c732f504b01020a000a0000080000aa7b564e00000000000000000000000011000000000000000000000000004b000000696f2f6e756c732f636f6e74726163742f504b01020a000a0000080000aa7b564e00000000000000000000000017000000000000000000000000007a000000696f2f6e756c732f636f6e74726163742f746f6b656e2f504b01021400140008080800aa7b564eec308779cb090000281800002800000000000000000000000000af000000696f2f6e756c732f636f6e74726163742f746f6b656e2f53696d706c65546f6b656e2e636c617373504b01021400140008080800aa7b564e68fe421cca0100005e0400002200000000000000000000000000d00a0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e2e636c617373504b01021400140008080800aa7b564eea7bbc798f040000e60900003000000000000000000000000000ea0c0000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e24417070726f76616c4576656e742e636c617373504b01021400140008080800aa7b564e826261e37e040000ca0900003000000000000000000000000000d7110000696f2f6e756c732f636f6e74726163742f746f6b656e2f546f6b656e245472616e736665724576656e742e636c617373504b0506000000000800080051020000b316000000001072665f6e726332305f6f66666c696e65154f0000000000001900000000000000040103616972010341495201053130303030010132480117020001f7ec6473df12e751d64cf20a8baa7edd50810f81020001006d67120000000000000000000000000000000000000000000000000000000000089c0aea02bed90ddd000000", "contractAddress" : "tNULSeBaMwYiR4p1X9xNJPiyJfrXjr4KgkcFjG", "hash" : "9443656bab59f52441286e1d859855be28cbe155973c712c07385a21b7212152" } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java index 301bec0c4c..3f383e552c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java @@ -8,10 +8,9 @@ import io.nuls.core.core.config.ConfigurationLoader; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.exception.NulsException; -import io.nuls.core.io.IoUtils; +import io.nuls.core.log.Log; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.I18nUtils; -import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.HostInfo; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.modulebootstrap.Module; @@ -20,11 +19,11 @@ import io.nuls.core.rpc.modulebootstrap.RpcModuleState; import io.nuls.core.rpc.util.AddressPrefixDatas; import io.nuls.provider.api.RpcServerManager; +import io.nuls.provider.api.cache.LedgerAssetCache; +import io.nuls.provider.api.config.Config; import io.nuls.provider.api.config.Context; -import io.nuls.provider.utils.Log; import io.nuls.v2.NulsSDKBootStrap; -import java.util.List; import java.util.Map; import static io.nuls.provider.api.constant.SdkConstant.SDK_API; @@ -43,6 +42,10 @@ public class ApiBootstrap extends RpcModule { MyModule myModule; @Autowired private AddressPrefixDatas addressPrefixDatas; + @Autowired + private LedgerAssetCache ledgerAssetCache; + @Autowired + private Config config; public static void main(String[] args) { boolean isOffline = false; @@ -127,6 +130,16 @@ public boolean doStart() { return true; } + @Override + public void onDependenciesReady(Module module) { + Log.info("dependencies [{}] ready", module.getName()); + if (ModuleE.LG.abbr.equals(module.getName())) { + Log.info("onDependenciesReady ledger"); + ledgerAssetCache.initial(config.getChainId()); + } + + } + @Override public RpcModuleState onDependenciesReady() { return myModule.startModule(moduleName); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/cache/LedgerAssetCache.java b/module/nuls-api/src/main/java/io/nuls/provider/api/cache/LedgerAssetCache.java new file mode 100644 index 0000000000..9270f4ff70 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/cache/LedgerAssetCache.java @@ -0,0 +1,79 @@ +package io.nuls.provider.api.cache; + + +import io.nuls.base.api.provider.Result; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.provider.api.config.Config; +import io.nuls.provider.api.model.AssetInfo; +import io.nuls.provider.rpctools.CrossChainTools; +import io.nuls.provider.rpctools.LegderTools; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author: PierreLuo + * @date: 2021/5/31 + */ +@Component +public class LedgerAssetCache { + + @Autowired + private LegderTools legderTools; + @Autowired + private CrossChainTools crossChainTools; + @Autowired + private Config config; + private long lastCrossAssetQueryRecordTime;// 最近一次跨链资产查询时间 + private long minitus_2 = 60 * 2 * 1000l;// 两分钟 + private Map CACHE_MAP = new HashMap<>(); + + public void initial(int chainId) { + Result allAsset = legderTools.getAllAsset(chainId); + List list = allAsset.getList(); + for (Map map : list) { + int assetChainId = Integer.parseInt(map.get("assetChainId").toString()); + int assetId = Integer.parseInt(map.get("assetId").toString()); + int decimalPlace = Integer.parseInt(map.get("decimalPlace").toString()); + String symbol = map.get("assetSymbol").toString(); + String key = assetChainId + "_" + assetId; + CACHE_MAP.put(key, new AssetInfo(assetChainId, assetId, symbol, decimalPlace)); + } + lastCrossAssetQueryRecordTime = System.currentTimeMillis(); + } + + public AssetInfo getAssetInfo(int chainId, int assetId) { + String key = chainId + "_" + assetId; + AssetInfo dto = CACHE_MAP.get(key); + if (dto == null) { + if (chainId == config.getChainId()) { + Result result = legderTools.getAsset(chainId, assetId); + if (result.isSuccess()) { + dto = result.getData(); + } + } else { + long now = System.currentTimeMillis(); + if (now - lastCrossAssetQueryRecordTime > minitus_2) { + List crossAssetInfos = crossChainTools.getRegisteredChainInfoList(config.getChainId()); + if (crossAssetInfos != null) { + for (AssetInfo assetInfo : crossAssetInfos) { + String _key = assetInfo.getChainId() + "_" + assetInfo.getAssetId(); + CACHE_MAP.put(_key, assetInfo); + } + dto = CACHE_MAP.get(key); + lastCrossAssetQueryRecordTime = now; + } + } + } + if (dto == null) { + return null; + } + CACHE_MAP.put(key, dto); + } + return dto; + } + +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java index eae61e9a78..acb446787f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/LegerController.java @@ -1,16 +1,20 @@ package io.nuls.provider.api.jsonrpc.controller; import io.nuls.base.api.provider.Result; +import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; +import io.nuls.provider.api.model.AssetInfo; import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.model.jsonrpc.RpcResultError; +import io.nuls.provider.rpctools.CrossChainTools; import io.nuls.provider.rpctools.LegderTools; import io.nuls.v2.model.annotation.Api; import io.nuls.v2.model.annotation.ApiType; import java.util.List; +import java.util.Map; @Controller @Api(type = ApiType.JSONRPC) @@ -19,6 +23,8 @@ public class LegerController { @Autowired private LegderTools legderTools; + @Autowired + private CrossChainTools crossChainTools; @RpcMethod("getAllAsset") public RpcResult getAllAsset(List params) { @@ -29,11 +35,28 @@ public RpcResult getAllAsset(List params) { return RpcResult.paramError("[chainId] is inValid"); } - Result result = legderTools.getAllAsset(chainId); + Result result = legderTools.getAllAsset(chainId); RpcResult rpcResult = new RpcResult(); if (result.isFailed()) { return rpcResult.setError(new RpcResultError(result.getStatus(), result.getMessage(), null)); } return rpcResult.setResult(result.getList()); } + + @RpcMethod("getAllCrossAsset") + public RpcResult getAllCrossAsset(List params) { + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + + List assetInfos = crossChainTools.getRegisteredChainInfoList(chainId); + RpcResult rpcResult = new RpcResult(); + if (assetInfos == null) { + return rpcResult.setError(new RpcResultError(CommonCodeConstanst.DATA_NOT_FOUND.getCode(), null, null)); + } + return rpcResult.setResult(assetInfos); + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java index 56670a516c..e524f8e445 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java @@ -25,6 +25,8 @@ public class AccountBalanceDto { private String nonce; @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") private int nonceType; + @ApiModelProperty(description = "资产精度") + private int decimals; public AccountBalanceDto() { @@ -38,6 +40,15 @@ public AccountBalanceDto(AccountBalance info) { this.consensusLock = info.getConsensusLock(); this.nonce = info.getNonce(); this.nonceType = info.getNonceType(); + this.decimals = info.getDecimals(); + } + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; } public String getTotal() { diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockHeaderDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockHeaderDto.java index 8b96a73f60..6ee0492588 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockHeaderDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/block/BlockHeaderDto.java @@ -55,7 +55,7 @@ public class BlockHeaderDto { @ApiModelProperty(description = "区块生成时间") private String time; - + @ApiModelProperty(description = "区块生成时间戳") private long timestamp; @ApiModelProperty(description = "区块高度") @@ -81,7 +81,7 @@ public class BlockHeaderDto { @ApiModelProperty(description = "当前共识轮开始时间") private String roundStartTime; - + @ApiModelProperty(description = "当前共识轮开始时间戳") private long roundStartTimestamp; @ApiModelProperty(description = "当前轮次打包出块的名次") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java index 3d953be90c..f766d54cdb 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/AccountCreateForm.java @@ -34,7 +34,7 @@ */ @ApiModel(name = "创建账户表单数据") public class AccountCreateForm{ - + @ApiModelProperty(description = "链ID") private int chainId; @ApiModelProperty(description = "新建账户数量") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/CrossChainTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/CrossChainTools.java new file mode 100644 index 0000000000..35e2505967 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/CrossChainTools.java @@ -0,0 +1,52 @@ +package io.nuls.provider.rpctools; + +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.provider.api.model.AssetInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +/** + * 查询跨链模块数据 + * + * @author: PierreLuo + * @date: 2022/3/10 + */ +@Component +public class CrossChainTools implements CallRpc { + + + public List getRegisteredChainInfoList(int chainId) { + try { + return callRpc(ModuleE.CC.abbr, "getRegisteredChainInfoList", new HashMap(), (Function, List>) map -> { + if (map == null) { + return null; + } + List> resultList = (List>) map.get("list"); + List assetList = new ArrayList<>(); + for (Map resultMap : resultList) { + int id = (Integer) resultMap.get("chainId"); + if (id != chainId) { + List> list = (List>) resultMap.get("assetInfoList"); + if (list != null) { + for (Map assetMap : list) { + String symbol = assetMap.get("symbol").toString(); + int decimals = Integer.parseInt(assetMap.get("decimalPlaces").toString()); + int assetId = Integer.parseInt(assetMap.get("assetId").toString()); + assetList.add(new AssetInfo(id, assetId, symbol, decimals)); + } + } + } + } + return assetList; + }); + } catch (NulsRuntimeException e) { + return null; + } + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 4e7e7b019a..972d38c250 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -1,12 +1,15 @@ package io.nuls.provider.rpctools; import io.nuls.base.api.provider.Result; +import io.nuls.core.constant.CommonCodeConstanst; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; +import io.nuls.provider.api.cache.LedgerAssetCache; +import io.nuls.provider.api.model.AssetInfo; import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.rpctools.vo.AccountBalance; @@ -27,6 +30,8 @@ public class LegderTools implements CallRpc { @Autowired private ContractTools contractTools; + @Autowired + private LedgerAssetCache ledgerAssetCache; /** * 获取可用余额和nonce @@ -53,6 +58,10 @@ public Result getBalanceAndNonce(int chainId, int assetChainId, .add(new BigInteger(balanceInfo.getConsensusLock())) .add(new BigInteger(balanceInfo.getTimeLock())).toString()); balanceInfo.setNonceType((Integer) map.get("nonceType")); + AssetInfo assetInfo = ledgerAssetCache.getAssetInfo(assetChainId, assetId); + if (assetInfo != null) { + balanceInfo.setDecimals(assetInfo.getDecimals()); + } return new Result<>(balanceInfo); }); } catch (NulsRuntimeException e) { @@ -61,11 +70,11 @@ public Result getBalanceAndNonce(int chainId, int assetChainId, } - public Result getAllAsset(int chainId) { + public Result getAllAsset(int chainId) { Map params = new HashMap(2); params.put(Constants.CHAIN_ID, chainId); try { - return callRpc(ModuleE.LG.abbr, "lg_get_all_asset", params, (Function, Result>) map -> { + return callRpc(ModuleE.LG.abbr, "lg_get_all_asset", params, (Function, Result>) map -> { if (map == null) { return null; } @@ -77,6 +86,24 @@ public Result getAllAsset(int chainId) { } } + public Result getAsset(int assetChainId, int assetId) { + Map params = new HashMap(2); + params.put(Constants.CHAIN_ID, assetChainId); + params.put("assetId", assetId); + try { + return callRpc(ModuleE.LG.abbr, "getAssetRegInfoByAssetId", params, (Function, Result>) map -> { + if (map == null || map.get("assetSymbol") == null) { + return Result.fail(CommonCodeConstanst.DATA_NOT_FOUND.getCode(), null); + } + int decimalPlace = Integer.parseInt(map.get("decimalPlace").toString()); + String symbol = map.get("assetSymbol").toString(); + return new Result<>(new AssetInfo(assetChainId, assetId, symbol, decimalPlace)); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + public Result> getBalanceList(int chainId, List coinDtoList, String address) { try { List accountBalanceList = new ArrayList<>(); @@ -97,6 +124,7 @@ public Result> getBalanceList(int chainId, List coinDt accountBalance.setAssetChainId(assetChainId); accountBalance.setAssetId(assetId); accountBalance.setContractAddress(contractAddress); + accountBalance.setDecimals((int) dto.getDecimals()); if (dto == null) { accountBalance.setBalance("0"); accountBalance.setTotalBalance("0"); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java index 32adf4f4b2..7c69d2aa0c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java @@ -10,13 +10,12 @@ */ @ApiModel public class AccountBalance { - + @ApiModelProperty(description = "资产链ID") private int assetChainId; - + @ApiModelProperty(description = "资产ID") private int assetId; - + @ApiModelProperty(description = "合约地址") private String contractAddress; - @ApiModelProperty(description = "总余额") private String totalBalance; @ApiModelProperty(description = "可用余额") @@ -31,6 +30,16 @@ public class AccountBalance { private String nonce; @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") private int nonceType; + @ApiModelProperty(description = "资产精度") + private int decimals; + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; + } public String getTotalBalance() { return totalBalance; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java index 87fe7c5f55..fc9868b931 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/ApiDocTool.java @@ -556,8 +556,12 @@ public static List mapToResultDes(TypeDescriptor typeDescriptor) { } public static List classToResultDes(Class clzs) { + if (clzs == Void.class) { + return null; + } Annotation annotation = clzs.getAnnotation(ApiModel.class); if (annotation == null) { + System.err.println(clzs.getName()); throw new IllegalArgumentException("返回值是复杂对象时必须声明ApiModule注解 + " + clzs.getSimpleName()); } List list = new LinkedList(); @@ -1194,17 +1198,17 @@ private static class Url { private List path; public Url() { - this.protocol = "http"; + this.protocol = "https"; this.host = new ArrayList<>(); - this.host.add("localhost"); - this.port = "18004"; + this.host.add("api.nuls.io"); + this.port = null; this.path = new ArrayList<>(); } public static Url jsonrpcInstance() { Url url = new Url(); url.path.add("jsonrpc"); - url.raw = "http://localhost:18004/jsonrpc"; + url.raw = "https://api.nuls.io/jsonrpc"; return url; } From 709e02644f23669d34c6346f84d46fc8c3db7db5 Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 11 Mar 2022 14:31:32 +0800 Subject: [PATCH 292/304] Release/pre prod (#658) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * 2.12.2 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../jsonrpc/controller/AccountController.java | 103 ++++++++++++- .../api/resources/AccountLedgerResource.java | 34 ++++- .../dto/AccountBalanceWithDecimalsDto.java | 109 ++++++++++++++ .../nuls/provider/rpctools/LegderTools.java | 74 +++++++++- .../vo/AccountBalanceWithDecimals.java | 137 ++++++++++++++++++ version | 2 +- 6 files changed, 452 insertions(+), 7 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceWithDecimalsDto.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalanceWithDecimals.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index c6dd196de5..06c217a1a6 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -41,7 +41,6 @@ import io.nuls.provider.api.config.Context; import io.nuls.provider.model.dto.AccountBlockDTO; import io.nuls.provider.model.dto.AccountKeyStoreDto; -import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.model.form.PriKeyForm; import io.nuls.provider.model.jsonrpc.RpcResult; import io.nuls.provider.model.jsonrpc.RpcResultError; @@ -49,6 +48,7 @@ import io.nuls.provider.rpctools.ContractTools; import io.nuls.provider.rpctools.LegderTools; import io.nuls.provider.rpctools.vo.AccountBalance; +import io.nuls.provider.rpctools.vo.AccountBalanceWithDecimals; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; import io.nuls.provider.utils.Utils; @@ -68,8 +68,8 @@ import java.io.IOException; import java.math.BigInteger; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -448,6 +448,59 @@ public RpcResult getAccountBalance(List params) { if (balanceResult.isFailed()) { return rpcResult.setError(new RpcResultError(balanceResult.getStatus(), balanceResult.getMessage(), null)); } + AccountBalance resultData = balanceResult.getData(); + if (resultData != null) { + return rpcResult.setResult(resultData); + } else { + return rpcResult.setResult(null); + } + } + + @RpcMethod("getAccountBalanceWithDecimals") + @ApiOperation(description = "查询账户余额", order = 107, detailDesc = "根据资产链ID和资产ID,查询本链账户对应资产的余额与nonce值") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "assetChainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产的链ID"), + @Parameter(parameterName = "assetId", requestType = @TypeDescriptor(value = int.class), parameterDes = "资产ID"), + @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "账户地址") + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalanceWithDecimals.class)) + public RpcResult getAccountBalanceWithDecimals(List params) { + VerifyUtils.verifyParams(params, 4); + int chainId, assetChainId, assetId; + String address; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + assetChainId = (int) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[assetChainId] is inValid"); + } + try { + assetId = (int) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[assetId] is inValid"); + } + try { + address = (String) params.get(3); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + + if (!Context.isChainExist(chainId)) { + return RpcResult.dataNotFound(); + } + RpcResult rpcResult = new RpcResult(); + Result balanceResult = legderTools.getBalanceAndNonceWithDecimals(chainId, assetChainId, assetId, address); + if (balanceResult.isFailed()) { + return rpcResult.setError(new RpcResultError(balanceResult.getStatus(), balanceResult.getMessage(), null)); + } return rpcResult.setResult(balanceResult.getData()); } @@ -495,6 +548,52 @@ public RpcResult getBalanceList(List params) { if (balanceResult.isFailed()) { return rpcResult.setError(new RpcResultError(balanceResult.getStatus(), balanceResult.getMessage(), null)); } + List list = balanceResult.getData(); + if (list != null && !list.isEmpty()) { + return rpcResult.setResult(list); + } else { + return rpcResult.setResult(Collections.emptyList()); + } + } + + @RpcMethod("getBalanceWithDecimalsList") + @ApiOperation(description = "查询账户余额", order = 107, detailDesc = "根据资产链ID和资产ID,查询本链账户对应资产的余额与nonce值集合") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "账户地址"), + @Parameter(parameterName = "assetIdList", requestType = @TypeDescriptor(value = List.class), parameterDes = "资产的ID集合") + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalance.class)) + public RpcResult getBalanceWithDecimalsList(List params) { + VerifyUtils.verifyParams(params, 3); + String address; + int chainId; + List coinDtoList; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + address = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[address] is inValid"); + } + try { + coinDtoList = (List ) params.get(2); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + + if (!AddressTool.validAddress(chainId, address)) { + return RpcResult.paramError("[address] is inValid"); + } + RpcResult rpcResult = new RpcResult(); + + Result> balanceResult = legderTools.getBalanceWithDecimalsList(chainId, coinDtoList, address); + if (balanceResult.isFailed()) { + return rpcResult.setError(new RpcResultError(balanceResult.getStatus(), balanceResult.getMessage(), null)); + } return rpcResult.setResult(balanceResult.getData()); } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 14176f4d26..990253405c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -23,12 +23,11 @@ */ package io.nuls.provider.api.resources; -import io.nuls.base.api.provider.crosschain.CrossChainProvider; -import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; -import io.nuls.provider.api.config.Config; import io.nuls.base.RPCUtil; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.crosschain.CrossChainProvider; +import io.nuls.base.api.provider.crosschain.facade.CreateCrossTxReq; import io.nuls.base.api.provider.ledger.LedgerProvider; import io.nuls.base.api.provider.transaction.TransferService; import io.nuls.base.api.provider.transaction.facade.TransferReq; @@ -41,9 +40,11 @@ import io.nuls.core.exception.NulsException; import io.nuls.core.model.StringUtils; import io.nuls.core.rpc.model.*; +import io.nuls.provider.api.config.Config; import io.nuls.provider.model.ErrorData; import io.nuls.provider.model.RpcClientResult; import io.nuls.provider.model.dto.AccountBalanceDto; +import io.nuls.provider.model.dto.AccountBalanceWithDecimalsDto; import io.nuls.provider.model.form.BalanceForm; import io.nuls.provider.model.form.CrossTransferForm; import io.nuls.provider.model.form.TransferForm; @@ -52,6 +53,7 @@ import io.nuls.provider.rpctools.LegderTools; import io.nuls.provider.rpctools.TransactionTools; import io.nuls.provider.rpctools.vo.AccountBalance; +import io.nuls.provider.rpctools.vo.AccountBalanceWithDecimals; import io.nuls.provider.utils.Log; import io.nuls.provider.utils.ResultUtil; import io.nuls.provider.utils.Utils; @@ -126,6 +128,32 @@ public RpcClientResult getBalance(@PathParam("address") String address, BalanceF return clientResult; } + @POST + @Path("/balanceWithDecimals/{address}") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "查询账户余额", order = 109, detailDesc = "根据资产链ID和资产ID,查询本链账户对应资产的余额与nonce值") + @Parameters({ + @Parameter(parameterName = "balanceDto", parameterDes = "账户余额表单", requestType = @TypeDescriptor(value = BalanceForm.class)) + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalanceWithDecimalsDto.class)) + public RpcClientResult getBalanceWithDecimals(@PathParam("address") String address, BalanceForm form) { + if (!AddressTool.validAddress(config.getChainId(), address)) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "address is invalid")); + } + if (form.getAssetChainId() < 1 || form.getAssetChainId() > 65535) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "assetChainId is invalid")); + } + if (form.getAssetId() < 1 || form.getAssetId() > 65535) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "assetId is invalid")); + } + Result balanceResult = legderTools.getBalanceAndNonceWithDecimals(config.getChainId(), form.getAssetChainId(), form.getAssetId(), address); + RpcClientResult clientResult = ResultUtil.getRpcClientResult(balanceResult); + if (clientResult.isSuccess()) { + clientResult.setData(new AccountBalanceWithDecimalsDto((AccountBalanceWithDecimals) clientResult.getData())); + } + return clientResult; + } + @POST @Path("/transaction/validate") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceWithDecimalsDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceWithDecimalsDto.java new file mode 100644 index 0000000000..40e0fa428b --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceWithDecimalsDto.java @@ -0,0 +1,109 @@ +package io.nuls.provider.model.dto; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.provider.rpctools.vo.AccountBalanceWithDecimals; + +/** + * @author: PierreLuo + * @date: 2019-06-30 + */ +@ApiModel +public class AccountBalanceWithDecimalsDto { + + @ApiModelProperty(description = "总余额") + private String total; + @ApiModelProperty(description = "锁定金额") + private String freeze; + @ApiModelProperty(description = "可用余额") + private String available; + @ApiModelProperty(description = "时间锁定金额") + private String timeLock; + @ApiModelProperty(description = " 共识锁定金额") + private String consensusLock; + @ApiModelProperty(description = "账户资产nonce值") + private String nonce; + @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") + private int nonceType; + @ApiModelProperty(description = "资产精度") + private int decimals; + + public AccountBalanceWithDecimalsDto() { + + } + + public AccountBalanceWithDecimalsDto(AccountBalanceWithDecimals info) { + this.total = info.getTotalBalance(); + this.freeze = info.getFreeze(); + this.available = info.getBalance(); + this.timeLock = info.getTimeLock(); + this.consensusLock = info.getConsensusLock(); + this.nonce = info.getNonce(); + this.nonceType = info.getNonceType(); + this.decimals = info.getDecimals(); + } + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; + } + + public String getTotal() { + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getFreeze() { + return freeze; + } + + public void setFreeze(String freeze) { + this.freeze = freeze; + } + + public String getAvailable() { + return available; + } + + public void setAvailable(String available) { + this.available = available; + } + + public String getTimeLock() { + return timeLock; + } + + public void setTimeLock(String timeLock) { + this.timeLock = timeLock; + } + + public String getConsensusLock() { + return consensusLock; + } + + public void setConsensusLock(String consensusLock) { + this.consensusLock = consensusLock; + } + + public String getNonce() { + return nonce; + } + + public void setNonce(String nonce) { + this.nonce = nonce; + } + + public int getNonceType() { + return nonceType; + } + + public void setNonceType(int nonceType) { + this.nonceType = nonceType; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java index 972d38c250..ed9d4f7e4f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/LegderTools.java @@ -12,6 +12,7 @@ import io.nuls.provider.api.model.AssetInfo; import io.nuls.provider.model.dto.ContractTokenInfoDto; import io.nuls.provider.rpctools.vo.AccountBalance; +import io.nuls.provider.rpctools.vo.AccountBalanceWithDecimals; import java.math.BigInteger; import java.util.ArrayList; @@ -58,6 +59,34 @@ public Result getBalanceAndNonce(int chainId, int assetChainId, .add(new BigInteger(balanceInfo.getConsensusLock())) .add(new BigInteger(balanceInfo.getTimeLock())).toString()); balanceInfo.setNonceType((Integer) map.get("nonceType")); + return new Result<>(balanceInfo); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + + public Result getBalanceAndNonceWithDecimals(int chainId, int assetChainId, int assetId, String address) { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("assetChainId", assetChainId); + params.put("address", address); + params.put("assetId", assetId); + try { + return callRpc(ModuleE.LG.abbr, "getBalanceNonce", params, (Function, Result>) map -> { + if (map == null) { + return null; + } + AccountBalanceWithDecimals balanceInfo = new AccountBalanceWithDecimals(); + balanceInfo.setBalance(map.get("available").toString()); + balanceInfo.setTimeLock(map.get("timeHeightLocked").toString()); + balanceInfo.setConsensusLock(map.get("permanentLocked").toString()); + balanceInfo.setFreeze(map.get("freeze").toString()); + balanceInfo.setNonce((String) map.get("nonce")); + balanceInfo.setTotalBalance(new BigInteger(balanceInfo.getBalance()) + .add(new BigInteger(balanceInfo.getConsensusLock())) + .add(new BigInteger(balanceInfo.getTimeLock())).toString()); + balanceInfo.setNonceType((Integer) map.get("nonceType")); AssetInfo assetInfo = ledgerAssetCache.getAssetInfo(assetChainId, assetId); if (assetInfo != null) { balanceInfo.setDecimals(assetInfo.getDecimals()); @@ -104,6 +133,50 @@ public Result getAsset(int assetChainId, int assetId) { } } + public Result> getBalanceWithDecimalsList(int chainId, List coinDtoList, String address) { + try { + List accountBalanceList = new ArrayList<>(); + for (int i = 0; i < coinDtoList.size(); i++) { + Map map = coinDtoList.get(i); + int assetChainId = (int) map.get("chainId"); + int assetId = (int) map.get("assetId"); + String contractAddress = (String) map.get("contractAddress"); + if (StringUtils.isBlank(contractAddress)) { + AccountBalanceWithDecimals accountBalance = getBalanceAndNonceWithDecimals(chainId, assetChainId, assetId, address).getData(); + accountBalance.setAssetChainId(assetChainId); + accountBalance.setAssetId(assetId); + accountBalance.setContractAddress(contractAddress); + accountBalanceList.add(accountBalance); + } else { + ContractTokenInfoDto dto = contractTools.getTokenBalance(chainId, contractAddress, address).getData(); + AccountBalanceWithDecimals accountBalance = new AccountBalanceWithDecimals(); + accountBalance.setAssetChainId(assetChainId); + accountBalance.setAssetId(assetId); + accountBalance.setContractAddress(contractAddress); + accountBalance.setDecimals((int) dto.getDecimals()); + if (dto == null) { + accountBalance.setBalance("0"); + accountBalance.setTotalBalance("0"); + accountBalance.setConsensusLock("0"); + } else { + accountBalance.setBalance(dto.getAmount()); + accountBalance.setConsensusLock(dto.getLockAmount()); + BigInteger balance = new BigInteger(dto.getAmount()); + BigInteger lockBalance = new BigInteger(dto.getLockAmount()); + accountBalance.setTotalBalance(balance.add(lockBalance).toString()); + } + accountBalance.setTimeLock("0"); + accountBalance.setFreeze("0"); + accountBalanceList.add(accountBalance); + } + } + return new Result>(accountBalanceList); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + + } + public Result> getBalanceList(int chainId, List coinDtoList, String address) { try { List accountBalanceList = new ArrayList<>(); @@ -124,7 +197,6 @@ public Result> getBalanceList(int chainId, List coinDt accountBalance.setAssetChainId(assetChainId); accountBalance.setAssetId(assetId); accountBalance.setContractAddress(contractAddress); - accountBalance.setDecimals((int) dto.getDecimals()); if (dto == null) { accountBalance.setBalance("0"); accountBalance.setTotalBalance("0"); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalanceWithDecimals.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalanceWithDecimals.java new file mode 100644 index 0000000000..eaea0796ce --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalanceWithDecimals.java @@ -0,0 +1,137 @@ +package io.nuls.provider.rpctools.vo; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + * @date: 2022/3/11 + */ +@ApiModel +public class AccountBalanceWithDecimals { + @ApiModelProperty(description = "资产链ID") + private int assetChainId; + @ApiModelProperty(description = "资产ID") + private int assetId; + @ApiModelProperty(description = "合约地址") + private String contractAddress; + @ApiModelProperty(description = "总余额") + private String totalBalance; + @ApiModelProperty(description = "可用余额") + private String balance; + @ApiModelProperty(description = "时间锁定金额") + private String timeLock; + @ApiModelProperty(description = " 共识锁定金额") + private String consensusLock; + @ApiModelProperty(description = "总锁定余额") + private String freeze; + @ApiModelProperty(description = "账户资产nonce值") + private String nonce; + @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") + private int nonceType; + @ApiModelProperty(description = "资产精度") + private int decimals; + + public AccountBalance toAccountBalance() { + AccountBalance accountBalance = new AccountBalance(); + accountBalance.setAssetChainId(assetChainId); + accountBalance.setAssetId(assetId); + accountBalance.setContractAddress(contractAddress); + accountBalance.setTotalBalance(totalBalance); + accountBalance.setBalance(balance); + accountBalance.setTimeLock(timeLock); + accountBalance.setConsensusLock(consensusLock); + accountBalance.setFreeze(freeze); + accountBalance.setNonce(nonce); + accountBalance.setNonceType(nonceType); + return accountBalance; + } + + public int getDecimals() { + return decimals; + } + + public void setDecimals(int decimals) { + this.decimals = decimals; + } + + public String getTotalBalance() { + return totalBalance; + } + + public void setTotalBalance(String totalBalance) { + this.totalBalance = totalBalance; + } + + public String getBalance() { + return balance; + } + + public void setBalance(String balance) { + this.balance = balance; + } + + public String getTimeLock() { + return timeLock; + } + + public void setTimeLock(String timeLock) { + this.timeLock = timeLock; + } + + public String getConsensusLock() { + return consensusLock; + } + + public void setConsensusLock(String consensusLock) { + this.consensusLock = consensusLock; + } + + public String getFreeze() { + return freeze; + } + + public void setFreeze(String freeze) { + this.freeze = freeze; + } + + public String getNonce() { + return nonce; + } + + public void setNonce(String nonce) { + this.nonce = nonce; + } + + public int getNonceType() { + return nonceType; + } + + public void setNonceType(int nonceType) { + this.nonceType = nonceType; + } + + public int getAssetChainId() { + return assetChainId; + } + + public void setAssetChainId(int assetChainId) { + this.assetChainId = assetChainId; + } + + public int getAssetId() { + return assetId; + } + + public void setAssetId(int assetId) { + this.assetId = assetId; + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } +} diff --git a/version b/version index 44b38b2433..623eed0eae 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.12.1 \ No newline at end of file +2.12.2 \ No newline at end of file From 4c71d6f5043c3758043b973b1d867497e5aaedf5 Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 11 Mar 2022 15:17:49 +0800 Subject: [PATCH 293/304] Release/pre prod (#659) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * 2.12.2 * update bean Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../api/jsonrpc/controller/AccountController.java | 2 +- .../io/nuls/provider/model/dto/AccountBalanceDto.java | 11 ----------- .../io/nuls/provider/rpctools/vo/AccountBalance.java | 10 ---------- 3 files changed, 1 insertion(+), 22 deletions(-) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 06c217a1a6..1e835009b1 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -563,7 +563,7 @@ public RpcResult getBalanceList(List params) { @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "账户地址"), @Parameter(parameterName = "assetIdList", requestType = @TypeDescriptor(value = List.class), parameterDes = "资产的ID集合") }) - @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalance.class)) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalanceWithDecimals.class)) public RpcResult getBalanceWithDecimalsList(List params) { VerifyUtils.verifyParams(params, 3); String address; diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java index e524f8e445..56670a516c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/AccountBalanceDto.java @@ -25,8 +25,6 @@ public class AccountBalanceDto { private String nonce; @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") private int nonceType; - @ApiModelProperty(description = "资产精度") - private int decimals; public AccountBalanceDto() { @@ -40,15 +38,6 @@ public AccountBalanceDto(AccountBalance info) { this.consensusLock = info.getConsensusLock(); this.nonce = info.getNonce(); this.nonceType = info.getNonceType(); - this.decimals = info.getDecimals(); - } - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; } public String getTotal() { diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java index 7c69d2aa0c..c1f0a257ed 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/vo/AccountBalance.java @@ -30,16 +30,6 @@ public class AccountBalance { private String nonce; @ApiModelProperty(description = "1:已确认的nonce值,0:未确认的nonce值") private int nonceType; - @ApiModelProperty(description = "资产精度") - private int decimals; - - public int getDecimals() { - return decimals; - } - - public void setDecimals(int decimals) { - this.decimals = decimals; - } public String getTotalBalance() { return totalBalance; From a9b5222fcbf13c412dfe2cfb98da2d7fa0e529de Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 10 Apr 2022 12:43:46 +0800 Subject: [PATCH 294/304] 2.12.5 (#660) * 2.12.3 * 2.12.3 * 2.12.5 --- genesis-block.json | 31787 +++++++++++++++- module.ncf | 89 +- .../java/io/nuls/poc/ConsensusBootStrap.java | 41 +- .../poc/service/impl/BlockServiceImpl.java | 16 +- .../poc/utils/validator/BlockValidator.java | 10 +- version | 2 +- 6 files changed, 30664 insertions(+), 1281 deletions(-) diff --git a/genesis-block.json b/genesis-block.json index a27d624510..073564433e 100644 --- a/genesis-block.json +++ b/genesis-block.json @@ -3,3016 +3,32343 @@ "time": "1568131200", "txs": [ { - "address": "tNULSeBaMqsEvVjMYMhG1b7zPwgwC7E5ZMGHFJ", - "amount": 4332886598800000, + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, "lockTime": 0 }, { - "address": "tNULSeBaMqpRQkHCs5ur3ck4LXEZB4qmmkPNo3", - "amount": 3687865664810469, + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, "lockTime": 0 }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "amount": 402524191370945, + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, "lockTime": 0 }, { - "address": "tNULSeBaMj5AkDSZeuXM5dHLJC34PuLVW7e3FH", - "amount": 195004013944801, + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "amount": 105070552877911, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, "lockTime": 0 }, { - "address": "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn", - "amount": 78999908314000, + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, "lockTime": 0 }, { - "address": "tNULSeBaMoVF1incqMLh3N48X123RrcjYc1uyP", - "amount": 65632918471416, + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, "lockTime": 0 }, { - "address": "tNULSeBaMx8TWnwjesj8mMm1M39RFrtjKfNMJy", - "amount": 61107327921041, + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "amount": 60583218133268, + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, "lockTime": 0 }, { - "address": "tNULSeBaMotPhSFTjU9UxmzS8uToKezBSSYUxS", - "amount": 48959898119175, + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "amount": 40780196885000, + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, "lockTime": 0 }, { - "address": "tNULSeBaMfHwuzJHxRre9U68f9Sog6QirDY5rm", - "amount": 38195067904649, + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, "lockTime": 0 }, { - "address": "tNULSeBaMsPQUyeKhcMEGRmhJArmX5P6hqF67k", - "amount": 30764298564179, + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "amount": 30555021413859, + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, "lockTime": 0 }, { - "address": "tNULSeBaMhbRWvHgawzAUB7ZppTNvWGfShFhyC", - "amount": 30000300000000, + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, "lockTime": 0 }, { - "address": "tNULSeBaMkz9cdFD2aCNacx6Hg7ArmRkg7t4Py", - "amount": 29727323742180, + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, "lockTime": 0 }, { - "address": "tNULSeBaMs7hgsVa64bLm9Q6cqGQyck8wcXi3S", - "amount": 27999091707675, + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "amount": 26421039847100, + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, "lockTime": 0 }, { - "address": "tNULSeBaMvjMmERz7DZgK85yjxwZkQUexVG4As", - "amount": 22998998370775, + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, "lockTime": 0 }, { - "address": "tNULSeBaMoq3YhYDzwxsd8jGmCRoY8nGudcbr8", - "amount": 22798997782100, + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, "lockTime": 0 }, { - "address": "tNULSeBaMgSVD53hrN7PaDw3vPSXZeB9GLHTTh", - "amount": 22707882567645, + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, "lockTime": 0 }, { - "address": "tNULSeBaMuUcKTDkhAgCBdqSrYJgcpn32K9iE5", - "amount": 20497372975793, + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "amount": 20020927877475, + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, "lockTime": 0 }, { - "address": "tNULSeBaMyZDUDjrsGhyxDvPG5PFy74aKarA2s", - "amount": 20015138581450, + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, "lockTime": 0 }, { - "address": "tNULSeBaN5xpQLvYBMJuybAzgzRkRXL4r3tqMx", - "amount": 20014645381031, + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, "lockTime": 0 }, { - "address": "tNULSeBaMtTT2CXwgvs9dRk29r6M8gay6z7oyN", - "amount": 20000000000000, + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "amount": 19999896895525, + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, "lockTime": 0 }, { - "address": "tNULSeBaNBDfYEsjGeUnBmdcEaxbYassQegqW2", - "amount": 19999012154815, + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, "lockTime": 0 }, { - "address": "tNULSeBaMh1vGGeiiA7BaF91y28JYLZgQTWRgf", - "amount": 19998999103725, + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, "lockTime": 0 }, { - "address": "tNULSeBaMrebYisUnwNMZdAdVtecytzZQff8i5", - "amount": 19779999900000, + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, "lockTime": 0 }, { - "address": "tNULSeBaMn2UyQqP1vHM6Qmw7iFiczYfQjp3DX", - "amount": 15326498000000, + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "amount": 14136961867446, + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "amount": 13561355703354, + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, "lockTime": 0 }, { - "address": "tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", - "amount": 11989898005700, + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, "lockTime": 0 }, { - "address": "tNULSeBaMhAhsRiHDM4Ng93LEVcDknK5sPFhYU", - "amount": 11692620767972, + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, "lockTime": 0 }, { - "address": "tNULSeBaMqtYBcBuPoYaxGDsASnrm6AwPL1kvZ", - "amount": 11111208965311, + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "amount": 10618259989975, + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "amount": 9999899418375, + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, "lockTime": 0 }, { - "address": "tNULSeBaMozDhzJQ9vpP4i17QpfoysuiiPGUA4", - "amount": 8888799502400, + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "amount": 8833553072716, + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "amount": 8542015890741, + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, "lockTime": 0 }, { - "address": "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM", - "amount": 6961730529425, + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "amount": 6904847361043, + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, "lockTime": 0 }, { - "address": "tNULSeBaMrNP548LVMEvppNThEjaMd2izU6jL6", - "amount": 6431825179804, + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "amount": 6232427524648, + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, "lockTime": 0 }, { - "address": "tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD", - "amount": 6003107334889, + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, "lockTime": 0 }, { - "address": "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24", - "amount": 6001148403729, + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, "lockTime": 0 }, { - "address": "tNULSeBaMfCD8hK8inyEKDBZpuuBUjLdiKgwnG", - "amount": 5969547053475, + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, "lockTime": 0 }, { - "address": "tNULSeBaMh4VafNqp5TJSmV5ogdZviq1nbXBSu", - "amount": 5967760560175, + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, "lockTime": 0 }, { - "address": "tNULSeBaMtgmrSYu98QwP1Mv8G5FwaMDkWSkuy", - "amount": 5967748486250, + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, "lockTime": 0 }, { - "address": "tNULSeBaMj7QaB8mYBBvkhaT3jCrXEMCEcRfb1", - "amount": 5967746727700, + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, "lockTime": 0 }, { - "address": "tNULSeBaMvQr8dVnk3f3DPvwCYX3ctTRtrTurD", - "amount": 5967593743575, + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, "lockTime": 0 }, { - "address": "tNULSeBaMoixxbUovqmzPyJ2AwYFAX2evKbuy9", - "amount": 5965125820650, + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, "lockTime": 0 }, { - "address": "tNULSeBaMvGmZSrFyQHptSL9yBCNSDfhWoxEHF", - "amount": 5964934449325, + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, "lockTime": 0 }, { - "address": "tNULSeBaMvaRhahBAYkZKQFhiSqcC67UiRzoSA", - "amount": 5964927619825, + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, "lockTime": 0 }, { - "address": "tNULSeBaMobzkpUc1zYcT67wheRPLg7cmas5A6", - "amount": 5964919229650, + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, "lockTime": 0 }, { - "address": "tNULSeBaMqjT3y9bGz4gBeJ7FJujmxBDTGdNp1", - "amount": 5964816737825, + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, "lockTime": 0 }, { - "address": "tNULSeBaMpaiBiMHWfAeTzdXhnfJXPfwXwKikc", - "amount": 5964739028925, + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, "lockTime": 0 }, { - "address": "tNULSeBaMi5yGkDbDgKGGX8TGxYdDttZ4KhpMv", - "amount": 5964722973575, + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, "lockTime": 0 }, { - "address": "tNULSeBaMuk5jx12ZXhaf5HLgcAr3WCwUhRGfT", - "amount": 5964722478275, + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, "lockTime": 0 }, { - "address": "tNULSeBaMiKWTid5Gj3FoqBFP7WomUzgumVeKc", - "amount": 5964639781975, + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, "lockTime": 0 }, { - "address": "tNULSeBaMjcximfy1JEGzjxodNMjrjydWuiffr", - "amount": 5964629618250, + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, "lockTime": 0 }, { - "address": "tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", - "amount": 5964628195925, + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, "lockTime": 0 }, { - "address": "tNULSeBaMqjttJV62GZ1iXVFDBudet3ey2aYSB", - "amount": 5964624558025, + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, "lockTime": 0 }, { - "address": "tNULSeBaMrL5netZkTo9FZb86xGSk47kq6TRBR", - "amount": 5964543295050, + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, "lockTime": 0 }, { - "address": "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN", - "amount": 5964536134025, + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, "lockTime": 0 }, { - "address": "tNULSeBaMjXxVzqB4T7zFoykRwfSZSD5ptAn4A", - "amount": 5964531159425, + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, "lockTime": 0 }, { - "address": "tNULSeBaMsUBLVxwoaswjWvghJyoUJfbfB6dja", - "amount": 5964525370025, + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, "lockTime": 0 }, { - "address": "tNULSeBaMgTcqskhNrE1ZSt3kZpdAv6B83npXE", - "amount": 5964520135200, + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, "lockTime": 0 }, { - "address": "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", - "amount": 5964430789025, + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, "lockTime": 0 }, { - "address": "tNULSeBaMj8XfWDjyKHZ1ybC3ShR8qKGyVKRcb", - "amount": 5964420012900, + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, "lockTime": 0 }, { - "address": "tNULSeBaMk52mfhacRWkmB98PrwCVXuEzCdQuk", - "amount": 5964338710975, + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, "lockTime": 0 }, { - "address": "tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", - "amount": 5964332794000, + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, "lockTime": 0 }, { - "address": "tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", - "amount": 5964326585975, + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, "lockTime": 0 }, { - "address": "tNULSeBaMfMk3RGzotV3Dw788NFTP52ep7SMnJ", - "amount": 5964324193925, + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, "lockTime": 0 }, { - "address": "tNULSeBaMqwycXLTWtjexSHHfa4jDTrVq9FMWE", - "amount": 5964320129400, + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, "lockTime": 0 }, { - "address": "tNULSeBaMshNPEnuqiDhMdSA4iNs6LMgjY6tcL", - "amount": 5964220175225, + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, "lockTime": 0 }, { - "address": "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL", - "amount": 5893129655025, + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "amount": 5552108112377, + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, "lockTime": 0 }, { - "address": "tNULSeBaMtK3FXr67yxTPWdRcjBYVZxHbWFEEV", - "amount": 5340406402515, + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "amount": 5007225392710, + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, "lockTime": 0 }, { - "address": "tNULSeBaMpZfSw6fSCc2wdcrUrXrys7K8b8KKq", - "amount": 5000000000000, + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, "lockTime": 0 }, { - "address": "tNULSeBaMmUZ2XFtazyZbJcAekufbbsbfJ3JG3", - "amount": 4998998354225, + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "amount": 4815809619488, + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "amount": 4782935168154, + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, "lockTime": 0 }, { - "address": "tNULSeBaMnpqbWZgX76CPCacjQPNtYUhpBH9VW", - "amount": 4399497227769, + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "amount": 4180796388195, + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, "lockTime": 0 }, { - "address": "tNULSeBaMiotxK9m7VBT1fDQrCpvQUpn2Z9kZN", - "amount": 4083015546214, + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, "lockTime": 0 }, { - "address": "tNULSeBaMnz3MTqzcF2kbqSGgUUvw3PohUJXFF", - "amount": 4069206784051, + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, "lockTime": 0 }, { - "address": "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", - "amount": 3959598161628, + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, "lockTime": 0 }, { - "address": "tNULSeBaMfySR2HrYGmryACfX6pdwVvWwaUQge", - "amount": 3827308013400, + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, "lockTime": 0 }, { - "address": "tNULSeBaMkxVPipHkDpzTmsW1ANPeFG62uimVD", - "amount": 3590000000000, + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, "lockTime": 0 }, { - "address": "tNULSeBaMpXNTNgjjBTQG9gfzHWHrqbfnakHsa", - "amount": 3070197304125, + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, "lockTime": 0 }, { - "address": "tNULSeBaMnXHhZUxtFvtgjKRd9oXU8KuzBzRqp", - "amount": 3009999516600, + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, "lockTime": 0 }, { - "address": "tNULSeBaMjdg2vMBNG3RXeduADiiHbypgBtrfM", - "amount": 2999999502850, + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, "lockTime": 0 }, { - "address": "tNULSeBaMnyciphhFrT52Lyc1aFtmieJgozjyU", - "amount": 2999471520675, + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "amount": 2997580915928, + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, "lockTime": 0 }, { - "address": "tNULSeBaMiZciRL4MFDPc5Lg9t7N9gEFQ9vBib", - "amount": 2994986422725, + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "amount": 2988878035125, + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, "lockTime": 0 }, { - "address": "tNULSeBaNBjHnZu1nRdk2Rt4gQfPrvxV8XDQe3", - "amount": 2927990645065, + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, "lockTime": 0 }, { - "address": "tNULSeBaMpECyE1oHY4QneHPDutR3Dyz6Ghv2M", - "amount": 2780099900000, + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "amount": 2775347540500, + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, "lockTime": 0 }, { - "address": "tNULSeBaN7NqbhEXcU7TgiyKjezCE9gAwn6nc5", - "amount": 2772815051761, + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, "lockTime": 0 }, { - "address": "tNULSeBaMsQ75kkEyeqetdYBTLpekUHsiKR267", - "amount": 2731610975828, + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "amount": 2666569034845, + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "amount": 2555330206743, + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, "lockTime": 0 }, { - "address": "tNULSeBaMfkVKA5opcmfEHW2oqW9X55FpyPhkX", - "amount": 2526201691750, + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "amount": 2510955381132, + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, "lockTime": 0 }, { - "address": "tNULSeBaMq3vN5KGJx9r4wX2cqunxpokXjU4sL", - "amount": 2509997036050, + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, "lockTime": 0 }, { - "address": "tNULSeBaMuDqkKST5mrsQDStQF1bodS2jUprfo", - "amount": 2256413711880, + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "amount": 2222222122222, + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "amount": 2202899500000, + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, "lockTime": 0 }, { - "address": "tNULSeBaMgrTieVrYGAvUJWBGjPsSTUyXhg9EX", - "amount": 2201174340450, + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, "lockTime": 0 }, { - "address": "tNULSeBaMrmywEP3oGJ37gme5zwtZ6sbQRqDXi", - "amount": 2100000000000, + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, "lockTime": 0 }, { - "address": "tNULSeBaMtCumY6ixakR76Yhrt5pk2Mu6aP8xV", - "amount": 2080000000000, + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "amount": 2054385511968, + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "amount": 2048351046028, + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "amount": 2047488447331, + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "amount": 2041463275119, + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, "lockTime": 0 }, { - "address": "tNULSeBaMruVHAFPsjrEGqYjT8rPNrrMNY6CnC", - "amount": 2010000000000, + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, "lockTime": 0 }, { - "address": "tNULSeBaMvUSPiNjNuLoNhBpgJxsVLRjG3wqkK", - "amount": 2009999900000, + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, "lockTime": 0 }, { - "address": "tNULSeBaMiShBYzc17JWZw9kg1pWubW84HGgNT", - "amount": 2009999900000, + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, "lockTime": 0 }, { - "address": "tNULSeBaMsJ2PRV2n9cGccUScr9bkLy1DMeD71", - "amount": 2004996165950, + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, "lockTime": 0 }, { - "address": "tNULSeBaMtVBsUHAKTeFKTNYFLMkf2DUdm9qy2", - "amount": 2002899668781, + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, "lockTime": 0 }, { - "address": "tNULSeBaMsNUEboyfNje7DjKVTHpe8DSZBJXPB", - "amount": 2001997352900, + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "amount": 2001248231222, + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, "lockTime": 0 }, { - "address": "tNULSeBaMfTzWhb6GyGDX6T9Upy9tpgvZpB8sh", - "amount": 2000999900000, + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, "lockTime": 0 }, { - "address": "tNULSeBaMgbsvbdvAAhjBpgGgxu3JBV5xMvt7A", - "amount": 2000999900000, + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, "lockTime": 0 }, { - "address": "tNULSeBaMkUMZF2YKb6HeZFiibW5aVrBVS8w3T", - "amount": 2000999900000, + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, "lockTime": 0 }, { - "address": "tNULSeBaMhCETTZ2QXTPSHSSmQqm2ubAGW31xM", - "amount": 2000999900000, + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, "lockTime": 0 }, { - "address": "tNULSeBaMkM7FGPuFUojjtoXHBfhSN9SPW1rWo", - "amount": 2000999499500, + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "amount": 2000599800000, + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, "lockTime": 0 }, { - "address": "tNULSeBaMqRgkRswMqW6eVx3J7HvLgbgMAv1a9", - "amount": 2000500000000, + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "amount": 2000199800000, + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "amount": 2000199800000, + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, "lockTime": 0 }, { - "address": "tNULSeBaMo4pu8f3bY7MrUuBy4f8r5NejbMjKi", - "amount": 2000099900000, + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, "lockTime": 0 }, { - "address": "tNULSeBaMuRVk3xdSY8aE9LpecmhMDbkeGC8xC", - "amount": 2000099900000, + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "amount": 2000099800000, + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "amount": 2000099800000, + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "amount": 2000099800000, + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "amount": 2000099800000, + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "amount": 2000099800000, + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "amount": 2000099800000, + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "amount": 2000099800000, + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "amount": 2000099800000, + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "amount": 2000099800000, + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "amount": 2000099800000, + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "amount": 2000099800000, + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "amount": 2000099700000, + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, "lockTime": 0 }, { - "address": "tNULSeBaMu7mpCeNUUPsWX4RqZuVT7V7YTS7BJ", - "amount": 2000098600000, + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, "lockTime": 0 }, { - "address": "tNULSeBaMn4uh1mTR43CX6oYNdUC1EDRZWNMAA", - "amount": 2000000000000, + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "amount": 2000000000000, + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "amount": 2000000000000, + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, "lockTime": 0 }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "amount": 2000000000000, + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, "lockTime": 0 }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "amount": 1983277946192, + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, "lockTime": 0 }, { - "address": "tNULSeBaMtgr7uompsnHtpVnP3MG8yDJJAip3L", - "amount": 1897986821950, + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, "lockTime": 0 }, { - "address": "tNULSeBaMtyRv6wa4Pzg44DrhmLSEoLWgMXudn", - "amount": 1892308762261, + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, "lockTime": 0 }, { - "address": "tNULSeBaMkHU3HYpX7xdf9mQWXciTz9xCStHuq", - "amount": 1804891384250, + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, "lockTime": 0 }, { - "address": "tNULSeBaMhnKHAfV4pUaQb3tohwGtMuLN2gYAL", - "amount": 1745045970780, + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, "lockTime": 0 }, { - "address": "tNULSeBaMxgFoTyurwGNLqVeutDy64XrbQjm1A", - "amount": 1613123824319, + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, "lockTime": 0 }, { - "address": "tNULSeBaMmK4LiYuWTSHGZhBag8r6Vo7CNnbsw", - "amount": 1579696998425, + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, "lockTime": 0 }, { - "address": "tNULSeBaMt2grPHgiTSUTrXFbfQ7i7Nf7rsZuu", - "amount": 1573680323525, + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, "lockTime": 0 }, { - "address": "tNULSeBaMhmHrnX4XJHbZxR4ypRun52s1uYnJB", - "amount": 1534344228772, + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, "lockTime": 0 }, { - "address": "tNULSeBaMpoX1tGJA1qaVbj9SaQx6MMhec3Rjz", - "amount": 1501601000000, + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, "lockTime": 0 }, { - "address": "tNULSeBaMyfDzgv1NoNq67KUpekRHePnPyn5Vw", - "amount": 1305762826389, + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, "lockTime": 0 }, { - "address": "tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm", - "amount": 1277942984025, + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, "lockTime": 0 }, { - "address": "tNULSeBaMmtHrFqE68VBFx11t7bunsJ7JAiEW3", - "amount": 1263693098075, + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, "lockTime": 0 }, { - "address": "tNULSeBaN8BPveRvyrbLSYjujhbfvw5Ace6arR", - "amount": 1212600000000, + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, "lockTime": 0 }, { - "address": "tNULSeBaN6yoGYh68qG2piYdid3A5DgUASYPTz", - "amount": 1210430000000, + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, "lockTime": 0 }, { - "address": "tNULSeBaMgn4xFaRh9d21WbqekVst5Q4Rnu27L", - "amount": 1200400000000, + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, "lockTime": 0 }, { - "address": "tNULSeBaMuTCTP1gtRyP9Y44YmFXteBdQLXCC6", - "amount": 1099999900000, + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, "lockTime": 0 }, { - "address": "tNULSeBaMvXFeu4ZsVuiG3bpboL9iCwk82jvws", - "amount": 999998740275, + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, "lockTime": 0 }, { - "address": "tNULSeBaMk48bGV4hvzPT1mqRkbJbtnndxNdbh", - "amount": 997094585141, + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, "lockTime": 0 }, { - "address": "tNULSeBaMqMW6jn1hpuWaVJSzPwqfWQnRCqTkA", - "amount": 994278520075, + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, "lockTime": 0 }, { - "address": "tNULSeBaMrGWJkAPzG7NmHz4YC2FGFhxDPH8Lk", - "amount": 932886854685, + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, "lockTime": 0 }, { - "address": "tNULSeBaMnQzvihr16GZfzJBhwRTinvEz5EPzg", - "amount": 925942495989, + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, "lockTime": 0 }, { - "address": "tNULSeBaMqEmpw7Z1nrgeNNdhaZHDu5NUae4rR", - "amount": 899999900000, + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, "lockTime": 0 }, { - "address": "tNULSeBaMt5qvhNEZ9FaWVATF6XY9y4SHnGZZN", - "amount": 899990536800, + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, "lockTime": 0 }, { - "address": "tNULSeBaMuPd3wtWTPr3tJa9zoWSwM3bSZWxbt", - "amount": 896331407533, + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, "lockTime": 0 }, { - "address": "tNULSeBaMpwTaE6VbR7zd8m93NfEtoBgJxEttj", - "amount": 829999900000, + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, "lockTime": 0 }, { - "address": "tNULSeBaMuh5xiqbTEkUFH6acHHuWCbhs3c9nC", - "amount": 799999900000, + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, "lockTime": 0 }, { - "address": "tNULSeBaMfBqLbWRxvvueAzgJmcziBJSjAhCTZ", - "amount": 624118978765, + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, "lockTime": 0 }, { - "address": "tNULSeBaMkdT9e3w9YF6ewSijXKXTPhLTy9N4h", - "amount": 598988990325, + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, "lockTime": 0 }, { - "address": "tNULSeBaMyTEe61hY6Lk7zaV97kBwP24bX31vS", - "amount": 588488574836, + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, "lockTime": 0 }, { - "address": "tNULSeBaMgF9ZefH5kn7LrfXjkEwn6M8u2rMFE", - "amount": 533892437900, + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, "lockTime": 0 }, { - "address": "tNULSeBaMjfjvW3hMpExr1Ws6FDHvpdcrReUsL", - "amount": 500784852120, + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, "lockTime": 0 }, { - "address": "tNULSeBaMqsWgWMUnUqTue6KhDWXve2wiDvyGJ", - "amount": 488524140000, + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, "lockTime": 0 }, { - "address": "tNULSeBaN6axbXuZG9hko5WPuTYz1r16YJBptQ", - "amount": 487998633989, + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, "lockTime": 0 }, { - "address": "tNULSeBaMq8njpYM63gjZUNcMe7mGq4mTxy16Q", - "amount": 458200010279, + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, "lockTime": 0 }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "amount": 446581185925, + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, "lockTime": 0 }, { - "address": "tNULSeBaMuyLErNaRSwU1DK9w4EUYFcgwR3A2a", - "amount": 412844960163, + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, "lockTime": 0 }, { - "address": "tNULSeBaMyaC6zMK88P6mHMgtjQ5GcCKrNgowt", - "amount": 409452402058, + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, "lockTime": 0 }, { - "address": "tNULSeBaMwXV9T65psDGgDXnMMMJLrdzd6z5sx", - "amount": 402100000000, + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, "lockTime": 0 }, { - "address": "tNULSeBaMuXBhixAkeCQ2JkHxnNb9QcGy5RX2r", - "amount": 399994026525, + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, "lockTime": 0 }, { - "address": "tNULSeBaMu8YGdXqKPuZPhmhD24sUR3HZ6sv58", - "amount": 399559218725, + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, "lockTime": 0 }, { - "address": "tNULSeBaMzK2FSk9Kx1grqcyCor4geWzptUhQs", - "amount": 375234867927, + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, "lockTime": 0 }, { - "address": "tNULSeBaMhp88ZRTE61P7Vten6x7Rv8H7z4sLt", - "amount": 361401017975, + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, "lockTime": 0 }, { - "address": "tNULSeBaMveAHMRtdZRMuc26tPdZGTm5fsfes1", - "amount": 358780483825, + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, "lockTime": 0 }, { - "address": "tNULSeBaNAsXsY6T5VUiKzLBcMwEdbksEdGsRE", - "amount": 336275500000, + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, "lockTime": 0 }, { - "address": "tNULSeBaNAjKT3AcUMGVtk8UhV5NnKp5PZFiKf", - "amount": 333300000000, + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, "lockTime": 0 }, { - "address": "tNULSeBaN8RWdsf3gKAZPsJcGkWahL525z24wn", - "amount": 322980000000, + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, "lockTime": 0 }, { - "address": "tNULSeBaMwTgnmqeTe7Rvh3DF7j9kKNs6TuwYK", - "amount": 320000000000, + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, "lockTime": 0 }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "amount": 318292236481, + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, "lockTime": 0 }, { - "address": "tNULSeBaMpHGW4B4zdcwbWLsYVeZorU4Cpkutx", - "amount": 310000000000, + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, "lockTime": 0 }, { - "address": "tNULSeBaMrQugpW2r8972qiM99W2dtE7UXAvFS", - "amount": 310000000000, + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, "lockTime": 0 }, { - "address": "tNULSeBaN2feyT23c9dVa74nuu2ERbgmGj9xeA", - "amount": 307316678664, + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, "lockTime": 0 }, { - "address": "tNULSeBaMncbvt4CfPSLe2DoW2bTkEgNERmUYk", - "amount": 305960134350, + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, "lockTime": 0 }, { - "address": "tNULSeBaMuSS12qrEhoyU71dN59rNCAmUmwd7x", - "amount": 305688722918, + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, "lockTime": 0 }, { - "address": "tNULSeBaMq8uueLNHGMryF3bJFC136ZF3SJEXE", - "amount": 304580580775, + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, "lockTime": 0 }, { - "address": "tNULSeBaMjBdte2yUGGvzc1j23T9MBbJFduRHR", - "amount": 302336904925, + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, "lockTime": 0 }, { - "address": "tNULSeBaMh3Dej16yXRVcs4JzZg8jKrUvWCoSW", - "amount": 300500000000, + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, "lockTime": 0 }, { - "address": "tNULSeBaMkm3XzW7Bt7Hf8Tpqb6kt8CMepyBgv", - "amount": 300500000000, + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, "lockTime": 0 }, { - "address": "tNULSeBaMszR8NPWVEajouXaRc3SZ17erv7yzQ", - "amount": 300500000000, + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, "lockTime": 0 }, { - "address": "tNULSeBaMr76pshx1JfMcWiZJdtyHqqLXZ9s1a", - "amount": 300100000000, + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, "lockTime": 0 }, { - "address": "tNULSeBaMiuX5v91YpyHbfy69kF2BRqWLS8GjE", - "amount": 300100000000, + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, "lockTime": 0 }, { - "address": "tNULSeBaMfuYA6HZChxkhsaTR6ppc8LCU3RmCr", - "amount": 299993489325, + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, "lockTime": 0 }, { - "address": "tNULSeBaMqieGzYWksFDLZHRGj4PJVhFAqopHA", - "amount": 299799499988, + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, "lockTime": 0 }, { - "address": "tNULSeBaMh1S5UVpcpu7dAmUjGdPEgMMix7cLY", - "amount": 298998293950, + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, "lockTime": 0 }, { - "address": "tNULSeBaMh8tKFHc1oH8ySn8gF8zRNGnvxsxiv", - "amount": 298699107700, + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, "lockTime": 0 }, { - "address": "tNULSeBaMjttuCzH7ntLhRPhGHsMKmKY4Kx9fq", - "amount": 297143976650, + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, "lockTime": 0 }, { - "address": "tNULSeBaMkpn4FsPRJgnUKY3RCLqnnCQBRBTjR", - "amount": 280099900000, + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, "lockTime": 0 }, { - "address": "tNULSeBaMpQTyMygD2DLtW8pPBxHRqjjZqfyMh", - "amount": 280000000000, + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, "lockTime": 0 }, { - "address": "tNULSeBaMpCBDufaKw81mYeTV3CKRqoiJUyMmp", - "amount": 250749132637, + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, "lockTime": 0 }, { - "address": "tNULSeBaN9XRjVc4N7EXj7C1exTsKe74jg1Mn5", - "amount": 237800000000, + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, "lockTime": 0 }, { - "address": "tNULSeBaMhZnRteniCy3UZqPjTbnWKBPHX1a5d", - "amount": 225800000000, + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, "lockTime": 0 }, { - "address": "tNULSeBaMmBCeUzTT2rfseGCG54tdAr8bmFDWW", - "amount": 216588531050, + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, "lockTime": 0 }, { - "address": "tNULSeBaMgUswXzXfQZDG7H2s7RfDtmhcP16LK", - "amount": 210000000000, + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, "lockTime": 0 }, { - "address": "tNULSeBaMgdorxRKEk3vzo2o4ZxvK1p7Wq47rR", - "amount": 208663978925, + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, "lockTime": 0 }, { - "address": "tNULSeBaN6HEALmcnaHLqttRbC3H9gJv71MA6R", - "amount": 207000000000, + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, "lockTime": 0 }, { - "address": "tNULSeBaMnTzBsXHnYkZXnjGpL1WiSZYBNSfVj", - "amount": 201928016350, + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, "lockTime": 0 }, { - "address": "tNULSeBaMr5SQn9fWZcmkgwNF3BsgAsbjKmNYk", - "amount": 201832500703, + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, "lockTime": 0 }, { - "address": "tNULSeBaNAUWvnvfKCNy4ZStT9by8eza4rMo7N", - "amount": 200100348561, + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, "lockTime": 0 }, { - "address": "tNULSeBaMzYSFpjZFdiLo8nuJmpEAPv7j4MHaz", - "amount": 200000348385, + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, "lockTime": 0 }, { - "address": "tNULSeBaMizCG38x1YkcdVjPVhi842hHGbS7A4", - "amount": 199994535210, + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, "lockTime": 0 }, { - "address": "tNULSeBaMoMnHPK96iBVjkTVR74uMr9YhriPf5", - "amount": 199488974575, + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, "lockTime": 0 }, { - "address": "tNULSeBaMnAaKZZH4NhSGkd6S2si1kvA3TRqUV", - "amount": 199264097125, + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, "lockTime": 0 }, { - "address": "tNULSeBaMjC6gH6L9ZSeaaXjUDsHvNnxy4SuW1", - "amount": 199117809325, + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, "lockTime": 0 }, { - "address": "tNULSeBaMja5MimxTowHsCK4CDMSN3se8MkqQT", - "amount": 198997767225, + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, "lockTime": 0 }, { - "address": "tNULSeBaMnrUroacSG9nAS18X6wrmWBoEPigGV", - "amount": 198996705725, + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, "lockTime": 0 }, { - "address": "tNULSeBaMt6gXabjrzirP7Rtyr9gEuL7RsGHcM", - "amount": 197996936400, + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, "lockTime": 0 }, { - "address": "tNULSeBaMmXVUKXCxBcBZrFkceg5gK3bgKx9Un", - "amount": 183883201525, + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, "lockTime": 0 }, { - "address": "tNULSeBaMuKSCtT7m2r1FpniwFtdGbXPLhXfPt", - "amount": 159999700000, + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, "lockTime": 0 }, { - "address": "tNULSeBaMjmopdVK9K3xiwLX9PTwch9zE4o5ax", - "amount": 149999900000, + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, "lockTime": 0 }, { - "address": "tNULSeBaMsQskY7f5DSXcC6MkizRCNE6a3gaCX", - "amount": 142000000000, + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, "lockTime": 0 }, { - "address": "tNULSeBaMrQcmCg1AZGE4635zscL9AceSMGyLm", - "amount": 140601995550, + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, "lockTime": 0 }, { - "address": "tNULSeBaN3HLnyzXGJKm1NMv86qmoNBei6Sg6w", - "amount": 130000000000, + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, "lockTime": 0 }, { - "address": "tNULSeBaMrWZZ3S93ukYpi4Vxo9vZ11STJhNLe", - "amount": 129999900000, + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, "lockTime": 0 }, { - "address": "tNULSeBaMyirf3piDmxnmHK5JZtPk4X7pv84FF", - "amount": 120200000000, + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, "lockTime": 0 }, { - "address": "tNULSeBaMmAY646TmLxZWdkk1SfTBLQSgmTReV", - "amount": 110043427250, + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, "lockTime": 0 }, { - "address": "tNULSeBaMj5v2i5XNjwKy8VvHNFW8ta3AoLhkL", - "amount": 110000000000, + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, "lockTime": 0 }, { - "address": "tNULSeBaMucpLmWwwSZoUe4LJPvuB57P21BxRA", - "amount": 109999900000, + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, "lockTime": 0 }, { - "address": "tNULSeBaMfCBBcj4FKvuDKXjsGG7aGXvLH5p2p", - "amount": 108981741525, + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, "lockTime": 0 }, { - "address": "tNULSeBaN12GKfFxyR2JwHGNz9EcE6o4oiYkui", - "amount": 105100000000, + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, "lockTime": 0 }, { - "address": "tNULSeBaN6bQb5u6nhyqgRQ9AVaCVYZTAoyxLK", - "amount": 102000000000, + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, "lockTime": 0 }, { - "address": "tNULSeBaMfpximz7mxS3tM8j1jAvskHYriMFJE", - "amount": 101871002025, + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, "lockTime": 0 }, { - "address": "tNULSeBaMm4w7jwvHneLLT5kxDbJ2SD2ZYDSxm", - "amount": 100299900000, + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, "lockTime": 0 }, { - "address": "tNULSeBaMt9xPHZZcnGT1v442YtCAY8s935y5G", - "amount": 100097056725, + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, "lockTime": 0 }, { - "address": "tNULSeBaN9vLiLEAZFJZooDahtdeQ8ExswaUYr", - "amount": 100000000000, + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, "lockTime": 0 }, { - "address": "tNULSeBaMn2N2BXzX6R1vTn2apxDFBgN5tEh3g", - "amount": 100000000000, + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, "lockTime": 0 }, { - "address": "tNULSeBaMjUDi6DJiJqjzU8cCgLUEU55WUXwpu", - "amount": 100000000000, + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, "lockTime": 0 }, { - "address": "tNULSeBaMkdoobdBbpyovqeWMorSRL4Hkp8Ybg", - "amount": 99991621425, + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, "lockTime": 0 }, { - "address": "tNULSeBaMm63AcisvbLTZwVsKesS1EQsbgZRHg", - "amount": 99699700000, + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, "lockTime": 0 }, { - "address": "tNULSeBaMrnQ18CTewGJM6Xwhb1zPEWjnCSky7", - "amount": 98950443200, + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, "lockTime": 0 }, { - "address": "tNULSeBaMfFyNfsv3Y9zo7yqGXgq6Bj51NZRMC", - "amount": 98486937100, + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, "lockTime": 0 }, { - "address": "tNULSeBaNAh7MSQsFvbUahQeHFu8f2QBKLav9r", - "amount": 98400000000, + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, "lockTime": 0 }, { - "address": "tNULSeBaMhUBun3CRdWjuD7mwvjdbJ9e8KRWsJ", - "amount": 98300000000, + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, "lockTime": 0 }, { - "address": "tNULSeBaMjUnoMkTh9bSCYu1sGJM2vQZqGnvMK", - "amount": 96799200000, + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, "lockTime": 0 }, { - "address": "tNULSeBaMurf6BwQC7LTC4nhWGD3w1J8uM4DLp", - "amount": 93969831700, + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, "lockTime": 0 }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "amount": 92699305721, + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, "lockTime": 0 }, { - "address": "tNULSeBaMoWtPm8Jo8sPP3y7xFg7KwT8kGMNsK", - "amount": 89999900000, + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, "lockTime": 0 }, { - "address": "tNULSeBaMrZFmYiQWS1NCvQxTpJam9HVNTsdMM", - "amount": 89999700000, + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, "lockTime": 0 }, { - "address": "tNULSeBaMkdkA2x6Jyb1gA9G9erLrCsWgTG27F", - "amount": 89959456375, + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, "lockTime": 0 }, { - "address": "tNULSeBaN9qsnBDwCzBGPzATf5gbvUd5xfb76w", - "amount": 89000000000, + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, "lockTime": 0 }, { - "address": "tNULSeBaMjtRZRQYUcQZVrPjYtTxAhLdawX4SU", - "amount": 88748393900, + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, "lockTime": 0 }, { - "address": "tNULSeBaMvHu3vTBRoxDoB9BYEXeCLnsKo6QP5", - "amount": 82499900000, + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, "lockTime": 0 }, { - "address": "tNULSeBaMiM4MAQTWP59eSfFehSjftoFigm4qz", - "amount": 81986713775, + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, "lockTime": 0 }, { - "address": "tNULSeBaMhsKRyBzQAFrCsPb2BErspo2cML5R4", - "amount": 80499900000, + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, "lockTime": 0 }, { - "address": "tNULSeBaMha6honSL9KqfQ9iD8rzV8mAEsZEzX", - "amount": 80499900000, + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, "lockTime": 0 }, { - "address": "tNULSeBaMpFWLuiNNNm5vt6er65yX1iidCvdaw", - "amount": 80499900000, + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, "lockTime": 0 }, { - "address": "tNULSeBaMgpDNXuP5Qov4uVRSLAyV3FoYvPxfq", - "amount": 80499900000, + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, "lockTime": 0 }, { - "address": "tNULSeBaMoMJoA8GSadgHtNwyxLYFpUs2on97V", - "amount": 80499900000, + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, "lockTime": 0 }, { - "address": "tNULSeBaMsWCwyzBMAq2Hmo84BfN6nYTRgH318", - "amount": 80499900000, + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, "lockTime": 0 }, { - "address": "tNULSeBaMnCUd2EzDh9dLcJNXomy8hu8jVoi9Q", - "amount": 80499900000, + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, "lockTime": 0 }, { - "address": "tNULSeBaMmBZVBE7uJAwdrE94jWCcrGkphKcXP", - "amount": 80499900000, + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, "lockTime": 0 }, { - "address": "tNULSeBaMiUcxAEQi1yWSNJik8Z9pL6oFLZE3m", - "amount": 80499900000, + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, "lockTime": 0 }, { - "address": "tNULSeBaMjQHtGmjDdENDcwiyAPkJRS5WzwmwH", - "amount": 80499900000, + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, "lockTime": 0 }, { - "address": "tNULSeBaMmHrzxgXWPFFZYkTWG6Uc86bTgKe1t", - "amount": 80499900000, + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, "lockTime": 0 }, { - "address": "tNULSeBaMpGd1ZJQen5gPuiQCM41L9NhEAX95D", - "amount": 80499900000, + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, "lockTime": 0 }, { - "address": "tNULSeBaMiMt1V8nDQbFrojxjMgzLaDZhkymzb", - "amount": 80499900000, + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, "lockTime": 0 }, { - "address": "tNULSeBaMpZFhrQTwPJZitg23Pt6gPXYQN7Deu", - "amount": 80499900000, + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, "lockTime": 0 }, { - "address": "tNULSeBaMpvDaVSHszybk7Xy4BbxgUw61DHSQq", - "amount": 80499900000, + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, "lockTime": 0 }, { - "address": "tNULSeBaMo7H1W9iafGhsVD1FTwxC615iQAEc9", - "amount": 80499900000, + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, "lockTime": 0 }, { - "address": "tNULSeBaMm4y26B2cJiL6sCZ8RQFL3KCJxQPuN", - "amount": 80499900000, + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, "lockTime": 0 }, { - "address": "tNULSeBaMtdJDPWMacUPACyXyyLZDf7YMvQpHc", - "amount": 80499900000, + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, "lockTime": 0 }, { - "address": "tNULSeBaMrA1q7cWZC3gqwprjfcfi2TqKzVhYx", - "amount": 80499900000, + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, "lockTime": 0 }, { - "address": "tNULSeBaMfttuYRKhkwE659XWeJgNvhQh64Lj9", - "amount": 80499900000, + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, "lockTime": 0 }, { - "address": "tNULSeBaMkBoL5JmcwMCjzk8PKsxvtXvcttwa4", - "amount": 80399900000, + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, "lockTime": 0 }, { - "address": "tNULSeBaMpVdwtAD2k33tiCbEsPXhpV3E6Zvgp", - "amount": 80000000000, + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, "lockTime": 0 }, { - "address": "tNULSeBaMqumJQ9n7ottDYRrq4zEmWqV4CaKtM", - "amount": 77551499050, + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, "lockTime": 0 }, { - "address": "tNULSeBaMocFMpJDavQuonGyf67RYrmomyUWhZ", - "amount": 74768701600, + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, "lockTime": 0 }, { - "address": "tNULSeBaMhezYhsW2DpdF8P9UPcnUz1fV1QSsj", - "amount": 68973500450, + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, "lockTime": 0 }, { - "address": "tNULSeBaMnSYRzgPCwRZML1JQ4kDNASDmqKYf9", - "amount": 68040813100, + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, "lockTime": 0 }, { - "address": "tNULSeBaMiKUm9zpU1bhXeaaZt2AdLgPTs3T28", - "amount": 51339780050, + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, "lockTime": 0 }, { - "address": "tNULSeBaMkyGhH7gKPgtzhVLJm2gWDeSw7hyiu", - "amount": 45112902300, + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, "lockTime": 0 }, { - "address": "tNULSeBaMw4bC6QoquDYGnGDb51kaMnUBcQ8C9", - "amount": 42837864386, + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, "lockTime": 0 }, { - "address": "tNULSeBaMhJzhygR1Q9YcUvNY2FmYeQjkgdgUv", - "amount": 42016243075, + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, "lockTime": 0 }, { - "address": "tNULSeBaMqQYQswMcRur5NSRV89Fx3p6EmizGi", - "amount": 40408500000, + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, "lockTime": 0 }, { - "address": "tNULSeBaNAGNRLAwj9kinX9asqzmksBDc9PnJs", - "amount": 37025000055, + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, "lockTime": 0 }, { - "address": "tNULSeBaMg8FsV4PZegyg5XKhSxskXvykWm7iY", - "amount": 36900000000, + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, "lockTime": 0 }, { - "address": "tNULSeBaN1HXYCWCoV6sf16Vduxe5uuN5YGNpk", - "amount": 35800000000, + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, "lockTime": 0 }, { - "address": "tNULSeBaMvSWnH5nxRxd55L2vee1Fi3rdhHZDN", - "amount": 32974999945, + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, "lockTime": 0 }, { - "address": "tNULSeBaNB9vnu1481jYx1oMRobZEa4s4cz3Zu", - "amount": 32934100000, + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, "lockTime": 0 }, { - "address": "tNULSeBaMr8K4mu93gUZrn2H8eQhWhvgKRDVVm", - "amount": 29200000000, + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, "lockTime": 0 }, { - "address": "tNULSeBaN293SPzwWKE6nQx6CmxD2x31C1zc5j", - "amount": 26100000000, + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, "lockTime": 0 }, { - "address": "tNULSeBaMmEa7Ev6cBVNQkvZhsSi1QGxCVHF7g", - "amount": 22951608700, + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, "lockTime": 0 }, { - "address": "tNULSeBaN9kxutqCocCcSV8UdbnHuH1dRS6Zs5", - "amount": 21800000000, + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, "lockTime": 0 }, { - "address": "tNULSeBaMgNDafnYx7KkaRR5fgAovBgbqDQtLB", - "amount": 20000000000, + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, "lockTime": 0 }, { - "address": "tNULSeBaMfU7eBAPSHSSrR1yd32DmxSixi9bFS", - "amount": 18900000000, + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, "lockTime": 0 }, { - "address": "tNULSeBaMh1nrPFYaqdQBBWEV9kwjGtpVuNzK3", - "amount": 18098700000, + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, "lockTime": 0 }, { - "address": "tNULSeBaMm8rojByJRyfBf3avRsVjcUcaGZia1", - "amount": 17923520375, + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, "lockTime": 0 }, { - "address": "tNULSeBaMqwCW3Lk81XATBqUfuAkVncxAtxkkQ", - "amount": 16325107000, + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, "lockTime": 0 }, { - "address": "tNULSeBaMsDRLyDiAzcBfCPSxyvpBke6YGhpeM", - "amount": 14999400000, + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, "lockTime": 0 }, { - "address": "tNULSeBaMvw2QtYPhLjgCFuBQefpXDczAdd49C", - "amount": 13044000000, + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, "lockTime": 0 }, { - "address": "tNULSeBaMjjc67wsJHYmb89zxRKFMgZewwaZdW", - "amount": 12783997600, + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, "lockTime": 0 }, { - "address": "tNULSeBaMrYDwtXhATECvyQNup8usLnYpC7d4x", - "amount": 11459355900, + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, "lockTime": 0 }, { - "address": "tNULSeBaN76m184945bhSandg4zQc292KuBk93", - "amount": 11200000000, + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, "lockTime": 0 }, { - "address": "tNULSeBaMy3VXYAXB4UjYYHaELqjSe4BCdUjv7", - "amount": 10220000000, + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, "lockTime": 0 }, { - "address": "tNULSeBaN4fXFnUpGPBwXPCDUD4qfKC52Sm5KU", - "amount": 10115000000, + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, "lockTime": 0 }, { - "address": "tNULSeBaN4PqjeTLprLcrgSt44jNhLV3rh2ugQ", - "amount": 10000000000, + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, "lockTime": 0 }, { - "address": "tNULSeBaMpcCNcaXRc8JQ7XWJEzZQJg9SKcvMY", - "amount": 10000000000, + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, "lockTime": 0 }, { - "address": "tNULSeBaMhLt1Pzd4sDJqsJSN66yUvawXqgP6N", - "amount": 10000000000, + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, "lockTime": 0 }, { - "address": "tNULSeBaN3FAdYCkf7ZUkNnCwHeBE62USAWnz8", - "amount": 10000000000, + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, "lockTime": 0 }, { - "address": "tNULSeBaN6s55WBvjH5w16YUL9vPqPZRuC5b41", - "amount": 10000000000, + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, "lockTime": 0 }, { - "address": "tNULSeBaMpxNETvTsve8TuB3J4MvFEboB158JN", - "amount": 10000000000, + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, "lockTime": 0 }, { - "address": "tNULSeBaMf99m2wkNvZwTnjVDhWoMvXDeypPwC", - "amount": 10000000000, + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, "lockTime": 0 }, { - "address": "tNULSeBaMuKCpUDqmLBhDUSbbgAzzLsdbrRHxj", - "amount": 9993122025, + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, "lockTime": 0 }, { - "address": "tNULSeBaMgp44eQKpEXgYXjJEcp9E8ThERyTH4", - "amount": 9991715100, + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, "lockTime": 0 }, { - "address": "tNULSeBaMutmD7DUbPg2Tjv5WdC17jHbGdWrFV", - "amount": 9990369025, + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, "lockTime": 0 }, { - "address": "tNULSeBaMsxLBS9JgeYneiTNdsdoKn2Tt1PeV5", - "amount": 9990272900, + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, "lockTime": 0 }, { - "address": "tNULSeBaMgSUTEg4Qbdb4TU5qwLqh1vBLeYE8u", - "amount": 9990251900, + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, "lockTime": 0 }, { - "address": "tNULSeBaMjaDW6c1uB5GLZynwiLib3HuxvbwBV", - "amount": 9990212375, + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, "lockTime": 0 }, { - "address": "tNULSeBaMmY5gNkb8vSDqpoXS1CRcV4jzyo6Rv", - "amount": 9990188125, + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, "lockTime": 0 }, { - "address": "tNULSeBaMioR8t5cPAz4DdHMHGmiCQPSUBHGMR", - "amount": 9990185875, + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, "lockTime": 0 }, { - "address": "tNULSeBaMsN1pYQcy7XnVNhWePoRrmufVFNvRW", - "amount": 9989270475, + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, "lockTime": 0 }, { - "address": "tNULSeBaMnkCagbfuGpbnZVyE5AFobCYoTYL8J", - "amount": 9989207450, + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, "lockTime": 0 }, { - "address": "tNULSeBaMsHu9BwXsufaoM35sRJCYpytkx1oeM", - "amount": 9989201100, + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, "lockTime": 0 }, { - "address": "tNULSeBaMu6mmd3qV9JJ6ftSMbqqZaF1aYRK4p", - "amount": 9989159225, + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, "lockTime": 0 }, { - "address": "tNULSeBaMjkmRL3za8XmvDL5XpxCqQmwq53b6t", - "amount": 9989157325, + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, "lockTime": 0 }, { - "address": "tNULSeBaMp51TvTvSn1N23Yap1uGGjTomdbrZ8", - "amount": 9989143375, + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, "lockTime": 0 }, { - "address": "tNULSeBaMp41SZT8MWJNCrnDoWa4YB8xaQHBp3", - "amount": 9989140250, + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, "lockTime": 0 }, { - "address": "tNULSeBaMhL1Dq4RGSbmuyxM74XNvKJg2NHyvu", - "amount": 9989133250, + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, "lockTime": 0 }, { - "address": "tNULSeBaMpdHrYFnxTBkqE6mCjEkbEd5D7KZJm", - "amount": 9989132075, + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, "lockTime": 0 }, { - "address": "tNULSeBaMoDgz9kN8KMmgt9NvptDpU8BDTrP8Z", - "amount": 9989099675, + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, "lockTime": 0 }, { - "address": "tNULSeBaMuvw2zQFqvQinViV1X2yn4r4HLdxNs", - "amount": 9989099575, + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, "lockTime": 0 }, { - "address": "tNULSeBaMrBmLKaeDFQ2azvidT3ZhDSYmRUEhg", - "amount": 9989066925, + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, "lockTime": 0 }, { - "address": "tNULSeBaMjVYd4sQbq96yrHn5qtJHXKwCqWciz", - "amount": 9988986475, + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, "lockTime": 0 }, { - "address": "tNULSeBaMfLkoQo7rzUBh8Bq1V7D9fWmGkJYfs", - "amount": 9988217650, + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, "lockTime": 0 }, { - "address": "tNULSeBaMmD4qoJM7oZw1Q4wnK3BAWQ6TvWVZk", - "amount": 9988136525, + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, "lockTime": 0 }, { - "address": "tNULSeBaMpsf1wDtohRKbiUkpXLbMg62ki3wML", - "amount": 9988064350, + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, "lockTime": 0 }, { - "address": "tNULSeBaMpqMhaZcqq1uthY57HmHsrAGKYcq8n", - "amount": 9988057325, + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, "lockTime": 0 }, { - "address": "tNULSeBaMgFtr3vmggvDv6rLp58AxSSSh9CwkN", - "amount": 9988036925, + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, "lockTime": 0 }, { - "address": "tNULSeBaMqzXqByMV5eqmD8m9AXuzRx95UkK9h", - "amount": 9988036800, + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, "lockTime": 0 }, { - "address": "tNULSeBaMmYaED8cmXXhbvnWfYEGvH3AcLMECs", - "amount": 9988013775, + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, "lockTime": 0 }, { - "address": "tNULSeBaMthF1avDFtBzAijVQcxDbqxDVDQpsZ", - "amount": 9988000500, + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, "lockTime": 0 }, { - "address": "tNULSeBaMud7T7gpGksc4zDUCeDbie5TEaMTp9", - "amount": 9987977825, + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, "lockTime": 0 }, { - "address": "tNULSeBaMo5QjuTnBUiQFnjLHtLHPxHqQB2jnU", - "amount": 9987896575, + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, "lockTime": 0 }, { - "address": "tNULSeBaMrJjx13CQnw5ekfin9iev476AtHntU", - "amount": 9987885850, + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, "lockTime": 0 }, { - "address": "tNULSeBaMp9p3g4wGjyYsf3j2cG1mVwQaq7AbX", - "amount": 9987829800, + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, "lockTime": 0 }, { - "address": "tNULSeBaMq8EkbeiMWrQoPBejcLeVJ6eyhoLkT", - "amount": 9987109225, + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, "lockTime": 0 }, { - "address": "tNULSeBaMj8zKFgwpS8JbkrJjeAuevGByJ8DNv", - "amount": 9987074300, + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, "lockTime": 0 }, { - "address": "tNULSeBaMkJYxaAWnhAajTwcwaUAdUBYcHTNzQ", - "amount": 9987068600, + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, "lockTime": 0 }, { - "address": "tNULSeBaMhnjKk4uYAUte4nD6KtuDdnDNrJLsm", - "amount": 9986960825, + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, "lockTime": 0 }, { - "address": "tNULSeBaMgPAj9hK7G6WQG2wesb4L2SiUqabbB", - "amount": 9986874475, + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, "lockTime": 0 }, { - "address": "tNULSeBaMsbEcTaG82AzNTUb7iz7cNDQFytkJW", - "amount": 9986820925, + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, "lockTime": 0 }, { - "address": "tNULSeBaMocKfHz4TRMdAqWPoG3SsD5RLXsUHD", - "amount": 9986732575, + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, "lockTime": 0 }, { - "address": "tNULSeBaMqkCRrbaCQheCZLmgWUPegWA6LqbtB", - "amount": 9986727550, + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, "lockTime": 0 }, { - "address": "tNULSeBaMtRDukoLgjQ8MyLV1YLeE5q5NJdvxQ", - "amount": 9986668925, + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, "lockTime": 0 }, { - "address": "tNULSeBaMsUCKvjRmGbAW6T1QtR268NgQkvshr", - "amount": 9986167775, + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, "lockTime": 0 }, { - "address": "tNULSeBaMjwNhrcwZSiMtU2KyprEEBJUNu1mTq", - "amount": 9985438350, + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, "lockTime": 0 }, { - "address": "tNULSeBaMm4iTqPbdskbqTLs73iHWD74QKN9jQ", - "amount": 9984401500, + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, "lockTime": 0 }, { - "address": "tNULSeBaMkaXoiDye4bCh7hJsFwa1GHXhqGFnL", - "amount": 9923901850, + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, "lockTime": 0 }, { - "address": "tNULSeBaMmAvbnNbDH478fdxGhbAPwTB2H7rt7", - "amount": 9916023075, + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, "lockTime": 0 }, { - "address": "tNULSeBaMfei9DVpt8KZdKmw4cxQrPyVmPyXx7", - "amount": 9913032825, + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, "lockTime": 0 }, { - "address": "tNULSeBaMmf4fWMc4nJAFzi9i3nYopxJSU355n", - "amount": 9899900000, + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, "lockTime": 0 }, { - "address": "tNULSeBaMr5NKgxRQVhqqqZcxZcJgQEqZMpAUX", - "amount": 9899713150, + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, "lockTime": 0 }, { - "address": "tNULSeBaMiZAJ5pe9zrGLPySL2r5C6WwJfCxpt", - "amount": 9893677175, + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, "lockTime": 0 }, { - "address": "tNULSeBaMv3pAbsaNKYyzRPUPKp5gkihMS1xyK", - "amount": 9499800000, + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, "lockTime": 0 }, { - "address": "tNULSeBaMoKaKmNcfzoDQFhBrW1pkJJFuLHBTm", - "amount": 9489900000, + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, "lockTime": 0 }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "amount": 9399800000, + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, "lockTime": 0 }, { - "address": "tNULSeBaMvL6XgxSM39LmRUV3ZXiGAacCLA25u", - "amount": 9299700000, + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, "lockTime": 0 }, { - "address": "tNULSeBaMz9Pk3zqZsY8Tif49V86aDbt2Pa8Vk", - "amount": 9157657092, + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, "lockTime": 0 }, { - "address": "tNULSeBaMjiQJVKpjD3naTcg4Zhvi9HY6SW6Zp", - "amount": 9000000000, + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, "lockTime": 0 }, { - "address": "tNULSeBaMraUE98YQQVkUyHaEim4n3Vx4YMfKW", - "amount": 8989350600, + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, "lockTime": 0 }, { - "address": "tNULSeBaMtPWbFyNzwbrmQXYVMdFjEbvWaRF1U", - "amount": 8989060600, + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, "lockTime": 0 }, { - "address": "tNULSeBaN6DYup5eR8pWC4TAyXsMb1eUJPt1hP", - "amount": 8800000000, + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, "lockTime": 0 }, { - "address": "tNULSeBaN4Dn9tSSBXd9s2uA14RF8viWFAaKCZ", - "amount": 8800000000, + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, "lockTime": 0 }, { - "address": "tNULSeBaMtk4yQ7SNDLb2GXaNXjXFhWxyP2wU6", - "amount": 8539672725, + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, "lockTime": 0 }, { - "address": "tNULSeBaMqf9RBq5tGpBHSfT7EETy5FTtwN5yk", - "amount": 8246417350, + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, "lockTime": 0 }, { - "address": "tNULSeBaMiaDqM8UsMt8Rp8Sy1GLr44J5basdg", - "amount": 8241960275, + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, "lockTime": 0 }, { - "address": "tNULSeBaN9825A5YBgCC8S9pUKsqM5bjryv7jU", - "amount": 8000000000, + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, "lockTime": 0 }, { - "address": "tNULSeBaMv46LcWE94oPBGobWXNgdWoKAEjBPg", - "amount": 7889831300, + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, "lockTime": 0 }, { - "address": "tNULSeBaMqPjd9TrkBXfpPGBECzD3FiUA1yR4r", - "amount": 7550884450, + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, "lockTime": 0 }, { - "address": "tNULSeBaMvfppg5xcfgaeeB2JcsPt46zBCj7zd", - "amount": 7000000000, + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, "lockTime": 0 }, { - "address": "tNULSeBaMs9Nu9LhryyW7zAFBxqhtiJoWSF7jJ", - "amount": 6999600000, + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, "lockTime": 0 }, { - "address": "tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF", - "amount": 6959678345, + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, "lockTime": 0 }, { - "address": "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp", - "amount": 5980102225, + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, "lockTime": 0 }, { - "address": "tNULSeBaMuS9DvAdMPGRtvffZ4ueujwtXRd6qu", - "amount": 5966832575, + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, "lockTime": 0 }, { - "address": "tNULSeBaMgSo5XNX15kq9usuw4j42k6Kgtf6vW", - "amount": 5681003300, + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, "lockTime": 0 }, { - "address": "tNULSeBaMnW2PHQGyWQff9GydL2BwKAcCaRrY2", - "amount": 5670626625, + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, "lockTime": 0 }, { - "address": "tNULSeBaMhEa7e67QuFpdQEHgYdRJSsCwbmvCK", - "amount": 5596047000, + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, "lockTime": 0 }, { - "address": "tNULSeBaMjRwM25URqjdhYMR8yXebAHiQTMphx", - "amount": 5347657361, + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, "lockTime": 0 }, { - "address": "tNULSeBaMq8uyWNyguh6MupNCWpsrJAcn4vVR9", - "amount": 5328432325, + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, "lockTime": 0 }, { - "address": "tNULSeBaMo1Bi3tcSdrEQGgfAZtHhLhX5A6WSw", - "amount": 5094720025, + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, "lockTime": 0 }, { - "address": "tNULSeBaMis4ZgigCwWp9B32tE8HXrxMSCdayL", - "amount": 5082831225, + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, "lockTime": 0 }, { - "address": "tNULSeBaMuTaB16ko4Nx5RE8j5JfXqoUba1iXY", - "amount": 5000000000, + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, "lockTime": 0 }, { - "address": "tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe", - "amount": 4681316415, + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, "lockTime": 0 }, { - "address": "tNULSeBaMow681DHMJLV6rb6n7XBYXez6rKRX1", - "amount": 4386795775, + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, "lockTime": 0 }, { - "address": "tNULSeBaNCDfri41LZfsUvz5cKi5Loz8ETb4hU", - "amount": 4300000000, + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, "lockTime": 0 }, { - "address": "tNULSeBaMoazoxe6tygAevx7jbAaDMyTh4EjAB", - "amount": 4247245075, + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, "lockTime": 0 }, { - "address": "tNULSeBaMkeTYzPxJDLWZZp1ZvwQizycwR71La", - "amount": 4219694850, + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, "lockTime": 0 }, { - "address": "tNULSeBaN2UipbqDYZtYG2xnm9wFxLqRjMD3hr", - "amount": 4000000000, + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, "lockTime": 0 }, { - "address": "tNULSeBaMfWoGqcgLwWsFDiUha1Qo3WSc7T2JX", - "amount": 3968692740, + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, "lockTime": 0 }, { - "address": "tNULSeBaN2idLSNV4AfREmHnG2B77MCAuYM3fU", - "amount": 3900000000, + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, "lockTime": 0 }, { - "address": "tNULSeBaMtHPTeddD5g35va34zEz2BJkpXtxJg", - "amount": 3885652975, + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, "lockTime": 0 }, { - "address": "tNULSeBaMpcfcuEVx7rJPyEy63efQQZ318Q2Hb", - "amount": 3762708875, + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, "lockTime": 0 }, { - "address": "tNULSeBaNA1gAbvYpWcMcDLNmJNMqo58bqy9rF", - "amount": 3700000000, + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, "lockTime": 0 }, { - "address": "tNULSeBaMySaBTeR4B6LW5qwwAEqqjK6Uejb7R", - "amount": 3600000000, + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, "lockTime": 0 }, { - "address": "tNULSeBaMpvw7msJTb9jwhbKcp5cMes12YPrjQ", - "amount": 3567339500, + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, "lockTime": 0 }, { - "address": "tNULSeBaMgUH8cr5357LNy64B74Sx44obbn7fQ", - "amount": 3418710175, + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, "lockTime": 0 }, { - "address": "tNULSeBaMoeNNoyq7tZFxhqFjf865cefEKJenb", - "amount": 3314895600, + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, "lockTime": 0 }, { - "address": "tNULSeBaN4gNHdVuBhutLbmWLNDuYMy1CzFBWK", - "amount": 3300000000, + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, "lockTime": 0 }, { - "address": "tNULSeBaMtzr6HKQU1kQJMD5fgTJ7E7KNL1g8m", - "amount": 3262952700, + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, "lockTime": 0 }, { - "address": "tNULSeBaMmst1go9Mv4YbCFhLpFMoNYSNMMesN", - "amount": 3179520000, + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, "lockTime": 0 }, { - "address": "tNULSeBaMtmQbjHyRtP4YkXU3RuYxcon4MbWvc", - "amount": 3147240000, + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, "lockTime": 0 }, { - "address": "tNULSeBaMxVmtkiGCdfgTnQDdga3Zxj2vhDX9A", - "amount": 3122000000, + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, "lockTime": 0 }, { - "address": "tNULSeBaMyntpw4Nci2oUc8JtSXYhn1SckDzbX", - "amount": 3110000000, + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, "lockTime": 0 }, { - "address": "tNULSeBaMfMiNmtfskSQQYXKVwMPKPVYBzvHES", - "amount": 3098375575, + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, "lockTime": 0 }, { - "address": "tNULSeBaMqYJYr2qxVFpTmkW7aSSkFPD5mPcVD", - "amount": 3096829750, + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, "lockTime": 0 }, { - "address": "tNULSeBaMzeGGt8uku6bL2NUE1ZtVXeRzfEijQ", - "amount": 3000000000, + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, "lockTime": 0 }, { - "address": "tNULSeBaMkgnr7kHs2jmzyBdwq7JwtiyFZ9HJb", - "amount": 3000000000, + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, "lockTime": 0 }, { - "address": "tNULSeBaMhuZk5QcEREWJJXUW7XTf7zRmVbrDs", - "amount": 3000000000, + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, "lockTime": 0 }, { - "address": "tNULSeBaMh9QuCQRz2WxqwqG7ZHfPXuYQ42j2K", - "amount": 3000000000, + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, "lockTime": 0 }, { - "address": "tNULSeBaMoZhzVu4go15JiaAa3sPAzZpryM99L", - "amount": 3000000000, + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, "lockTime": 0 }, { - "address": "tNULSeBaMrARa1VoyTKSKQ48kMpTWPnJJ4czYw", - "amount": 3000000000, + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, "lockTime": 0 }, { - "address": "tNULSeBaN9Gnvh4sx2w5te8u95svRMMUCL9v3p", - "amount": 3000000000, + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, "lockTime": 0 }, { - "address": "tNULSeBaMgrbjQGnThCVVrymPPPae3RZkfdcZY", - "amount": 2993155625, + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, "lockTime": 0 }, { - "address": "tNULSeBaMpjHWfnfFovKnv7sc7i3NB2yy9P7cx", - "amount": 2899900000, + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, "lockTime": 0 }, { - "address": "tNULSeBaMpdW1LKUJyGRXBaHQj3u9vfp5p7m65", - "amount": 2884800000, + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, "lockTime": 0 }, { - "address": "tNULSeBaMf6jCD5g7MoXDrU4zqwu28ywDN7rVp", - "amount": 2884734450, + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, "lockTime": 0 }, { - "address": "tNULSeBaN9F4cpTaxt4LKKKuR8B9HsdzDtyZMH", - "amount": 2789980970, + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, "lockTime": 0 }, { - "address": "tNULSeBaMfT2jeMhByjHHJUvPABrFJ9kijLuvP", - "amount": 2584528575, + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, "lockTime": 0 }, { - "address": "tNULSeBaMiavFfrCsTcbCkSHfiDMjjC4DJ6E3T", - "amount": 2499900000, + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, "lockTime": 0 }, { - "address": "tNULSeBaN8xRW9oj5NWZJZq28Mupqtakd1pTFf", - "amount": 2280000000, + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, "lockTime": 0 }, { - "address": "tNULSeBaMmduoKVBvwDdTmMWjfy2deiQfmGrdT", - "amount": 2259700000, + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, "lockTime": 0 }, { - "address": "tNULSeBaMqY8kivUA6qdeqqn8SPniSZ2uq9PjK", - "amount": 2196863450, + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, "lockTime": 0 }, { - "address": "tNULSeBaMfrAD7J1NTVveGoEbUZjzUNDjPUWi7", - "amount": 2166091400, + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, "lockTime": 0 }, { - "address": "tNULSeBaN6zc7bZfMsytYmPKTBWW93WspGsNoj", - "amount": 2100000000, + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, "lockTime": 0 }, { - "address": "tNULSeBaMkDzApThXXVvVGnp2cNfrAF2mwEVZv", - "amount": 2097925025, + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, "lockTime": 0 }, { - "address": "tNULSeBaMgTuWwHm1og2cQxUdohw1DdqRmyBr4", - "amount": 2096126250, + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, "lockTime": 0 }, { - "address": "tNULSeBaMjCJQJKeH1j7vciYsgmLvypqPCsEop", - "amount": 2095712300, + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, "lockTime": 0 }, { - "address": "tNULSeBaMpigc3XfgpwAJbQvhfnCYDqPyRXkzn", - "amount": 2090260625, + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, "lockTime": 0 }, { - "address": "tNULSeBaMh8wjqtRx3hHbTSoR1PAJ57cunQUXD", - "amount": 2082245000, + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, "lockTime": 0 }, { - "address": "tNULSeBaMnsx5Z5Z3Ht2Kzzy5akNwiS2kweGvs", - "amount": 2079580925, + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, "lockTime": 0 }, { - "address": "tNULSeBaMqLfpXS6wjGbwwgbeVY7zasxwBEmnQ", - "amount": 2079230950, + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, "lockTime": 0 }, { - "address": "tNULSeBaMnoEHsUsRCRAikMUP5CTcaADRVF3qM", - "amount": 2054834875, + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, "lockTime": 0 }, { - "address": "tNULSeBaMnLrfU5XKJfxGce4qT6sD7sLF7ySFJ", - "amount": 2000000000, + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, "lockTime": 0 }, { - "address": "tNULSeBaN6LQZpyuCcY5PoU3NZzNS5FGFb5gfN", - "amount": 2000000000, + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, "lockTime": 0 }, { - "address": "tNULSeBaN8f2CXfDXRdYkmU1jM6XnL6vLmMr8a", - "amount": 2000000000, + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMqQAuB7hyTWCRCLqPbC7CtNT61p5JL", - "amount": 1998396625, + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMt2AJW6uV2vsx1xzuBHDc7sz3EJhPr", - "amount": 1996901975, + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjdWm2DU6NnR6AHenBPgaPom1oYnPZ", - "amount": 1996852950, + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMjSorYUdgDBrocKGKmYSFbH2X3Bb5G", - "amount": 1996312650, + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, "lockTime": 0 }, { - "address": "tNULSeBaMgNMK3U7TYKu3mnbdZ5PsMmm1rHb7X", - "amount": 1992299600, + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, "lockTime": 0 }, { - "address": "tNULSeBaMp7GPqe7Hzf4EZ5maQXapAQ9z1c1JR", - "amount": 1899900000, + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMo7Ptob5zGhYrLKSpUoLYL9Z1oFsWc", - "amount": 1836805890, + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMsTPMuzPk5k5PTfqyhThHpWdcyhKRk", - "amount": 1827722825, + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMtFMjmh9ZUwcKbsyrmv69moU4Es345", - "amount": 1823725825, + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMojP3hJVkTfJ5dTphEWUrhiJyvp3Ge", - "amount": 1765270250, + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, "lockTime": 0 }, { - "address": "tNULSeBaMmiZ4sfXL2wUNz4Hp687QjkWmLsuYz", - "amount": 1761846790, + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, "lockTime": 0 }, { - "address": "tNULSeBaMqKsXotY83kDSbvZafdoh9PoaK3bvF", - "amount": 1548354300, + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaMxfdXfR4yLPJ2B5Mv1JAwQM62GWvX9", - "amount": 1500000000, + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, "lockTime": 0 }, { - "address": "tNULSeBaN6H7nfPBxy2vHkPJBE2H1nmuoSHAj9", - "amount": 1500000000, + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, "lockTime": 0 }, { - "address": "tNULSeBaMp41MXznsL2P31ZJYaGNaS1Cs2pBHW", - "amount": 1499900000, + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, "lockTime": 0 }, { - "address": "tNULSeBaMuG5b4KuWuSg8rvNPttqWThhFsH3ns", - "amount": 1499900000, + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, "lockTime": 0 }, { - "address": "tNULSeBaN4gf47mHPh45sFam931c9BYEa7XcFw", - "amount": 1400000000, + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, "lockTime": 0 }, { - "address": "tNULSeBaN7xeDduG4NZrEmbvV9RjghXLXfpaEg", - "amount": 1398752439, + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, "lockTime": 0 }, { - "address": "tNULSeBaMp7Ww2yt3QUZdwegQYDVKTZ1svSonf", - "amount": 1348274325, + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, "lockTime": 0 }, { - "address": "tNULSeBaMmBxth9wpeNZnrXrxttYHMb4mSfo8t", - "amount": 1331528300, + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, "lockTime": 0 }, { - "address": "tNULSeBaN2ZyStkD9nHSHFKGx46DUTVFtji3yB", - "amount": 1295000000, + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, "lockTime": 0 }, { - "address": "tNULSeBaMfoRHCFPQENqscAqsBGF8CtQtxJvJH", - "amount": 1281519175, + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, "lockTime": 0 }, { - "address": "tNULSeBaMzWsTQMLVeTEkWki5LoDpW6ysZD9a6", - "amount": 1219000000, + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, "lockTime": 0 }, { - "address": "tNULSeBaMpNgVcmwsprSYWQMM15HHJ1dgPeY6H", - "amount": 1200000000, + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, "lockTime": 0 }, { - "address": "tNULSeBaMrjUJ73gY6ZKo8wCP4jXe2dE3uVr6q", - "amount": 1200000000, + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, "lockTime": 0 }, { - "address": "tNULSeBaMmWjXCTz8foPoJrde2kpvPZVwfqUan", - "amount": 1200000000, + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, "lockTime": 0 }, { - "address": "tNULSeBaMpSeNiUFrcD3UY499BzPe6zZT8AvAR", - "amount": 1190638625, + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, "lockTime": 0 }, { - "address": "tNULSeBaMzVqoQ8mJ6LqVJWZPE49de1Nbe1Mfx", - "amount": 1100000000, + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, "lockTime": 0 }, { - "address": "tNULSeBaMrysaMYedaAdRGaR3GJ8n1uop4rXHq", - "amount": 1100000000, + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, "lockTime": 0 }, { - "address": "tNULSeBaMkJFKTzv84Xm84kGD3kKCauytpb5pQ", - "amount": 1087826175, + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, "lockTime": 0 }, { - "address": "tNULSeBaMitP7F9EG7KvmoDVh8hVnfKcVWLwuQ", - "amount": 1082828700, + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, "lockTime": 0 }, { - "address": "tNULSeBaN5QLqHrR3r9SkzRJBLa5Bu18AtFFJR", - "amount": 1011000000, + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, "lockTime": 0 }, { - "address": "tNULSeBaMiw9EpTEx5ckq15kYv1cDGyZ5wCfZr", - "amount": 1001086825, + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, "lockTime": 0 }, { - "address": "tNULSeBaMqgmNMBuHg6imiTHrNXh4ffuqECiyG", - "amount": 1000000000, + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, "lockTime": 0 }, { - "address": "tNULSeBaN5drTXXaTEmHh1ssMJi1h2UTx3p722", - "amount": 1000000000, + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, "lockTime": 0 }, { - "address": "tNULSeBaMxZiELhwNca7Vu4tKa9k3AhhSxFagt", - "amount": 1000000000, + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, "lockTime": 0 }, { - "address": "tNULSeBaN1ASQCzVqG5C1qh3dJraY2HGQzLRc8", - "amount": 1000000000, + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, "lockTime": 0 }, { - "address": "tNULSeBaN1DUHHUNFu6wpYv2fcRhkyyM1HKiN3", - "amount": 1000000000, + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, "lockTime": 0 }, { - "address": "tNULSeBaN4kKFZdcCKCw4DGphXfboGpytCyESa", - "amount": 1000000000, + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, "lockTime": 0 }, { - "address": "tNULSeBaMxr8kEXZbNRLD5GrdsvVw8MGZYAXim", - "amount": 1000000000, + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, "lockTime": 0 }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "amount": 999900000, + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, "lockTime": 0 }, { - "address": "tNULSeBaMr1fDYUhC3in3wdPApkFAMsDbRsyNP", - "amount": 995712750, + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, "lockTime": 0 }, { - "address": "tNULSeBaMfMbcKnpDBxyNkZTV9rHTfbHs5PPtz", - "amount": 993565475, + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, "lockTime": 0 }, { - "address": "tNULSeBaMnJ65gQdHiPisezoJJEYdzZJmpZauY", - "amount": 990365075, + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, "lockTime": 0 }, { - "address": "tNULSeBaMoW9Sfp8k9ZsyN9TdQJ46HE79ZJ6N1", - "amount": 990215000, + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, "lockTime": 0 }, { - "address": "tNULSeBaMuXTeixM7NTXnqJXjpkX9pTHJYWyLi", - "amount": 987971650, + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, "lockTime": 0 }, { - "address": "tNULSeBaMu1azoD42sgbXieQXvVrJ7UaG3XZ5n", - "amount": 943664925, + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, "lockTime": 0 }, { - "address": "tNULSeBaMn8Vnc7GkrCoAeTq1WkFcp2TfqMbT8", - "amount": 931693142, + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, "lockTime": 0 }, { - "address": "tNULSeBaMyqxHH3kcs3oW9Z9F7iDVeb4mX9Shg", - "amount": 910000000, + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, "lockTime": 0 }, { - "address": "tNULSeBaMvURH3PTTymq87zWELDRPfntEcKqxe", - "amount": 900000000, + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, "lockTime": 0 }, { - "address": "tNULSeBaN6f7yZyzfEC6Fk9kn4tR91hRmZPRCe", - "amount": 900000000, + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, "lockTime": 0 }, { - "address": "tNULSeBaMxX4Cck8x4VBiEaJekSM96LuhzBioE", - "amount": 900000000, + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, "lockTime": 0 }, { - "address": "tNULSeBaMk96AQLcBYCF7Y8Uu2M2njUnBP6NnS", - "amount": 897352075, + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, "lockTime": 0 }, { - "address": "tNULSeBaN3wLRNdEAJauVSSmZDPyJSajpQcuQY", - "amount": 890000000, + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, "lockTime": 0 }, { - "address": "tNULSeBaMrUxF7arWJWu8yRqg9hsYXfmSUBA5B", - "amount": 879906275, + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, "lockTime": 0 }, { - "address": "tNULSeBaMjN2bU6SVdexbgidt2HnzVpeRnt49Z", - "amount": 872582350, + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, "lockTime": 0 }, { - "address": "tNULSeBaMnB5ixrCA8in5EUfPeqK9Zt1xP1EYs", - "amount": 793455975, + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, "lockTime": 0 }, { - "address": "tNULSeBaMiChHwvG7sfB3xPQTNPxkhGRtiaT3w", - "amount": 791410550, + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, "lockTime": 0 }, { - "address": "tNULSeBaMrwUz8bU1XMRUC6khm4tyq86ga7jS7", - "amount": 790504925, + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, "lockTime": 0 }, { - "address": "tNULSeBaMr3iv3RUQVv96J69NnZYPRnr8nxAFZ", - "amount": 790406650, + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, "lockTime": 0 }, { - "address": "tNULSeBaN89qJfojEeyx6sCk96wQsVPJW8ESn4", - "amount": 700000000, + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, "lockTime": 0 }, { - "address": "tNULSeBaMqU97nKCGYCa1ieibAGRvVSvqtTfWC", - "amount": 617648875, + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, "lockTime": 0 }, { - "address": "tNULSeBaMiQHAZvrYk8mVs9b2z2qLoe9fLE8eq", - "amount": 599800000, + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, "lockTime": 0 }, { - "address": "tNULSeBaMtWWtyNzxBobrVs3aUZNRGW8ctqq4L", - "amount": 592460450, + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, "lockTime": 0 }, { - "address": "tNULSeBaMtJ1EsjuTmt3VA9JJC671QRZyAFEWe", - "amount": 584532175, + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, "lockTime": 0 }, { - "address": "tNULSeBaMh3YB3Z2au2AHx6PAWxVGbK8nNH42R", - "amount": 504715075, + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, "lockTime": 0 }, { - "address": "tNULSeBaMtw8wa3kPrRnFqxwqTqKiTSgxQ59bn", - "amount": 503472725, + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, "lockTime": 0 }, { - "address": "tNULSeBaMyFCG3iHXFFzQyR5rrgDuNdXLPVUYg", - "amount": 500000000, + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, "lockTime": 0 }, { - "address": "tNULSeBaMgveRLMLR5ePCHgG1usCJgAgpVFThw", - "amount": 500000000, + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, "lockTime": 0 }, { - "address": "tNULSeBaN9r2YoeMe8UxKKki9uvvkL2pvVoT6z", - "amount": 500000000, + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, "lockTime": 0 }, { - "address": "tNULSeBaN8yiYwrAS2cDUxiipCiiwEgBVqYKoE", - "amount": 400000000, + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, "lockTime": 0 }, { - "address": "tNULSeBaMtYoFGZnqAjtbgPaSFcgg9i5UXddCj", - "amount": 390000000, + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, "lockTime": 0 }, { - "address": "tNULSeBaMkUQuBCSYQVzZomwt5PcoG9ahRjaZd", - "amount": 336931850, + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, "lockTime": 0 }, { - "address": "tNULSeBaMv7zuJjuX7VadAskjcdJRpaWLYRrK6", - "amount": 300000000, + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, "lockTime": 0 }, { - "address": "tNULSeBaMgQ47kJpokQpiKqskW8D44tpZwUrjm", - "amount": 268625550, + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, "lockTime": 0 }, { - "address": "tNULSeBaMfJ931baxc8Y4Qofjmmpug4vgT4qKc", - "amount": 262469200, + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, "lockTime": 0 }, { - "address": "tNULSeBaMjszE8KTrL6agA1CSeeotRuDytQ3Ke", - "amount": 206830350, + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, "lockTime": 0 }, { - "address": "tNULSeBaMpgyue7v6vjbyy9Un9NYd8iJekpZM3", - "amount": 200000000, + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, "lockTime": 0 }, { - "address": "tNULSeBaN12uzLzrzQ3eMRitJaipvTTQeUdMje", - "amount": 200000000, + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, "lockTime": 0 }, { - "address": "tNULSeBaMizcomL3nVDSPjHLz8gXPzqGf78Q9X", - "amount": 199900000, + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, "lockTime": 0 }, { - "address": "tNULSeBaMnf7ewzXhSHcAYd8K3zCPBL5zSy8tG", - "amount": 187905200, + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, "lockTime": 0 }, { - "address": "tNULSeBaMfakaaHfp1V4zgEd7MJL8mJ4kzsqoc", - "amount": 145118425, + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, "lockTime": 0 }, { - "address": "tNULSeBaNBaFvNEXA1wZfY2myTe55utRB5HzoL", - "amount": 140000000, + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, "lockTime": 0 }, { - "address": "tNULSeBaMk45HSNGQptGTfNKto5dcePXgRpWw8", - "amount": 130185000, + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, "lockTime": 0 }, { - "address": "tNULSeBaMn4hYKGuVzbgKaa8rjsZPJAgGmovwr", - "amount": 122179425, + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, "lockTime": 0 }, { - "address": "tNULSeBaMpgNE2cQaW2aXL9ocAgwtREXStujsB", - "amount": 110000000, + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, "lockTime": 0 }, { - "address": "tNULSeBaN8qPUMP2m9sBZzkfS2FhJAcC4eEGfW", - "amount": 100001664, + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, "lockTime": 0 - } - ], - "alias": [ + }, { - "address": "tNULSeBaMmTkgNtWA1jnyKBYKUC3vV4Sa57ovL", - "alias": "rabbit" + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 }, { - "address": "tNULSeBaMspaJDzLdnDhgzS34K8i3Gs9MbcV2h", - "alias": "chinanuls_00" + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 }, { - "address": "tNULSeBaMp3wgK6qReYWpLHrNEHrLmRfJSsx15", - "alias": "nede_1" + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 }, { - "address": "tNULSeBaMhDQdoZJPjKPq1W8ehztifNGNPZ3EF", - "alias": "niels" + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 }, { - "address": "tNULSeBaMfYYx6Pk652k5biNdACmzdSG6UU6N4", - "alias": "lin" + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 }, { - "address": "tNULSeBaMiAQSiqXHBUypfMGZzcroe12W4SFbi", - "alias": "abcdefghijklmnopqrst" + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 }, { - "address": "tNULSeBaMs65bgZmzzBZiHkzREz2cxtUp2bvGX", - "alias": "lichao" + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 }, { - "address": "tNULSeBaMmESkMomLrvxg9Yj8nJsVyE2wW6mJF", - "alias": "nulshope" + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 }, { - "address": "tNULSeBaMr9KDm7dH99h4UJYPHNi4wo6Tf5giV", - "alias": "luo" + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 }, { - "address": "tNULSeBaMpZ8NxS5vJVqr5xpBjycQn2Xud3ZD2", - "alias": "testhh" + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 }, { - "address": "tNULSeBaMnEysBLhWS8yMS5Cc6GLypiFAQMTpT", - "alias": "prosperous_test" + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 }, { - "address": "tNULSeBaMqCqyLYqcgYZ3dyZowAyoLaS2HD8ma", - "alias": "lc" + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 }, { - "address": "tNULSeBaMsvXgCBnaJ4u7rbQEKiWd23VWCudYm", - "alias": "angelillou_testnet" + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 }, { - "address": "tNULSeBaMgUpGQRHxX5QgWtPLrMWJioLeiNKWD", - "alias": "mick_one" + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 }, { - "address": "tNULSeBaMkDXgwPXjczu479GjBxrDSRDdLLWq6", - "alias": "nuls001" + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 }, { - "address": "tNULSeBaMnm4wKr3Uj82VVeZ7Uxhm7hvvKkYCb", - "alias": "prosperity_test" + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 }, { - "address": "tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", - "alias": "bolang" + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 }, { - "address": "tNULSeBaMud9PbxkfrWyBExWjLrbyFsrsrQZC6", - "alias": "prosper_test" + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 }, { - "address": "tNULSeBaMswWdvgYfR33ALR4mEp1jAahzpyeVH", - "alias": "test_windows" + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 }, { - "address": "tNULSeBaMnTf4LrYZzXeQXAhX4JaCY24dcCBED", - "alias": "nulsfans" + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 }, { - "address": "tNULSeBaMgC5kwDkiJKRRmNzGzDpJr3AgaA7ea", - "alias": "nuls_gold" + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 }, { - "address": "tNULSeBaMrge7NFuVUodnJVfyCfSweej8AZrwr", - "alias": "fj_ly_lc_201901" + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 }, { - "address": "tNULSeBaMqSDRDdeD9wj47Zu252c7xvxwMKZw5", - "alias": "nulsfather" + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 }, { - "address": "tNULSeBaMraPGcjxNFfVrS9op6cPwtg1WCsCqJ", - "alias": "test148" + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 }, { - "address": "tNULSeBaMvR7t3q5pxThzQBCNjd9prbjzd5tyd", - "alias": "test149" + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 }, { - "address": "tNULSeBaMh1cKVLomRNUaMmtZSV8AN67sTeQ4U", - "alias": "zlin" + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 }, { - "address": "tNULSeBaMpjTH4Nsc32RbGec6JQvwyYGEt1jjH", - "alias": "lining2" + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 }, { - "address": "tNULSeBaMkPHjgPqwooETMzttafPepJBPED6yd", - "alias": "a_b_c_d_e_f_g_h_i" + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 }, { - "address": "tNULSeBaMokyuNzNJyL3RsZjbGgzvefGULJ2wX", - "alias": "huobitest1" + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 }, { - "address": "tNULSeBaMioVnTwyEvn7KNqQeGkK5XgbY3ykwX", - "alias": "nuls002" + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 }, { - "address": "tNULSeBaMpPHAZ1if1a6csc1zau8SX2G3wEUfS", - "alias": "fj_ly_lc_201903" + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 }, { - "address": "tNULSeBaMp31xDJLQ4sQPVP5GQBEiewUEaAwCz", - "alias": "fj_ly_lc_201902" + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 }, { - "address": "tNULSeBaMhTtbe1fo1F9hijPr3x2j3XzfmhTZC", - "alias": "test145" + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 }, { - "address": "tNULSeBaMmeJBW66dvE8afbBJZFFDskM2A8NCX", - "alias": "wave" + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 }, { - "address": "tNULSeBaMpQaoMKRDFUCf2XgZFq22N1Swg4cho", - "alias": "nede_4" + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 }, { - "address": "tNULSeBaMvJbNgG7mP3Bo6D1rTAbLLM2nQuQVD", - "alias": "nede_2" + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 }, { - "address": "tNULSeBaMkTJ3QzVf1B8PDBW9Jjs54iU2aLoay", - "alias": "nede_3" + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 }, { - "address": "tNULSeBaMsnVD1YFaxfnY9XKNoKQyJS8Ljibgp", - "alias": "chinanuls_01" + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 }, { - "address": "tNULSeBaMhPs944jLUiUCQCK2g83NR2iLqCkL1", - "alias": "chinanuls_02" + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 }, { - "address": "tNULSeBaMr55MEy1b5ErfYLZZqUhsLKVFq4CZi", - "alias": "chinanuls_03" + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 }, { - "address": "tNULSeBaMtU9ta3k4oq5gpjeR3oPTCgXM5K7H3", - "alias": "chinanuls_04" + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 }, { - "address": "tNULSeBaMobmtKCzTox47r4jUW4xqCgt7LvT2m", - "alias": "chinanuls_05" + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 }, { - "address": "tNULSeBaMmkapqddfr2ttGwcscb9brwJM6fUNk", - "alias": "chinanuls_06" + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 }, { - "address": "tNULSeBaMmDsxQhavUbA2p7vqWvG8ZuiCXBGfq", - "alias": "chinanuls_07" + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 }, { - "address": "tNULSeBaMpGYFnDi9Dkfq2bX3yB3LzkcNUBtKg", - "alias": "chinanuls_08" + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 }, { - "address": "tNULSeBaMftsAf77CyArjp51LABH4GyyjV7wpV", - "alias": "chinanuls_10" + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 }, { - "address": "tNULSeBaMh8coYfzqHhWfK59E44A6qQBuScj5p", - "alias": "chinanuls_11" + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 }, { - "address": "tNULSeBaMgC3w9W7SVp5hFHmAWFmBFkzg1Vgw9", - "alias": "chinanuls_12" + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 }, { - "address": "tNULSeBaMfwmeDJp9pDS6EfjVVqVqayzGXJpfu", - "alias": "chinanuls_09" + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 }, { - "address": "tNULSeBaMikNrK5aPTr6kzRcNhJzrRMVHgQLVg", - "alias": "a_______________a" + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 }, { - "address": "tNULSeBaMpRWgtdmv5X5qbDAihMsXModQJCuwk", - "alias": "lining" + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" }, { - "address": "tNULSeBaMk69wKjbUvAsGXsrmKH24ZmReQ8Ttv", - "alias": "lining1" + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" }, { - "address": "tNULSeBaMgtJfpvp6babwow3Gw7qZcTi97ox3G", - "alias": "huawei" + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" }, { - "address": "tNULSeBaMnNZHHLwae8UAouJiro6URjwMkkMHv", - "alias": "kathy" + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" }, { - "address": "tNULSeBaMrdU5t6iLN64kriP3adesp3XYcyhGL", - "alias": "alias123" + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" }, { - "address": "tNULSeBaMiXL1JA7k8sEAtX3pYwmcxKZHpHL2K", - "alias": "test2" + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" }, { - "address": "tNULSeBaMpCMSD27z8DLQb1D6iRiYACMuBSM6s", - "alias": "nuls_create_alias" + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" }, { - "address": "tNULSeBaMnRAJarbMXyjBqPqZkk2CKSZ8HRkaD", - "alias": "000000" + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" } ], "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" -} \ No newline at end of file +} + diff --git a/module.ncf b/module.ncf index 6f5af965fd..d3da46b12a 100644 --- a/module.ncf +++ b/module.ncf @@ -1,48 +1,47 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs -logLevel=DEBUG -dataPath=../../../../data +logPath=/Users/niels/workspace/nuls-v2/logs +logLevel=INFO +dataPath=/Users/niels/workspace/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 +#默认资产小数位数 +decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS -#默认资产的小数精确位数 -decimals=8 #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=2.7.0-a4354e9 - +packageVersion=%PACKAGE_VERSION% [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=20200120 +packetMagic=20191222 #种子节点 -selfSeedIps=39.98.226.51:18001,47.244.186.65:18001,47.254.234.223:18001,47.74.86.85:18001,192.168.1.145:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 -maxInCount=100 +maxInCount=300 #最大出网连接数 maxOutCount=20 [account] -blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt +blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx keystoreFolder=/keystore/backup [block] @@ -64,15 +63,16 @@ cachedBlockSizeLimit=20971520 genesisBlockPath=genesis-block.json dependent=cross-chain,protocol-update,smart-contract + [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -81,16 +81,14 @@ awardAssetId=1 feeUnit=100000 #总通胀量 totalInflationAmount=11000000000000000 -#初始通胀金额500w/265*30 +#初始通胀金额500w/365*30 inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain [ledger] @@ -99,8 +97,7 @@ dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update [chain-manager] @@ -108,9 +105,9 @@ dependent=smart-contract,protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 -databaseUrl=192.168.1.204 +databaseUrl=127.0.0.1 #数据库端口号 databasePort=27017 #连接池最大数 @@ -121,6 +118,14 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w +teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn +communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg +syncCoinBase=false +syncAddress= dependent=smart-contract,cross-chain,chain-manager [transaction] @@ -128,34 +133,40 @@ dependent=protocol-update,smart-contract [cross-chain] #跨链节点链接的最小值 -minNodeAmount=2 +minNodeAmount=3 #跨链节点链接的最大值 sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=39.98.226.51:18002,47.244.186.65:18002,47.254.234.223:18002,47.74.86.85:18002,192.168.1.145:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=1000 + [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain,chain-manager -[protocol-update] -#每隔多少个区块统计一次协议占比 -interval=10 +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:8003/ +webWalletPort=8006 +webWalletHost=0.0.0.0 dependent=smart-contract,cross-chain -[cmd-client] -clientVersion=2.7.0 +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:8003/ +explorerPort=1999 +explorerHost=0.0.0.0 + diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java index 7f7196ac23..b2fd662144 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java @@ -18,12 +18,14 @@ import io.nuls.poc.constant.ConsensusConfig; import io.nuls.poc.constant.ConsensusConstant; import io.nuls.poc.model.bo.Chain; +import io.nuls.poc.model.po.AgentPo; import io.nuls.poc.rpc.call.CallMethodUtils; import io.nuls.poc.utils.enumeration.ConsensusStatus; import io.nuls.poc.utils.manager.ChainManager; import java.lang.reflect.Field; import java.nio.charset.Charset; +import java.util.List; import java.util.Set; import static java.nio.charset.StandardCharsets.UTF_8; @@ -172,5 +174,42 @@ private void initSys() throws Exception { private void initDB() throws Exception { RocksDBService.init(consensusConfig.getDataFolder()); RocksDBService.createTable(ConsensusConstant.DB_NAME_CONSUME_CONGIF); + if (consensusConfig.getMainChainId() != 1) { + return; + } + + List list2 = RocksDBService.valueList("consensus_agent1"); + for (byte[] arr : list2) { + AgentPo po = new AgentPo(); + po.parse(arr, 0); + boolean up = false; + if (po.getHash().toHex().equals("528a630b43f5d1eeea5b4567e87c7f7f3d4b86046b8a3d079ef0b9a1aea64360") && po.getDelHeight() < 7865610L) { + po.setDelHeight(7865610L); + up = true; + } + if (po.getHash().toHex().equals("a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da") && po.getDelHeight() < 8084100) { + po.setDelHeight(8083986); + up = true; + } + if (po.getHash().toHex().equals("ab00e76ba14fdc1e14dc1a3c7d86e9751de81fa0dfa98c98b5f236f6638a3cc0") && po.getDelHeight() < 8084100) { + po.setDelHeight(-1L); + up = true; + } + if (po.getHash().toHex().equals("cc1b60c282d297f4431c283bc88615f8d70f81e065405d0d8448190620032a91") && po.getDelHeight() < 8084100) { + po.setDelHeight(-1); + up = true; + } + if (po.getHash().toHex().equals("d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447") && po.getDelHeight() < 8084100) { + po.setDelHeight(8084009); + up = true; + } + if (up) { + byte[] key = po.getHash().getBytes(); + byte[] value = po.serialize(); + RocksDBService.put("consensus_agent1", key, value); + } + + } + } -} +} \ No newline at end of file diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java index 07966b6d31..f483ff4f4d 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java @@ -44,6 +44,7 @@ public class BlockServiceImpl implements BlockService { @Autowired private BlockValidator blockValidator; + /** * 缓存最新区块 */ @@ -116,9 +117,9 @@ public Result receiveHeaderList(Map params) { try { List headerList = (List) params.get(ConsensusConstant.HEADER_LIST); List blockHeaderList = new ArrayList<>(); - for (String header:headerList) { + for (String header : headerList) { BlockHeader blockHeader = new BlockHeader(); - blockHeader.parse(RPCUtil.decode(header),0); + blockHeader.parse(RPCUtil.decode(header), 0); blockHeaderList.add(blockHeader); } List localBlockHeaders = chain.getBlockHeaderList(); @@ -162,11 +163,16 @@ public Result validBlock(Map params) { block.parse(new NulsByteBuffer(RPCUtil.decode(blockHex))); blockValidator.validate(isDownload, chain, block); Response response = CallMethodUtils.verify(chainId, block.getTxs(), block.getHeader(), chain.getNewestHeader(), chain.getLogger()); - if (response.isSuccess()) { + if ((block.getHeader().getHeight() > 8084000 && block.getHeader().getHeight() < 8084100) || response.isSuccess()) { Map responseData = (Map) response.getResponseData(); Map v = (Map) responseData.get("tx_batchVerify"); + if (v == null && block.getHeader().getHeight() > 8084000 && block.getHeader().getHeight() < 8084100) { + v = new HashMap(); + v.put("value", true); + v.put("contractList", new ArrayList<>()); + } return Result.getSuccess(ConsensusErrorCode.SUCCESS).setData(v); - }else{ + } else { chain.getLogger().info("Block transaction validation failed!"); } } catch (NulsException e) { @@ -177,4 +183,4 @@ public Result validBlock(Map params) { } return Result.getFailed(ConsensusErrorCode.FAILED).setData(validResult); } -} +} \ No newline at end of file diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java index 7ba8f107a2..5588139746 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java @@ -89,7 +89,7 @@ public void validate(boolean isDownload, Chain chain, Block block) throws NulsEx throw new NulsException(ConsensusErrorCode.BLOCK_PUNISH_VALID_ERROR); } validResult = coinBaseValidate(block, currentRound, member, chain, blockHeaderHash); - if (!validResult) { + if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084100) && !validResult) { if (roundValidResult.isValidResult()) { roundManager.rollBackRound(chain, currentRound.getIndex()); } @@ -160,17 +160,17 @@ private RoundValidResult roundValidate(boolean isDownload, Chain chain, BlockHea chain.getLogger().error("block height " + blockHeader.getHeight() + " round startTime is error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } - if (extendsData.getConsensusMemberCount() != currentRound.getMemberCount()) { + if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && extendsData.getConsensusMemberCount() != currentRound.getMemberCount()) { chain.getLogger().error("block height " + blockHeader.getHeight() + " packager count is error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } // 验证打包人是否正确 MeetingMember member = currentRound.getMember(extendsData.getPackingIndexOfRound()); - if (!Arrays.equals(member.getAgent().getPackingAddress(), blockHeader.getPackingAddress(chain.getConfig().getChainId()))) { + if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && !Arrays.equals(member.getAgent().getPackingAddress(), blockHeader.getPackingAddress(chain.getConfig().getChainId()))) { chain.getLogger().error("block height " + blockHeader.getHeight() + " packager error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } - if (member.getPackEndTime() != blockHeader.getTime()) { + if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && member.getPackEndTime() != blockHeader.getTime()) { chain.getLogger().error("block height " + blockHeader.getHeight() + " time error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } @@ -434,4 +434,4 @@ private boolean coinDataValidate(Chain chain, Transaction tx) throws NulsExcepti } return true; } -} +} \ No newline at end of file diff --git a/version b/version index 623eed0eae..064eb29cda 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.12.2 \ No newline at end of file +2.12.5 \ No newline at end of file From 41ad2799951b532a72a22ce8b6772f0acd861d3c Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 22 Apr 2022 15:22:58 +0800 Subject: [PATCH 295/304] Release/pre prod -- 2.13.0 (#661) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * 2.13.0 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .gitignore | 2 +- .../provider/consensus/ConsensusProvider.java | 1 + .../consensus/ConsensusProviderForRpc.java | 4 +- .../facade/GetStopAgentCoinDataReq.java | 44 + .../java/io/nuls/core/constant/TxType.java | 8 + genesis-block-dev-p.json | 14 + genesis-block-prod.json | 32345 ++++++++++++++++ module-dev-p.ncf | 174 + module-prod.ncf | 174 + module.ncf | 2 + .../io/nuls/account/AccountBootstrap.java | 3 + .../constant/AccountStorageConstant.java | 1 + .../account/helper/AccountBlockHelper.java | 2 +- .../helper/AccountContractCallHelper.java | 119 + .../bo/tx/txdata/AccountContractCallData.java | 111 + .../model/po/AccountContractCallPO.java | 90 + .../io/nuls/account/rpc/cmd/AccountCmd.java | 91 +- .../nuls/account/service/AccountService.java | 8 + .../service/impl/AccountServiceImpl.java | 13 + ...rTransferOnContractCallStorageService.java | 51 + ...nsferOnContractCallStorageServiceImpl.java | 127 + ...ForTransferOnContractCallProcessorV13.java | 217 + .../src/main/resources/protocol-config.json | 17 + .../java/io/nuls/account/tx/Transfer.java | 156 +- .../io/nuls/account/util/AddressToolTest.java | 6 + .../jsonrpc/controller/AccountController.java | 25 +- .../controller/ConsensusController.java | 29 + .../controller/TransactionController.java | 2 +- .../api/resources/AccountLedgerResource.java | 2 +- .../api/resources/ConsensusResource.java | 23 + .../consensus/GetStopAgentCoinDataForm.java | 50 + .../provider/model/jsonrpc/RpcResult.java | 2 +- .../nuls/provider/rpctools/AccountTools.java | 17 + .../java/io/nuls/provider/utils/Utils.java | 5 +- .../message/handler/CompleteHandler.java | 2 +- .../account/GetPrivateKeyProcessor.java | 2 +- .../consensus/CreateAgentProcessor.java | 2 +- .../consensus/StopAgentProcessor.java | 2 +- .../transaction/TransferByAliasProcessor.java | 2 +- .../java/io/nuls/poc/ConsensusBootStrap.java | 41 +- .../io/nuls/poc/model/bo/tx/txdata/Agent.java | 2 +- .../model/bo/tx/txdata/DelayStopAgent.java | 89 + .../java/io/nuls/poc/rpc/cmd/AgentCmd.java | 88 +- .../io/nuls/poc/service/AgentService.java | 2 + .../poc/service/impl/AgentServiceImpl.java | 52 +- .../poc/service/impl/BlockServiceImpl.java | 9 +- .../poc/tx/v4/DelayStopAgentProcessor.java | 257 + .../utils/manager/FixRedPunishBugHelper.java | 48 + .../nuls/poc/utils/manager/PunishManager.java | 3 + .../nuls/poc/utils/manager/RoundManager.java | 6 + .../poc/utils/validator/BlockValidator.java | 10 +- .../nuls/poc/utils/validator/TxValidator.java | 117 +- .../src/main/resources/protocol-config.json | 17 + .../io/nuls/test/storage/AgentDBOperator.java | 42 + .../nuls/test/storage/DepositStorageTest.java | 62 +- .../src/main/resources/versions.json | 5 + .../nuls/contract/config/ContractContext.java | 2 + .../contract/helper/ContractTxHelper.java | 29 +- .../manager/ContractTxValidatorManager.java | 3 + .../contract/model/dto/AccountAmountDto.java | 65 + .../nuls/contract/rpc/call/AccountCall.java | 17 + .../rpc/resource/ContractResource.java | 44 +- .../contract/service/ContractTxService.java | 3 +- .../service/impl/ContractTxServiceImpl.java | 5 +- .../tx/v13/CallContractProcessorV13.java | 130 + .../io/nuls/contract/util/ContractUtil.java | 15 + .../validator/CallContractTxValidator.java | 137 + .../src/main/resources/protocol-config.json | 17 + .../test/java/io/nuls/contract/base/Base.java | 6 + .../io/nuls/contract/tx/base/BaseQuery.java | 8 +- .../ContractMakeAndBroadcastBase.java | 2 +- .../tx/multyasset/ContractMultyAssetTest.java | 36 +- .../nrc20/ContractNRC20TokenSendTxTest.java | 32 +- .../service/impl/TxServiceImpl.java | 8 +- version | 2 +- 75 files changed, 35152 insertions(+), 204 deletions(-) create mode 100644 common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/facade/GetStopAgentCoinDataReq.java create mode 100644 genesis-block-dev-p.json create mode 100644 genesis-block-prod.json create mode 100644 module-dev-p.ncf create mode 100644 module-prod.ncf create mode 100644 module/nuls-account/src/main/java/io/nuls/account/helper/AccountContractCallHelper.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountContractCallData.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/model/po/AccountContractCallPO.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/storage/AccountForTransferOnContractCallStorageService.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountForTransferOnContractCallStorageServiceImpl.java create mode 100644 module/nuls-account/src/main/java/io/nuls/account/tx/v13/AccountForTransferOnContractCallProcessorV13.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/form/consensus/GetStopAgentCoinDataForm.java create mode 100644 module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/DelayStopAgent.java create mode 100644 module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/tx/v4/DelayStopAgentProcessor.java create mode 100644 module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java create mode 100644 module/nuls-consensus/nuls-consensus-poc/src/test/java/io/nuls/test/storage/AgentDBOperator.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/AccountAmountDto.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v13/CallContractProcessorV13.java diff --git a/.gitignore b/.gitignore index bd9502f93b..276b3a5dc4 100644 --- a/.gitignore +++ b/.gitignore @@ -116,7 +116,7 @@ buildNumber.properties # log logs/ /data-prod/ -/data*/ +/data/ !tools/nuls-tools/base-tools/src/main/java/io/nuls/base/data keystore/ Modules/ diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProvider.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProvider.java index f059cda320..8032feafbc 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProvider.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProvider.java @@ -32,6 +32,7 @@ public interface ConsensusProvider { * @return */ Result stopAgent(StopAgentReq req); + Result getStopAgentCoinData(GetStopAgentCoinDataReq req); /** * stop consensus node diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProviderForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProviderForRpc.java index 162f7401c7..4bce6dcdbb 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProviderForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/ConsensusProviderForRpc.java @@ -41,7 +41,9 @@ public Result createAgentForMultiSignAccount(CreateMultiSi public Result stopAgent(StopAgentReq req) { return callReturnString("cs_stopAgent",req,"txHash"); } - + public Result getStopAgentCoinData(GetStopAgentCoinDataReq req){ + return callReturnString("cs_getStopAgentCoinData",req,"value"); + } @Override public Result stopAgentForMultiSignAccount(StopMultiSignAgentReq req) { return callRpc(ModuleE.CS.abbr,"cs_stopMultiAgent",req,(Function)(data-> success(MapUtils.mapToBean(data,new MultiSignTransferRes())))); diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/facade/GetStopAgentCoinDataReq.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/facade/GetStopAgentCoinDataReq.java new file mode 100644 index 0000000000..9bfa9173da --- /dev/null +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/consensus/facade/GetStopAgentCoinDataReq.java @@ -0,0 +1,44 @@ +package io.nuls.base.api.provider.consensus.facade; + +import io.nuls.base.api.provider.BaseReq; + +/** + * @Author: zhoulijun + * @Time: 2019-03-11 11:51 + * @Description: + * 停止共识 + * stop consensus + */ +public class GetStopAgentCoinDataReq extends BaseReq { + + /** + * 共识地址 + */ + String agentHash; + + long lockHeight; + + public GetStopAgentCoinDataReq() { + } + + public GetStopAgentCoinDataReq(String agentHash, long lockHeight) { + this.agentHash = agentHash; + this.lockHeight = lockHeight; + } + + public String getAgentHash() { + return agentHash; + } + + public void setAgentHash(String agentHash) { + this.agentHash = agentHash; + } + + public long getLockHeight() { + return lockHeight; + } + + public void setLockHeight(long lockHeight) { + this.lockHeight = lockHeight; + } +} diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java index be13e47d08..e329ccc08f 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxType.java @@ -170,6 +170,9 @@ public class TxType { */ public static final int BATCH_STAKING_MERGE = 33; + + public static final int DELAY_STOP_AGENT = 34; + /** * 创建交易对 */ @@ -296,4 +299,9 @@ public class TxType { public static final int UNBLOCK_ACCOUNT = 64; + /** + * 调用合约允许普通转账的账户白名单 + */ + public static final int ACCOUNT_FOR_TRANSFER_ON_CONTRACT_CALL = 65; + } diff --git a/genesis-block-dev-p.json b/genesis-block-dev-p.json new file mode 100644 index 0000000000..96ad7dfd6e --- /dev/null +++ b/genesis-block-dev-p.json @@ -0,0 +1,14 @@ +{ + "height": 0, + "time": "1568131200", + "txs": [ + { + "address": "NULSd6HgVNh3wxiH81kaZ799Xn9WtCU13tmFN", + "amount": 1314374313456741, + "lockTime": 0 + }], + "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", + "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" +} + diff --git a/genesis-block-prod.json b/genesis-block-prod.json new file mode 100644 index 0000000000..073564433e --- /dev/null +++ b/genesis-block-prod.json @@ -0,0 +1,32345 @@ +{ + "height": 0, + "time": "1568131200", + "txs": [ + { + "address": "NULSd6HgXY3zLvEoCRUa6yFXwpnF8gqrDeToT", + "amount": 1314374313456741, + "lockTime": 0 + }, + { + "address": "NULSd6HgdemcQDAaiEJWq9ESMhtUHXRsNJ4KM", + "amount": 1300069015130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "amount": 1207689896443277, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj", + "amount": 771827824681203, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 550000088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu", + "amount": 140000008800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg41fSq94Az2RF4FG9P3ZZJMhpC7wq", + "amount": 138024778582864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTsAnAvEUBf8uZ6DPg77c1ShtNekg", + "amount": 116322053971373, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1568217600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1570809600 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1573488000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1576080000 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1578758400 + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "amount": 100000000000000, + "lockTime": 1581436800 + }, + { + "address": "NULSd6Hggvrij3MPW9QTHJGBv7uiyMKw41i7t", + "amount": 100000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "amount": 96744642395658, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFbxkBQY4g5KALyZYnViHC69cYBDJ", + "amount": 85989563359937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5mBBijD6yi7U1VyHfjeWaKTZ1sf3", + "amount": 81999131521100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6z6hWSfxgiD9pDg8ZVPuEGjjXM44", + "amount": 72215389273971, + "lockTime": 0 + }, + { + "address": "NULSd6HgignfAYUmZNh5RphT15G1yB2oU3eAa", + "amount": 66285252473579, + "lockTime": 0 + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "amount": 58440536215003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "amount": 54028608913486, + "lockTime": 0 + }, + { + "address": "NULSd6HgadQtcxr6fb96Xzxxz1YgJsMFfwPu1", + "amount": 52455188181303, + "lockTime": 0 + }, + { + "address": "NULSd6HghgNb5ipqEPwi155NaboYNxPBBwa8m", + "amount": 51077727524499, + "lockTime": 0 + }, + { + "address": "NULSd6HghjNoDabaxhJEqpvf4QzRgGB3sDv1u", + "amount": 50747000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeEgns6WbmQAdS3umHt5WvxgBRr94", + "amount": 49210312908703, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbLYc2S6rdtD1s94EzSxhaMU9Ecy1", + "amount": 44824915276060, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHiH8j7BteVExfjPndCSKo65igzom", + "amount": 41141888592935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2og42aWzx7g3DNyk7spb12taxT6", + "amount": 39593370697151, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2sQEJoBvwHfEmGMa5RMpZvfypHgM", + "amount": 39538300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs36k2j4Xx5khXwLMhd8qZStrn9KU", + "amount": 37859381904399, + "lockTime": 0 + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "amount": 37261992045445, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY3czDrnqaCucLEJmZ6qix2N4MYsd", + "amount": 36996399546102, + "lockTime": 0 + }, + { + "address": "NULSd6HgeScdgkNKtE1mXd9dhuQ8Ye8ePrtWs", + "amount": 34259997306164, + "lockTime": 0 + }, + { + "address": "NULSd6HgarBLc8y773sLKXPfd22ytGeVnmJyx", + "amount": 33474778174290, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "amount": 33428773692408, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKLgPJgMQN39azyayCwdwbZndV2Fq", + "amount": 29979973788997, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvBHoBLXEr2YMQPRdBq17K2vBTsRG", + "amount": 28961474708694, + "lockTime": 0 + }, + { + "address": "NULSd6HggpKVtWevgoMbCKR8FFqjJ7aBTVeCu", + "amount": 28029608434617, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCoU3RTmyocuGK1kPBC8qoGdrMSmA", + "amount": 27995340514245, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif42UYSWYiGmFGN21HSJfMaYmJW3r", + "amount": 27983215462302, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN91jAjcw6YkqaQne62wGfV2iN6o9", + "amount": 27287845540512, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYwuPbvK9wXcei69tDhMyuEdEWm4i", + "amount": 27170252453222, + "lockTime": 0 + }, + { + "address": "NULSd6HggsBxMNs9MxLyJhWQ96qj7kYLvKr9C", + "amount": 26991197104961, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwVL5gjPgPSgpFcUqeQz4VDNfVkaM", + "amount": 26243684526688, + "lockTime": 0 + }, + { + "address": "NULSd6HgcetLXiuTGxD1TwLBPbSJ6jWZVkjuB", + "amount": 25339809000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXW7nHnz94Hx2DX78XgvnWNaxRj9e", + "amount": 24765621251103, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMduUuXKdHuMRVKPVqhfd7hHeY2Hc", + "amount": 24109958760182, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdsSKsFA27eUSHeohbmz1J3kQtP7r", + "amount": 23179417362222, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxQPmYWnxn74rXrKiRFh3eA3KfUSz", + "amount": 22847412113988, + "lockTime": 0 + }, + { + "address": "NULSd6HggVePM2JTFxjQy14nvqLy6R6app4mL", + "amount": 22795607364895, + "lockTime": 0 + }, + { + "address": "NULSd6HgegqFe6REoeKiugJr2ng7fQubE5RUV", + "amount": 22755875149791, + "lockTime": 0 + }, + { + "address": "NULSd6HgakaunpRHdivWPqKFZrYLPgkPBtNtr", + "amount": 22562877881100, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAYN7TUBHip9c2wGWMxkWae5M8uEK", + "amount": 22520078679607, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCRVHRNk7FhSgtDJZjN19openne7b", + "amount": 21729897375518, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWyPKubCw9Ze1wJrLU8HjEZuz5Bcb", + "amount": 21668767029600, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTD7L7kF4cFL96gqmP8bEMy3HNf71", + "amount": 21059522254002, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXVUPGNJmrceaH7Rqs4hhDfPn5CjR", + "amount": 20995499736221, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "amount": 20267828455189, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9U4wec84fg3KmpUQ7rdQg87XQtqC", + "amount": 20266600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9sNKEfG6Qti3H6PYfFNKnpUmT2tF", + "amount": 20206238172992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfZ3VhRYvzyJQuHB64kRiuCzYaveL", + "amount": 20079673353554, + "lockTime": 0 + }, + { + "address": "NULSd6HghUw7RTTUK5qahM6sBAjhnASUjZ1LQ", + "amount": 20033796577391, + "lockTime": 0 + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "amount": 20001091183810, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRidH5mv13x8S1yfkYPpwR2CGyUzf", + "amount": 19999999667300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "amount": 18462992623715, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "amount": 17909555922184, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc164ELZHksy58Ajer2gigNv4WQn3z", + "amount": 17704654522876, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2KQD73wcN2PxyD1tmV99yC5DbhZ", + "amount": 17680919000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetSV2BX67xDe8hhcMcPmXUhqpega2", + "amount": 17478894381698, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "amount": 17449936530800, + "lockTime": 0 + }, + { + "address": "NULSd6HghYS2b6PmkAVzP2QLhRi2CnoiLBZaB", + "amount": 16308221346515, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2BeQqAsGygDoYD1TpsgVyDuSdAsB", + "amount": 16020659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPgrs2c8mCA6MbQyLDZ5paGMYHegs", + "amount": 15982573625914, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9L9fYEXdTGM2WtzQ461comxwawp1", + "amount": 15877695642439, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm9Ru2bZv48FdA8nZ6hD5W4b2s8kY", + "amount": 15385796365621, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiXf7wjdwBWLapdB5TSkWKwjYXF8x", + "amount": 15289325657803, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfdG48ovmHgfEii7LFy4dvoeJangZ", + "amount": 15284879672727, + "lockTime": 0 + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "amount": 15256800433599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBZxdxXqMDBxrN6gVV3hMehTk1ogf", + "amount": 14657695896915, + "lockTime": 0 + }, + { + "address": "NULSd6HgXF6YLdqnmjKvjCqSef5vPrHWp4uAF", + "amount": 14559968174355, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMLnfeAHCm2pnXJSJJjQXmoMHxqvN", + "amount": 14000372803486, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "amount": 13550671393781, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "amount": 13154825176483, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmLhmGQYDHgDxZrg2cZQ7hgnn2DJ7", + "amount": 12668965887487, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiaGbJZW75znzdUNJ3U1ynd9gjqja", + "amount": 12666267394598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUssg5ThWexWjdvMtmVrNvhSNK1Fcr", + "amount": 12621967560175, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD5aGgtfAPBasAm3GjvhDjoWF8jPK", + "amount": 12255358349302, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLxLwwsoR88kaCmfWpprTowpmY7sE", + "amount": 12121721619499, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkaooFGKj4cmisjGykz1ZzfFoC2v", + "amount": 11926338975726, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "amount": 11583511308210, + "lockTime": 0 + }, + { + "address": "NULSd6HggmcGu8mCTXSELNm8BM3Ajtr8cBTYy", + "amount": 11409057036310, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "amount": 11351298447654, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSaHoga4mqX9Q8TJzx63B3b7WC6yW", + "amount": 11082291795378, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9jfoojYYogPFNbDtEvk35K3bCfZD", + "amount": 11034033057236, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmabBLgremSAZxzm4zHAmEtboHniA", + "amount": 11014309369256, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqr9M9zAakNineJz1Rb9NPfhoibd2", + "amount": 10974894000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiSFyvQTzZUA8xZaPVKRkALJRfLT", + "amount": 10963578142123, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVXxLf6Bo4bb1Un1RwjAStYdHsPWV", + "amount": 10705356018980, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZXDAAP3hiX3eSkaV6ZMtb6KKzcku", + "amount": 10496929192351, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWRkCNetg4aEdrgFAN7PBgas94iSh", + "amount": 10210478607637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMToUZdruENB5efLkTghBYPRcC6wg", + "amount": 10049766328408, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp9mXahterHTQxtCWijCNzc9S93Rg", + "amount": 10049249616254, + "lockTime": 0 + }, + { + "address": "NULSd6HgdALwtGhEtJkMbvnHgNLwCMApLwaRQ", + "amount": 10028057245796, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwaxSNt4JwAaJcif8Cv191bb2RCyr", + "amount": 10004821122300, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBmknDDMH4Tiiq1X6DJt2Z3QLtwyJ", + "amount": 10000101011110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbsb2AuXTJrFBh8JBnLhPJozhn3idw", + "amount": 9597836179629, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYg3gUmoFJhUg6sVbFYckWsM1dNs9", + "amount": 9411000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB", + "amount": 9048369857092, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaTbp66mEr4KEhGN5pK3Lnu8eGbZv", + "amount": 8964347401016, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwY9xqWoJC4MWwbJwYDtNyxsbKzaB", + "amount": 8618647971105, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjRGEQmwVGAiwAMzyCjGScfgybfNh", + "amount": 8554267594404, + "lockTime": 0 + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "amount": 8430412671966, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "amount": 8348822887210, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3HHxtZhigjoVdoLqHVLxuUP5jPbN", + "amount": 8134835979711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1VauxpjaLekzubt2vV2JAH3mXxgt", + "amount": 8106292989089, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQmWoGaM8n2S7qRMjffmQMW4gDWSo", + "amount": 8099244977731, + "lockTime": 0 + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "amount": 7931526325696, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuuLvXCic1jFxpfXj1wAVdY9y82X", + "amount": 7576838434314, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "amount": 7433908705664, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnHLyzeX7NLmawDqZR6kQJ7YqT69h", + "amount": 7429043947267, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "amount": 7386613229167, + "lockTime": 0 + }, + { + "address": "NULSd6HghW3nMgbShmsKrWUqZTpScanVLuTPV", + "amount": 7326992273148, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaKLd3LTpRtJHnmb6RP5YRyg5aUob", + "amount": 7153182261056, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZFvxTaFWYXrnogJsTVHwGw9y53VR", + "amount": 7119369434252, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4tabSyu74pHmvsWZ47ZxuWEF8ZJm", + "amount": 7080899230736, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "amount": 7036152444418, + "lockTime": 0 + }, + { + "address": "NULSd6Hgahi8x3pswMV6oMZmDsrY6Bm4DWH9i", + "amount": 7018221162019, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5P8GFLT7taPGtHTP973RtRUQpqNv", + "amount": 6995517424108, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyKrgu2XGt1mWPuX67txHHE9vrMUM", + "amount": 6995327178146, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2cDkHYpQmdnZU5K8V5sJSVo4ETHr", + "amount": 6799926963817, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "amount": 6547292181799, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyizuQs7pAM7hQ9xER1zAbU1QdvxN", + "amount": 6454254935717, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdyuSdQqmeFdhq6K2AYyPe3JNL341", + "amount": 6435998684431, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGyzKn6mjFMrLyfRZa6MPTJtnchMH", + "amount": 6420573019027, + "lockTime": 0 + }, + { + "address": "NULSd6HghDQzh82W8dRZCAKFshgUzNdKnUExV", + "amount": 6363661460959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1uhc6fBdFZ8uZkPGuHrFaxCcAohL", + "amount": 6362551588408, + "lockTime": 0 + }, + { + "address": "NULSd6HgedWxcr6w292HN4iFsCLrYF7TFzDQN", + "amount": 6298994991387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFk9XQLArGguBGyxHFpqQAxKvkvne", + "amount": 6255850503155, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "amount": 6227658206731, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf75h7PK3aUqwGhR4CptGndbVuk5Cr", + "amount": 6170431207813, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNo1Exx9TqMq5ebbo5GUvnBYvWycS", + "amount": 6012231756288, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnwHv2ajbcxDig5r4x69ErXpYhi68", + "amount": 6006135315945, + "lockTime": 0 + }, + { + "address": "NULSd6HgWK2MR7ocLrrkJpCVSm3HNMR92VFAQ", + "amount": 5972970915411, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6JifNoEmYTGVf88LLAZcCWrCwhfh", + "amount": 5971794874143, + "lockTime": 0 + }, + { + "address": "NULSd6HghV9ReGgq9vwVgTMmGfaMquyiDyGM1", + "amount": 5944437495364, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9PB4fKdWXGoNHkHJfjaqJt1eA6TK", + "amount": 5766797590061, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKWtscFCY2iDWft4Yf9mVmnXnKTr5", + "amount": 5743599852741, + "lockTime": 0 + }, + { + "address": "NULSd6HgccKZLRKFiuA48dqb5pE4p57h1wup7", + "amount": 5702200009199, + "lockTime": 0 + }, + { + "address": "NULSd6HgekFV3tTyoHsLceTLATS47ENwSZMss", + "amount": 5647717457022, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4WHAFVFLogAedpXLmrixBVMdjb8U", + "amount": 5629556387539, + "lockTime": 0 + }, + { + "address": "NULSd6HgadQvsKCcjmR2CJBaAZfiA6cty37ue", + "amount": 5628135943750, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRXrjGcCimAxF7iJN8dHCnueezsTJ", + "amount": 5563400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaza4vj6FnQuQzCPHV1ouFsjtGA9W5", + "amount": 5515305768040, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "amount": 5379373223453, + "lockTime": 0 + }, + { + "address": "NULSd6HghmDne9Y6tG4SZUX2ENcBd9XdqffNJ", + "amount": 5373006606201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKvVSDMfyAJkbm778Rpx1QoQry8AU", + "amount": 5345612916464, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9z3VARmQkU5TDcLST2zNRdfqzupn", + "amount": 5290953176650, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRNSPaBvSxETLKR1HC3dQZ72Wx1mU", + "amount": 5288541299791, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxhgyjpcYUXPw3AGAbkoyvLtX2KQ9", + "amount": 5222483124619, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEKARguuyt5axXdpQ5Ty9Jcy8pizX", + "amount": 5209711163393, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpgvF6v5xC6ENPsHmvBtQ1uXJW4tK", + "amount": 5188900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgiXwCMeSobHhuNDydU4STCDREoTi", + "amount": 5180804996689, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "amount": 5130558133262, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMs8vMP1ZM6ci7nmfruKn2mzcbcpn", + "amount": 5049478565462, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "amount": 4988309871304, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGdcfKekubfpbjtkRwE14vCrSedhN", + "amount": 4887877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQsdCBfSu78YVP3ZeK6qiGG9kwHBY", + "amount": 4830577078034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxmB8r5k15ftpBSFCqEXgnxk22xWC", + "amount": 4801129520291, + "lockTime": 0 + }, + { + "address": "NULSd6HgVppyCPgwjquEWLkxmcBmjaimvbMPb", + "amount": 4732474774320, + "lockTime": 0 + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "amount": 4705517703977, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4QZWvQ6q9f1bBytPEavGome5Rdu", + "amount": 4694439297547, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid5KrMS926nv5RThdWsfnaqaHDi7T", + "amount": 4647006300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45qZh6quYnhKmvEat5uBghtRD5UC", + "amount": 4646953342492, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqfgQGBK76yW3JNx1qqNBs9SGGwyC", + "amount": 4616310943553, + "lockTime": 0 + }, + { + "address": "NULSd6HgihGHHCVbHRqg8qfx6zeWEpxv94Pv3", + "amount": 4611926555756, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb89HuJhSKcDEb8dgt6SYxzQ6U19j3", + "amount": 4568137237703, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBcYiFUQZVCRjLbJy3i3iz4kYr8up", + "amount": 4566625857924, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMu1TPN6joj1PM2Ax2T39VEZa4Zf", + "amount": 4523158387698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "amount": 4489756977035, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbxAfVXBrzoBLS1ojyDSf3CJuE93a", + "amount": 4474931163300, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyCGFjgmgPRWT4PZq3ZxZBzstTeSX", + "amount": 4466165926884, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeR5fzNA8zhkT12xeQk1w2kCcxsw1", + "amount": 4432396267867, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo43N7gkMmTBGVSxy2kCwhHXGWuC8", + "amount": 4431622300791, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej2gQtWRem9keWNC56kjHE8j2dSZZ", + "amount": 4413942339362, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLxB1VMXQtCe3MqD8z6PEaNPSwSJv", + "amount": 4405882496140, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfp5b7ZvEKWFmvYRqQBTvqjJGGppRU", + "amount": 4404161055094, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxgjwpMnnHG4PbQpsP58B4Xk8SqiZ", + "amount": 4388649111917, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLmv2wz9DzwsR1WXzPQZhHVETBx4p", + "amount": 4347573883866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvX6zS6s3crB8GZeDL538KpWXPXe", + "amount": 4339160109193, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaqnyYWGmtb3xHMErJZGVgsDnJaRL", + "amount": 4317197774227, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "amount": 4286676134209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw7boppHvN8kow82EedEp4bjgWX8J", + "amount": 4259827282396, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8Pj23xuZywNCRpFYJ2bezqiPucZK", + "amount": 4242359317804, + "lockTime": 0 + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "amount": 4235385342453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFiKjC84yjTc87xy4pu8T1EK4YwJ6", + "amount": 4200739986175, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRZrYpHJQKKL9ex9SekozSi7xAGdk", + "amount": 4178255482000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCGN4wjGNSH6Ki38i2yihRQtbACrp", + "amount": 4175579049369, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa6HC6kXG8e6YhrwCXpnM9hBpMrZq", + "amount": 4139098221820, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NHA2LWwyXtb1shC8ZFgfWkXQ85d", + "amount": 4130862439847, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9cygevwmuqQJwVZ7dX1Ar4PCKkGd", + "amount": 4127181289401, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyjAt2xBmqSHjQSQeNhsoo4enj5N5", + "amount": 4097221270572, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnY4DaZpAmgYPpeWUfhWopdq29E7e", + "amount": 4095789805639, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6mwRsV5SZ4HLTD7vtRMrqo94bRae", + "amount": 4090792034338, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf7FdJ3L8XnCTCCFg4vpu6fDNooQU", + "amount": 4089818633664, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSuHJwEdmkoAU9j3BqcVaRPPGCZZw", + "amount": 4087805490480, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZtBSuNWR7nUffBXtzPbJMEgUxrzR", + "amount": 4083900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5q8m53VZpHK9jLJxDUzjUJvQcpyV", + "amount": 4034495354216, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBik1XKSp72Sw1CKNgqDnGVhEiPEu", + "amount": 4013365700381, + "lockTime": 0 + }, + { + "address": "NULSd6HgfS5VpaxkmMoV9GG6gzhY1T3Pdwvuq", + "amount": 4006149129710, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnBsoWQ1ywYS1MNhBvKzTbTr8ifsV", + "amount": 3993365195258, + "lockTime": 0 + }, + { + "address": "NULSd6HgVad6SthquupKfhFUW8C5mKUFkMq6C", + "amount": 3983146833364, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5kS977ZCrR58etnrCv2EhEimetEF", + "amount": 3979923799989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCgX3jhEKTWhYb13oEve7XXCYuhfg", + "amount": 3960513870982, + "lockTime": 0 + }, + { + "address": "NULSd6HgW55EH47faHNa4XXPc78X2tY314428", + "amount": 3927318651232, + "lockTime": 0 + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "amount": 3911491754115, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXsKo7zyrBh3FWsMCh7VU5tjwUwvw", + "amount": 3898767176140, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJjcwE4ujWA1oFsVBfudJsMuf2QcQ", + "amount": 3892538355819, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1QYHLpWPvfnkidYHXx14Wjokdd5y", + "amount": 3855100262699, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "amount": 3827037476637, + "lockTime": 0 + }, + { + "address": "NULSd6HgieKgqhczPzehpgXzqVfGUPBsaGfto", + "amount": 3811169478064, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbmXptDUUKp7Rfif6deTW5GifGZX8", + "amount": 3810553700980, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpBpYiKWznADBkoEE168BAVYXs7he", + "amount": 3769010423189, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ63vuf6d3jeqCBTpdqyLYooY6uNXx", + "amount": 3746670550527, + "lockTime": 0 + }, + { + "address": "NULSd6HgajxYJkbNi7XAGnhBuLv8rJuShi3DS", + "amount": 3732256484155, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS8DecFyAwg24NAfeZkED8zYKbkan", + "amount": 3685768408200, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwr4odjFyzqg8brxKTt3AkBgkmgJx", + "amount": 3655910282573, + "lockTime": 0 + }, + { + "address": "NULSd6HgUro8AQQscAbwn24EqaqyBgvwSXdgT", + "amount": 3649905528145, + "lockTime": 0 + }, + { + "address": "NULSd6HgY565sJgefF9UbEChedsQcvsy1eFNC", + "amount": 3621424455199, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdsNjLi1eLqdtaCZD6q9husEGn16E", + "amount": 3613911902450, + "lockTime": 0 + }, + { + "address": "NULSd6HgVygkaN16EBoat7oZUttYeDi5wp9Jv", + "amount": 3604828977508, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "amount": 3566330778157, + "lockTime": 0 + }, + { + "address": "NULSd6HgdafaRLiZdHhHywhkhFUuZA9JuDygM", + "amount": 3538199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiREufVzeztXxRgm4vEdYVgZrFPh3", + "amount": 3495425261514, + "lockTime": 0 + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "amount": 3487546181731, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim6eS8MGRecFtWAR22sMWCXFobDxD", + "amount": 3391978196979, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "amount": 3360604881888, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDpwLKGTxMSkbdZ9JGQ9mPNcB3AsC", + "amount": 3335143686733, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxUtreYwCuib8rMF4g46AxcS6qmSL", + "amount": 3331061554915, + "lockTime": 0 + }, + { + "address": "NULSd6HggUFKGHAsEYTx3oLREz9zyesmQCk8c", + "amount": 3323239998543, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLPBcMFgSLtnoT3LsyaaUC85gGfF8", + "amount": 3311961387294, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP3ffPSuDPo2tohq99CVFtvFQykG", + "amount": 3297094325192, + "lockTime": 0 + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "amount": 3286747568517, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9PZRVmhvJ5YYQCmXPhMQ5zHAHrdw", + "amount": 3280611800340, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFNuspJs6cyhBRMnY3kaPRNMLyKQD", + "amount": 3270332890601, + "lockTime": 0 + }, + { + "address": "NULSd6HgexEvWNVfvSyPcn7wk63PbNJ4RfaXw", + "amount": 3262562062214, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGB1iKAbiFKKwRDDMSbwLGoY9g1Da", + "amount": 3253798581575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoQ8j8GBqB4XRo8t94g3kUTrAgRu", + "amount": 3250306375096, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQ5foKRvdYsVJusLa5KYccmebEQys", + "amount": 3248652471821, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPeSeJJLXn8jushdmyypJU7h2Rd68", + "amount": 3239187517096, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "amount": 3227989972889, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWYg3i3VSHmtPPg24VN1AM6u37fcm", + "amount": 3223012704398, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBk97rWsj92KpSJWLAauvcBAiKZf5", + "amount": 3127303308393, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5VcrBewqy1RtF5cgtv2QgMfuZ4eV", + "amount": 3114545041663, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4X8qxREQrx6MU8bZ8ee1XuAa1ZBc", + "amount": 3114371637359, + "lockTime": 0 + }, + { + "address": "NULSd6HgeobaaGg9fXvBghwYCAUA3WXEjJmfu", + "amount": 3098280351409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdatk8QsPALN1BsjAyyepJFSQqxeUW", + "amount": 3084432046686, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3oc6XLtYXe62B7eHFsnH6BvSxhsN", + "amount": 3084314606659, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeHYsv5BLySSF3vW6QMwXvUe63rg4", + "amount": 3067842756460, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "amount": 3049372130977, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1bmcX9H4ZF3rYDdhs4867te7gZuN", + "amount": 3034533415571, + "lockTime": 0 + }, + { + "address": "NULSd6HgipZrsfHhsHavs33Nz6DoT5EmoQoVn", + "amount": 3024446627522, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWPEJD3xAf6h1Tgq7RiajHj9KjZqS", + "amount": 3016641111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "amount": 3006370302621, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXJmUL8zsCWH4ej8fWb6Pzneg4yHo", + "amount": 3003754348603, + "lockTime": 0 + }, + { + "address": "NULSd6HginVQaFFd16aFemxHqHNwv4fGKk1S9", + "amount": 3003369565489, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "amount": 2991614988430, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9D8JWLoVkUA6hwh7RJxXbjATKsHd", + "amount": 2983827070197, + "lockTime": 0 + }, + { + "address": "NULSd6HgafiuQQeoCC3ft5fjcxiQXpvL2o3kg", + "amount": 2982058302152, + "lockTime": 0 + }, + { + "address": "NULSd6HgbGrozcg5eSHBhNxC5XFk7pwQaadec", + "amount": 2961178030782, + "lockTime": 0 + }, + { + "address": "NULSd6HghgsMtGtryEpUHdne4w21z8GuekwJN", + "amount": 2959980299559, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "amount": 2923789183800, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCcGVyptFHoc6T1c7NAhb97zBop3", + "amount": 2922515618168, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "amount": 2921485767410, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb92BNr8Xdu2nWoR3PSdLaiSChebAG", + "amount": 2920614737994, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3J1uxbJ9wnd7QMDEkKRpkSurN3Pz", + "amount": 2918736502136, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeavk32yrDhE31pBEuYmKyhegKpRi4", + "amount": 2908563502926, + "lockTime": 0 + }, + { + "address": "NULSd6HgceT3b91Rt6xBmhUstSKPfXfLP62yJ", + "amount": 2875371127677, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmJFxZ8nZ53ie88PpaBmni3Cyhesa", + "amount": 2844883497292, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUivB5bWLu9xwdCFHv9228rGidBfQ", + "amount": 2844124104402, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgCnYvxTU5Pb9LfRwBxU2CiMA5GGV", + "amount": 2829973172145, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2p3bj9ZXWT2GoLHvaTr7zQsMWfcG", + "amount": 2821622909059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG4x4evVa6UTwSTXnwZicWtP5LPPN", + "amount": 2786200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeM6siTbTJSFmantGonnvYG5RrRA", + "amount": 2785813908817, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "amount": 2784926825513, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJgN9meqwx8PGjMSv1yNbrPUBptbq", + "amount": 2772147293763, + "lockTime": 0 + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "amount": 2732620680842, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "amount": 2714528126132, + "lockTime": 0 + }, + { + "address": "NULSd6HgamLZvpVnBgk9Mofc7brtpZvUMLCWg", + "amount": 2699791100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpNGBoJcn7DCQu4YzqEVd5URp1HSc", + "amount": 2686142685973, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpJe4R7cTjq4aSqSrVGkqXWha63d", + "amount": 2671269299743, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFVm3FxSWCa8qksiVRHjwhV6PCD2m", + "amount": 2671214015444, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGF7xLQ4Fr6x96jcwSWNqhtrhc5jh", + "amount": 2659428100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqG7fVPukqPg1R7i13XjXiM1Tg9pF", + "amount": 2654669205335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "amount": 2654532230472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2adv8kHUaJKwQadqywRg2Uwqn4hM", + "amount": 2643085702359, + "lockTime": 0 + }, + { + "address": "NULSd6HgaM1BZhDC1z8hQAqTo5pr8NqSpYUB8", + "amount": 2640407616700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi9A2heH8BEYSSjY8fzciTuWRPWr8", + "amount": 2633698266579, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQ2RH4j7Axf85NAoatfVX2nz82fsE", + "amount": 2612737305486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw832d6Pr37Q8LB1VgwWX6PFfRtaV", + "amount": 2611194150236, + "lockTime": 0 + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "amount": 2602401497831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "amount": 2592239217420, + "lockTime": 0 + }, + { + "address": "NULSd6HgZg4X15xax6U4KzhPVBmLVH9KfbsMk", + "amount": 2585880528244, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEtuvLiXF31JwbRkVEmTbosfNJY32", + "amount": 2575849842209, + "lockTime": 0 + }, + { + "address": "NULSd6HgedVsqNFesW1ww2QmJLjqGNNr3gZwV", + "amount": 2564427203389, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19vKxD8RVJ1HtZNe8GCTLPBG1i5F", + "amount": 2561080103484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYujJndF58NFjBpvdz5KfdJobXmBQs", + "amount": 2560455845735, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxXEMWQKpZbszmSDfTnQguDauSbze", + "amount": 2550325652804, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpriJXM53odzZKnUrn3GzTnT5DgT3", + "amount": 2529733793421, + "lockTime": 0 + }, + { + "address": "NULSd6HgexnHVe1JrDhQ3u8e7fF1q5o7pcyVP", + "amount": 2527204033602, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7fSvk5rdNhkRQAWPbjF3M6YHEUKo", + "amount": 2523806252812, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa25NTovoDQFJ7NuVgq44yQmhf4mz", + "amount": 2520767814000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgciz9h6sYS1aNfMvDN2NvjSTK6e7n9", + "amount": 2512332890167, + "lockTime": 0 + }, + { + "address": "NULSd6HggMDXKUjGokmKPo1LUaW5bbg9KkvTa", + "amount": 2506489602729, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "amount": 2505788549696, + "lockTime": 0 + }, + { + "address": "NULSd6HgUri4KaFYUP2QVxHbNuvnnNp8FFMVc", + "amount": 2503882375281, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "amount": 2503791332448, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZTgKhG8PABMU7C8yzVAeftwni74c", + "amount": 2498140085719, + "lockTime": 0 + }, + { + "address": "NULSd6HghdeShtxtwFAPz2WBLfxq882UtrLLr", + "amount": 2491590986231, + "lockTime": 0 + }, + { + "address": "NULSd6HgebXVmFw1j5YSyf8g1VpDFruXduJr1", + "amount": 2485683525333, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7egFiTcU2fPV9ijZ6JTAUwqqJfvB", + "amount": 2462313209710, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "amount": 2461793544874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "amount": 2458824842116, + "lockTime": 0 + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "amount": 2445854118322, + "lockTime": 0 + }, + { + "address": "NULSd6HghongzcQngxX3PDgG4uzjp6F7CPAM5", + "amount": 2444637599755, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHugMnc6xgS9Cbj1SJeUpwCxXUKvP", + "amount": 2438371066122, + "lockTime": 0 + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "amount": 2423849195494, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "amount": 2413065350762, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNf1r4UgMvxyF85SsPo6JQcCevz5x", + "amount": 2408097275306, + "lockTime": 0 + }, + { + "address": "NULSd6HghnocHx2dwxafi92FnFWaE7eq12a33", + "amount": 2407640165613, + "lockTime": 0 + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "amount": 2406904698682, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBctCcWCiQFxa6zR4mKicJnyhr88G", + "amount": 2404674651501, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "amount": 2403745208237, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZXJEMaiwWNtme6oXd1Pweun7UefV", + "amount": 2400348330773, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfqTEUUWdAoHhTxfetcFpuqWkkGAy", + "amount": 2399500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "amount": 2397165126369, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEARJEX2LuTNFdCnmbS27WrYGYFm", + "amount": 2378637371160, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1HLV2WpPLL8wJDaYLvdQiPWmJiPp", + "amount": 2378073843263, + "lockTime": 0 + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "amount": 2373873118963, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "amount": 2368030658046, + "lockTime": 0 + }, + { + "address": "NULSd6HggtNpcyWr1CMLqTqWKMiwpXGwDzJKJ", + "amount": 2347090108700, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUH1ewjgYACvNsVuJFicrmFYxcJbG", + "amount": 2332711128929, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRfDSSEUrjqwekq6CGBDTXyNseDkB", + "amount": 2331223358189, + "lockTime": 0 + }, + { + "address": "NULSd6HghZVYmWxmfrnKPnseYhf6xnoeEaCU3", + "amount": 2329515900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqCWhWqCH9jfeFPN8NJXuh19vYbfs", + "amount": 2324535158900, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9q9c9TVAbc7Y88SKX5TaNqgyfAaK", + "amount": 2314300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgioDSaqG5ajiBzTuE6EBWBDoBAUsdu", + "amount": 2313384999334, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbHHBvCHL8kbxnzQjBY9scWA3CjbF", + "amount": 2312557916000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "amount": 2310225175167, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7j3b9M4aNrUV6URh1yFhhs4TisZd", + "amount": 2299501675703, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF37WBR9E2p1cVsLDMH6STYWHRjbE", + "amount": 2288084075746, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "amount": 2282427758100, + "lockTime": 0 + }, + { + "address": "NULSd6HgefvQZdK5v3br2T2SPrGS7vnZUm9Xb", + "amount": 2274175020234, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "amount": 2257532888084, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "amount": 2254957709482, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKkrap1C5D65adEK3wRLyEucpmQpV", + "amount": 2250233316770, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6LPqV2xYwRwKubK5SBxTUYSNSTPV", + "amount": 2245221483757, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirqMsz8d1R5ivxL4TxTWbuVpmRYx", + "amount": 2232845815309, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL6NQ2HYDopU5TAKpQgetWRhdy6cK", + "amount": 2232285520749, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "amount": 2224585008400, + "lockTime": 0 + }, + { + "address": "NULSd6HghZ2axJk86V5ZLz4273DxZZND4dKMc", + "amount": 2220759959278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4gQ8RgH4kojHJmRWxBUoqiiPFXCv", + "amount": 2216046481500, + "lockTime": 0 + }, + { + "address": "NULSd6HgZE2jSEKKN2bmMkRcNzyg8yjJX1GgB", + "amount": 2214311555607, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpNPD48Cw3Pk6EWoNCNNWTUz6AXZu", + "amount": 2208928191711, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE4y5Hr14uyFfrQqe6o6XukripAUH", + "amount": 2201414464632, + "lockTime": 0 + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "amount": 2197120481814, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiwc2SZCDHcWAWCvENqDAHh1BE16rN", + "amount": 2194601041128, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "amount": 2193191237193, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKBnsqL2uvkbBfRKdrBJoa8eTdWk3", + "amount": 2190008983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21wpdLJSUQa6TmrXG8wYV3tVR3sp", + "amount": 2189525702549, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "amount": 2177960945461, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "amount": 2177793611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "amount": 2165977843823, + "lockTime": 0 + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "amount": 2165141022582, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5tfapzfsyewpxdB7EbHcQbJhJVA4", + "amount": 2160832408906, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkVTYrMQBws6uSochHmeHgyi2SMpT", + "amount": 2157940349129, + "lockTime": 0 + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "amount": 2157464205186, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN83vqMbPV91oPoHSh5RnYUPrYsPj", + "amount": 2157032154243, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2hxazVdmoxyGWYsVhHtNSruKE1mt", + "amount": 2154039597526, + "lockTime": 0 + }, + { + "address": "NULSd6HghfTbCr5a4RSscYyQmArvmSfGvY2sr", + "amount": 2153501474921, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "amount": 2138851541920, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoQr9w69bjBeKAnYhuuE2wJJtJcV9", + "amount": 2129456403303, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjBK7wA3Qapi6xuKDTZaRdbwkorv8", + "amount": 2129201111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEMEaTAWp626C9HGYCFjTg4HYtorW", + "amount": 2126535005180, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "amount": 2120987060003, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "amount": 2119167814451, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "amount": 2115537957318, + "lockTime": 0 + }, + { + "address": "NULSd6HgchjSCYps3uMbXcpY1Gh8JLoVYi7Vx", + "amount": 2109262770164, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfmx6YgdAbAcbJa93uSNeSFyw8YgE", + "amount": 2104032286014, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "amount": 2100003306550, + "lockTime": 0 + }, + { + "address": "NULSd6HgbudVzMieGtYM4kKULm5qcHpg52JAU", + "amount": 2097583277305, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "amount": 2094576202794, + "lockTime": 0 + }, + { + "address": "NULSd6HgVa6h6TiY25A5qezkruP93FwmiXfXb", + "amount": 2091321339852, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzwgrB8zVLNYK9xkxeyvfw7J5PmXf", + "amount": 2088277643638, + "lockTime": 0 + }, + { + "address": "NULSd6HgVy2AoutdemZ4719EceoURHtVHbGA8", + "amount": 2084658200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6rm9s7MdgtJHzhcc9ZKZt9WQUbug", + "amount": 2084094111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz5to1vj3DKeHwMhGRRzmivyvk9y8", + "amount": 2083859676189, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6D3qD5m73FKtSEJJRwGyYCTr6eJN", + "amount": 2082556275251, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "amount": 2081281639763, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "amount": 2075807942069, + "lockTime": 0 + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "amount": 2075735709754, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "amount": 2075519608709, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLEhLGdWk9Bc19uddaA9w8faVyf2B", + "amount": 2074282875104, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "amount": 2073614393244, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKWc5JVAbC3Ydebtstcnh617GreTZ", + "amount": 2068101700641, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "amount": 2068091781354, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr449kud3Cj3JRMdoYX1is7Ge69qb", + "amount": 2067759441999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "amount": 2058573526549, + "lockTime": 0 + }, + { + "address": "NULSd6HgivSCzSNBPXQp2yyYQb2ictVwF5qUU", + "amount": 2056867768988, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "amount": 2056066823856, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZv8L9mSDnk49VTVEr9RHE27xETE8", + "amount": 2055945028731, + "lockTime": 0 + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "amount": 2055670116258, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtbupstFzmKG93CfAtK155CeHjw6P", + "amount": 2050764983771, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mWWV8ayTHcBzeJ8GkfESDaycGWi", + "amount": 2046492776171, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "amount": 2040915033861, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNdUJyQEiR2k7Rd5ZdCUYWgDAyr22", + "amount": 2040294786521, + "lockTime": 0 + }, + { + "address": "NULSd6HgURKM1dqthztYUjhBtsECdwUBCnY6G", + "amount": 2036932010954, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "amount": 2036613104066, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "amount": 2036018484169, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "amount": 2036012751778, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "amount": 2035494356743, + "lockTime": 0 + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "amount": 2034810197662, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "amount": 2034038321331, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyL5aeHCquQL362SiDG7D1sDeJAGn", + "amount": 2033824784827, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "amount": 2033107453284, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "amount": 2032437685983, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "amount": 2027117752848, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "amount": 2024487062845, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "amount": 2024206918844, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5DN3ikbyhftEqE56avgVs7eom3gy", + "amount": 2022265112202, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39eiMwgJswYx9EA5YWk5YBFwcE91", + "amount": 2020044918767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBmwA7JvFKa7Tk1XfMrvMoreVV6j9", + "amount": 2017757942127, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "amount": 2016927189193, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5EJ525cEpHZBoTQV3LHE7MiHfPp", + "amount": 2015779311110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpaR4YREufbajhXATvgncy8UbnZcK", + "amount": 2013865643211, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPAfJ7aanBkzBkPkjDUASbmgyJY5i", + "amount": 2012535119804, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "amount": 2011682301048, + "lockTime": 0 + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "amount": 2010847934394, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "amount": 2009664081890, + "lockTime": 0 + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "amount": 2009538449322, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "amount": 2008025809214, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "amount": 2007843844116, + "lockTime": 0 + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "amount": 2007566055582, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRaTXHh5212f621jyvRDH9APLWSXo", + "amount": 2006480000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc29t2YVcq2ZpZ8tgfZHDJaPLZZDaP", + "amount": 2006476130004, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB6YeKWi9uXvqZGxnRZne1TjWbHxJ", + "amount": 2005863893780, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXVsF1Cx7TyzxEY2XqxXHrWW7ACmj", + "amount": 2004334460269, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "amount": 2003623863051, + "lockTime": 0 + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "amount": 2003380877828, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "amount": 2003287117401, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "amount": 2003245024802, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "amount": 2003014108162, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJ5YeiaS8NXDjiXygUM9q6VPTgpD", + "amount": 2002623190557, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLk69J12N8sXYRfANxDpvkQPn7BWc", + "amount": 2002464726104, + "lockTime": 0 + }, + { + "address": "NULSd6HgduTjnj14bGy1tNKqB1rdV8B7YTtWR", + "amount": 2002253947425, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "amount": 2001181497009, + "lockTime": 0 + }, + { + "address": "NULSd6HgazvtJQ1QeUix5j6cFXdq8xjahzPua", + "amount": 2001139704491, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "amount": 2000882364111, + "lockTime": 0 + }, + { + "address": "NULSd6HggLYM9mr4Lq94ERavt2APk7CtiJAMg", + "amount": 2000641249410, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBzL2qmWQdzL68qDUqMAengFQ51rB", + "amount": 2000610292487, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "amount": 2000399953793, + "lockTime": 0 + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "amount": 2000365342699, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "amount": 2000232083093, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "amount": 2000198111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "amount": 2000173789364, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpM4hrC5qw5j4DmiQd84kEoBVg8ZN", + "amount": 2000100111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrQrPRbk8SjxnuAhfiosUQFYLcxTi", + "amount": 2000099898108, + "lockTime": 0 + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "amount": 2000099111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiA5cMGCVZLCmx2UWWdwniRFAABsn", + "amount": 2000098011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZL5LoM14K6hnXPCBmibf59XZoqvx9", + "amount": 2000091011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGMkrh5mbmWPMxaTzgpZBctSQBizG", + "amount": 2000086369280, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "amount": 2000058405684, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhUTCKGEwHiGmnPmWFAvXyANTdjrn", + "amount": 2000017911110, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv611WKMBA2rsdsTwqpcNXtoogzen", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA7qFUw3jVkcqRD1iggzoffEigJRe", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTN1F1bjH4n5aWiFZZHts5mQK8zev", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8DVA1evHpuojzMpedHgsYojYaKBe", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXhbnGSvEDLTdm71oUYwpF8qcAdGx", + "amount": 2000010111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "amount": 2000009111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKKZR6488yJMkLfV4Vc7dcBH1rEq", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM6hYM2RRNjK4JQmnoLdS96NV77aV", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZaaJT9quCoVoGcUM53sCitcuYz7d", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdyVEV4gXWr8mpX4jRmxBtX6DDiGi", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgectFiZCqoUzpEB4okDBALx4BJBfKd", + "amount": 2000009000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4zpeVW7GPDnsCgPDVHnxakHEXRXE", + "amount": 2000008911110, + "lockTime": 0 + }, + { + "address": "NULSd6Hghz26CUbaxFNgjptuWdpszkUZRrZXM", + "amount": 2000005011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnuWDhVzdUcGScoS4erce4jYtWL8w", + "amount": 2000005011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgduWqLstfaUED6aeSNVKCNRQ4haqCq", + "amount": 2000001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "amount": 2000000679064, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "amount": 1987602846753, + "lockTime": 0 + }, + { + "address": "NULSd6HghefZz8ZWBsSEMfgsNCrjLFCn6cRFy", + "amount": 1985670089499, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRpRExEZCcpvga3VrAWGHAXREyBLb", + "amount": 1982211469443, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzcamVx5t73xoWwkfi8RkWrxQ1Vxz", + "amount": 1981832472943, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKd8Gsc1WCjwhLXCJTtfsYJJreU7e", + "amount": 1979697708837, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "amount": 1966041995997, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLwEF7X3adw5yddZzeDwAqmyjJ8cv", + "amount": 1963738533982, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2ED6e7zhXD4gNCoDaxtG2CR4UQUx", + "amount": 1958238264916, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFANhkhfJMEL1AEnenAwhd4R2dDhM", + "amount": 1952478544587, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMDBkhBTFecxsmRWtTyEdJbQALuPa", + "amount": 1943494060487, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8W1KYgED4bX66jm4JhFsEotGVUCt", + "amount": 1927503792350, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrCQn8Js8Jj2k7XyJsiwxUx3fgTQk", + "amount": 1919931284005, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjL6YhAfqoLJHjnSFrvsM2M3g3bg1", + "amount": 1919458620000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8sByyNJHq1qMZJShTDzxeWEnEWRd", + "amount": 1917044047699, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCFMsmM1HY3L6HfxWmmgeKbFsECDh", + "amount": 1909180173388, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLzasLzfEB17Ng6XdVAprreFLHuwX", + "amount": 1901147501442, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "amount": 1898634487477, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg77shW3frMpdrKLMKeDuL1g2zen", + "amount": 1892418605876, + "lockTime": 0 + }, + { + "address": "NULSd6HgfP6LEGs14dffZ1fuYcxrT7zuQvWYh", + "amount": 1877990112895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2keX9gQUqHRUwmPWkP8yoPy8XJa", + "amount": 1867607885258, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1qvm9SBWVkpyzvfUzEJAyPWNbUGi", + "amount": 1862720614605, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPCBADKPgyW24ctQBdvzj2XXwD63M", + "amount": 1845483896505, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGoSK1P2DQUjM57NGTswdUnkLngA", + "amount": 1845459117552, + "lockTime": 0 + }, + { + "address": "NULSd6HgbfpfdxF5baKjqwGcKGZxQ4vaVQN8U", + "amount": 1827502997735, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5WgLPMD1pv1gHVRJYuFDwFPBYd8T", + "amount": 1811226447321, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7PB46QdGCT4KRMYBaB6RQ8j3Fuo3", + "amount": 1806223870958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSiETy7jehzqftRJeqkjbSUJajsVa", + "amount": 1797559579952, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9nmoBXWwwVi9EUjNyH83i4K3o6VQ", + "amount": 1797270576526, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSVhkhmSAoaGcfAc7poYT2jvfaAFa", + "amount": 1791680184979, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAc2pXyBi6P4EVMC6MAmnn5Ei5SgL", + "amount": 1785822811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzcAskahC31eyfUdYhJyseqnpqi6F", + "amount": 1784376882586, + "lockTime": 0 + }, + { + "address": "NULSd6Hgersq783PvWvj1y9rASLgWAJD1MKRK", + "amount": 1771360194271, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHqAsfe4JtVUGN8WBGi4Sxd8xHZpj", + "amount": 1769642117033, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLD49cYmHzAnFhQhb7BsBJ5y92e1f", + "amount": 1767652984461, + "lockTime": 0 + }, + { + "address": "NULSd6HghaxWnLQtYihAA3Kb4ANV64e9zNB3j", + "amount": 1761683011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNPwnWxpE9tm1SWmbQiKdkKk2Dbf3", + "amount": 1754373322210, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyXkFusfHdgqzX7YtHRkmtq3V8Ec9", + "amount": 1732009518727, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5gQkgcobvddP8izWMyrMAKEWUfMf", + "amount": 1727913275323, + "lockTime": 0 + }, + { + "address": "NULSd6HgWz5dGKQ9MuHmQAAaRbTkHPL3SYx31", + "amount": 1720147985773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcVVCPyK9nCKPftvnViYnwq9QV3aJ", + "amount": 1717345934781, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "amount": 1710378692033, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpWqoUeqpYhJoLA9z37DB4XzWfr8F", + "amount": 1662804498747, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKokNxU2ZzmEp7pUAxNqS1c5xrWYa", + "amount": 1649888019401, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5QuwuCTNWQEepawrnb9C3cThuqDR", + "amount": 1646621806474, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyDfQ7RkTJM9oSLe44PzGMPWpjXtg", + "amount": 1642447581350, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBjXq6pp4foqnFn4ZMTM5gapaQefU", + "amount": 1640698498183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzUXiMvuxdsfAu4EzygH9cvfKy8gP", + "amount": 1636590784803, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeck4ieVqgJfJvtb8iCFYT59Vm7iKn", + "amount": 1636555919569, + "lockTime": 0 + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "amount": 1624093192505, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwzDAkA4pVhiyqVsodS2k9fyYVkYW", + "amount": 1622344350254, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1yu8LiTMtHaox2vXtdfo29F9aZSR", + "amount": 1621883807409, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZtQzSF7LUpwSfDZsPkikbMcX5ns8", + "amount": 1620351258779, + "lockTime": 0 + }, + { + "address": "NULSd6HggCaKLUmgshQxECNBGya4oT18Dmcnr", + "amount": 1615784977131, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdY2aa3FsbwZaUyrMx3BSNCjhT3U", + "amount": 1611089702586, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgriTHLQVAo67S44aFacZUVgj5m4J", + "amount": 1608079726426, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCzNXxZaQpt3ueuBU2YpvxSFdPAfa", + "amount": 1596157645055, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhTvrbiwDzVQ8pGFLpkzG1uFrjCY", + "amount": 1580138725178, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQSqMYfEAPHpvZ2cpsigzzd8DCXNU", + "amount": 1553796707569, + "lockTime": 0 + }, + { + "address": "NULSd6HgisAkz3idhk5Pkx2DNWsXJA9Vm7N7c", + "amount": 1552885553329, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKUfPhFuCtPY2HGqDGUJqyD2AAZbL", + "amount": 1547805533569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcwb4nBrS9nwGvLhURGysnQhLKHuiz", + "amount": 1533811095448, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJvUbe9pcEHNSqWanu2FHZqHEhS5N", + "amount": 1531431774417, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAB5bxSRhEiPS25CmjyUKZ5U3P6GT", + "amount": 1527460702364, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2HN3X2XChBNBZjeuCThhj16znsy4", + "amount": 1520006101451, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYqXBna8zrh7eubPQMaZ6bq9F4vq4", + "amount": 1517994561157, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "amount": 1514347763189, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9JessaaRTstCDt2XHyExNc7bxvPb", + "amount": 1508660771720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf82YhAuJAaAKyoE4HhKgznzHiEw6Y", + "amount": 1506362472146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkdNuL5qQvW3sSMfHTzZ3FnciLEV", + "amount": 1506130233709, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHkdYBb9wLFrgfC5kQX7DcMuC94Y8", + "amount": 1502655086918, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ohDUw8suciPcjkGgefh4gWAp3xH", + "amount": 1500687804548, + "lockTime": 0 + }, + { + "address": "NULSd6HggyYNaXqdVyQNZdF9oBCJsHaFQxdeU", + "amount": 1500666032784, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1y1EbeuWSJR5YpY3tgShDSwTj6RZ", + "amount": 1500101605474, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRQrqguJPK8f51d8k6MdFuxxhCiuq", + "amount": 1500000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVHiRemJfme6Ysc3TtPBQWpYezYfG", + "amount": 1499807257083, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZuNHdUfcmAQwnEat12XciLWFyQeH", + "amount": 1494015999998, + "lockTime": 0 + }, + { + "address": "NULSd6HggzzSEkiJ7eS6JdXxr39TtH6UhUer5", + "amount": 1482286686924, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmWWdFEy5htV7UtuhAsvzVfMi6edU", + "amount": 1471831927535, + "lockTime": 0 + }, + { + "address": "NULSd6HgddQZM4xTmEbRVehVrEBgMXLfcLphZ", + "amount": 1470277969654, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjFp52w6pJUxAVW6EdiD4F85jXZLv", + "amount": 1466072347285, + "lockTime": 0 + }, + { + "address": "NULSd6HgesKSESH24YBPEqh9RGrVFtBRJ3HRv", + "amount": 1458153329469, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfec9o61sjdBZqrNNi1o4jJMVo68JK", + "amount": 1455871158284, + "lockTime": 0 + }, + { + "address": "NULSd6HgXahwfXGb3srzaWvVkj4SN9tgaEzKa", + "amount": 1444250047272, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3SVS1tPwri9YWu9e8uRv32eXG37h", + "amount": 1443549025153, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4WxRbAhQBxyN5agQCqsBaVDdDgP8", + "amount": 1438794879615, + "lockTime": 0 + }, + { + "address": "NULSd6HgWu6VAZ7BLET3VFkkFQRmRYkiiDDbV", + "amount": 1431131990629, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxmAeNeFUpAY5h9rNwZC2gf3mPvy", + "amount": 1425676300814, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTw5x6UMpVfZaJjQsXxKEWn8FKC1X", + "amount": 1417582606542, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5nHWKWBzPoMdUhWu9gEcT2Qqm8pw", + "amount": 1410238937132, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4aZUR7C9HhTwUiPT1MHMhzjZx15q", + "amount": 1404023143035, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxuQk7Zk4CoMFJF7jguuCsjGzTvQv", + "amount": 1396528826334, + "lockTime": 0 + }, + { + "address": "NULSd6HgbumBDfSJzWHADEryQgQ4yQ8o82hjD", + "amount": 1391149776316, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9AhunT85G5kWBVEGBz4jGUZfqtAc", + "amount": 1384016377065, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJ6DDS7dm4sETjvUJYCYhHYBWyuzi", + "amount": 1374898768200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEgH2e9LL5APbsA6KPDXP637y1Gcb", + "amount": 1373044564766, + "lockTime": 0 + }, + { + "address": "NULSd6HgiETjCnzi8zWQJUktah7EHxAFnqrDQ", + "amount": 1352281612470, + "lockTime": 0 + }, + { + "address": "NULSd6HggUfT6npUV39hT81wFWDHmbEWe85hU", + "amount": 1350451450538, + "lockTime": 0 + }, + { + "address": "NULSd6HgVN2SD3UkXBrLKTHdVXpzgTohLjMGj", + "amount": 1348918831744, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHTafpDBFkDmEYdecgMftM1iQDV36", + "amount": 1348001423889, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9Fe3zLsLGfWBiYUgcHpLfYhEjJ59", + "amount": 1346473165622, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCcf9kuYY1VmhzrnccmkNMfY4vMX9", + "amount": 1325150682227, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz1UsCibLMhbp9zw8TX4Jm1ayzDkH", + "amount": 1318390185884, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQyw1f1ZskL4PohnJKb8TxSxGtfJU", + "amount": 1311673839170, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGme7KCm8AaAumwv2dxPnSQ5Je9qz", + "amount": 1305660893498, + "lockTime": 0 + }, + { + "address": "NULSd6HgewFTZxzMN9UVH4J7qkTMVMP4PDx4q", + "amount": 1273609908094, + "lockTime": 0 + }, + { + "address": "NULSd6HggemmruUK6qq2YaLimD92YnpZ6DaAN", + "amount": 1269733922897, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1DqbM8hpq4wAfeFV6f4fDvACBHHG", + "amount": 1258671288218, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbachvMQ8m6KeLRtHTrrgQF4XtMiX", + "amount": 1244592164315, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxUmGXnvFy14LxCP5zobVj6mM1R69", + "amount": 1236570016360, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTA1axuXDP5K3mbUZHEcnyJVwptLg", + "amount": 1231775430133, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDb3vetwpcWuFHbXHd11XLVam6m44", + "amount": 1227217241865, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRCRoDs12UqwNRt7h8K9d15ZvLR9z", + "amount": 1225168006874, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "amount": 1223568760775, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVFjX8GHpjBvpGEgTcfypygAtzhd9", + "amount": 1220193182776, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "amount": 1220111371819, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1WNpsVdW53v2zVvyqft6fNqSzQKk", + "amount": 1219907526522, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVGahoihG3DRgjJx7HhxYwA89FFqd", + "amount": 1219385000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQMvJT4ryFRv3wu8tqNjHqo4PZxPt", + "amount": 1215940898534, + "lockTime": 0 + }, + { + "address": "NULSd6Hgas8QXqz8pCVhW1mUhXMS2CQ5imSbF", + "amount": 1195526181049, + "lockTime": 0 + }, + { + "address": "NULSd6HgYS2F7nRbgesbUuQqxLtYVvdGaFxpf", + "amount": 1193314827279, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMbMHAxxLkqrhU1CkPApJfrR4QvRk", + "amount": 1191874181329, + "lockTime": 0 + }, + { + "address": "NULSd6HghgD9AFK4d4M7tuL8QT24EruVVRcQ9", + "amount": 1187036239092, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkqGKMLuQkHDYdjbv1yvansLosusD", + "amount": 1182119999798, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7zb98wNnuhkDJJJ1RYthVjbAWcwg", + "amount": 1181730500977, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbowt3SzVTpQGz6CyPpc37MCgpiTW", + "amount": 1180911172991, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbZLP17Kvx7FXJDQjq5X7vR3ypR14", + "amount": 1180639943197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9CtzjyhUBPVUiJ2AQghWFgNZL3tp", + "amount": 1180221775131, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQ261d7ew1fvQ2UYqPGFRwZoqL7QW", + "amount": 1178454035091, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvorwbBxs6BSh5xd9dPeNLkP57Tqf", + "amount": 1177773988776, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKjWHpdN2LxGdd8mQg4z9NVtFbBqT", + "amount": 1177478202000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3d2p8Bb1YGJMiKLzJ6VBr4TPAHcM", + "amount": 1177426191667, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBNcsBvLT7mcAPf9XKvXjiTa7fzu7", + "amount": 1172934345912, + "lockTime": 0 + }, + { + "address": "NULSd6HgUStkT3edNg5BiApGNq6VbYoNJyxe7", + "amount": 1172523076937, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3Tv4QPNsfQfT2ME4uSc7eGmbj1ev", + "amount": 1166606767133, + "lockTime": 0 + }, + { + "address": "NULSd6HgZASnHcatyCHATh7TXs1qTLNXmXAiD", + "amount": 1165694315799, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNdG4XpuXNfTPmanvrfat2RUYpftr", + "amount": 1165665233325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfe9HSP5zCU5m4Tf2raVVKsY5eskbW", + "amount": 1156022945798, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLRLjEqocdbbNYuU68YYsiH9Webt8", + "amount": 1154908155717, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrDSb6FRSuUjENouTfv5X2oB2oNAf", + "amount": 1153309494721, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "amount": 1151753910270, + "lockTime": 0 + }, + { + "address": "NULSd6HghD651DYwVL8pmEC5VRns4QBpEJ1tB", + "amount": 1148526819804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3iAt5z2svfvs8J4eh755uDWe2E4L", + "amount": 1147481045771, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLcqP9yD6AupAowqRV3XYiL3FmgF", + "amount": 1147168901655, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLAsGwM2NevxxHPnvwxnezkDrAS8f", + "amount": 1144140806116, + "lockTime": 0 + }, + { + "address": "NULSd6HgiH5BheMf3QXzy9sAUX5arbqGnyCGt", + "amount": 1139328418699, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7AF5PPHG9ck6RDp9YnuJqBTjz2nQ", + "amount": 1129951066689, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMf5zAUJfVEQisWPTYbjiEWNAnhEe", + "amount": 1125484353559, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBwaeWQgHxUJCoKbnnSokF19wBJyd", + "amount": 1123681178223, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtjofV5369g1hJ5CT6XTWwkRQUED", + "amount": 1120995894108, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRqx1P7VT9sx9Q4X2sACtFZNrMfAg", + "amount": 1110591670839, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKBzvoc1QqHfBVnMJwJz6PLoCmPhw", + "amount": 1110095452915, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaih5rSCgiV9YFhhhs7B4gEnAH2wZg", + "amount": 1107452274199, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRdziFvP86QQtMrdx6cLjVkjRRHe2", + "amount": 1104412611110, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSpiJGqHfGaGbBZegjeLRUQanohQ9", + "amount": 1096638123245, + "lockTime": 0 + }, + { + "address": "NULSd6HgU13VLLdqCUJgpVDHAfXrkmhwaSA1u", + "amount": 1091677683343, + "lockTime": 0 + }, + { + "address": "NULSd6HgaP1pSaAY7RBxxKy2pCwuNdcBrTge4", + "amount": 1091443728838, + "lockTime": 0 + }, + { + "address": "NULSd6HgckqKKXn6kgqCz9qT2DhGSEJM6uKji", + "amount": 1089234131551, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj5DnexNdHMu8Syj22tNi4J4ZcKq3", + "amount": 1086705444472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2xE7Lv27Ze8JxrF1cqM3u3aYuNCk", + "amount": 1084320903948, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "amount": 1084172157914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsKCEcjR4zwaS4J9ZDjMzqhHQ59DN", + "amount": 1082231867027, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKvFwoGNMLWzcUwNWxoeUTc9stqVQ", + "amount": 1079272087137, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHGB7AL9kTkJ891scKmodWj8yeNnt", + "amount": 1074404237418, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWnNqD1q8o7K3jDXQgTSSVa1hV3jR", + "amount": 1072794659776, + "lockTime": 0 + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "amount": 1071198777167, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9FzhPoTqwanEGM9YwgFEiHNp8GRf", + "amount": 1062720026227, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFFNygwMkaZbzDRuH2ZDSSBHghDzp", + "amount": 1058698633645, + "lockTime": 0 + }, + { + "address": "NULSd6HgegmcAePGrqbbaC8FNYAPG6HsPEtp1", + "amount": 1055829412151, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb9AK35RHTGLwmiBp1ESHn3kTyfUb", + "amount": 1055000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULgHiJsfnsivg2kktNyDNgjx6a5Vw", + "amount": 1053999366856, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxGi3dbMgjaR6EYt1W1xXuZWmdcPS", + "amount": 1047230969277, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiXM3Ukc28cB3KxYThHkdT5oMkLC7", + "amount": 1043608175056, + "lockTime": 0 + }, + { + "address": "NULSd6Hgefiuwii2YoyPyz6wEuQHVy7VcBMVW", + "amount": 1042372249596, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "amount": 1040224946221, + "lockTime": 0 + }, + { + "address": "NULSd6HgWobaWQqtfDYX2t7egDhe384pXRTZ2", + "amount": 1038416336793, + "lockTime": 0 + }, + { + "address": "NULSd6HggMezjc4qosG39fJ33rUaCS8eCodmK", + "amount": 1035780672679, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtWAm3pfhhWksVzuWStnme61QU4J", + "amount": 1034849291290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1vnLQrAy8APYoKFADXZdDAiXTCfp", + "amount": 1029607508130, + "lockTime": 0 + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "amount": 1029354122846, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZ8nw6ftnUcMh9kcpp25pXDxFqoZK", + "amount": 1028188135067, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfHCmCQj6bk3vKG3zjtAaxSfAUhcj", + "amount": 1024835520677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbg8hzCcDhVemUDJMTwrabghVBeF11", + "amount": 1015578194963, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFk8PXUfgr19HdgCSbEvDReieHYkz", + "amount": 1013306751497, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKPt6dcVUj2bU3GxgGDxKzd3KV9gm", + "amount": 1012730982526, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxQpDShkmH8Casj4vzUseVWqm8jBm", + "amount": 1012588485785, + "lockTime": 0 + }, + { + "address": "NULSd6HgW59pcYJAeczD21X2kWeon1maSs1ba", + "amount": 1012198896427, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUFff3D6Dyv61QD7MKqcWqzkB5tu7", + "amount": 1012011148542, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMTJZYEbF6v5J6ThVGnzCFubg638H", + "amount": 1008346726631, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhjyupmtbAgu51gu2w1kXpduQheAJ", + "amount": 1006956929151, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbYazktzrrmiwG6aeQwTqDaWxtdBY", + "amount": 1006539021466, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUfoBiGduPjUngAXRUEPzPDBfovzR", + "amount": 1006148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk8jrVDHuT6UVndyk18P1v6PuwRVU", + "amount": 1003692029229, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcXnvsNHh7ATpH19zB3Jbh4C8RETf", + "amount": 1001096397885, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzghb2WJwxLVjNHsfynebvctXAwGE", + "amount": 1000000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcGy2sfMgrCZF3diRMJudwwCwCkPz", + "amount": 991095716221, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbno4u9Bg3kwo8aWYbmH8S51egR1di", + "amount": 990001111110, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAD9YTYCzRcL1nZWtswWUbjrB2CzY", + "amount": 987788400255, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpjh7skvNLxwYg9YK8XN6dMMAs2C", + "amount": 987356288126, + "lockTime": 0 + }, + { + "address": "NULSd6HgWy6Q8eLAbXoyQdu8rjrxoJEma64ZY", + "amount": 985080141250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbppYBCb4Fbov8rWb19qLjtNDrHaFf", + "amount": 983932110963, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxSYNmqXuCc92NsqDX7pEWAcuT4QW", + "amount": 976594924298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNWU62xsaFQTwk6fE1hRMPSEstkSD", + "amount": 975225897104, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "amount": 974810436114, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUAuoMykUkhdoWNPmLtysX8whnucx", + "amount": 974597487651, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGjrL4S3rA6XAebDhq6ah91ipq9me", + "amount": 973352161546, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1WdHmfkwFFzREFbAnaCxjUs35edv", + "amount": 972522251795, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "amount": 971035036260, + "lockTime": 0 + }, + { + "address": "NULSd6HgXj69iw6RjFGj593V68K834ufJr3gH", + "amount": 968970761706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1ByjQZRgKb4sif35KqQjKu9yrVzH", + "amount": 965763074157, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHdM61MGg6q8UPXgJnrnzBnNzvGnT", + "amount": 959479726731, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXJuEKujNP1SyDq9rZveemixEQcd", + "amount": 959154694146, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM8jfLYTBo5dXtjRJ6tsX3EjpE6nh", + "amount": 958869326580, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuXYLPSMeVRGvQBF4t8fwBq5nU37s", + "amount": 958134697239, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCbzS6sZmiUKhABEufgm1V6NYPk47", + "amount": 957639258961, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqWLvovLCc2azWMAZYDdkGchbAJCd", + "amount": 951680110822, + "lockTime": 0 + }, + { + "address": "NULSd6Hgegpg7pDJMPigDN33aBXDdfHeNU1sR", + "amount": 949018017124, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRtWUuUWF21EAeJV1Mpu5ZrXrKGNF", + "amount": 947722535330, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwgLS781Q92KVcv3ezfvfKBsrQKqE", + "amount": 944915546924, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCxbPx1yJs1cY4QcHDAW3zK53cdFP", + "amount": 941831007188, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "amount": 938534599149, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCSAKfRcf21Hm1CJiFE36tvhT9SjA", + "amount": 934183506679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHXUn9o44Q1epYVwHtPDY3AbHSw7f", + "amount": 927367561109, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5KwmRW5rnhCZKX3Vtu4JJZg56jnt", + "amount": 924162741660, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGv1MF6Kcz8XkqfWcPs582WFdW3uC", + "amount": 920900954170, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQXXGhdeiFS712MhDVEC685WxRfj9", + "amount": 919794036530, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKQKTsmRsyjnybCp84Kk5BYGBMEqS", + "amount": 917970269675, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtmcbJnw4FzdVTVnwoRgeVzzz2EWm", + "amount": 915899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm2g39nJYsDu99WaaWZPt1z72kMnM", + "amount": 910841811110, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3jb5JdAYA8aoBZ3Y9VwXsYNvnHNa", + "amount": 910062149681, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbmBjKLi2cfKjhScnAaMfCCjwMeJN", + "amount": 907386128958, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNqufm7ZGTrNg257LMC53a6kDHNmW", + "amount": 904132980217, + "lockTime": 0 + }, + { + "address": "NULSd6HgabnpQaz6CcBEyKWcyT5JktojzAkRV", + "amount": 899701111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "amount": 899298000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6wdJveJSviTjXtWhsyFKN8bat3jp", + "amount": 897589521866, + "lockTime": 0 + }, + { + "address": "NULSd6HgVesSfxvdmdNrJgWMoP1DZSQKXFxTL", + "amount": 896974107111, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFgkkVDkqdxagzQsHq55DZ5hoqm2x", + "amount": 896020618575, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZFfRUkgCtcSfooDiFo6KusCoCrC4", + "amount": 887343608898, + "lockTime": 0 + }, + { + "address": "NULSd6HgayZABV8PXjbdMnGUVqRijEiKmmkXQ", + "amount": 886547626290, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSXChY4tx4ZmcANJD12pwHpVfmfBm", + "amount": 884784999700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLLgaDp1qEE6RgDiPgLGXjNw9C6ir", + "amount": 881773485284, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7BAioh9d8Cu5CyZaRaKiHqeQBX3C", + "amount": 879996284959, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxZRdZepdXo4srg9JbaSa5prStr2j", + "amount": 877922858919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSHSxm4QKsTba16GHASZxgZRNqJ1z", + "amount": 870003633881, + "lockTime": 0 + }, + { + "address": "NULSd6HggJGVMc8BfCWLCPqTJdxj79CP5uxXr", + "amount": 869505911395, + "lockTime": 0 + }, + { + "address": "NULSd6HgatWAa14kRc8aoLbqNXhZ7HdTd7LjU", + "amount": 869161533640, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPhGLZKpesZ1bpDrgA4Rfe4k9JyW3", + "amount": 861846278471, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgnvspGissi5sTqGVq3S5X4T3HXVz", + "amount": 860309429777, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh84WUXWdpjUZp3Szr9LWRaTYuhHgd", + "amount": 851033632200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL7f23zcbgoUqXFtVQQhdkMoujBki", + "amount": 849182517814, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "amount": 845251874740, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJx7k9gteNXRqi1vzfiaK6aqvzG9Y", + "amount": 838330496026, + "lockTime": 0 + }, + { + "address": "NULSd6HggY9H7RnXBvEKGwsU4yQ4Z1wm8HWvu", + "amount": 835415502146, + "lockTime": 0 + }, + { + "address": "NULSd6HgU28rPq7BDZrEBVDLeQhGoWVZKaivF", + "amount": 834732962466, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6vzMan2YCzeE7zaCfEBMayjq9kPa", + "amount": 833202279345, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtq3fYFxMUGDiPwTuUxHfnWduxFgC", + "amount": 833137364069, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7AkTT2gM6ja9GwF7FxyZizynyEQR", + "amount": 830732461821, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHmdrakZW1f2dNzbHua8Ep7FbS1AJ", + "amount": 830430210879, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCMkex2rfBHwNYpUZmtPpa1Dcn6Rp", + "amount": 830183327774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmKewu5ycLcJQxdpTFszCqNdsNVs9", + "amount": 828771701195, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYwo5zRDtCe4r9V2dpMjVZmPqEvP2", + "amount": 820650152627, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU6mCcCdUXuek2jnTxte4eMq6KevU", + "amount": 817845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9twnxWCWjjxoeu79CPyQBgHUeaNg", + "amount": 811949320488, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "amount": 808628413295, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo1h3GXH4n85MEVSmsXoaBjHXaqyy", + "amount": 803029504677, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8PiYq9ncdDKBGdtrjPg7wnRpuMHk", + "amount": 800238336572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc7awGa6zfmZtmkvnxN5eLMPCVC8E", + "amount": 798709479447, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "amount": 798218653505, + "lockTime": 0 + }, + { + "address": "NULSd6HghxJfqJ1GhbmqpdJJZCBs4TWQxF2XS", + "amount": 792686002383, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7YztDYxsPNQ1ZZ58pzCr7CyHWd2g", + "amount": 789059928923, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi2keBnGhks6paV6Q6HXaQi57WKXq", + "amount": 787813443027, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFZk7GzJUETf5dFxWBJkfjH3eK3Tv", + "amount": 786164407824, + "lockTime": 0 + }, + { + "address": "NULSd6Hghq22hvx1gTJpv2GtwBf7QNayAxMfN", + "amount": 784306203242, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9JfQPuNhoTTTnRbCYY5W3cFKCJea", + "amount": 781311939095, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuLLTZUeSY7yWMHLSXT5WoLpSNP8N", + "amount": 778325647308, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBKwgGzKXCWkxtqSVRGVXbWh24Wb", + "amount": 775694260050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6E5R5KgzU2FmkRjBjuf5roz8SBem", + "amount": 773749573171, + "lockTime": 0 + }, + { + "address": "NULSd6HgboepL9Tce4bMNRpks9ieAvX2LAucw", + "amount": 772689415122, + "lockTime": 0 + }, + { + "address": "NULSd6HghueeZMUxBq4L3L1WskRtQTCXgSQJR", + "amount": 770274611201, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4zKFFhJDvwkgLfdyT3KP5VqSdeEE", + "amount": 769361580083, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx3P3ZFywymau2cD9uxrbtfHjZG4U", + "amount": 763145063210, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWgKYVg4dfksNNh8eQPwqE4G6pxQ5", + "amount": 762290565813, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNswmDpVW4dUV15MG5rDWjFKu7jT5", + "amount": 762157543635, + "lockTime": 0 + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "amount": 761551532758, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfJpBFvrtdPXfm55K5VtB2KabVqs4", + "amount": 760401111110, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4DfqHXgVT8agbCVL5g6Ypea4MAM8", + "amount": 757415674634, + "lockTime": 0 + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "amount": 756905876678, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPJSnsuWZqXFVuWeTesKhx7mMe3D8", + "amount": 755648204498, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhXYXYc6sH4p7SKfN93ADeQxsUpHH", + "amount": 755461474324, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2LLtbb51C6gdWxSKfEqCR2msAysM", + "amount": 751631538941, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfofkQeiJPXLXYncSAsiAYZq9EN6S", + "amount": 749769546618, + "lockTime": 0 + }, + { + "address": "NULSd6HggZETswu22TvL7TrcqCWJB6GrQcZxJ", + "amount": 748967497030, + "lockTime": 0 + }, + { + "address": "NULSd6HghFTZgWJKnCeoSTTn6ZK39jdThNMe9", + "amount": 748111322930, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8s2iu7gxs87Axm1bRJpiGBcX2UVi", + "amount": 747851114728, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK87QgrkuvU5KaEjVmgeajTihHE3e", + "amount": 746470940518, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRYXgWvy35H5XcjEh7ZCtw2H1JztH", + "amount": 746122073952, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPSqUPVudWjt5zomRBCiVQ7sQCYL1", + "amount": 744516194522, + "lockTime": 0 + }, + { + "address": "NULSd6HgesQ5WNxgXoPFJhcBddGStQkCfc8zw", + "amount": 743849169051, + "lockTime": 0 + }, + { + "address": "NULSd6HgimE8mCHnU8qADv7g841FPt5X5Hic1", + "amount": 739638085218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "amount": 737947480291, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxJyJUTPwaKjYn76oXpQWZK6sJAte", + "amount": 737136696047, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "amount": 725274860466, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQjNwUxajS1baV1LXEWpC1mmSfQaN", + "amount": 724173124892, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyn1tkjLz5ByF7JhTP5R9TQEnUXDH", + "amount": 723670481621, + "lockTime": 0 + }, + { + "address": "NULSd6Hgduxm3XNgfopgJzgVw2pz9CR1KNpGQ", + "amount": 723194608282, + "lockTime": 0 + }, + { + "address": "NULSd6HgZicem1vxjr7XtED1KGvhbWnFMKfeZ", + "amount": 723168098780, + "lockTime": 0 + }, + { + "address": "NULSd6HggBibTwTyjPpiWePumRuwRQTUJi9t8", + "amount": 717889138351, + "lockTime": 0 + }, + { + "address": "NULSd6HghrBfb9RkHBucpN6Htso2MBeXSPg5q", + "amount": 716901647085, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5WqVAMECMEfUSXNHgrsjBejVvNQ", + "amount": 716370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "amount": 715405091344, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnva55Mh6zmuYoskpajAkBvNPVGkU", + "amount": 714099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQNPF1RaHA9zhxLe68yuGi95nPjgy", + "amount": 713335697927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX86x5S9TA3dTEYscVcWRUXDAaM1Xj", + "amount": 708807307987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyX2DgpUFCeUkPwin95VRTiDRHveN", + "amount": 707593958267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS5L27w8bdkyBus6MkfPEWY9vT89", + "amount": 707065785077, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmogneDcZvtKThbeBgwTtDGiuwHFK", + "amount": 706540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfobEA1mgRVK4KMfrKdeR9V4fgWMRi", + "amount": 705502900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgihn6NcBQmj7HjDV9FmfqbNuCaygAZ", + "amount": 702744514797, + "lockTime": 0 + }, + { + "address": "NULSd6HgXy9noSqinPGUxxsG3tzLBah4HaNog", + "amount": 701804169652, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExYjTQN8KLwEHQ7zYbC4itc5WWEK", + "amount": 701585334635, + "lockTime": 0 + }, + { + "address": "NULSd6HgfymdRvZ9mqd5KZMiYMagKypWWNxC9", + "amount": 701096309761, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGVr8rpYwMyFWy2kJtf4QFSMoFPse", + "amount": 699928014706, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF2bDxvTnPCk82V3yvdJ6TVnJHe17", + "amount": 699524889618, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSdujADtGq2FBJUVojL6XPZfYSDQv", + "amount": 698872244628, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzvpmdt9muzkLpo7a1TL6FV5wk6pY", + "amount": 695696346000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6zMDNCHHy2pKkW5LZxhWGioboF4x", + "amount": 690663699517, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxMsdL39BXZxxz5YcgmJ7LdU7FcEH", + "amount": 686055129452, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUshQcJEwDwBdn84TQHdUcwNpaR8S", + "amount": 683022637798, + "lockTime": 0 + }, + { + "address": "NULSd6HgavE32Gpy2bZMzMoNnDCntvchBJquQ", + "amount": 679336310996, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "amount": 678591959669, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1tFKQRDv2ACMxvcAXu2p9u58eSSM", + "amount": 677357601214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDQWvoHSUnF3NNwtQKS6WF93H7Wzo", + "amount": 675666996711, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKck8tQRkRifJ8R5ERqYfMx16goJT", + "amount": 675200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtJFSNEpXygrgAiY6KqSX9fRP83bE", + "amount": 673451983271, + "lockTime": 0 + }, + { + "address": "NULSd6HgbU9zpwzkHPZm3X94LaX7vz1AYJpoL", + "amount": 673382297009, + "lockTime": 0 + }, + { + "address": "NULSd6HghEXAFCQGbk2SpTk1ACmPboXA5rm85", + "amount": 671924566621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB4pLYxDdAawxpRdhaYGEJZTU7XPX", + "amount": 671667222783, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe881xnCupS6UjW1B9cst5j4oEMcS", + "amount": 667992367911, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEiUD2EqUwJR6KjdcsgpritYwsVd5", + "amount": 666907474237, + "lockTime": 0 + }, + { + "address": "NULSd6HggnMThJKxt5cFHMvFDRZVEsbGAqHQm", + "amount": 666500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2oeSYXkhAMqAcoaHoF1RcnreqFCb", + "amount": 660973933588, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMr4GjCyiaJGUkG4yMzWfHGCZzsqC", + "amount": 658714559415, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqWw69aoiVpAarema1S6jsXzCyv8", + "amount": 658513620604, + "lockTime": 0 + }, + { + "address": "NULSd6HgUXfBsjPebqtNDHV3a2hiisBT6iSGL", + "amount": 657440163873, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5wpdszauhfok6seTakAvk9tAYvq7", + "amount": 657239700798, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCxGsSFfsvQHpAhHy2hAQYkQEQLuo", + "amount": 656919452718, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZTukJM7HYHbFYVoiS2k1ATa36tpC", + "amount": 653248487428, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjZvfrYeVPQuCuMWK8ZQZLapPiewW", + "amount": 648157947682, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXyA5Jna673u2azuraQZNrrJdwjJG", + "amount": 647572905512, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQjamvd5XzCyrRyTkAJEjYkjhohJM", + "amount": 642940741252, + "lockTime": 0 + }, + { + "address": "NULSd6Hge45wjpfP4jpkXXYujeD41moGKEVz5", + "amount": 641055825467, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTfUTJ89ugussJY71dsEtdpQMrako", + "amount": 640948206033, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4Bqvxmj7nx7a7QswUBXe7vwRGqTM", + "amount": 637896844713, + "lockTime": 0 + }, + { + "address": "NULSd6HgbotWLqqUYTNyKxc9JwzCR6gfSTKC4", + "amount": 637626579463, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "amount": 637579061019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvKZP4SvTnkRprnDGNwAePPAktVYA", + "amount": 637038357481, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAy7yf6nkFpHRke8nUwwcM9dn3kws", + "amount": 635886645100, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6JPgCDXfJv17jTzxYLWKtMjzGrjH", + "amount": 632414595111, + "lockTime": 0 + }, + { + "address": "NULSd6HghC2aTcuqz6RiJbPJnMWSmBKBEr7Nc", + "amount": 632346327509, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx2Z6mH4kYSujPqXaZXMRBybaayTx", + "amount": 631312503303, + "lockTime": 0 + }, + { + "address": "NULSd6HghUFiRWKL1s1AoYMFwyvfFx4T2h6iE", + "amount": 630692902584, + "lockTime": 0 + }, + { + "address": "NULSd6HgakJpoXRxxXdVmH5UpEhsFtN7JWmJJ", + "amount": 628146752685, + "lockTime": 0 + }, + { + "address": "NULSd6HghzhC7EKxUcwnvXTqCwszohFJNS7hz", + "amount": 623261133230, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPVkQPxMNxrTu7ozNJC7DQpeZLxSa", + "amount": 622101156482, + "lockTime": 0 + }, + { + "address": "NULSd6HgeetfD11bGenh1N8NLWkj7USWoCQZ6", + "amount": 619718646321, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSn9EKu3hr77yVQZGSqhA1x9CKQHt", + "amount": 618000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUXkiRLXfkJNmJR7TYrp11dmT1Xxk", + "amount": 616181029252, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw75WxcR41N5PwiFFqew7ZyEmgXWm", + "amount": 612835767567, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCQpGGJaZEoTcMKUhJ3PcqMxpZaNL", + "amount": 612678347930, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS4ah1hfswUx2LSBRMocgvfvAJdXx", + "amount": 611849611901, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFkVyPEj38U3egyE8jCTYWCZtJcX8", + "amount": 610024780420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi153Z3eSQfS3h7fWbytkEUe2Md9Pd", + "amount": 608158543434, + "lockTime": 0 + }, + { + "address": "NULSd6HgafgnCzJ6YWUq4LjwwHJgdb7xtJz9T", + "amount": 607225574087, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6G63GmMySNNWqWhEkE6QE2Wpn1R", + "amount": 606018846202, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHpVqLQj3oXG7uDdvvfdY7woo57TF", + "amount": 604403457227, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN4WkbCvef4ZFSwij8VkZnuXjtbd4", + "amount": 603629750073, + "lockTime": 0 + }, + { + "address": "NULSd6HggJxUYdbwCSiRmSqXegQGH1ioYhU5H", + "amount": 600068436472, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRacKWuhUfCBDJfvZXHRFaQxMWKMC", + "amount": 600000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLS4H5RsXKWzNWxDSLXThuVzpvKM", + "amount": 594536999592, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqDR6zjsTidw15dVVpQjSoYU4hZXP", + "amount": 593971278473, + "lockTime": 0 + }, + { + "address": "NULSd6HghumR4p8RW9VSZFLwSCuzwfXXX3M4U", + "amount": 593453737557, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZ7Anc4cWT4qFJ74VU3QujoB85N8V", + "amount": 592149000573, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMEQyLrfRxwQEsJYDsnVa3AWpcTd2", + "amount": 591343948315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hCshZ1uSYR36CqBqAaYFdbWhHbk", + "amount": 590147794384, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMpJKEpQauq8ZNsCMJXVwNS9MUuiw", + "amount": 589427904690, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWtvtNWQse5Wunjr1NsFWrrrb8d6T", + "amount": 589101639752, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3CGnVqpiK9fREwa9Wv8BDpQhjmD3", + "amount": 587328009919, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPoG7dCwWBTDq4hPVxAz4UBVUxozK", + "amount": 578398732113, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT4CaZLeEdhsdeqD1Evi5nnexMsQ4", + "amount": 577801478480, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYqUuDUwmRy12eFcis5Abr3viSRg7", + "amount": 576018679993, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv2VdkX5TzpsKKPhRpo99sUK7PXj2", + "amount": 569900403023, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6jqRzAGUphHtrUHxSxvjRpi9aJgp", + "amount": 569650113992, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy6Go8Myb3xAvDzvAn58z6xk9wS7k", + "amount": 569393267497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCcnxjTsUvcUJBN8R5bAQH5ET1Kv7", + "amount": 568958051492, + "lockTime": 0 + }, + { + "address": "NULSd6HgauKz6j9dBBRQ5zdrYhDt2AyWoY5ub", + "amount": 565050721081, + "lockTime": 0 + }, + { + "address": "NULSd6HgitQdrDGYWimGnzVf2dHAiB2Y5T6Pq", + "amount": 564400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjECtBkESois4Ni8ucHYnSSSJpnacp", + "amount": 563615729120, + "lockTime": 0 + }, + { + "address": "NULSd6HghpbhPqBodxGmsX8ZHf3D8bszbWozW", + "amount": 563495866605, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbLaufWqWbKKnwWHty4da1p6Dd6DK", + "amount": 562853833696, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwv2Lg5xXTaiEAb49YB5yCtf5mKSt", + "amount": 561532227425, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3M3275Myo3P8BGbXPy2RuybEG4Tk", + "amount": 560643306238, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN4z1pheHgtjcCMWmtF9egPngnCXC", + "amount": 560315306784, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZg4HsJXaRdae8Aqi1BxM1F4JET3U", + "amount": 560109433484, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3TqvBanTubzpsB1cw3Jj3ynL8Go", + "amount": 559780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM7K7gfakVWptrv81NcVhRinVrgQs", + "amount": 558335103634, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5SGcNFkFGzHJ3aMEkHQCqY4URM3q", + "amount": 558264517323, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFKcFsTuKhENDwhmSYp1xNxo4UTtP", + "amount": 556373804267, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQEYyPXwxfrtTW39B1qLnmZrjFHaL", + "amount": 555932491612, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "amount": 555256855786, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "amount": 554019878468, + "lockTime": 0 + }, + { + "address": "NULSd6HghVy6kupLT7CXyhJXKr3RABAYzQQiH", + "amount": 553956815036, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEiCMwzzchsZ8PRx35AvY3ZjxySSP", + "amount": 553357820256, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaaLjnZFYS2AM4WroZw4gEs1NMTcU", + "amount": 553345846111, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQLHkotNXv14HEcSZE4z25m6oVmh", + "amount": 550463294337, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "amount": 549005803166, + "lockTime": 0 + }, + { + "address": "NULSd6HgikvpaqB4VfjnJhSKcwg9ZHWzzRBGh", + "amount": 548399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghucfAL25xpY21kKeQnCNiafDTa5qS", + "amount": 548346950615, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJQ7RjW2GVczzdyVRu23VQhBVtdw", + "amount": 547306513126, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPs8nP83imTfkaPbmEUmsFEGvjJ4n", + "amount": 547199231396, + "lockTime": 0 + }, + { + "address": "NULSd6HgYem4DnWr6ELpfLrEJdeikYaTX5LTm", + "amount": 546900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyz1dHJ84QvsT7n5sGWj479LTRVXr", + "amount": 545521200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVg8gqeEz7ukQpzcSz9A5ntKsD8z4V", + "amount": 545447829788, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWMxsKHjsp9ZV5PBy2Tsvz6JHzSYN", + "amount": 542539414312, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2a2LJobmmDREn1P6NayZdiLqU1dy", + "amount": 542498333713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7mMy9cQe69z2scdgTeaejwVahUud", + "amount": 541776225012, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAry4Timnqve879WiLqBtfV6GHZhU", + "amount": 541497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwy8Y6UAN967pzsXUQjkjuwqDsMyM", + "amount": 538337569934, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYQWuuLZXc5dAh57farwwLSx2nxNR", + "amount": 537317010767, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoHeHU5xmVB4USer396JUt7cs8Crd", + "amount": 535969093749, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEmjMNufZiciuPvB6AHsKq96hGUnM", + "amount": 535648032586, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSv77YsfaTFAYYYBBDqfB4F3y1sE6", + "amount": 534483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGDUav6kVmuuybcoWiNPd495raQdf", + "amount": 533990655409, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "amount": 531581201080, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPfcnr6xALUJ4c4FyBqk2ZpZSiHVS", + "amount": 531353802908, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRCirWwyGWLxbjqUTcLgcfi71okNp", + "amount": 531234235475, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdDRbJNLaPTZKSNFoqnY3wborV6gy", + "amount": 526494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF9hMT6jysWZnQu43Qjcv3Cr4Qd6Z", + "amount": 526177896959, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfae8UKA3mW5SB4jqmXgNoc8Z2wHQ8", + "amount": 525656852695, + "lockTime": 0 + }, + { + "address": "NULSd6Hge23Qn1AMM7nUiHwZqQcKuCu7gBQNj", + "amount": 524899200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan6ehtRUoXk1wS6rXbitY57Mh5rmM", + "amount": 524566137736, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4rgjkeq61mrLhDvCWQvQaBE6WRon", + "amount": 524195647436, + "lockTime": 0 + }, + { + "address": "NULSd6HgUByyaxoPrVhvpyPF9mbgKZt7sNtwf", + "amount": 524052614831, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uzjSz1dgAA5fwP5ByC7NuUa84Qn", + "amount": 523776871480, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMhhYoj4DkkzbKrnMjN7SUu7dgP9j", + "amount": 522880094674, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8WC7hFAniqVPCdp8xaNGuUAN9TwV", + "amount": 522862146792, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjrS7FDVwASyLF99mqzCPaCwmFG5n", + "amount": 521812528958, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf4KV72PD2tZgu6xuYBP6L9fctHtC", + "amount": 521047898327, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbgyMSrPdgoLiYWz6N9cSaCTFVJwi", + "amount": 518446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYiEpDaKeBsQfbveVpHPScnsTaXTf", + "amount": 518328138145, + "lockTime": 0 + }, + { + "address": "NULSd6HgWr4yACfteKbx3etGJU131hu3kd7Vm", + "amount": 518193480000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrmqZ5WgpUTqq1ch389XxBxKHST4r", + "amount": 515148173657, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKALkZVnyR9tjE6U24XQjZgVEcCpZ", + "amount": 514925249622, + "lockTime": 0 + }, + { + "address": "NULSd6HgXay3GtdpexB2aW8znDSXXneZLXGn5", + "amount": 513329405274, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsWf2dDiQchmHJMCnk4Ax7Mk5Sd14", + "amount": 509993994435, + "lockTime": 0 + }, + { + "address": "NULSd6HghAFwXMppdRUrpV1AaGp2Y1SFY3K4z", + "amount": 509957522308, + "lockTime": 0 + }, + { + "address": "NULSd6HgffCB6AosCVT3SEbBJRdJfu6DYEuxb", + "amount": 508541394000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW78Rkvrg7bd7wsYEEC4UdfEbVC5LR", + "amount": 506667747103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2SgTE9ws11x37F8RFcdy5JqsypVf", + "amount": 505549324249, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF6WtwyQ6wkoi9vHNrUaSMWhSGq4s", + "amount": 505200074000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKxHDApZDY8kuySV4TXznmJgq19yu", + "amount": 504494000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUytY63xb2utjYYpY7c7XAZhnXZjJ4", + "amount": 502930153612, + "lockTime": 0 + }, + { + "address": "NULSd6HgURHBrW12QuxwZTrLDthmUCKujaaEg", + "amount": 502646758879, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAwXEUVi15wXBfghF8m7SWtrSspdp", + "amount": 502425261300, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMqdanvSHrjRG8dBwZG5PirezssDB", + "amount": 501898728304, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1tcAvGj8v1keEbbibScXR8qgB4Ne", + "amount": 500675297706, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqdYsm7JSTvnMugxc8tqGHjr9hydm", + "amount": 499448808034, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQzErQJoJK1t2CVEQouokFRWN2Fkt", + "amount": 498766624446, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzBjz1cX9bkznWBFgoNhgrQgGWiDo", + "amount": 497860980149, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfghEecdiSdVBJqfoh1NPkvqzSjPS", + "amount": 497751300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2tGMTGKfEw8UeJgRTYL616qzW56Q", + "amount": 494921805000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZA77MsXo9Ndh3hBoC57X2cSDwmKwf", + "amount": 492449597049, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6drZ1nJepgFkTjU8E2UWEE8pT7X9", + "amount": 491345439978, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBXtfVB2c8ymLDfogk4GmELthVPqR", + "amount": 489208090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiksfrP5ERaPMQp6aFqpph3zDbjTj6", + "amount": 483233520598, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5e93tQZdd7dSTbUAQBeRScLJS9Vs", + "amount": 479710360399, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5n2XsVuT2SCLtsfUcKRineoGB5Hu", + "amount": 479290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQdxNzYE7mpcag4ogvKDDLVaS9VHG", + "amount": 478684589716, + "lockTime": 0 + }, + { + "address": "NULSd6HgdE7q9fnU9c8w5xdcpXmsMqFMQ2awC", + "amount": 477353124741, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGfgEMexRo17GmYJFCUV5yjuoMPWX", + "amount": 477075727467, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfmFrQDCB8vFzfHoQy51Jw38Ksxqk", + "amount": 473250342306, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtr2H5vXk99rGoyiJmmYmds5kQ9o", + "amount": 472372204860, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ozDXmsb46mVT6JkNt9JbfB3a7w", + "amount": 471564327298, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHx5DZRJRXkMerpfnE5Zb4RCLqY2b", + "amount": 470996346069, + "lockTime": 0 + }, + { + "address": "NULSd6HgahVkFY2YgQhnZ8DSQp715sT89r8bs", + "amount": 470135235865, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxjBy5e7vMmnAFcJfBntQMHSRSjuG", + "amount": 469012617355, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuTNyec1Gz7sb7GVD6RmWkh9gvrcA", + "amount": 467516812000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMtF2LGstAsfibfY5ML98SVevbqag", + "amount": 466445267258, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGGb9XSgC1NuNsVwvTjWavYEodLgU", + "amount": 464519265861, + "lockTime": 0 + }, + { + "address": "NULSd6HgZo3XCPxVKjGfoWGncQtBZtdU3CRsB", + "amount": 462689900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "amount": 462305649621, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgBHVU9zscjdzzoNii2WTbfi47puR", + "amount": 461868850874, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzx1K6PhWSJxFRpLXRFVSr6w1EjY3", + "amount": 460869939879, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnTAUTb36qDyLNKi2Vgn8LqvjBQb8", + "amount": 460585726599, + "lockTime": 0 + }, + { + "address": "NULSd6HgfK5JivE4KqBzqyiL9cM4rN8fdGkeB", + "amount": 457195535843, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiEaLa3xCnZwhPYj87gCFntEazoh8", + "amount": 456662894715, + "lockTime": 0 + }, + { + "address": "NULSd6HgiA2RM99WAxXmoy4E2w6B68yCnEpYm", + "amount": 454579427202, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEV3JLYaatZJboHMEE3VUHtQEPPdU", + "amount": 454068631040, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKu67t3Eerz9UGJ5h4kCFqA6dNnCa", + "amount": 453948855458, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTqajqmqHPAYE7K6sBYEZ7GpuvvR7", + "amount": 453669586663, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7QtC1bJc8ET32U8SpEdwTDVzNfgS", + "amount": 452026578968, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7nZA4XptfF22kaYYrWkRGbdx15Cp", + "amount": 452018744239, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNaTFDnn78aY7P19CoZSk3tYoSKiX", + "amount": 451392168993, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyUs7fL4EwbXH5QtphbgtZMoiCEPF", + "amount": 449595427480, + "lockTime": 0 + }, + { + "address": "NULSd6HgZie8XdHJeU65QGMJQYfWeKx2YnHon", + "amount": 449593160254, + "lockTime": 0 + }, + { + "address": "NULSd6Hggtee1Ws1MxEEtzTtR4EdGrzaikh1J", + "amount": 447344591171, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQGviLLpUiS9PqvDPocLfX8gdtcxS", + "amount": 446500258482, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZVr1UpFtDfSduiqysFggP3S1Ndwz", + "amount": 446240721255, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfAYNGkRtV6vBwDntVrgMNNr294mZ", + "amount": 444865048666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd5HscnVKHfuChH6sVusNWU3csHEG", + "amount": 444676790001, + "lockTime": 0 + }, + { + "address": "NULSd6HgVstgfDhHMLSpJBZXXjriLVrCW5zAR", + "amount": 443204831269, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHX3drMQU1QWvgUyTDah5by4rT3X", + "amount": 442328512225, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjkWDNXvgzUA2QWpyiqVJTAbdvDwN", + "amount": 442059271489, + "lockTime": 0 + }, + { + "address": "NULSd6HggiiM7HjtshShHQ4X5TS5K4eD8oMar", + "amount": 440032057840, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvxrGM1c7pF2FGbBAXvCMXmh9PVxV", + "amount": 439271047149, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLiMbR91iQRJeqKAbw19xjokZodNL", + "amount": 437282541633, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCDGHsSW3U4fAzcuF3MCzHPfs5RpT", + "amount": 432765145447, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAFip4c56wzJEGMQkwhrsfmpaKmoH", + "amount": 431349975902, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd33qVv4fKyAaw3MqEyfFDAVJGpycY", + "amount": 429267450244, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6EzBDQZLAKj8mhE71wmp3Z3VvbAN", + "amount": 429201334044, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8aFBZstiJrywXBKPFp6NXkNARrXS", + "amount": 427674532103, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFV3EoB9agJT1cA5qHUeNL42CTAU9", + "amount": 427031616046, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3yoWDAu7dK57QAXBHsDia6EAc9DV", + "amount": 426298979353, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7fmMhn6rrLDbYwsAK7TfVLkLG9be", + "amount": 425945935665, + "lockTime": 0 + }, + { + "address": "NULSd6HgigJ6QcXXpmMzbpvy8218LtxYAmgL7", + "amount": 424703213740, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvN3xUniW9SSu1ta5X5tKX7RUxUkD", + "amount": 423021472475, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSkBkzo2S3CwaMet6tLxSTLhcShnt", + "amount": 422736872079, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcx1meKjady5UhZiBpcdUtR1vidNVy", + "amount": 422511669854, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaPEVcr4EhovtZAUisKiAZ1Laq21N", + "amount": 420403236212, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcyb5idkKE1Pvuu6FGCixGoe4FyXYp", + "amount": 419844543209, + "lockTime": 0 + }, + { + "address": "NULSd6Hgan2h1j5ka8yCjEyLKekEu7sSCA71p", + "amount": 419799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN4JwhgouYN2b4P7GvzwSEvt8ZQDP", + "amount": 419155971976, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "amount": 419078286625, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJBEPgmu37TpxE7hRkfhQ2LDYGK4J", + "amount": 418951929690, + "lockTime": 0 + }, + { + "address": "NULSd6HghH2j4NK3xSsfZyLYSs8kehWXNmdaY", + "amount": 418382689794, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAvmQVgjM9ZdZeZ6AbT9Sss2SzqQQ", + "amount": 417921721020, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkqZ4c72hQEqrFDK5SM9As7wS7K7U", + "amount": 417899749087, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjvAEJN7xsg8uDb9mzsD2ZrmocWj", + "amount": 417880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMoaaZ4upW1Uyft1swfoMJAzDStzN", + "amount": 417679896875, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcztsqr2wyjA3w8TQpEEGyW1uQyN8R", + "amount": 415260300138, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZMbdVxdSxnaikiMx88MdVbJmPc2K", + "amount": 414705871837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2yTNoXqSAzNXWtH35dcxBeQwyq2W", + "amount": 413485395750, + "lockTime": 0 + }, + { + "address": "NULSd6HghMfUxTZptF3DcVq3fW3rLQPdd3Apx", + "amount": 413208528187, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8qJNw4Yn7CZhjKkZVLKESvnz3FDS", + "amount": 413152125810, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuVaiyKvgS4dAAgpeMCesqbTMaAz8", + "amount": 410838490020, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKcP9rGZQs8fpQ3yRPeX8dC4gfkK9", + "amount": 410700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEzP8BsiuJxGBFNeT4aqcJGU1u5H9", + "amount": 410511629000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAFnPw5rWKqg6Ea76FyG49iiPrfBu", + "amount": 410140392576, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNNFFZwMtsdijCYDaEpApfeo34RmB", + "amount": 410000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1M5hX1c4VzkqF94ULoqYAVQxRq6S", + "amount": 409825610683, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhVWRsqdJ7gGGKJLvEjsDQjMZcneU", + "amount": 409430238364, + "lockTime": 0 + }, + { + "address": "NULSd6HghUJLpvkQEfbWLzWGCS9kZsbTytT2b", + "amount": 408918063497, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeChatrzFhRjgVEEc7gmVRoodgTSQ", + "amount": 407963673190, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "amount": 407719486341, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaZQbqs8vaMw4SMiNyVM7u28eifay", + "amount": 407679331398, + "lockTime": 0 + }, + { + "address": "NULSd6HgevMMLLaXXDGiNyXvYJU3gkxWAr2i8", + "amount": 407657901885, + "lockTime": 0 + }, + { + "address": "NULSd6HggDFL5ezSMTzgL1o7cdFKgnJcP3nhw", + "amount": 407158997751, + "lockTime": 0 + }, + { + "address": "NULSd6HgdDJfVynraSqqwnnALWAFdbjHx6Ywt", + "amount": 407025707839, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi31FszKEZvimGtN2Ata2LqvMJob4g", + "amount": 406811695036, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWVNPRbRtqA9ade6jHLqNiPgUjaC", + "amount": 406639658081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLVTYCmwaDGGy2VAJGYJs6m2ArHS3", + "amount": 406624706100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYLxUkmfkJAJV9L6yu1DVroYWhbY2", + "amount": 405774110031, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeyxkPBq5KucXRCQ8owTRvCqgkzjv", + "amount": 405129535061, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuuMPCAiwyiVu4e6gg7kKDstKdQu8", + "amount": 404700591110, + "lockTime": 0 + }, + { + "address": "NULSd6HggCQTPjHvdDe28xah6VHEoke8wmEWH", + "amount": 404442900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGfhjAGh8xPfHM9CJDqgz1XnWSQDk", + "amount": 404020958522, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3K6k16QA2N5YRQx1ydwPa4nwHJt2", + "amount": 403983941418, + "lockTime": 0 + }, + { + "address": "NULSd6HgdieZL2g44gVNUJom9QaWrJWjHgVH1", + "amount": 403704048107, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "amount": 403565919731, + "lockTime": 0 + }, + { + "address": "NULSd6HgewU4xL3B8r25j1t9E8S3eMBjwCcfb", + "amount": 402208028191, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVHSLhYL5r4NuDbnsFiCMCEur1y35", + "amount": 401600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdULfRYpxpMZdwgjhBJujuyPKgtpzi", + "amount": 400965989696, + "lockTime": 0 + }, + { + "address": "NULSd6HgdX1npB9Fm4wCoAWT23djSeLqo1xA2", + "amount": 400794578886, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMyW7NKBgSnsMfUR3eGsAdavJaE2B", + "amount": 400771228716, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrFZxefPwu7f488VRGM14yoPPeroy", + "amount": 400209502276, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmHAFydKvbXZxm87vmFcV8D7SBZFB", + "amount": 400165712520, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRzgEHUvTPq5UqfC5QerYU6V8Rp7Q", + "amount": 400000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvbUY2c7FofkjiZgJhwPoJ7nMRNqe", + "amount": 399517172592, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "amount": 398239779263, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33YHcYiJfRB63JYN3Fga3Z2Z6dh1", + "amount": 396390860679, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq3Bmd8PofnCP6qd1mMhW6QWA9JhV", + "amount": 396237000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURv5E2J341iPw7kD3LjZVRg5pdXH5", + "amount": 393348812910, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXWGPTAb4iY8R7TT5DDwvdhAGRDiB", + "amount": 393300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5MzdYnTPA9yf2Ck2wvYQrfH3pG2f", + "amount": 392591247131, + "lockTime": 0 + }, + { + "address": "NULSd6HgamTGDgZ4n3JqKskNcoKebNJpiHCWJ", + "amount": 390175947071, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEStQEfeSTfmYbRd3AhEnjRLT6ACx", + "amount": 389632481201, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "amount": 388800988825, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeGNkUTRC3uS3sXg1gPo6kk3y2eov", + "amount": 385593291168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfWR53zhxVsZtnspaZDnXmJxe3njf", + "amount": 384676167415, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7rDaoS6uA7c3aACExQJawYHfQhAV", + "amount": 383391492891, + "lockTime": 0 + }, + { + "address": "NULSd6HgaU1eDSin2ERPvotV59sHR8buxzAsy", + "amount": 382797942954, + "lockTime": 0 + }, + { + "address": "NULSd6HggrghTR2mdLJZoB4G8UeyWTvSiwdJD", + "amount": 382211187125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiBBQ5429gGMbg7UvxLSqku2o6FMt", + "amount": 381539113646, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLsQt87maPavXAwrsnXqhFfF7eVq7", + "amount": 380247099724, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNTaKZFtvp2FruCsSgJMJRbQgJLWp", + "amount": 380012940327, + "lockTime": 0 + }, + { + "address": "NULSd6HghX9SAbsVTgMxx44msxqaHVtPsjGBM", + "amount": 379999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXM35Q6Fw7DkXZ7mtJmejF7e5kiFFL", + "amount": 379468365507, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEMjPKSk873693wUZFQcLKMQY4BdE", + "amount": 378455714491, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVahVyqY1CM2DGzKj1k2ow9Cmtksv", + "amount": 375380072129, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKKThDAVccQWjhiTgDigVpZHSh6Ei", + "amount": 374997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcNTV5BhnVKd8NudsEh6GZPt4XZS6", + "amount": 373612615415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb52Q8kbD6QSQvYjjKAFJ3iCBo5mi5", + "amount": 372882185379, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKediXZYNgjeEgR2vrnF2AyL1xB2z", + "amount": 372539432937, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcaMJ3QWvSLDhJhwsGtE8SyvdMXh", + "amount": 371199571236, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzx4JKNpFd5fxdcoy5Si65YdhY9hj", + "amount": 370239188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdakHG1iyS4ekkBfG1vtYic3x7wuVN", + "amount": 370079681706, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "amount": 367926716248, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjjKPiSdKeidnEFrobuo2CkJQkkpE", + "amount": 367665430762, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtw4CGSU7H6SMiXXBZtEydVHNSgR4", + "amount": 367249772764, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDYFcZeAjz6d6ozMCjJSyePawGWR4", + "amount": 366726743585, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDChBik3TFs3Ju9tbaoMeWWDasssM", + "amount": 366479061058, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoNyJKBRDLoDKyQJ8GGr8cDaYCqgK", + "amount": 366422800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1HM5nFAS8MFrwEfSixXb9JuVaBTs", + "amount": 366372749879, + "lockTime": 0 + }, + { + "address": "NULSd6HgZifRAV52bMpXSUEwKXUf2L4bPxKXk", + "amount": 365871378235, + "lockTime": 0 + }, + { + "address": "NULSd6HgZykXUUqGZDoaaiHXo9D6HwxATrwQq", + "amount": 364728390131, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTpQaEYz5mf5SpCKD9GUnQDQuL4p4", + "amount": 363103563674, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "amount": 361161634685, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWCtM72Adsp9zjTMbSK28BjmZZzAT", + "amount": 359478605247, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnaBroph8FkyLMjLkaFjtF2kWUxr", + "amount": 359400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR2DiQa8Q3MGengobEoiyB2Dvjzvt", + "amount": 359338917439, + "lockTime": 0 + }, + { + "address": "NULSd6HgbftkAzdJMpJTi6dBtBeLMgzTWuzdy", + "amount": 358323700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnvTii3ocNukVPpu5QQB1tiM5Ljox", + "amount": 357329999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4XsoGBttNEf6SCELriCbMJoFbb4z", + "amount": 355854965992, + "lockTime": 0 + }, + { + "address": "NULSd6HgiutyL8Xmr96ek6ZVExoXbYYRhh7gA", + "amount": 354811786695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJzxUpyvnzvtu7DZRCtKkYkbc49vY", + "amount": 354593224259, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnx37gxxpZf6XbUcyo8Br812yh9gm", + "amount": 354349080107, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVan1swZAiuVihPJ4j6xCPPuJew2r", + "amount": 354334037603, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMuQVQzKnCwmitppyFjMWA7RmskUn", + "amount": 354084894170, + "lockTime": 0 + }, + { + "address": "NULSd6Hge27XYQYdcE1QDYftBLuhTe8nw8rDX", + "amount": 353728980000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6KE7dt2nrjEnLKpJUDwdgQEmM5es", + "amount": 353268402658, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDu5an4ZTeJTD6Y44aXjLQur4C732", + "amount": 350391644000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKAXqcyy8hSNLqG9yve8FiZgSGZgs", + "amount": 349527692154, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBDcE6chnSfvgPpT3YBy4tHA2v4By", + "amount": 349069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgascHwefatDbEa1p19bQNm3g2ku4me", + "amount": 349062551934, + "lockTime": 0 + }, + { + "address": "NULSd6HgYukVudEd8p1AVqN1odmMZCUMizsRE", + "amount": 347358200128, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2eBTJHpoZxYRfAT7H3wrv1URcXjR", + "amount": 346807254158, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXB6TVrx2DE7ZK7Ppri6eroaPYLrH", + "amount": 346199405075, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNZkxxYbwdtcHDUvpEpFbrejFY2Jt", + "amount": 346165116592, + "lockTime": 0 + }, + { + "address": "NULSd6HggqnmjfxB5gjYc8haJpfbC1t72LQyq", + "amount": 344661550248, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEUH9XGn92RoGRwDsDzLEk1tDMkgn", + "amount": 342974731957, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCWWXQksMEb9RdRUa8DTXAwfDedTm", + "amount": 342270909592, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPRpW1Ft3XThpMbwTbC572kHkywWa", + "amount": 341639304154, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN7vcGcsz6H3QqVfHwkJpkeCLYiz1", + "amount": 341625294253, + "lockTime": 0 + }, + { + "address": "NULSd6HghrrBj4y6nhSPpcxdtb62J2NpjHPZQ", + "amount": 341468951319, + "lockTime": 0 + }, + { + "address": "NULSd6HgWriuGpdvGAYnipoq8qgGfCwyWgPVx", + "amount": 340254213835, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMwd85PHmUWzjMMcF9HbFr8ZD7p2z", + "amount": 339496870584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3ADoXCS6dyqw5fdA7NZd6M7XWapw", + "amount": 339163389311, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGZ8tydsgPEkjcai7pGaR9QnGACd", + "amount": 339017024670, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYFPAkEW7zKUj2Y1bpQwsyuPwEQfV", + "amount": 338249267550, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCoBYyQzkFZBarhinwCMcquSXgvWP", + "amount": 336788660939, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCcJS7GNuZ5ZVFfVccsDaieisAhab", + "amount": 336051770441, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4A4NH5sSazdscJ6J9zrPSB2dAj4Z", + "amount": 336000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUZbTVJJzVWKgbyaVpkVZXcAEArZ6", + "amount": 335555231244, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYAZdrjR2wqN3JhktxrPBLWC2KiSV", + "amount": 333957576542, + "lockTime": 0 + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "amount": 333565226024, + "lockTime": 0 + }, + { + "address": "NULSd6Hgao2Ex5ZYpkvkLiKafio994auAwMFy", + "amount": 333201375971, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsmkHNGvJMu8neovKkeDsR2KNS2u8", + "amount": 327409836867, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhyYAZKoNhEM2Xuz6bU31NA2ao7tx", + "amount": 326742414445, + "lockTime": 0 + }, + { + "address": "NULSd6HggnveFyMUE7xiYiD74E82cWXnQtDzq", + "amount": 326127266600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrCjVsxwSqYZJDQtejFP2wRBrfhYR", + "amount": 325150273667, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXUEPP1ozBw6ZYcVsW4XW1iUMVCT6", + "amount": 325086535441, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3EHB5881Ay4vzKiEmZGfj9EZq45j", + "amount": 323576309188, + "lockTime": 0 + }, + { + "address": "NULSd6HgevPZ6cU9ZehS5Wr3feCDuFjo567gj", + "amount": 323498383211, + "lockTime": 0 + }, + { + "address": "NULSd6HgfY4M91ftcvodBbRoPB5GA5PpQEcp2", + "amount": 323280000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio6TuZ6i1brZKzPabsDtvhX2UeSJz", + "amount": 323251968455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZYsRgTEY7jLdJBsVpjwZuVk6Tria", + "amount": 322765586127, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbk9pTL2M9oWVFqmYLjWtcqhH2ZC3S", + "amount": 321688802000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZypA15MuLM83p26eu15T4i631Fdir", + "amount": 321288673558, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3BKkKyog6iduF9P8W3UEwE1oAo98", + "amount": 319795499498, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs2juNbgNRCHabs4tE3nsrbS6kqDM", + "amount": 319576609148, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ErxMgLrjBBdJ27qgSJGqaZ223r6", + "amount": 319230743823, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqgSaF6sD4bsGxiPDiTHfGpx78QnT", + "amount": 317545340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkhce7jbYXexfb36hpykDTGRnuLVJ", + "amount": 316993829039, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmkZAbjVG6zsQNpXVj5rA6eptVtU2", + "amount": 316241438388, + "lockTime": 0 + }, + { + "address": "NULSd6HgifDKqLDe7vWXUVdLKRsQLHAhaBHy1", + "amount": 315967087268, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKEZJwzJGnT2jWuSKbkEoup2RwgPH", + "amount": 315930604626, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc8SauhNTQWjQuBvPdrE7TR8aSgJk", + "amount": 315731769642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPMUkU3QfUYbHtcF8TEWv1oTTC2PN", + "amount": 315504098614, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc33v6VwyDE5KJi8daHPevQUEnzn1", + "amount": 315179801975, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBeH3bbFy6nDyZpE6qr4zbqJs2A7x", + "amount": 314924391191, + "lockTime": 0 + }, + { + "address": "NULSd6HggexiUDLWd4g4drHPMr2sikeVz8QLH", + "amount": 314479899982, + "lockTime": 0 + }, + { + "address": "NULSd6HgctDu2Z63W5WLTQdqfCzopBXjknw6v", + "amount": 314286417638, + "lockTime": 0 + }, + { + "address": "NULSd6HghUheMFc8Lz2YGJwK7KhxmU1x2C59m", + "amount": 312318963292, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2N2k7hPvKTRtEAA7actHeDpSgcC4", + "amount": 310241999690, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnFM85BAzQMuqyafPWXoEEQfJnEbj", + "amount": 310169121476, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnc9ZSByyp3GvXSnQTfTkygsqHk1z", + "amount": 310169007773, + "lockTime": 0 + }, + { + "address": "NULSd6HgbS2EbFUpUtXuz3B8CgFBzmmNVpEmq", + "amount": 310036594600, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDV5wdxW34QmA15JU493gaHh5KHss", + "amount": 309999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFfd1A35vLuDDBuvRq7GuZNvXYRU2", + "amount": 309941777989, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDWP1La1fWbHBDdntdQEHS1YNHzAR", + "amount": 309368053478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffgc8v8pPpjKwsam9Xfq8zfrurYs6", + "amount": 308872376748, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyePoHwLsqmFEUvFUGFAD4G4qbgL9", + "amount": 307840538721, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnTizR7mTANXA9Gm8KeQhEZ29ebtc", + "amount": 307407241618, + "lockTime": 0 + }, + { + "address": "NULSd6HgatwUwd3b6PQqd3bDChXYdo1hX2MET", + "amount": 307242628281, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsnbbU9UL9vuxszcPqdLE7ADUDwKR", + "amount": 306671692789, + "lockTime": 0 + }, + { + "address": "NULSd6HgVs56vQMcA9cFYWov7BnuxabKkDfS4", + "amount": 306323752780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC61Kc7xU1CV5MCpRYANwYoXFwRJ4", + "amount": 306291953544, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaxx24pghnuDPNxvvmC8NTFrCSKNAP", + "amount": 305903301397, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGx9osdguo71zKhNyBvipQ88TT26q", + "amount": 305714507548, + "lockTime": 0 + }, + { + "address": "NULSd6HgahPH4caip2ijvVGSV3XNVxXat8S3B", + "amount": 304997317063, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExiagiQGD4rYrXPrxXChSENUgc11", + "amount": 304919255846, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK3H9BrdgdigbHfNHHgP1LTCZcQT", + "amount": 304399267454, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "amount": 303801502864, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3eY6LB4Z3FU6o1eBYNAR9K6AoyB", + "amount": 303650000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPL59jKMmoE9YgQZiXG8hkVsBCBmu", + "amount": 302649692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc4LkJqUarLaNnkX4bdpsaayfLDs8", + "amount": 302310884849, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzwYzGkxYUhdhJGcnnyGAWMfREDEo", + "amount": 302201332163, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLjqv6gAHfxMnL1Gb7VGeVDZj5aW", + "amount": 301493782307, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNLz8x1MEPA5MdrhtCiXWPhjKeDLm", + "amount": 301347629576, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGikWdhXg9tPJbKce7xj9UZmuUS9Q", + "amount": 301255822797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTrRCfxYQw5cRCCHY6vHU69XiSV3i", + "amount": 300968881183, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXz1MX3CLddJhztnmsegZUCJYFP7J", + "amount": 300908117517, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv5RtXkG5K9g47qqy8MgempBBqvW", + "amount": 300600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBu84bsuLgnRAb5ztMy2FKPjHQaVJ", + "amount": 300589200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "amount": 300440218184, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "amount": 300193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPwa738A9AuF5Cy4am83do6bGP2uz", + "amount": 300042348560, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbup6jwWh9Abyon8o6DfeAeRDonSnf", + "amount": 300010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZcEQUNYnixx8F9g6kkjT2cyoF2kv", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGeXdnVxbvpbK6QnAkuERnGvjh58x", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNs6WzTgikNMprFEUJQ4hy2NddE82", + "amount": 300000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3jMxUWYYewrMgLiRgX5ZTQ8aYngr", + "amount": 299800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRqY1m3rHgpk6pKz4KqrQ6kcXiA9V", + "amount": 299735400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbbgbdGwJPZGM9speQ4miiQiEQvi2", + "amount": 299659164881, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFDy2ESadNSVG5vLD5ntjMjHuyK9T", + "amount": 299455230049, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH5ZRgTtg4EDy9tQ4mvb8F4wWzi45", + "amount": 298182413417, + "lockTime": 0 + }, + { + "address": "NULSd6HgUifUFiKS7YahsQYAeFYtF29NAb2mQ", + "amount": 298023266343, + "lockTime": 0 + }, + { + "address": "NULSd6HgauB61jeSGAHKzpX1hiTPYTMsDjXrL", + "amount": 297087133021, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEBNJd5T5N8FBFcgeZwir5fFc5hqW", + "amount": 295690470221, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7EWDjgAKuxKfipK9dnzAVtb7dNRU", + "amount": 295601231796, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb59P8CJsredsHt3e98cnK5vyct1kV", + "amount": 294998304547, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPnefB6ECuyRr4GRJnAam7mUMj8dw", + "amount": 293870506875, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHxXdYy29Qzdj72kuadMYxK8DRd89", + "amount": 292999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp1R4nrbbksS1okbeDCarWh9qf6KZ", + "amount": 291735609000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFLwwKG4sp3of5aA68DJ2NLq8VGvF", + "amount": 290100215048, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9vxavweKciiw9GM4uy3khsDUZzu7", + "amount": 289766402146, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvoRqeh7UfisZHqQxg38265budrSS", + "amount": 289372255571, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4y8RHvotdxQ4qgcYuKsM7n85NE9w", + "amount": 288789683225, + "lockTime": 0 + }, + { + "address": "NULSd6HggCRnNmsLZ2TUMisgP4mjHWhZSEBZL", + "amount": 288147628477, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7bsby7P5zero1YYgFAiNTk9eq1zD", + "amount": 287976000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT8Lezv633hJ5PgLCg6xELuN9b1yZ", + "amount": 287662787702, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLf7dxyjjymchCmMk9JacWzFj9hhK", + "amount": 286611000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKz5TGzbyEis5DuV46q8sUSvGL7k", + "amount": 285836281219, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "amount": 285130476546, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAw76EiyAenAnPiN3WjbLGCKS4EGm", + "amount": 284618307972, + "lockTime": 0 + }, + { + "address": "NULSd6HgfucYQANYQjocWdWX1X55ZH2hXhdXn", + "amount": 283712671050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3QwMruofo11Csb3738ZMZbYhWSbh", + "amount": 283202683529, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4ZSMkYxdbT6BEF8LCsErGT17KLMx", + "amount": 282063594884, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg9yxjarqMoEKRLFPtJ1JjnBNssZR", + "amount": 281360140760, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeFNjYg9Zu8igxS9KpL1NzKEPNw4B", + "amount": 280743491075, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBmyLJ1fmWSL8nmG1rQJjke8sE19Q", + "amount": 280009150173, + "lockTime": 0 + }, + { + "address": "NULSd6HgXctPrYNH9SG9PYSDWvXh15RgSGYQV", + "amount": 279699500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpuSB8Ej7LTF75c5kuSfprhZSVYx", + "amount": 277556230625, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdm9RqGe5sgABviNvYc2BFznbqy8B", + "amount": 277531813243, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtxmgmnZq5MPUf7eArX3NsJDd1bCn", + "amount": 277168772897, + "lockTime": 0 + }, + { + "address": "NULSd6HghiCMowSUeE9vb9DgbvRypcNwL9Wus", + "amount": 277163501063, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpCJrFHaw6L626vzjhhXQFDcJrcng", + "amount": 276923863728, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUJPQmVhm6hA6YnNkf5g1DQ9p5fok", + "amount": 276751069724, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtKPUFRpFfubuthYBmAmk73hjXJjo", + "amount": 275949632370, + "lockTime": 0 + }, + { + "address": "NULSd6HggKFDz9VQfgrzD5MMEj6kFbqJs69bF", + "amount": 275927593000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYJ6esSpHqqDU8Je9Y4dK2Mk7Qj7t", + "amount": 275020000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULa1y1Re29rTgD79hvrwfBVeF1yYP", + "amount": 273799862715, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpnjmHX2dtUn7vpvZyX5byvNJR4B", + "amount": 273736045458, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhybRxtJP3nNbvx78sihYnsqJVcDY", + "amount": 272989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFbJXd67yJJ5sEAqKs7dbWjGusbGN", + "amount": 272755800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvnLtwTkgfEgE5MzDZ4HiMnqZVvQz", + "amount": 272514555018, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkNALcw1WuEDGNenjrKNQHMsJh47p", + "amount": 271906446703, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7n1bhMqib6Bth83NTz77WFcdJcUB", + "amount": 271900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggY8eq4CfpMU6RYvRAQEu9qwp8NUtC", + "amount": 271572785690, + "lockTime": 0 + }, + { + "address": "NULSd6HgYk6vboCo1uZbTd3hDLiADCv2o3CUi", + "amount": 271548054095, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuv4yL6Cs4yZxky6nFBPB8GWtBXeZ", + "amount": 270793342773, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDhreZFprHzq9NhFD5WViZQof4Trw", + "amount": 270658798910, + "lockTime": 0 + }, + { + "address": "NULSd6HggD4i1gBLbYLnRwACvxJ2imJXTz8fY", + "amount": 270091857578, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaSJMwQ2eqHihpTM1HY5tLzmYBfCT", + "amount": 269995149999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5a9Vp9xKAWYqnGfEEy6zpfUCyEb8", + "amount": 269800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVVHaYaGaJjUnY3Tpu39srQBdgfqX", + "amount": 268247018662, + "lockTime": 0 + }, + { + "address": "NULSd6HgizZbE7WPvY7viiEvcMBkUK3qMLDJb", + "amount": 267792700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBEMi8fxf7hrSqjsRXKJQSHys6GYV", + "amount": 267245273073, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfa1jYt1fpDEDMSzYcqi3JcGkqezK", + "amount": 267119581977, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNg6stbEdWabu2WELmaqfVXWoRBoh", + "amount": 266391352254, + "lockTime": 0 + }, + { + "address": "NULSd6HggSd9da6gRrhUg28hYTJFmkMFH5qNe", + "amount": 266196400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5F66vKG6zkseg37h8KHp3vkFbQ9U", + "amount": 266131162718, + "lockTime": 0 + }, + { + "address": "NULSd6HgenFSnt6wA2TNZWrdnGSfJ5jh5adQh", + "amount": 264318648145, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyMkD53DN6wYKfFas5wu4t59w18QQ", + "amount": 263527801714, + "lockTime": 0 + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "amount": 262975389505, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8b4xG3p8URFKcFkRdFy2X9p6dzta", + "amount": 262780932076, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2NDzbci4YvAUdkJLrc3EQVuWzmYN", + "amount": 262471000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6yBqYBQdp25smRk8fxTmec7pWyRx", + "amount": 261749022592, + "lockTime": 0 + }, + { + "address": "NULSd6HghjdbtAc974DgLZijTvHhtf5vzpdnY", + "amount": 261070344518, + "lockTime": 0 + }, + { + "address": "NULSd6HgcazFo8LusoeUaeuV3HLBcgToTTA96", + "amount": 260397418850, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEU5gRwd6pK7DibtUUQDqfAZHYMGC", + "amount": 260120956196, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFSVPcWwqKCGyp6Ht2tLkBoNXiBsn", + "amount": 260015100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXRYzJ6yFkyyboNazrQRuBdYqHZKZ", + "amount": 259757680000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7xS2BNDvwRXNGTZxxFRwm7YVcnzj", + "amount": 259239767599, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9vXRAaLBPk3ovhqd8vwpNuojC28m", + "amount": 258341100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge32oko2geYsa1gbg6H8WVjtVaRx8b", + "amount": 258339633939, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpANm2ERCQBW89VmT4sQffR8P8CjY", + "amount": 258157345206, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuDYxJx9s5PxXq3LeMZVMwrwRjffw", + "amount": 258123356221, + "lockTime": 0 + }, + { + "address": "NULSd6HgVABBBEqnVPkbfidB6kVbUnkT978jT", + "amount": 258064908003, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "amount": 257992568066, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdx7jZmvTjzrQiXrH4tT44gyB13V1", + "amount": 257461156205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcECsnva6JvPd5tfWByZK55Gxuxoif", + "amount": 257403985352, + "lockTime": 0 + }, + { + "address": "NULSd6HgetR8BMPcLTLYBM9a9B4AAUy2GtVu1", + "amount": 257277568625, + "lockTime": 0 + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "amount": 257162512490, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyecSqbNhcycJ7ZLU6bkp4iACadpX", + "amount": 256544958461, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ54mHMD4ToQS49QfwMHU1DQ79as7r", + "amount": 256474842191, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfQhKDACrDLmZs5xPkbTXiPz9FUo", + "amount": 256143794076, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrPeyR2rkE8wvAyakhxdQkuxyZofo", + "amount": 255962443134, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtFF6BgpYPpHM7zP7oC7ta3VtNrgJ", + "amount": 255424134364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmxjXtsKXxMYnMyXDf84jxq4DcvCB", + "amount": 255019352085, + "lockTime": 0 + }, + { + "address": "NULSd6HghyYcpgqketNZs4DFcQrU2ihXFF9dA", + "amount": 254820960826, + "lockTime": 0 + }, + { + "address": "NULSd6Hgems7SSWqSACNbkgpdnMQHvgMRMYsP", + "amount": 253869000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTvFRyDcJMZ7MeVR7N3yLkL5TKcjm", + "amount": 253432540624, + "lockTime": 0 + }, + { + "address": "NULSd6HggevfseoBCpZcCZEyZEbohm37dhwqH", + "amount": 252390365490, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiMD9xAcBkCe7YnZ8cCQhxPXW1hMx", + "amount": 252203000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPt5xhLvy9PNuCkonrLGiDtBPwNmH", + "amount": 251541968465, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9SDxraZWpG9fg4UNW72N8CUcannx", + "amount": 251524659521, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWM1HJ8dm5R4iBuBmSAUGkrRiWvjP", + "amount": 251508940179, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6bXH5WhUzL1BEMY87TbGzR1W848r", + "amount": 250990200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggvizxj6ySEHvp7yQLc4EkEGsgDYBk", + "amount": 250778414361, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4fxCa4o71ygpgQyaUutYNhmLFiqC", + "amount": 250747999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3iAvnMWvYUh7wFLEfqRmPU4mDhxr", + "amount": 250705826237, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMnop94eojhd9RC1Xx6TnpCDqtvPe", + "amount": 250495052902, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXGiyuTsYxWpc3VtNqztnTgctPee8", + "amount": 249963485647, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6pgzBnr9ocp5mBF8XZ618AHg8Kem", + "amount": 249935505992, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7PktDf8PEUjVuFeVDtPqkxMjBi5A", + "amount": 249545300278, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "amount": 249227181030, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWtSmSa4BxfPzHhr1d5Sbqy8YAko9", + "amount": 248998351726, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFHEpNyD9M4PusYHgG8BbVB3USbC", + "amount": 248524072858, + "lockTime": 0 + }, + { + "address": "NULSd6HgamWiVR6345WyBZLBM3UFSHsF867EF", + "amount": 248465424307, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYXrBsTFijueJHn38gfEhWCctkyDs", + "amount": 248244749409, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWSQrubwjJ4Bv3sGz4GYNJpq5NzmE", + "amount": 248060732879, + "lockTime": 0 + }, + { + "address": "NULSd6HggaGFJXFapNJPfLUAGDVUiZpmEd65b", + "amount": 247696311635, + "lockTime": 0 + }, + { + "address": "NULSd6HggtvwSHYU7t6X21CnrtyojwyTAmb7P", + "amount": 247606604191, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbTiZx3DdaohGe7Pw3Tbz2Ps62QaE", + "amount": 246994469038, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEuF2qsCLdGpr1cp3kpJj9bF6PnVK", + "amount": 246290236302, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpz6Hf7DnociWPBFpdTy3nc2FJN6", + "amount": 245162999098, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQJjXhrmfe5RPxpDT8M1v4Ma88jrj", + "amount": 244890365598, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH5EYyyqK8qzq3Pp1wCZxM7YhQLJv", + "amount": 244875480949, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ5P23qcDpYqH4hknGfUnqYrpCLyD", + "amount": 244290711899, + "lockTime": 0 + }, + { + "address": "NULSd6HghnRiMtt1RHAx3pJxEjcerjthTYTKa", + "amount": 244075459558, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVpcQqQxn45Cr7ufWLzLmmgjGjd59", + "amount": 244014799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3vyVoYG2RbeY3VDapxWYVerLoczF", + "amount": 243917093003, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQtMDC95gZWYJa9FSCNpuFBDYhno8", + "amount": 243843301412, + "lockTime": 0 + }, + { + "address": "NULSd6HgasixBYc4yb6uWq5M31cMCTM2BR612", + "amount": 243605054883, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbQXz2iRWXC1PLLC91suFxzbZb1M7", + "amount": 243360850625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZx76upviWdinM9g85VLnqJANiKW1D", + "amount": 243300831867, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpW8DqPTh293QaF7dagKDMeRWqPU", + "amount": 243147267898, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeWJJzhMmNJScmjPn8t8zvZs69LKC", + "amount": 242760771420, + "lockTime": 0 + }, + { + "address": "NULSd6HgauV23Q7NRr39VEugSRqgPA3XWnU2y", + "amount": 242594067000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWXcPFU1u7ndZ9DTn4fU7wDfzHBEA", + "amount": 242573351436, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFGW8kUkYdGGWDqTuTsixTiKkPwuk", + "amount": 242512485079, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeMzj8w9hu7hfB32MCahz1GH2WEfg", + "amount": 242492941103, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbqj9Hwz46DhBEVeAJ9w5fER91FnZm", + "amount": 242203837357, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyAi9cxPNjXK81HUhEpBuYVREyUQX", + "amount": 242182540219, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuTQWD2gwkSDBpAWbPzbCDSyVM2HD", + "amount": 241861022033, + "lockTime": 0 + }, + { + "address": "NULSd6HggS84C6Jok6GjBKCfECryJmX9feqRE", + "amount": 241849426391, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEb3gU2FbfGQemC798Y6YUvccrJvE", + "amount": 241661661659, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4uhYEgsNat6ykC2WGKgEKpNWPVWL", + "amount": 241623968574, + "lockTime": 0 + }, + { + "address": "NULSd6HghhobQLDrYJwRX9QEKm6gE1EVHkCUC", + "amount": 241227555046, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1nmBntgVN3U5WNuqcj2GrricpFL", + "amount": 241138570345, + "lockTime": 0 + }, + { + "address": "NULSd6HgahYy16zxpmk14yZmD52egSeDeTMLP", + "amount": 240851027302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeriJdrfGaUuUkt4QdeBecq6YHqP8e", + "amount": 240504931326, + "lockTime": 0 + }, + { + "address": "NULSd6HgipiUV9Qm3nVjygRKHAM9HVAKzgr8g", + "amount": 240308171838, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg86JostJXVQPNfkb57HcByMZsp9a", + "amount": 240237165262, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuoQ7beN6zrnVz8MiQa2gsc472ieR", + "amount": 240119011031, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSdVuwhbYv2RPkL4cZhVx99tupaWp", + "amount": 239900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqxybFN5prUZDtpfd9AZHMa85DUR6", + "amount": 239806945993, + "lockTime": 0 + }, + { + "address": "NULSd6HggzQzv5UTEwgFAfDAQ7RKktJE5F8Q4", + "amount": 239801491795, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCcYVERq4KNrLSXuhZC7pStYy9D7n", + "amount": 239330301790, + "lockTime": 0 + }, + { + "address": "NULSd6HgiesnU7rxTYYChgvG2562597RwzFdh", + "amount": 239292654674, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg216L2P1HVibAEbsC6j4dCBs5AsG", + "amount": 239279937261, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQoWffQz4tXDwUPpDwCEFQe5HAtoW", + "amount": 239245805417, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZoiJmVTYUaK82cuJ5BZNSDo8ergY", + "amount": 239205415111, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMPfiUA2xGX3Jar524PiDTQjCugLk", + "amount": 239070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJxWQKChF4paaUVteG1a2MBoYBEyi", + "amount": 239050558287, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkjqUn3h2MDRHyetU3xyKtH1VBoT1", + "amount": 238982485492, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8RhKYXcT41aMmFRLxFQPUsfGGUrk", + "amount": 238602457268, + "lockTime": 0 + }, + { + "address": "NULSd6HgYN8AnDNZ9FMKS8vpbsvMf74gBBGC5", + "amount": 238589376707, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd51x7teKDTw9TGoZtNSk8ApQScMzU", + "amount": 238562283175, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBScDfNi66xKVt9pNC5ssvkjteSCj", + "amount": 238318372576, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXq5Pq93qvzght9R7S9dbAD7orgYX", + "amount": 238288506725, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8WBRgwJkdkha4S7YujUELfwvZgCV", + "amount": 238228639309, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNjvmsxLqT9MEdfMKwmWnu9HHvxKY", + "amount": 238127703363, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE5K6jwNqRQ1ihrsH6mM8nfaDdKCF", + "amount": 237987190598, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaPqpp3hzKHMb2xdUdCc8izZcgK9V", + "amount": 237729204000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZfjhSPyx593PTpCjJ3TkEpdohR4g", + "amount": 237639274600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd2yH47VS6VyV2b3N469KZ3Fv2Xw7", + "amount": 237612083921, + "lockTime": 0 + }, + { + "address": "NULSd6HgbehTVcBqUUUzQCfSzBXZyNENe6fKV", + "amount": 237556931856, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLBMkJJtssyfs1NPPTxcfFcRfm7HB", + "amount": 237453999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgULqdYVLWfzrYjN5Ka1PhdVNUQxBpm", + "amount": 237392111684, + "lockTime": 0 + }, + { + "address": "NULSd6HgihVX3u1bJaPazq3MgCcWM92hQgJS8", + "amount": 237023271332, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8eFZn3yXxEy4JqkN6gvqAviFgmPL", + "amount": 236821473583, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzPqLugomUkwAKYhLuB8mGKh6LHSB", + "amount": 236446800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcH7WtSuRuWrV7nwQBHZZPhEV25DHf", + "amount": 236415322356, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdaze8MZZhXY87Y8LVjv8rCxJx99ec", + "amount": 236326412172, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurgsQGp3ZWwRZtfdAACY5CcaAFhh", + "amount": 236296322528, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLyV4nMznPrfK5y8Jj37LnQcHi8nX", + "amount": 236231001378, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaMximLa6wouaLjQXa7n1DMc23EZG", + "amount": 236095569501, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRQbKHTxwH6UcrYHcXd5swHtPLava", + "amount": 236002904511, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuQUaKrsvmico8yUDyQyqGdNM8MXZ", + "amount": 235971564171, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5DNgthM8TrPrB8ZUcgrH2EgRaceG", + "amount": 235923449617, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV1B4RjXT9GFdDuq8B9xofNpyzg8R", + "amount": 235894723186, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYLFXxaQLDRZVRpMKBBqbmcv6LAa3", + "amount": 235618737704, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM52wjdJ3t38tvnHYRxLj6T5nbyyD", + "amount": 235516325902, + "lockTime": 0 + }, + { + "address": "NULSd6HghDyukA38eLkiUvZiCPpRMJsKkgErX", + "amount": 235247618088, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2pkrpFzEdx5EYi4TVdUMdDgWS3qw", + "amount": 235165188182, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEoRvGvviexjQMms93tZNRCpoVBz5", + "amount": 235078006137, + "lockTime": 0 + }, + { + "address": "NULSd6Hggoz6oTZcX1189fiHgZo9F2fwtDX8h", + "amount": 234960610742, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSZWvUPRqWsUiuTNM2L69uF15Yt4E", + "amount": 234592501512, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJZxw5E6YDmK6VywdoZrjugNjd6G6", + "amount": 234500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1QhojpYT2jgxPLwEheRSMZndixTj", + "amount": 234485977920, + "lockTime": 0 + }, + { + "address": "NULSd6HggjxDvej8MeExXYYoHPBzry8i79ymK", + "amount": 234239046914, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQJTV8Mvfzj1Ej7j3RM3bQ8ZJzogD", + "amount": 234216801941, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4jeDQ2eyB8qEXa6TYBrht7FjWnKq", + "amount": 234205450496, + "lockTime": 0 + }, + { + "address": "NULSd6HgitVGQTPwbSz3GqrTNne3Ci9HRFi5W", + "amount": 233978982028, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB5UYb1XKx3jtCyTCr5WvLgPaAgHm", + "amount": 233923455601, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4EZBcfGQtL81ovdskL78DbhbaQDh", + "amount": 233752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRWTHJXTWvHAruLusw64WCoTwdDzN", + "amount": 233439815779, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8SFa5MPMf1qibxuFUEPeNEqXxm66", + "amount": 233395083626, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPe7XZjB3GkNB51vPj1Fad2habEMG", + "amount": 233285586717, + "lockTime": 0 + }, + { + "address": "NULSd6HggbUPT2BVbXuBjBNWzBJCnjP7cFMLe", + "amount": 232902383845, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhKurnnZGguGf8REzCpjQus4oPKP4", + "amount": 232848077502, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdoB7PoKT9q8rwy7cXE9sYnfXw5gQ", + "amount": 232640483694, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGUqpgGbQAyUGYrCGt4SEHhskpUtV", + "amount": 232557281320, + "lockTime": 0 + }, + { + "address": "NULSd6HgdL51s6s8qe3ffE9rXMsYSErXVeFcx", + "amount": 232521628575, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxKUJsnYdaqK5dTgRS2yiGiYgBf5C", + "amount": 232207181484, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWdpo7vUawZiPbqKe4hiDZzJ3hjXW", + "amount": 232201210478, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaRzrBA4qLx2HLsJNBddoqgz9QtSb", + "amount": 232050104188, + "lockTime": 0 + }, + { + "address": "NULSd6HghojfWyAskLAmy9DCvmLvU2xsLTaaZ", + "amount": 231166048808, + "lockTime": 0 + }, + { + "address": "NULSd6HggNUcRvZkZa8RmV2MLmB8KM465ePVH", + "amount": 230998600000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJ3whJsq9mYqXJrS9oepE9GTMhJdV", + "amount": 230913312021, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVbXoUrwMpv1PjaMpXH9cvwHDpf6Y", + "amount": 230866500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZwc8yxh6T6YsXtv5zZHVDW97RsE", + "amount": 230594393622, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpA1Gtwcgx8EDbuWxhsPfuPBKJ7Tg", + "amount": 230272488302, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5jRvXDx8RkvaUgyZcZLSvp4ddXUv", + "amount": 230194937726, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXcFtxFHMdnx2YBJn7yok4iEm1kRq", + "amount": 230142440634, + "lockTime": 0 + }, + { + "address": "NULSd6HgURn6EKbjJdFFBxgoBvkbMbEwjAZKT", + "amount": 230090000629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1tfJySe8DfaJgzxioWeMTrhZB9nw", + "amount": 230000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBMPvKbveyWnrMTkeJ2t9wyWHz1DG", + "amount": 229528257221, + "lockTime": 0 + }, + { + "address": "NULSd6HggQG97KLhGQPTRxzuLjepRvQYNbLkt", + "amount": 229504037719, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrnS5zaGrQ1pLb44fQfAh4HnZaZLA", + "amount": 229467102124, + "lockTime": 0 + }, + { + "address": "NULSd6HggTTik7fS942ANmyEsq7Pbe3nA44Z5", + "amount": 229191678643, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBqXkY8tmhVXkdkUA6aM4BPChSU4i", + "amount": 229042504057, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfP2a82CQwXHhAojreiddQCVTmZ", + "amount": 228917996272, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfvH2d9o6i9BLoGvg9S39HE2stCUz", + "amount": 228899461213, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ5WspG8qYL6SGqDupqGnJXWXNdVS", + "amount": 228769649152, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpUueinrJvr3FtD2QVkZbyviRL28W", + "amount": 228754894051, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMvuQiwQfZYeH6urkHaHo5RHhvaWS", + "amount": 228684937972, + "lockTime": 0 + }, + { + "address": "NULSd6HgcenvkYWNFUQTVT5q67fKBMF8ZFXi6", + "amount": 228615395516, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPCQ5rEFyPNehrxPvpB6H6Zt6ivtG", + "amount": 228462457260, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNaSht2GPFbwBoQKKNZmZadq1ARuN", + "amount": 228409141349, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6reYjGqDn4H1dZ8n2JGyAuuEN3Rn", + "amount": 228299485720, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSWArEDVCjXD3ACNJxGPKJX8rjT3t", + "amount": 228297794168, + "lockTime": 0 + }, + { + "address": "NULSd6HgXq877UEFrfChKbznTLTjwXVjs76re", + "amount": 228284534902, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzen81Zq3g9HCWjZhGd2ZQC49cRra", + "amount": 228047657402, + "lockTime": 0 + }, + { + "address": "NULSd6Hga474DYqjhJu9ECYXuAoF8RRTMMxxk", + "amount": 227815338192, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrQ7gKQy25StYsW4ib4BF3Sr91mGQ", + "amount": 227690423975, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcJ6qZymrPrZAsUcWzHQSFNPqqdpd", + "amount": 227542196733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmCvo6HTRQLQmfBKprq1v4pfwqjzW", + "amount": 227422755927, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTYgSoWNC7wSVyc2x4XUTNZAU9RGh", + "amount": 227412331394, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMHiPB6ZPMaWeg7otYDVFk3UpPEtZ", + "amount": 227390408963, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8t6LRjrv7U3sUQ973gzThCZPS4Lr", + "amount": 227381121125, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvL5SAZr1S2xqbApL2nQpCAKb2p9h", + "amount": 227286642424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "amount": 227179264162, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu2u4sugu38cYPtQiwAvA5DjCuHsE", + "amount": 227132911896, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBSYCLhFL758zHuLjE3ULyGSf47w1", + "amount": 226934961616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaybxevcnwu5YJxnerQAADhTgX9xAj", + "amount": 226736765102, + "lockTime": 0 + }, + { + "address": "NULSd6HgUS5bFw1VPYF7V7a3avddeAQAM4Ae5", + "amount": 226572224194, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZS5yudVpEossjS9VDgEcpi8aBY4X", + "amount": 226206619451, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1LEc5jLaQpfstxm5WnSwDjdsh3fu", + "amount": 226152003996, + "lockTime": 0 + }, + { + "address": "NULSd6HgasayzioPyj5VygiyfgsJkbaxbZELu", + "amount": 225894482083, + "lockTime": 0 + }, + { + "address": "NULSd6HgWve2PPhLZ2GCF88oSAgstP7YzX6JR", + "amount": 225859667154, + "lockTime": 0 + }, + { + "address": "NULSd6HghgUpHA4fphvZfEzWqqpvRKfHsGmP9", + "amount": 225839800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvnTNHEtgkSYXZdvEQfKZCWKnsWC", + "amount": 225673160801, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyTi14HwvEGtf6Q769dus46773q9s", + "amount": 225410004000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh33tRM6BTH5itKTxfcFyb8LGBFnzV", + "amount": 225365560392, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRLcsfTdVoAaX4r5HWpTCsagnXYJh", + "amount": 225171798320, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxthmHF7eMYv4mEmcic6d24iY2NBu", + "amount": 224993217772, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCTnijrokywnrpP36dJAyYU2VPSgF", + "amount": 224938072830, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXcrEGt9o8Tw8sPQ3UVG4NoGAZGmR", + "amount": 224900929477, + "lockTime": 0 + }, + { + "address": "NULSd6HgWT1SJntames7pNrN2JGjZjDESJVAq", + "amount": 224782794770, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZiMv4wSpNV4hm3nZE2XFkMHGRV7V", + "amount": 224777814150, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDYjawkyM5LSnc5yPcE5N6t9Zuig7", + "amount": 224492888923, + "lockTime": 0 + }, + { + "address": "NULSd6HgbigDFJRrery94zJHHwBjy9e6V3wvA", + "amount": 224485699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf99WLzuBg9oivHHDsATNYnMMaeoxN", + "amount": 224346343200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFjzXUUywgSqVQWdS9si3ksPbTa4Y", + "amount": 224292241252, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRMwuJzdrDKFnGC5wDjzARPvsMN7d", + "amount": 223953992977, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6pCsP96kouvp1gDoYU4KnKYMPmyL", + "amount": 223900458142, + "lockTime": 0 + }, + { + "address": "NULSd6HggeZrfobeb5Aqq4DGgfUA96yXzi9tc", + "amount": 223786869276, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkg4kxS7vmqYsmJLinQndQ1apZ33i", + "amount": 223770132772, + "lockTime": 0 + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "amount": 223760990261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7rEbdAngHNgLT9XUSY3D7srTaKU8", + "amount": 223675539585, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6xAc2D4bgCDw8cQwg9cJsWLV3BrY", + "amount": 223383768271, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHjqxH1df4sMyGYDEPrCce6ooxkN2", + "amount": 223222169281, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuj4qfPJJRTHqFVgPY9XCpmbB4cxD", + "amount": 223219332090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9uw2b8qgk7kpD2DdS1nVD2r8EJPz", + "amount": 223209741000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd5toUxNe7MM9X85x5i8Y3Cv4QDPq", + "amount": 223071608704, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuS1xsybQ1bsyLgsVGF62Y51fVzXV", + "amount": 223024624139, + "lockTime": 0 + }, + { + "address": "NULSd6HgicGaLDRDrPcvRG4LRrE3Uqaj77sE5", + "amount": 222825046743, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1NUSYNuRMfQMTNu6akNf2epddKJg", + "amount": 222589413218, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeh5k2jiyULvFpZ1DSinGWCC5c8Jw7", + "amount": 222513176054, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGR5M4eJx2XtU5bYUk5xdjq8WUYUd", + "amount": 222438879409, + "lockTime": 0 + }, + { + "address": "NULSd6HggNwqgMVnGfrbWN5Y9G9xYwa5CD1Sa", + "amount": 222309229938, + "lockTime": 0 + }, + { + "address": "NULSd6HgUD5Rt3bRJcJFixGom77VnJNpp98YF", + "amount": 222129207119, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGrda9oa2kd7Hhzru9XCYiUb72Xar", + "amount": 222124186814, + "lockTime": 0 + }, + { + "address": "NULSd6HgeykvsEMSkRq7JQ3iTW7RV6eRizPvx", + "amount": 222084605276, + "lockTime": 0 + }, + { + "address": "NULSd6HgigNjmyMqGUUzAg16tmahTB1ySceRG", + "amount": 221993500333, + "lockTime": 0 + }, + { + "address": "NULSd6HgibjcqyzDxukiZ5f3TW7eHUgdNJZWj", + "amount": 221991488296, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "amount": 221912705860, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "amount": 221892141803, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTUBtcveb9ScW5EQNb93HUz19LBRS", + "amount": 221689787830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVNvfakBmJJRJhsYTAUpc54DmnTs", + "amount": 221593294373, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5ZDfLfvjpt2HYXshxcp6Girxp2Vk", + "amount": 221501731956, + "lockTime": 0 + }, + { + "address": "NULSd6Hga29CjRVfyk6HCitJmFmkYbKXVXzGT", + "amount": 221436081752, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJDVCqW5sVoTva9izhVszs9pM8AHq", + "amount": 221079714669, + "lockTime": 0 + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "amount": 221070976183, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2SYcMEKG8fijtf3pC3R7mrEiAepz", + "amount": 220699000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4ur95D1ovean8cYaXX6B2UkRQZpA", + "amount": 220659692231, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiov4WGakaCdJrWa1D1BVbYWAV7q6L", + "amount": 220557514300, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvq1ZEBboChx8GfgDjPxHajE8MtS", + "amount": 220472335830, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGXSNNrFBZBLuzRsXhmq7gyyWZTv", + "amount": 220058770856, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYSz2gc2YbMgr5xV7sdR6tPbQUSY1", + "amount": 219999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUswjQcwcdrjTsBwvb1ouoexhcYw8m", + "amount": 219112096408, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8C3bfdN8cE9QUik78E1MEcdu76yT", + "amount": 218893337385, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtHZzXraZfMAmENnA8bJXM4eLZMNH", + "amount": 218739578269, + "lockTime": 0 + }, + { + "address": "NULSd6HgX11tBJQWJtvbTzPuBUoZbiHrY7Kur", + "amount": 218606965875, + "lockTime": 0 + }, + { + "address": "NULSd6HgUi1ZE9r5kdpZdVokpga7GTwuSu7E2", + "amount": 218312597733, + "lockTime": 0 + }, + { + "address": "NULSd6HgWp3JE2uTw9VFxJjQcaafh9SBT7GD9", + "amount": 218138101472, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoHn6U8KjcJNwN966ADgv7Xs7f23R", + "amount": 218037694298, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHteHhZx2WcVeAdSR1XdrqJMQVQJK", + "amount": 217903275346, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiVh6DA7DquSrT4DDXdJacZvCfCXe", + "amount": 217798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4Rf5AVGJoXGRka1wjqmitbmy81Wr", + "amount": 217515313055, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSwbAcAd3XdYRn6nWsVcBXw9rst8y", + "amount": 217294141545, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQsmjt7XhiGfGGLZuZp8LSCqWx2iF", + "amount": 217267910811, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "amount": 217194444619, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp", + "amount": 217108757438, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gRr9UDiyCeB6qXNfrZXm9yaTTLU", + "amount": 217103542488, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTU1phiQAQ8mRZgT5WALZZU15Ba7p", + "amount": 216912369612, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUgsa3U7SPGVPzBPdimwoVZJojKyR", + "amount": 216637134722, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2aW45qMeN5zHDAe3ugWZpzvf7kxj", + "amount": 216535366335, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeoRLvdqvYA5iy69nqmzhED11Gs8s", + "amount": 216487988637, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFsBsEqqWQBANLo2E7pCgLpHuejoW", + "amount": 216447395998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ12SvtZLQrZueUvVvgydGqfkdpmY", + "amount": 216294472267, + "lockTime": 0 + }, + { + "address": "NULSd6HgagpxmhkKzrzZkb64snYiaNtvFToaY", + "amount": 216286938750, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg1116eDrYaJbZSF1vhKPB1mbaScw", + "amount": 215993162920, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuvMwF8ehadmSDGkW83t8dWLPfbcM", + "amount": 215808453584, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz9tCacZmHt2sAUBY23Hdh1qwrAd1", + "amount": 215778141346, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpgzMJAQGCsAT3prWquY6Ke8Y2FG8", + "amount": 215597178831, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh515GbSWmTSjwzPXCEieEYENeg89", + "amount": 215395963077, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHLE1obFhHSiKdfZjLK6RqGyXmswy", + "amount": 215242029960, + "lockTime": 0 + }, + { + "address": "NULSd6HgTybukyS4BuNguBVNAA1pLhDKm4tCi", + "amount": 215176736484, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLV2JZvfGf9uEVuPW3RB4awH8TCx3", + "amount": 215091961569, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5h3jPSR2DVmmopCrGKqbJaMn5Z1i", + "amount": 214909200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3CGLhMBwdRmT14rNAoaku6cHx34y", + "amount": 214891405341, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXppMKWn5grKWiLoguAhMm1Fzmcj", + "amount": 214625498508, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYR6qWkT53L5AqNjHgismFN7Ah1yt", + "amount": 214620330985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8GPtwHbi446RqYYcJ2e9PXJFdQGJ", + "amount": 214600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamNct2hatrdZkAmJmCoVL3T1UkELD", + "amount": 214598868478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgej1ojV9dGNexBH4TmmQhpA1eENHj6", + "amount": 214116222972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3oW5rkcWpNoQsikvY1QU738SuEVy", + "amount": 213879857622, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8k79y2B69otsFGxGaRpBRoAjAsM", + "amount": 213854937198, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVC8hkEYVMx9vkSTQ435WWoRakakY", + "amount": 213623832274, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwCV6XcyAAZVTtDtWXNHnewUFa3Lp", + "amount": 213476358102, + "lockTime": 0 + }, + { + "address": "NULSd6Hges1CHA8if6KwrjK6Z65gewNNRnYFZ", + "amount": 213387838372, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqSTEXwyRBg23zMiNAA8E2K5VqG52", + "amount": 213372184141, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7Xe3FR5G6KpyRCPyogQGMeRZpHqQ", + "amount": 213345000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZvU5ZUW8r7gSbLoqR4GRcpMN9DV6", + "amount": 212838068329, + "lockTime": 0 + }, + { + "address": "NULSd6HgigbbKrQVjBist4T2pg6MdinRurpVn", + "amount": 212810600890, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMkazDyecnt8ku5fRyDiXR2UwnP7V", + "amount": 212592057062, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvBYQ6k3X3YDqEGbfigmmAzvLffMu", + "amount": 212342599261, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8WDL9TVkDsKcPVsyAWn9e9rtYXjf", + "amount": 212246063543, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmzAdAZLq9PAgAdv6S3mncftb361L", + "amount": 212107475854, + "lockTime": 0 + }, + { + "address": "NULSd6HgaenEewKi5ViYF8yvLo9cjypenaf9P", + "amount": 212032600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMECLPGjz2YYxp1vaLpe3ocUis7cp", + "amount": 211980544581, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSaoThctMnwHfmwmRPRbXCVTtSRrY", + "amount": 211817494665, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDUsKeS6ENHFMyE8pUmA2aMpykJ4t", + "amount": 211612715577, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXAo5sDRjs5wKdrXrJx3yad9zKzLX", + "amount": 211442822680, + "lockTime": 0 + }, + { + "address": "NULSd6HginCFv8LSXhBGh5UpxfZrphYSjRGzF", + "amount": 211375702875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqnoH2uHsZFeU6hCg4d8ZgqxHRxwJ", + "amount": 211265866488, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby7qFLH3J7bdGcCNp8s7fPDyiyQLg", + "amount": 211257510810, + "lockTime": 0 + }, + { + "address": "NULSd6HgejPdF8rsn8Grb5CGeHZkhAwK2b4AL", + "amount": 211247628424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9mqmtkstZg9puR4wJLcLgrmdU2gX", + "amount": 210973881797, + "lockTime": 0 + }, + { + "address": "NULSd6HghAT276PtSzh4PsAGwNW3FEVWUcU8g", + "amount": 210942208378, + "lockTime": 0 + }, + { + "address": "NULSd6HgagHgRGSCwpi2XvP8gPEL4iSUoh1iV", + "amount": 210871616089, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGJUp75uVgRs5JzVGG1dxMEsU3H7u", + "amount": 210786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDxXsBVoWUbJdacy85c1cwznK4iu", + "amount": 210775625518, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhivYifVkTJQ7i7mrkMfNZLDt5vWm", + "amount": 210729635400, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcMSkbW3Nk3S2SuJdRh9PaVXD35uq", + "amount": 210486729792, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "amount": 210444718664, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMrJJueyRnQ7YhWMYekAy8JcXafQi", + "amount": 210433370310, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4euvmiQzHKsEhQkmdt7pj2wntXzb", + "amount": 210411355132, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpWVUhFiqjcSQTFTQUnv9cMzE8jhn", + "amount": 210311765371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Ss6pj2NsAgEBPUt6h9oyLBATBvN", + "amount": 210289217928, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZXQUmAjjNtSKyLp5XuSedztCAYCq", + "amount": 210228622943, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6xKXxCBjNxt6KcPBAzVac8QgCkJJ", + "amount": 210214659581, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi77f1sqj9Zpr2sVRukzhdsFFpo6E", + "amount": 210201644288, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNtwuGX362FrvXNQofEGZK6PUecm1", + "amount": 210151075241, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdjz8f2t56qMqbHQ8KyywDdWb7fUwy", + "amount": 210099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJYyKvw5eFKc9TCChj71CSw54kSHL", + "amount": 210083577331, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2UGy5smYD2pHNYR9vuxTmnFiaqtF", + "amount": 210008084187, + "lockTime": 0 + }, + { + "address": "NULSd6HghGAeWvRJ3QLS3M89iCNeM5bM8tCEE", + "amount": 210000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuhdQFmXfNsKpU8VjSHVxLGy6gbVR", + "amount": 209998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQsWXT4Uyqh7VeWapQx2hXa3Bh13k", + "amount": 209994825749, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUTkz6CrWXBRf6uKKJFGdyXHUpxT2", + "amount": 209986900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSBiR52VR9qtw6j75Kypw5eNe5Vdu", + "amount": 209847916304, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVmgzZnamfxroiBYLnQv3vu9Lk9Sx", + "amount": 209618957536, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVqkZVHXKax5fxqfM9CHXtp4fXZ5b", + "amount": 209455857286, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGCVNCWjJMgt4JTKLWHqwBryixj8H", + "amount": 209233564043, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCZ9rhezJHGhBETkADMJeVgf7mUwY", + "amount": 209216890514, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtVuFJ83uXzFtpMBAWH1KRbsj7WfE", + "amount": 209089700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjShPkfb9UqH6XDUXGMxC5jW2FXFWA", + "amount": 209049161106, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1JYT2GCNXna7wsDqJFTfVedeYqcu", + "amount": 208906753025, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9JWLdE8ZavH8tFz7TN7KGXau1vUt", + "amount": 208789130678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSZHkwF5SzUeHvmWgM21T24mPW6LQ", + "amount": 208736836744, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSVpLyM5QpyzXEg3bkGSbCvJknqHn", + "amount": 208341189511, + "lockTime": 0 + }, + { + "address": "NULSd6HggifuYMazG5RSxx7CCnXXA1SZkJeRm", + "amount": 208324850910, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1u46ibnaT85GmrTzdT5QnQ8ds4Xj", + "amount": 208319507766, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYC4jvB4ZYFbPbgk3PYwNK69vjCpv", + "amount": 208294726061, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVLtJGPznXZDqY8YjBMNcdiWEMaX6", + "amount": 208231715358, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqAs9cgTc5dsxzJPmLEXpsGrxn52p", + "amount": 208219709890, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz6gTCu488nmitnHAfU4QnrE7Yn92", + "amount": 208206908415, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbs5CpBTehQbZxuyNzZYsrQkDpygg8", + "amount": 208141036642, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfTmmKwU2BpUBwrriqZQhvNPcRaWg", + "amount": 207969483711, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc4vcSAfX9vdVyQgSFRB332RfGDvXf", + "amount": 207912688636, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6676mCbaCV3LRLzduQJUyD4RyXsp", + "amount": 207884700785, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYUsh2vPYXj54Mj4Xdp8t3nLntNkg", + "amount": 207746600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4a4ViEusazdGLn1wCQAzyawtVn95", + "amount": 207519996227, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMeryHdGsK2DHXrcWw7pfcndckNgV", + "amount": 207436330031, + "lockTime": 0 + }, + { + "address": "NULSd6HgciVyN8SqxiATkPN66BhVKsGmiUxFR", + "amount": 207395981374, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6j3YVxQ5MjYhQdtR3HFbiMSa4jPb", + "amount": 207293597413, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2Em7LqTdaD498PaZwS3baMWE5mq1", + "amount": 207260863357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9RNsYMxcXyVRysrn1fxgH53HxJ3z", + "amount": 207183243259, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRuVszS1fsCfxinBtC5953VQJinxw", + "amount": 207147237205, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYNpMYDw1YbbfScVU9LN5pp8WYjJm", + "amount": 207011757840, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2MUMJAPnG7Y1TTbkokPKZ8kcYHwr", + "amount": 206883486133, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbfTZ3SnCuySNv7LeuzbR68EYroab", + "amount": 206798225982, + "lockTime": 0 + }, + { + "address": "NULSd6HgeG3DqB6zzTbukXFTXeUKJZuwN9o6R", + "amount": 206689352889, + "lockTime": 0 + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "amount": 206527611836, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwWqyKXoW2PpAyr7FqhzyfumHvRUX", + "amount": 206227789036, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZ4NUTAsbvpkzyeLKbXVaySHcU28Q", + "amount": 206057398171, + "lockTime": 0 + }, + { + "address": "NULSd6HghzbAMFhEk6HJ6tEr9jtfMSWPuUD4J", + "amount": 205828590863, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "amount": 205816080972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiud6rdsyG8t2buXydR9ELCsbNcjyr", + "amount": 205719999997, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaLZGAEqBLvKtv2eZZaxi7CDZqt89", + "amount": 205643023950, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrMYseAfn5rXrhbLCCnRtxqkBjAK7", + "amount": 205521556523, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNB89nECzpLEzGLiwVKXS18R4A4vV", + "amount": 205505133217, + "lockTime": 0 + }, + { + "address": "NULSd6HghCLxSWhuwiAHGv4ceESKFDfhVm4Ei", + "amount": 205445476594, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorqso8L3gBxtsuYcBDetbAy2v8Bp", + "amount": 205424199743, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcqS5RssVYcYoTNPcu1DeRbP1qaMR", + "amount": 205319991780, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBayaAnJ94t3dG31wZH5d5MLYPwWw", + "amount": 205217833773, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcUiNyoo5yA34pF3Eqb3mkHY9oqWk", + "amount": 205024334977, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcufmNXhy9MsLtcrt8oKUBgVLqhbJ", + "amount": 204913500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsLdt5ttUE2i7cJPZKzJvqQbWUhYo", + "amount": 204890946477, + "lockTime": 0 + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "amount": 204816480948, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNDtXwP25Ww4XFaMapCjo9p3deGn6", + "amount": 204793572594, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwNpH6DUJyiEosLhidMoh1nUGBvWj", + "amount": 204753605945, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "amount": 204682617296, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoCcKaJ3Jcbn76wHpAGu5zMHuSukA", + "amount": 204662389728, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf61LhVofCsDtJUcT64onT2UQUuTdA", + "amount": 204643234694, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCWHAADexXrkHB64sfDs1CxWFpko", + "amount": 204630619047, + "lockTime": 0 + }, + { + "address": "NULSd6HgapNd7uoSGNCEnfVXj9hwj9QLkDrdN", + "amount": 204610500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAKr86aZFeyFHxMyiSupuQeRZ3ZQk", + "amount": 204569999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1ZVXhynVYeUz5mGgzK4TarhyvWuA", + "amount": 204559467596, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMB1FvhBpoRSV3Q49pNoYVANtzGcS", + "amount": 204537127938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv1KKZGxZJA1wWmkGrZXeVAfBJGbz", + "amount": 204526271632, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFKJvVD8WbH9rTEuDNFeVQujcrnPS", + "amount": 204518837670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCaiQmnAUGBwnMue4JhmJpxiqAPBM", + "amount": 204366173469, + "lockTime": 0 + }, + { + "address": "NULSd6HghsvypjeK4rBc2wu4CA7DrdhsQH2HM", + "amount": 204207005754, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu4smR5JBk5E2JCQmyGs9UmRT7ear", + "amount": 204126857376, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfULLBdgu54oabH4NftCnzngR7fQc", + "amount": 204080664515, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWrFDoA78qXJoznCnbyUEcZnSC6Sf", + "amount": 204007776591, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdLG9tcqDgs5kxEFDLq3KQFwPoJdk", + "amount": 203995927637, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQvUyBBW8uLK2BEjNiLdBGtPYVgFV", + "amount": 203982317720, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8sSY5GUoLhX4t2fUzVHgyEx2FJrw", + "amount": 203866255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFQsDx1gMUPCj1sVZm4ms5ntqcwSv", + "amount": 203540651146, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyZttpzVLpnueGBgut4dWre2bgkX3", + "amount": 203403521806, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHNkfz1szy188zGBTrYu9bFV3zMJG", + "amount": 203400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTeR2oBdRdroiL87qt9deeWPctCoh", + "amount": 203213029171, + "lockTime": 0 + }, + { + "address": "NULSd6HgZW3o3MnFK74ZETAXhrexc9imNNEs2", + "amount": 203208728839, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFAUaV6vQkQcHvoLiq2WzNpYYsHYJ", + "amount": 203159077864, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "amount": 203155414462, + "lockTime": 0 + }, + { + "address": "NULSd6Hgii5eESQUK29WzVsTeAkbyKYx9AMfm", + "amount": 203117030969, + "lockTime": 0 + }, + { + "address": "NULSd6HgehBYWVNUWzsT4fCxVYEewHBxQNSe6", + "amount": 203058017876, + "lockTime": 0 + }, + { + "address": "NULSd6HggVthKHPemRFzUjEpjPiEn9YRWuv34", + "amount": 202864593708, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiS6Q1Yp48n3mdJvDmc56zTSd7Nfp", + "amount": 202818215514, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkgfRzefU3ggfffZv23Jg9FryDaxi", + "amount": 202617941616, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7SSbTfnz5Fd2vRu56zYxZE4kFZNX", + "amount": 202546927054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnQKGQqsioieWQjKXrdNeoggR4zeA", + "amount": 202400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmNG3itV3i9M1tcx59JHuEsUvDFRp", + "amount": 202388155273, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkMJpum5GPCH9zZs7JhCeQcArAHbD", + "amount": 202328801439, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabqu5Vv1gH9ZehcLXS1QLaqd7uiqW", + "amount": 202279629229, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3BtP33qg6uzQJJ99rgS6qrt5HY2W", + "amount": 202246385889, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6ZoKPfUnj9yjnRJ28MD8BPFmSgef", + "amount": 202203478406, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9T2EgAeP1GU8gBwiyXxNF4Cvj1e1", + "amount": 201960660191, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCmSaWN82Qp9Ywt4Eq22Y9a2xhcFU", + "amount": 201907182221, + "lockTime": 0 + }, + { + "address": "NULSd6HggT8xfWiL64F3Vv7zeoLygqWW5Zmst", + "amount": 201897012982, + "lockTime": 0 + }, + { + "address": "NULSd6HgagBHabbN3E9YJS2PDbR5QihvwRiea", + "amount": 201881490359, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaZ8UQStZYYcDYjUsVF5n8qK4c6sz", + "amount": 201777201107, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG8cgmwbHPN9r8ECBTCpZE8LGJsdX", + "amount": 201719000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge43QPGFaHA1sH2WNtSkUaZQHCtMGW", + "amount": 201702679318, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWbN7XdS67xYGe1xP398qDF5FUG5N", + "amount": 201588100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1wwUbecdUZBi8sY9b7Wu37pZhpAh", + "amount": 201560932757, + "lockTime": 0 + }, + { + "address": "NULSd6HgaNnxoSXt5PK4qnVvNnnWypgz5kvaj", + "amount": 201485297013, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVnxDeu82mwn5rg9MYt1CZ3hQsmoc", + "amount": 201446465798, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgsAUsL71TALTfxsT6b7HZRJ1LMDL", + "amount": 201240888253, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2tyV39NMCQpMQQsF8QWZjhmLFtS2", + "amount": 201187671035, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgiUUJrwxDyx4tC3sKs44Zka7WWaQ", + "amount": 201140169745, + "lockTime": 0 + }, + { + "address": "NULSd6HgccSWHaKbVrs9QLUe3db2ksF2h7dFj", + "amount": 201061734183, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqEDSuWknVfUex5WwsaAuAdntvrUN", + "amount": 201016751267, + "lockTime": 0 + }, + { + "address": "NULSd6HgihJu7arPbw6VydeTA8kvCQ6WGshei", + "amount": 200907812053, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLqNRxq5j8tz491dkRApzNWJVx8Go", + "amount": 200896457460, + "lockTime": 0 + }, + { + "address": "NULSd6HghMGqsifMB6Wpvfbgm3eUGUC4FffeX", + "amount": 200882113012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgib2PgoktoaRWadXFa86QnnWK5B6Ah", + "amount": 200745787959, + "lockTime": 0 + }, + { + "address": "NULSd6HggqTCnneJeFi8KAMcEsGV7bdxAAspm", + "amount": 200744216315, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh31d6ZLdY64AHHg7vFAVSWuGSHEw2", + "amount": 200678287955, + "lockTime": 0 + }, + { + "address": "NULSd6HggdTBkQGNfZNSVJ4gqDg7CxRv3naFr", + "amount": 200601255596, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7db3bHyjw7n23YJvnnzgM8mjcvgh", + "amount": 200598491727, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFWvrxkfwjcNkMonP6h47W4JB6ABz", + "amount": 200499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNwmEUyunuWdXidg7PgfkyytusxJ8", + "amount": 200493555205, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxJM5DcTxX4vEnFqSzAcJUoUq1zV6", + "amount": 200427000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX57dcRcYsWVZxDedzPeqUGuWnRhXy", + "amount": 200300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5fhMmYAzxr9t4GzSjUNTkfgWiBW6", + "amount": 200286890266, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGUs1TZ7C9t9hRYNCJjvC81o2f7Rs", + "amount": 200148648000, + "lockTime": 0 + }, + { + "address": "NULSd6HgheATyyiVdsNxnS77v9YXEzBoREuER", + "amount": 200100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhgnvzjwFfPhLX1gYRQ7S78va9gs8", + "amount": 200099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAR5PXPtgg7rWS2HtwxKFNrfKx7Jo", + "amount": 200096400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYam1pQwXdvumDhfagt6TwZjor9CnC", + "amount": 200096375737, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGAWB4Tp2yQ6TCQnqbK9bDng4ZUSm", + "amount": 200064418213, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw9LzUW7g51NKngGz6NU8c496YVBU", + "amount": 200009500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVo7kst1PCV9w2cMCavfVZT3VCfPe", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9q9v6Rbgs8p7wMSXS7vuhvuPpBKz", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4nueVrMrErEuXLn8C5gk6gdtGaH6", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghSgSGg9Xvmp11iuL1hxCtp2zZhedj", + "amount": 200000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdViTyTspEmxUNfWYbAvhAnjHpaKR9", + "amount": 199800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZD85yv4t9Jrr745vM2vUacYfR7tBQ", + "amount": 199798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAGKkgm4ymp95Sc8EQ49LoUn7pT3H", + "amount": 199600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBtDooEG61oLzarLQ8XLWRTi6CNTK", + "amount": 198099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3YRENcb4jeCnUxzCruztYZpsd7PB", + "amount": 197721057012, + "lockTime": 0 + }, + { + "address": "NULSd6HghYEvQuNY7XkuwjhqD2exsu4tJ3nff", + "amount": 196799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgewzkr24NViAnr93R8Pi3mAzeXG8RU", + "amount": 196402595000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawMLQJZ4hxr2HfW4M98ugv96csvpR", + "amount": 194638321900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEAEDkNA4eKFBHAXfnXYF4wg84ZaA", + "amount": 193340000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgim4H6RNUii6UAg5sbXJgctn7GgmXK", + "amount": 191510276936, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFH2in5Lb8JUo8f5HDbb7Fc6BEWLf", + "amount": 190099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjPnGKgaqSzAs2GTXSGV4hiUuAdwQ", + "amount": 189466940759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKLtAvanxpAZAujyXC7cHYsGzenE", + "amount": 189000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhtKmZA1EUThhjNWzm8cnPj8yTvbL", + "amount": 187000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaNmimjDXb3QeRHaR1cAeuQZpVJqN", + "amount": 185759900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvojdY1ZmUWgV4PkSLubspjW5RPCD", + "amount": 185000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8MmRHyDGMpRcH8VbwbtqGDk7uiCK", + "amount": 184534970264, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbV5EVHM9QQ1L6V6KM3rfzY6v3LEW", + "amount": 183173800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Tta674nNa6sVbD7HXHvi5sVgrV8", + "amount": 182200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaGqrkWZaGpar2J6og61j4e87mNm", + "amount": 181007100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMnCqLb5c6vSuRVYdcdtvh9T9yeN9", + "amount": 179799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrK5PaT8bbEf7ociwzJTUM1MqKivC", + "amount": 179660100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUSk8r93JVL3E2hBGLnQn6fvWkG9k4", + "amount": 179530508841, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL7QmBUmMoyDoz3iN7BDuRHK1z2Nw", + "amount": 178589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFX787bSKSxmJ2VdN6qS6grtBQNcA", + "amount": 176819999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJkXexJqH6nP1Mc4i5GveRUbufQL6", + "amount": 175970000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqR5cEQTYEe23GBbnhSNjXn9j2noN", + "amount": 175745491403, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQEsuwezL2P9EWvbC4AQ7qtrSb66Q", + "amount": 173819708000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCpEPsSzuhAg3SYwuN4XaWRicFnCD", + "amount": 173717427150, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrZjnuRqhFEtHpWS5jT3z8pTKe4xn", + "amount": 172875307000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4M2NoEB7ykhzTyhF2KfRXNoFcCjo", + "amount": 172236267478, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Db2CAQrSzneep9DGHy9LYpMZT7k", + "amount": 171996789000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCvGHeVPHiURZU9fsuv7n9y7ZUKkz", + "amount": 170890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSd9fdXjWsG5Q48fooDMqzhEchNNi", + "amount": 170475832299, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ3BcygZHmPNC9edv7YdKcj3xSekd", + "amount": 169932188000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqmcFvEafCWeNMtmJnpkHSkW47eD3", + "amount": 169851533273, + "lockTime": 0 + }, + { + "address": "NULSd6HgePcTQsjdQrGo45MfUhjVpAngzL81e", + "amount": 168569000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "amount": 164696400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTQGvmCMZQJ8TCyj2kMSnayUf9g3k", + "amount": 163942237003, + "lockTime": 0 + }, + { + "address": "NULSd6HgedcauXmcV2ia1VaT1p3dFfseBucix", + "amount": 163845000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3rySvNxJ9xNDYwZisTCK8GY1Msji", + "amount": 162846871000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj34r6W8EMhWVSGxQTkcbVSRLj623W", + "amount": 161976000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8zAXPJ4NNNAVbr8dzEn9sUY1N5wb", + "amount": 161042578796, + "lockTime": 0 + }, + { + "address": "NULSd6HgavzdJDejbwXLUNScg1EodSfPRhfdU", + "amount": 160860100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpuF6yun6db9kHKD7FdzYSwvXVqvZ", + "amount": 160600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSqaLvvE7TPARfTKEAkvdZ7fvjBoi", + "amount": 160372720000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWorZkZ9xhuuEeeXkPyBY3G1oajntp", + "amount": 159799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebeMhtUp4Ccr5KbB2QwrN9BHLMpPz", + "amount": 159749400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQcpD2N5pSpFCcwqZYkJU5TwqBig9", + "amount": 159080400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2rkqtMBrjhuYdKjnxHWRqm74V5Sj", + "amount": 157328900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVHdimaKtQS5FCqBPp2RbdFjN1vsX", + "amount": 155664887800, + "lockTime": 0 + }, + { + "address": "NULSd6HgetUXzaSRfwp4ZBJTwWqnXVMc5eGzA", + "amount": 153394567227, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4V7Y6HyVHfZJ2hCef27PMRNm94Lx", + "amount": 153172452595, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvbGJfeHXquD5wsW1CVu328zeuBep", + "amount": 150436195353, + "lockTime": 0 + }, + { + "address": "NULSd6HghuUzjQNCPrTjFeHSmybA2BuZtvRwt", + "amount": 150180361000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKiRV8J7k7MFd9gRYgyULhyu9Yq7S", + "amount": 150179000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFxsMiQPbNTdXRPaGBJtu4Kc6RJtP", + "amount": 149888097000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBwAXQakqmp7tmBqzWurw83uiovC8", + "amount": 147459247774, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaQVbkjk9yx8VyMkQCBHWSrSzWKya", + "amount": 147451400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijiJ9XhAipzVsCLCB5MEBmxyENjtT", + "amount": 146967701181, + "lockTime": 0 + }, + { + "address": "NULSd6HgcusHVRDycN6P2Bsadhm65zYcMTzWt", + "amount": 146360000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJiYu276uDYhQSPXJC8H53xnQEAmW", + "amount": 144569406862, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6y7pPV8n69JYcG2nxFoPbEGkKUn2", + "amount": 143991570100, + "lockTime": 0 + }, + { + "address": "NULSd6HghxiUDyFHygM3mujDdA87AAqgvZU1j", + "amount": 143754420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWdh9qSFUHUrCMDg8vFsXpor871i4", + "amount": 143528000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZX8axcKnsgaHzdbkeioR7y5tAEEn", + "amount": 143330427801, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFm1ZaNaet8XLiyFxcbdwPUcZiZBr", + "amount": 143200606114, + "lockTime": 0 + }, + { + "address": "NULSd6HggqSz6AwtkW213EYYcZkkcrHxRWwjt", + "amount": 142899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoHHB8ew2uDjh8AqYseECfpTea18W", + "amount": 142599999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHMCKeKbx7iw7KFPfBiGK6eNWiyR", + "amount": 142576705000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBZGnutRJAe62Jkz2FBhFjFZ8Z2ok", + "amount": 141897179025, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWmAFmH7xJ6ESyLUiDnNEMmC32PV8", + "amount": 140159000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHEnsb2PWi4DT84rxQG75K52Vj7uW", + "amount": 140061300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVcynU4ApCexGCLwmnRtdWFuaYS5m", + "amount": 140000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "amount": 138547500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmKyiviQtDHP8DU7cnQapRK13uYRp", + "amount": 138218000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcjMLFLsjXFeBbMoa4wwYeEVorBK7R", + "amount": 137939100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5zhxXWgdKarQEwU5j9kQ6jV9ED61", + "amount": 135497000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6rYL71gncyxWXhZdycjEPmuvtNbA", + "amount": 134899500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMnZDkNMxd9JD9UCb1spuVLeQWxjd", + "amount": 134649900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM3Qvncr8CvpYAvKUS2a1AhuKhCP", + "amount": 134630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrsBmpxRubXx5HSVF2YPxqTDVSojp", + "amount": 134408076000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw63rQXh8mFSMujZ8pQz9qjvGSY7N", + "amount": 133869896000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjT5SiEc1cDi6K1RCdcB7Hy61uDjhb", + "amount": 133699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQcYWwmpY3ZKN7dFVYQobK4rkJEvR", + "amount": 132660000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMgN2RyTrfvE8uiAv14nxB9oHSiAx", + "amount": 128070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7Xje2oBfS67stjZgGyY58hJEFgm", + "amount": 127774675000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5SkCkvB7GEH5NwstABu7JNH5hZjL", + "amount": 127723293670, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKrFjBuqRc3X2wAfYdjoieX2B1cd7", + "amount": 126872000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwCZcrTr4QgCGChX77AnvtCR32gPZ", + "amount": 126772066912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8xsvj3Qt4HeJ8E9ZgnorTH5CXLWj", + "amount": 126148000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8QwmpfRXMR2UwNU3Y9NLHeeLYPGA", + "amount": 124884000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8YKK6kLQ46SLSfWGxvKtki3SV4W5", + "amount": 124600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKJxBFE13sMWLkL1pywFLhrRjkmWK", + "amount": 124473399999, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKQtfn3cUvH3hYpwnsEX78X5QjiJP", + "amount": 123939200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9vHdGNMykPjxJpxV1Tp51byo9HpC", + "amount": 123835943875, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2wRcUCRiDStLYuq1b5hcmgWo7Fbk", + "amount": 122922953000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjmnAF8RFshcTcJ8e3hXwPHrsLGTk", + "amount": 121391458773, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnJYeTS1gdpevLvtEq7LPAji1piMe", + "amount": 120105578600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXma1GGUXv5Ksf6B6m33BFPUcWs7Dm", + "amount": 120070377686, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFr3a8Xr8UkYmukud33DuedCh26vN", + "amount": 117401692000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevbjuyvKVWXpKLzb5pDRRwHwuMQys", + "amount": 116300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFHW7tHS4qkskvyxn41Ev1wgpc7C", + "amount": 115982900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6qSUJXVJmivQ9iaPMHP5m1W5ATMe", + "amount": 115148000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj77R5UKWqNAn2uFHNjDjbsj67VUGa", + "amount": 114358959000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX911Qqwq6bnEEgnMTAnHUu5LRmxiW", + "amount": 113500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCNuFLLiGrnfVsvd4TwMzetKPrQH", + "amount": 111998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVF9TNzxhCwJDXjMxpn9wTwqnbMyi", + "amount": 111188400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggw1p4weCSy8WGLUwoLvE8a23WaqAp", + "amount": 111127700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRXZHmKDzajKx6Kkhh1S13SWXecCd", + "amount": 110700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDN8HkfeCk42RYnWU2T6fTwny6c2J", + "amount": 110644000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsv84ZhhygvSEx7Vgn75W2oQV9bPx", + "amount": 110597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6Tzsy9XzLmJN7Q3SkrP4cu2bjwXB", + "amount": 110388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuWnqvt1Z6KkzcdUR1esErGU2SttQ", + "amount": 110249000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacQdpbXybar3Xu5Fr1SeQq2jQpWa", + "amount": 110000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5eekp9zMJbJcFH1tGDJpCXVTQJPs", + "amount": 109733407000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPomiEbZzKasYkn9Tfe1tBBS1ht9K", + "amount": 109500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7TyCjm1jERwxYyiqJeq4Jupo5g4E", + "amount": 108490400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAJNWdNuM7rXzuA5QtDPtQ7ugGYsY", + "amount": 108113000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghS7njx2kQ5UtN8imC4sayLtahMKUT", + "amount": 107631800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxooeRcgsvYduvau5SYSVdkZ63zZw", + "amount": 107114900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkWsPRuCzdGr3jZRj6MNhUGrUxvr4", + "amount": 107022500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjDmq6RdM5ghGXb7XrC23hMUo7YWR", + "amount": 107008110706, + "lockTime": 0 + }, + { + "address": "NULSd6HgiE7B36sMD3Q4QCt9aVxCcX1pQ7Vqy", + "amount": 106692200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbntMH2E5TouYACbDnYFKPDyXhtghE", + "amount": 106577618100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnP8kHwpjZS4veWhBeMhjTJS4M6wT", + "amount": 105894391420, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcb6jNuxjjx5pgZ7brA5G6khqphQht", + "amount": 105654440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqfL6r31gUCEs7kCdq7YAoDiBDAod", + "amount": 105092249306, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh52zemwq7TUNRudbvaEvQPLsScq8N", + "amount": 105070966000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRjnFZuhXJMzb7drgDPyAWN5qf8jS", + "amount": 104999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuQr8NHV8ivQqM3FWxte8w3DC6Usa", + "amount": 104990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHFohMvVQYdtWZzZVQKX9QD2p889s", + "amount": 104979643614, + "lockTime": 0 + }, + { + "address": "NULSd6HgWafX5CrEujppBzXAUuHgod9Tnqj4r", + "amount": 104397300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6j5d9kcu61JdTTJQDKzNnMBbEeXr", + "amount": 103669137000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuaYHdeZfsc47NFSQhguEAwdmaSga", + "amount": 103368248405, + "lockTime": 0 + }, + { + "address": "NULSd6HggYsZVMNzZbwCSK9vzF9zZqF8J9iFb", + "amount": 103129999998, + "lockTime": 0 + }, + { + "address": "NULSd6HgX9jzEFkDuts5NBSpiomQryzjkRToJ", + "amount": 102757144000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHSVH1EXvP22aybUF1zdWtaGaZWqh", + "amount": 102595400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCP8QEHTtfheoR72n1RsxqfWAXU7c", + "amount": 102400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjbjfT9zK1TrYoXsLPknHbo3gDg7D", + "amount": 102332000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7qyV3gfu1jLzks7yMkjX9iRU6wia", + "amount": 102089316308, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvQXEX9X5Mzk29DZDgh9saHH39cwN", + "amount": 101552500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDyDhn2oWgQ4oq11vfQ2UAb322LR", + "amount": 101486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEjWaXPWLySnK3gd256gGr1adyv7b", + "amount": 101366800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6aKTqw2F5PhAqJGKxPrYyB6u7YrC", + "amount": 101240372600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmqPGnmck12ADoWwMU3PTrTxyB3h5", + "amount": 100998624904, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPTsnoPeZqGVLwhYBABkAb1xnqk4f", + "amount": 100498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF7gx6GSe5akvBBCUmZaWzFajW9mn", + "amount": 100497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiS5bDk12irmmM2aJ4TDKAEpvhvrx", + "amount": 100471709000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwt5Vtx8y4ey1h4WyQWcjtjduhkkV", + "amount": 100023000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9UF3v7zhzrBYu68FCuf4r9NhKnmH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg15cNhq1VivfiGS8ZtRHZj3p7wan9", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkck1RVxo3WhBwyGmHR747xJUw8YZ", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMuabcJCQTsZZMJHjFebvLGwnSmKH", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6mQEqX5BovpnGgfgUZaExmjQ2hnk", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kyqPAtQZm8tSGfc3GsYnhzeFAY4", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRfBU1rh2qQWVLqLKemjFBcCW1Woy", + "amount": 100000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgavPxsvYv8niQ9E7sJL9XsDghoL6f6", + "amount": 99999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBYLwEZFJFTUy2nUDap8h1dKaS7od", + "amount": 99999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWevoNB3zTp6YcdFMAkjUA2cJAvch", + "amount": 99929000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNEDcTDcdQVkM39cPUVta3pdobaan", + "amount": 99883361000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD6cXqZr7X9TEmXTUcTViA3Csa4cF", + "amount": 99813607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgtdxX43BJeac2pE3zaypCzWxFiDB", + "amount": 99770900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZakNVbfMPGXHN3opdKBNewFXWWrWY", + "amount": 99766607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwCcSP4uDDyU62uVvnMMwtJ6NT4Cx", + "amount": 99739000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdmp3GEPavf8VP3Ti8iMBHQoE1Lw2", + "amount": 99641607148, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWwiSMFk8pE8YvZVjutPoGCAEWd1R", + "amount": 99600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRdsnZ2x7H6DtiC7Xo2HpghXa7omm", + "amount": 99550000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDPWLYuFUqJpEF3i1vVKBDy7fS93r", + "amount": 99348122000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUCsk6t3HbXrgyKPaio9rJp68heTh", + "amount": 99072000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgci29PbP99mu4mVku5oAmnWwEBZuJH", + "amount": 98999380525, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnaxaUmjLhNaTN2pnJgvtXTCBC9EA", + "amount": 98994800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgizup8cNyNCuEEiMaQzabAEBoAnr7A", + "amount": 98500800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbL2bheLFkwxTRS9n7v71FGRNZkqPv", + "amount": 97386670651, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRuv91qk2iW18Ma5qSTofpdHZgQaE", + "amount": 96797000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6QFeBJ7w1Hto84wkudsCmZeN1ufA", + "amount": 96512400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPZ9AegxuH5F8p8Dwz3Np71CgmpSQ", + "amount": 95216900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYmoURRqS2v2VJKwiMZSRzG5KeYum", + "amount": 95143129293, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5iuFavYk8gurDL17LTshunk7pgXA", + "amount": 94980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuz8LHhUPsMr7P8uRcwg7ATNu4NYE", + "amount": 94900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTe5Gcs7hAiT7dKHaFCPpHrpfB2uW", + "amount": 94815468500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFfDKkbm3e4hqKQy4fdvQJgj1WHz1", + "amount": 94544805785, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFE3KjXkRv2EsbbsVrGpk5kQgwNHc", + "amount": 93070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwnzEfAoKGDuAYhHmzrTGKtkUZ61n", + "amount": 92284199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWX6K4xCWKhrw1QNEq4rSB5qJxAf5", + "amount": 92146334000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFHaLoicY59W4xayiGD7vgg48tN42", + "amount": 92079600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwbvgvVujsTz6c2xYFYg37PGLkTHn", + "amount": 91652255000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGEN26JxLsS1NyjicokfExrr16Lse", + "amount": 91600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAwwUX1qy11z7wX1ynbrHkFwfSFqs", + "amount": 91428700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfwKyFKibRKUoTrFTLjbP2AKnispe", + "amount": 91207700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuREQxTt2DisqkidK3QAk2RCfsJ39", + "amount": 91177550000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA4j8NMefKiSwTkpcPnUC9YqxViEX", + "amount": 90842400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKnbYzozunHmTy73cS5goTT73Fdx7", + "amount": 90253380318, + "lockTime": 0 + }, + { + "address": "NULSd6HgZH2HVjXxquuYLWaEZiTp6eV8c9H34", + "amount": 89508000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8XQZBTHSK314WA9xVxRhpAmtMvqm", + "amount": 88450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghoYRZDuHTbs1osh12WJpbQJLSuLv6", + "amount": 88210700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVCx9BNVK52jNJy8HUvPHgyAwPeCU", + "amount": 87950511000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpoFCRAAVPuTgFJp1w6nNc9zbMPov", + "amount": 87702232200, + "lockTime": 0 + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "amount": 86584236688, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco5MCveWGTZkBRGTVKkw5pQuFReTW", + "amount": 85236315422, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDF7JdAyedWAcCWgXdntUURaQdxjD", + "amount": 85209400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzieTbdsyuTbbh6bNPdXZ1zwTjpfi", + "amount": 84851900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf3MzeysTxKby6HzeUdzxnCFoyeU1", + "amount": 84628962000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisbmx7LRRGogmUBhBffyoU6ktzkG1", + "amount": 84354700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcy1hN1JAch3EephQkpW7BxM81wDv", + "amount": 84000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN6ryLxwzpvVPKS6qhiS5JSNAieXf", + "amount": 82849999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZfSj2umtfe3rc8BF9rh424Z8mgRS", + "amount": 82599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrAgmMLKDaFi9s1hErHn12XKhxqSX", + "amount": 81833537094, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzRwPbBxo3Tb8DCnwT8ndCjmTGT8K", + "amount": 81438100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVE9ZhUmxFAqJs1h7HS71URSSK8Bb", + "amount": 81346500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzFxXHx5UwM9KgnfHW7LWq7T74aBb", + "amount": 81319000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2hjmwm6ANEGs2MKWQcrigRm1KoKB", + "amount": 81238400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfsZWpe9q7KW7xgc4NKpt13nFw38Y", + "amount": 80979999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hghb5SoAzsrLmv8PG9LCShPWW9CMpN5", + "amount": 80759600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP2991h1w4r8LNoEV1SxQ2jrFpGWV", + "amount": 80662800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi9ntFTkdkP2QwQrFHndNxoPTJevv", + "amount": 80209698918, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XwVQz5MccKXCUSEfu191QzNmuZS", + "amount": 79586449402, + "lockTime": 0 + }, + { + "address": "NULSd6HgetdVtkhmDUeYZUBUmxbvs2yCvwLdC", + "amount": 79199999999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3NTjZB7bxhrrrEcR6qJbUAvQPTpS", + "amount": 79149213000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnfar3aqX7szQXM5mj8AQqAaDZriw", + "amount": 79119750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi152fDN5aXRa1Bs65vudXAuabdYfq", + "amount": 78719200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXFs6NMM1aiNfDx6jdNi9TDGKfEED", + "amount": 78594348000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHb2NrgthuNvbD7C77mBmwjz6jDPb", + "amount": 77716188000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5UPKJJ2eoJPA8wacfZY7CD44wvTK", + "amount": 77300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGzr9k85LEpfJyohdqGY46hAYKUzg", + "amount": 77187901000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd57rriAixiwwFt6E9fgMDMEvvwEjU", + "amount": 77021300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3EqZeGP2GRG2XF4QAQx8KStV5bex", + "amount": 76976661037, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPeYyh4DTcVfVDdSBthd2eh3nYTqk", + "amount": 76922000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxTm1gKfPd7HvUTdFhQcKuzv998v6", + "amount": 76767534308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbf5hd3xZSndyVE5UEvH784G1B4NVs", + "amount": 76593200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUee939qVjG3ZP3KHKCLxLZBottEjt", + "amount": 76100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqJ7Ln4YAsrS15Bq1QGKXzs1RvwG3", + "amount": 75586994784, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2syEKofGQYHhMxTZbaApQD2EVQfD", + "amount": 75248000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvaqdKxRLGygyDSVfSrhm9HsNoBXR", + "amount": 75189717655, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT43LY2s7ZnevagMyZQxciZhLZ5ze", + "amount": 72752100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6ViEwAfFoDRhKmMkFfX2V56t2Nb3", + "amount": 72602999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghqhhgnGvb1nvL66LwJZGeJJVC7sLx", + "amount": 72350600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbBLVDHeykBLQK76F4GxaBsxgQLFp", + "amount": 72146400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirk45hsrjVPi7QhvHVzPDbzya2spU", + "amount": 71951465416, + "lockTime": 0 + }, + { + "address": "NULSd6HggYJJAPpMm2hXsUzMYBb9wLTJTVucR", + "amount": 71670295800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzMCEfPCTrcdJtVS4bPmxKQxWP4zy", + "amount": 71227700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUVbjdVwn9GymurmzCESrQ22Mx8MB", + "amount": 71079999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUX8ZrGRtPNG2Q9bpPh8ZoKfaBp5h", + "amount": 70313160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXswN5x4cJ63c7EQ3Mkc4ucZZtAAEN", + "amount": 70299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegYevGpia1Q1nR6EgecWtUTDFtrrv", + "amount": 70000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHM93s1Pj1MTMHUcStAdT6suWsrmV", + "amount": 69722281499, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTTNLNvfCWJ8wJjStrt9eVHhB6zQM", + "amount": 69678300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWe7bZCHpqDA5jWQsTM8owFeWVeoJY", + "amount": 69429500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeH1y9okeZtjxAtFHrxZERJCfGmBv", + "amount": 69361900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH5aw5GsxkCNEdjQNrrbNRHbQEAew", + "amount": 69270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuYzyQ3LruQijf96vkBpdRL1Vuoqa", + "amount": 69128800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiuY9F4iQYLaGquHV3oJ1skSiAtR", + "amount": 69018500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga52Fejj2zjqhsQfapgUJ7AvieSHji", + "amount": 68590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBMLqLKuRCyHHeGdTqbKxcB67espt", + "amount": 68318000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgfZwJTeRNtMVoqYqCgbAMtKgUJUy", + "amount": 68101600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbty5z7UM2Yz3UFPWZVoCKw8LYABVe", + "amount": 68073000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSUmazFzMXmjQkQf9bUeTKKtJsNm5", + "amount": 67901082549, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuyfD219Ga26KmcnCjqCqde9qBVyd", + "amount": 67731200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbgti47SsNWpvXCDGfkhoxWvjguyTt", + "amount": 67695500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9RMsz2rFKwH5d1hHorsZ99axb4bA", + "amount": 67272200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcAU1W1CQGPh45SPeXeZfuaoWvj7W", + "amount": 67143800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7mJsJP86QRoU7EFJvL1xNkqzyGcA", + "amount": 66973500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1sRn8ndh3FMNDcrkEaguKuzPewaW", + "amount": 66813600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfW3GoGXFyodmn1Va7FpS7W5KnBYN", + "amount": 66757600034, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBs4ywQgWmjT8yeLj47eBv3TGXbQL", + "amount": 66219713000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjYk9tgSdVwcH6GdFMQNm4JfrJYtf", + "amount": 66086100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3JYSYisCMhxQi4fm7XDZyxqzbTt5", + "amount": 65856300000, + "lockTime": 0 + }, + { + "address": "NULSd6HggBWw3V6FxufLNNZ1EMgScpazer1aP", + "amount": 65799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoxcQSeSUeNm2yEo1DYwjJg65Fb3K", + "amount": 65614200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEj3oBe2snq1VHwWn2BcxtsAeXT54", + "amount": 65013599999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmZVMmjebRCaeMQdgfaR5NemBPct9", + "amount": 64930400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAsG8CdaQbWcxzv3mmUGn5kCbMGUz", + "amount": 64899054000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYG7tywLaUjmrUBjaHYEbuY8Gngqq", + "amount": 64899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEjrCxK82CaWhcZxCvbAEppdFTdTh", + "amount": 64870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXb7mk74vLc1BK88HeEAMWsHjP4Pqc", + "amount": 64034900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRhwkEcimnDGSv4MdxDL3jcVbz3TB", + "amount": 63934000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuBjgL8FVEie48DDwTo7VFxGbqsuT", + "amount": 63887312000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeX3JgCpAgpaH2NDWob2UfdcLbzs9", + "amount": 63747670200, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHDT7tD7U3swnzVAo7YqRq3ApiZLu", + "amount": 63626900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5K8K6YLcmLR5hDBQs2KdfknrDqXq", + "amount": 63467900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1khpmT24yYdae3RVxdn7bxpHfATo", + "amount": 63430000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpJM52nqYkJgseX97C4vvXiJhpvtG", + "amount": 63234400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9EnXYRHD8KkwuccH7MSjZhM6HmSc", + "amount": 63156828976, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQwbficg5uPLC97qCzDVpsW9mnF2t", + "amount": 62874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsGnnHfBy32YrKVWeYyuGSQgu78ij", + "amount": 62853700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMNt9MVkHBQApWuD7RY4PjNEJinFq", + "amount": 62337800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgds6zg7fjgwQTw9BG1Luy5QEyXnMFY", + "amount": 62199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekfkdF7JRqzdnhzvEBA3qunGkM195", + "amount": 61950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTurRacVCvk9sEispx1ehUM8XyxTa", + "amount": 61323000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfmd5Q7EFhQrLQFcoAKf72G7KA2rHW", + "amount": 61203700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhFQrTQUFjgNBe8eCsUW14RrxLGUD", + "amount": 61140539520, + "lockTime": 0 + }, + { + "address": "NULSd6HgibVLYAVPiPN4jV9sL5xf7mAaUvXmA", + "amount": 60957390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZY7z3SqwUxxgfma5TXyfcj8tQQ", + "amount": 60937000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfffVRz2CqGnHmYxs9qd3C2cmXYaRr", + "amount": 60870116423, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ6Z1eWNAYD23UJrkitHHn6TQ5nbi", + "amount": 60867393483, + "lockTime": 0 + }, + { + "address": "NULSd6HggHJuLEVNtAT17vXog4mEicfD9k6zV", + "amount": 60399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgah2r25eYRooK4gsTHMMAacMfkqh97", + "amount": 60100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggdrf5soR2EBYZaRCERXjRczqa6ZaV", + "amount": 59999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEbt8pFu34Sy3AAniy1g8RSzShvBu", + "amount": 59694603871, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTXQyyAvtKWFpdNh7y58GunawDXuC", + "amount": 59600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdyUMfVbtNnhmca5gKQjYxtfg2D4f", + "amount": 59473000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMUpSaA7h3U6SQRwS99iTwXHRtWZ7", + "amount": 59139000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfutswSHUF1V32ZaJu2VRgA4A3ckw", + "amount": 58413181078, + "lockTime": 0 + }, + { + "address": "NULSd6HgbK91UmFf3MTUpqkfiT7ahmGcpX5gK", + "amount": 58100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQQU37w4nb1CUP2XSNhfTJhSg1LA1", + "amount": 57837499999, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGtNiAo2Pgr6hVGERrZAzcDdtZebM", + "amount": 56999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZPfBtLN2neGcpmG9M1vPheBYP5aA", + "amount": 56786103000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdSc7SdBQTF7jhDdAfjTsiayX264k", + "amount": 56762900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "amount": 56068000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgcuBcV6xhJnkJ8iM2vyEL5NETMxy", + "amount": 55842100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTSBLUc8Y1qocoswvTcAiCvUqtDMg", + "amount": 55813324200, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9Err584wdbBJ9DTQ1x9E47wdGxpR", + "amount": 55768800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqLMsAF5M1k7EUouWwjwA6Sx7Tswt", + "amount": 55342600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTvQcYhPgYn9kGdqPpFFZmmNs47TQ", + "amount": 55152790000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6gudNvXXvtQaQwDsG35evgUwunWh", + "amount": 55079993858, + "lockTime": 0 + }, + { + "address": "NULSd6HgeExDGa8dxGgGZ9kgicsqf1PmsBLwv", + "amount": 54998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ4muwLmzS676HRnD1i7BCTwszTZ", + "amount": 54900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyuXpZ121CXCG8iyNeuC8hs6114xu", + "amount": 54657710000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgch8dUxfWkUZwLnvHwpnt7s68QgxrC", + "amount": 54451965288, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsvEeHR2ec2gddWS3Uc2FA3xhtDMn", + "amount": 54391900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXtCqxWWko8DTsKjF1e3eWrNei3w", + "amount": 54268070388, + "lockTime": 0 + }, + { + "address": "NULSd6Hgirz9Zj37RhjYDS93PLsGgvRwLDSaE", + "amount": 53745200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ryf79uHSPmoiJdjzj2fcNXygeT5", + "amount": 53344758172, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwGjPB4sysnMqbdi1YXqfK31dmSfV", + "amount": 53298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU62QT3kBadWwaEsfcFXn3ViWtHwLC", + "amount": 53136809000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge84fStpuCt2wayi1LhgWcasY7LbMA", + "amount": 53053000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvZEF7sxrViQrNsXpeX9UaAWQBzBd", + "amount": 52980000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbJKGnPnoPfKEhcnEzqeNEMDptDBz", + "amount": 52825410000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7fikGWKAPqPTAYtc6Wzk4GsM2trj", + "amount": 52750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyBTNZ6fnBuHXmYNa8gfop7r3ZBhU", + "amount": 52500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQfQNMTk4irHi3z7QBDzu6M1cZJ6h", + "amount": 52499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KCKREgjAHgoE1weC3kuRciXv7o", + "amount": 52490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYgupX9cpF1mC2a1Dw1RznBRHQWht", + "amount": 52318332000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKERQeiSgKJ9YTSc8hinKCL1PQci6", + "amount": 52220000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9cVgGwT6fPh8cfDEiPsjBdH2KyNn", + "amount": 52000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwGVztj4z8BskerXhozus8yvn7WTT", + "amount": 51859000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuG1PMxQ3rhNZTYikKVKLdcXjAsNB", + "amount": 51634100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQGAge3QqQzo78pDsNBc1TS1EhyV2", + "amount": 50943200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabf2L9YoJy6umn47keF57H1WzLmE1", + "amount": 50886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWUv7RQhdQ8wQmaXby4cCV7wZSvTT", + "amount": 50700951878, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLHweCPx8R6KfDNuXGY8eHa4fq17J", + "amount": 50498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSRHYrJefPet7g8QPFbUsbPNZS485", + "amount": 50356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyqepPcYFv9CHyvu6B8e6MDUAmUyQ", + "amount": 50300910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYes1tqgttxtdCZ92JoKVZLXpaFkoW", + "amount": 50269697720, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdyFfkhMjDWDGf9wufvG6MuWeEtm", + "amount": 50189255408, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFnNuPX6Jxzg4KwXjLPVEBLzxPsa9", + "amount": 50186193571, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMcpzMEEV87dqhYeUUJQJZFmh6a3g", + "amount": 50154100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtgjDkKzSXau81Tf2eShwZsFyW4jc", + "amount": 50099300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNHA1rrcvxtiPnVzoD3BzK95y6ZAN", + "amount": 50078090000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQvvufwmFdmM23igQwuQqNjoeDkBB", + "amount": 50065600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayraqpxKu73uj1QvGWKekh9wtXnoV", + "amount": 50061800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUDp9QjA3wf86qSxfGNazWrAQQaN", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLiuYq3S2d5PN6eUAYKmntCTrn8Xc", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcdfb4ELWa9dDStKngRztbHZB3XmJX", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5unSc4qEueKPhPd53h45ohz3A9Zk", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh9DhbECRxPKf6x4P7JVrkcShzfTFT", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE6dZQ8FJU35FhH6ho9oghN7q9PGH", + "amount": 50000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwyBkdTw9ikK6VXstsa3s9wmYE3up", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1C8yEqMYf5vF8v2oVtPf3rqmcy3p", + "amount": 49999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwHKH5hF2qM7rwRKE69smSBzJvHbX", + "amount": 49998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepVtRfE9NpeMyZcZZ6QP2qxHY952k", + "amount": 49914890700, + "lockTime": 0 + }, + { + "address": "NULSd6HghFAzUASu6ajGzf9J9cX9qvcbNarSW", + "amount": 49890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9p1U21YBokj8SP69Xhr5Lfr9Swos", + "amount": 49812000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRbNNsoMaR2ceujNRgD6x3vxbMFJ", + "amount": 49749200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbFc3RuQGxDhUdZuMPLfoU1bk1Zz", + "amount": 49707405000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW4jS4peR5vwxTtz1Z97csRhMihY7", + "amount": 49646500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaGUzTscJ5zUDZg7ewarVW6uLwH6G", + "amount": 49366875200, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeBvptELxqFdVvXLM5fyZsedBTvP", + "amount": 49166829700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBewJkTka5zYwadRuCSdvQAgY2eei", + "amount": 48998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSeckWjhqQz9XyGxnwKGwmYPEXWf", + "amount": 48877000000, + "lockTime": 0 + }, + { + "address": "NULSd6HganCCAKm6HBJr6DEuDrvXDk1U3dGxF", + "amount": 48629000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9guiYhKR8CrJ1QA4jbR9KhBAJfJN", + "amount": 48560000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemqAEr8rM9ZaKTDwLdsg8wdgkJzXh", + "amount": 47956500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjU91Rsr8eF2vAAf3DjTHNwgRADi6u", + "amount": 47186250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "amount": 47150700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipa2rsGvrzoxoKpYRjny4usnkUjuj", + "amount": 46778000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoyvRPTTWWbDjZ2TSZGGKsVohxMcd", + "amount": 46552400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTeX17M7yPQW1oAu6sX8738AthC1P", + "amount": 46008300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuUVuNwQtRpBt8nfA4NquxviVfXq5", + "amount": 45950700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLzYbuPHK4hqwFojYqBjCUxdNyVLy", + "amount": 45563300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEDzoYMG9CzEb5fGX7kyAuajZhP1G", + "amount": 45094000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNjKE9dMn7zddEPa2t1ToFZbkpCcz", + "amount": 44876000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgigQg9s9GmH8ovM46p7JTx4TavWgaW", + "amount": 44660000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqbo5v53kUJVJtNb3mjdFK9aBofU4", + "amount": 44554400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1oLYf6c2mqCVKbtSEgXtk5KKdZU2", + "amount": 44400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkEHY15YCLYTU4d1L5sMJtf3vFPzq", + "amount": 44399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKZDFe3h7QotM4gkc4rjBSH3XKzzF", + "amount": 44047211000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqGsANg9SxMxCpH6ct5m3HBzzKSPk", + "amount": 43939123000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetHxBJ4mTQPoXsi3vyN15HNeuZmvo", + "amount": 43691265090, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdn6NU3j8HjDhgnfxZoAHfA4VF6uBv", + "amount": 42990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwxhYmwZJzivUMZqrFgiuxmcoFV8G", + "amount": 42497700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoSEc1brquP72U9VLUxAD2oazHbPT", + "amount": 42323179512, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBkb42p8NrDNvTeGcmZkcUnjs6QZ6", + "amount": 42076767999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "amount": 42059505500, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5bFtgyrNXsL2WqCEjqRKFHjZNoue", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7mzSBBhodq6e3kmaESrJ6jCbp27", + "amount": 41857100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAFjknqoqaPphNsFoinBpGdmLg4X", + "amount": 41460000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga3sK8oJ1DzAYgjyzUbS2DAi7k6H7w", + "amount": 41398385361, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgo5deS2NX5wXqRvmFy5pzvEt8KQr", + "amount": 41356600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcje7cJKszUyW6TKbZ72pSCFrd7PF5", + "amount": 41356000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaxEdou5Ho2DXWZFnoq7Fz75oyuhc", + "amount": 41317657361, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1FoX7ZwMvc1qKUdWDZ55zDJkEj7B", + "amount": 41257700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzqqHaE4WR7qY9E4zCqhJYiTz7C1u", + "amount": 40875000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz3qv66PYJTpk1qS1wrgVzVPaHo3W", + "amount": 40712518500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcm7MWfqZrTNJKjMKq4fJgdG58Udoj", + "amount": 40657700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGAew6Ci1M6z4m27h2jyqZLqmqg6E", + "amount": 40554940000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae8EXJZ7RfDKc5ekcQZqWS49yazdf", + "amount": 40414000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQREbhtqThgiQoanU4cu93bBRd6S8", + "amount": 40219500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpRrVo3WTyLnq8SggmU6KCEdYJMKL", + "amount": 40198767300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4shKpW3VzGCGQt1Trxn5VpHQbwAS", + "amount": 40100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagPPoL1qWPPYK6nKKQ2KidiJnBhsT", + "amount": 40069900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkV9obxmVsaVsNZ7j8eoMEBJXM7g4", + "amount": 40000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfjQuc1bMNA6B6FZjbMNennCjSGkCe", + "amount": 39959500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPvW8JpoJwvwe9en3CrtLdz1Ez2cc", + "amount": 39570000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEzg4XbS5UptCaTn5sFy5qM3LdBNh", + "amount": 39391169400, + "lockTime": 0 + }, + { + "address": "NULSd6HgWt6FSNMux2orydAk3LSTL6cuSrKE6", + "amount": 39347482300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvFmjVGhVdeZrfbbD4VTApXWjgGUA", + "amount": 39158367200, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQDz4aLtjVKj1dXp9imDxc3qjQzoe", + "amount": 39042600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmoTebaJSjWcPjqYKfEmNiPtWJ6S3", + "amount": 38841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3HCwwVyvEDXZLUz7k43hgFma2U2G", + "amount": 38500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwQnaeLuNZ35wgwaAdzqSmaJAf1MD", + "amount": 38461400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRNKzMcGvYeSyBbC7VqFA8VDuLber", + "amount": 37770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSU1iR6BfNoQi85mAMT52JMFzpnok", + "amount": 37700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbprWooLiMfSDFxBvkGgC8avGY9kFE", + "amount": 37661300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikRERPk9reifN4EKPMjbS8vU8zzEf", + "amount": 37236000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3UCpAsddTmQWueudA4e5RLxMRoxr", + "amount": 37233000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGGyKFd9pRtdTeaWGd9BC8S9Jsdq7", + "amount": 36990000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuwZX6k2jub9aYuq5HmVDDaA8dP6X", + "amount": 36921669615, + "lockTime": 0 + }, + { + "address": "NULSd6HggLxf1hk5QQEoeguGGQEovaFUBYsnu", + "amount": 36800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgexERKueSwbBjiPRqemRZsGR32x1oq", + "amount": 36600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcCBAo2iPmpvgT9zdkM869wvv5nog", + "amount": 36263040000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7kkHizLoYpcQDZfu3bUn88PQZYPH", + "amount": 36193000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDoZ1C5iKvSq7yvRVnbu33iBkTVRs", + "amount": 36108760000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX1qgYDaGJvu9Rwt5BoYA2dcx1hdYq", + "amount": 36043896300, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfe518VfYPsgwMBFrGYRU9CNbxkN3", + "amount": 35986300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi49tanAgRptcjgqjNkfZABQgVCE8Y", + "amount": 35876899931, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4hCyxbCsJP4zRxXGDvmEGRWR62Kg", + "amount": 35542231000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViVGUviGq9L7QADaJcdbqaT7nAq6E", + "amount": 35208496801, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJ9EJqQkqcaeztdT9kvvJLa5jCzGM", + "amount": 35165970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepySbFLv4haXdbB3vk2V6aAtUoUaY", + "amount": 34825460800, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm3D8yy2oxwFopYh6sSVs24U9yeeW", + "amount": 34647125016, + "lockTime": 0 + }, + { + "address": "NULSd6HghRLb7uAe2LejKQqUHnoVNySiCZT6s", + "amount": 34300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiDamJtRg1ixpW5mWjhkU348uawgyc", + "amount": 34164800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWpYSHZ9m8b76fP3YUCbo39qpRnPj", + "amount": 34160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "amount": 33787000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg7EQDeJyRxMZXQ4KyFCsNhqratoK", + "amount": 33548484600, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYJkzNfLcJ8rfmBJhk1w3kh7zPr7w", + "amount": 33312302021, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMzAUcUxfFGkRqcAhdLCWQwsB9Dhd", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbWGsBot3vsz8UgwFdpkSAR9xTvE5", + "amount": 33000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRX4urJFY6PiH5fKvz4qw2hMYYGFv", + "amount": 32989999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghhDXobsnEbAgegwFb56GJTNaKocLr", + "amount": 32853000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXcTAEKsi458ChmwpmkuC7KTQ66yv", + "amount": 32732976600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsD8PmcVYnaZcYU4UqEGM7N4BLRcW", + "amount": 32665203261, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKdtmHbZ5rfuPXXawMY1VnBxRwN9B", + "amount": 32652199999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXHZiZk13u2DC17txyjZKEjoNKgGG", + "amount": 32232300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjcokn8sCFruQE3GfkrxCnc6abY5", + "amount": 32158700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1HZgJ6dvfBy1FLH6eUuKhg78w3wM", + "amount": 32087462800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc3LUEeUJp9cHGcrUD6F4n44YvpCh", + "amount": 31878000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge52sk8Qk4QxyCuVgDAfdzDvbEc3Cc", + "amount": 31868002700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJPv5gXj4TWMQujfN8RunbvpJbVJn", + "amount": 31575100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFY3V6SMtULwSL2esgcZCGLpjv6GB", + "amount": 31543436900, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCfL1fFpxUGaTXFMUx246vfnnpg5E", + "amount": 31480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYm1ApTQS9ymU9YQudsTN6aJytCemy", + "amount": 31465657970, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHFsTDn7XaTCmKEzyTDb3DLnNVREU", + "amount": 31438419609, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtbiNpWHkyRX8yikDBh2mnCwEBkQ2", + "amount": 31400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtFAeyzBvuLQxnUDR1cWX9AvNZoH8", + "amount": 31366599999, + "lockTime": 0 + }, + { + "address": "NULSd6HggFC7SgEbY7AeJEenich3Zqc9dPjkS", + "amount": 31182208137, + "lockTime": 0 + }, + { + "address": "NULSd6HghS1otDMmPYsU6sBr2muymCg9GiMjX", + "amount": 30965715000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaMp6yCxigi1jATL9mgj3tFuq4D2q", + "amount": 30900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwzyRRKc5Vjt3ix12pp16sApj4nDC", + "amount": 30657800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghy9PtC3W9YUH8H91qwsRFsHwAGQt", + "amount": 30498000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghBnu6JEaTZTa96b9HUkn2We17SGW7", + "amount": 30467500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk9aQCuv5RN1gXRsVs4ywk2mTvshY", + "amount": 30290000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt9q3pwB5VX1dEVJNCqEnHYanACy4", + "amount": 30180000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxahngjWtUcsRn9CFNf5RS2J5Tgqo", + "amount": 30174263931, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoJT3aC4AQt4CjUCkQFToJ8u9oPF3", + "amount": 30099900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj65MECjpGLmenN2kHTjowXNfqVr4", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj11n5Vh8djURzyqHic3ZZKeY7KLfn", + "amount": 30000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFXhiAX6GS1adqDpent2oWyjCM3tN", + "amount": 29999900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceSgNat2se4mWgoMmgSgTQseHa3YT", + "amount": 29999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbURwyLPGmQfXyHDiubcATbWVryDYb", + "amount": 29999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ3j8gGcPBefUuLRgFkQi5rU5Nhcd", + "amount": 29998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfNmBxci4Ka5QrNoq94aJcceL55U2", + "amount": 29942130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsBye5nHQ7w6ySjkowtG43QF9ud6n", + "amount": 29870000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYhhkUYEb3WyiVHdgm1xgmM1MqYHp", + "amount": 29770000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikDR81rMjC4E4jCc6fwGMtcySadhs", + "amount": 29741224000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXXNdUKpsR5tpDktWVPu5mTjnNEVj", + "amount": 29660400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUG4KCd569i3XXV8wEkjkybECoSbxh", + "amount": 29551500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxGRmgvdnFU4vCgd7QX2Fm3YhbRNw", + "amount": 29495400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8UbBXAQkaWuNqeRTaxyq2D3JbvXg", + "amount": 29454642135, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhBUuhBgdajKgZXamGm6boGpA3QZP", + "amount": 29400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtQifYvBLaZtkTVQaBP7A1o8fkLDX", + "amount": 29399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj4xDV5E4Gq2fqXbieKMTgjccxFrBK", + "amount": 29389999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgjB65r1gykEByi7h3PMMCpSy1XUY8Q", + "amount": 29311638287, + "lockTime": 0 + }, + { + "address": "NULSd6HggzMpCjCvoXpJinLH1ZmKVdzmYUPbg", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeo8B8AQcr5J1TPTwJvGkdB4oxj59k", + "amount": 29099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMd9Jg3jxXZ8kNNg6A6ApWSXFLSJq", + "amount": 29062800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7ByD4KY3r9KEVpDWEv5T4FEYH4sD", + "amount": 28878900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnbnuULkmravvJyaDSUnCbZZYFhaK", + "amount": 28668300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMcPqEcyJ3SXH3bzqXaqpJUBpEEWS", + "amount": 28478000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgin7BXGcvKdJaYuGuPpDCWdt2fGR8J", + "amount": 28470499999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9u5ghYgagJut3RZJMizJTjYnafXr", + "amount": 28391130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZLtxi7sq7VMChvtZNppoy1WTDSv9", + "amount": 28170841650, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkFZQkcUHrmUJFpB5e3v1m9Bzqbo3", + "amount": 28100900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQYrSpmzjzcGVahKBBrN2uXUFRofG", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzLtaB7E5x7XVsH4dAbtZ3zD59Wt", + "amount": 28000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLrLsMEPt5m6E1ERERPuLQKP596Zo", + "amount": 27858044502, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyqVTPsMHX8ky6J9qittPnB88ds9S", + "amount": 27689480000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu13UQeM3BAHjhWbAnQvnzZCKisNc", + "amount": 27590369900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi94u41n1zEn7LZD58ap6oaCTgX9bm", + "amount": 27380622000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNUbUwCfwLzvNZfxWLH42vfdsCfdZ", + "amount": 27236302635, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS9Ey7egM21JBstdmzPYmDAYxeP3U", + "amount": 27191800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPK1Tu7m5nDjunFviXwFygnPWR5go", + "amount": 26999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy1B4zV8zEuajFND6nRzPrVHHZQLA", + "amount": 26712815029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9dfE9H56pHPefzNgS1br42BWXQou", + "amount": 26671300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjR4p7L6USXzPb8Fo1dBijFw5p9U1", + "amount": 26663000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcQugh8wgZuuiANvzSaQBApgggYJx", + "amount": 26475900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZF5XTGmoUzK65dRhydi9x1wTXsKCM", + "amount": 26470261125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYqttpH4P91SqFhWDXgG5VzonXaNR", + "amount": 26381164785, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDscEEUgfbNF8rTsuH7hzss4eaCrR", + "amount": 26093400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJ43aGQcoj3FMMA485BgmfHpTBJfR", + "amount": 25999014184, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmkFAbtf6sCT8U7AcQHkWDJLxuug3", + "amount": 25999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWiGNCf4rFVUQFtXMQ5Vm612GyAeQ", + "amount": 25899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "amount": 25843006000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDmfzreugb4gKjC8dMXmEZrETZG6y", + "amount": 25827736000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "amount": 25798000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBWgZjaDQJonu27Pm8MGjHeWd2Vaz", + "amount": 25773900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5EAtzFhr7AUqEEVRQfaZ1TeS9Q8E", + "amount": 25690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyG321FAhRYDLNVamiNgM4qc7YK43", + "amount": 25666500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUXpp6N3kAn1UmHXAAMaFpjnTg4MW", + "amount": 25343701700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbZM3mH16xJM9kMvJdbV1mTepMdgs", + "amount": 25330666000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicBARRCNDtg8QkzRkZ5CD8iSRvM8o", + "amount": 25288857000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm1YLh1Es5F77msDtwhz5necysXJz", + "amount": 25278000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRPDA7BFhZhNGmoP11eDFtnKyRsRC", + "amount": 25200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm71fAtEBKBT2c8dEuU9pKcCN4Rsd", + "amount": 25104700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhr7pKbEb36QtQNTpDbNM6u69ufSP", + "amount": 25079894000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUXBXoaLHiz9BDXkvGXxTgo8NQtBc", + "amount": 25030013835, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsUFstQtBVaoXWS2vtK9GyQTeoQBj", + "amount": 25019500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCLB75YFYBBCLSJSFD2nxSrb3bLYo", + "amount": 25000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyBdq5zDsZCfReePaQ7F3HnSVSKEb", + "amount": 24774400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho2S5rEFxoeZEp5LGg5VrPWfB7UNt", + "amount": 24451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7Bq2cgJe2hDNMHcfQSHF9WSpQbVS", + "amount": 24428250000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4Qo2A8vN69tEoqnDrjkGWciqp9yD", + "amount": 24400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCdXaoP92unzbcCv5gKWjKuyMEe64", + "amount": 24374600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNTWxQjuRLfUuhnrmPDtYmABNdK35", + "amount": 24327611100, + "lockTime": 0 + }, + { + "address": "NULSd6HgZet7KZEheHMsNgfKrACefV9rCh8xT", + "amount": 24247347000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkv6eHfFkTxoAtNSQY3Ku8u2nusmX", + "amount": 24237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfF4jfzvYkEHrbTLqx4GNQFiz6mgXK", + "amount": 24000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "amount": 23796635680, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjaj8R6eA5TSkwinmTwjqTuUz1QgdQ", + "amount": 23677500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDtTPM3kR8tAUkQzu82cvBT4qDQSN", + "amount": 23676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfA3aWZpie33vmfvEEXbyiETNearkB", + "amount": 23597000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLooviHwnd8dnsPJuDxmFiAB7TyQk", + "amount": 23480846691, + "lockTime": 0 + }, + { + "address": "NULSd6Hghe7vTYHykgbysAeXA1qEMee7gWSA5", + "amount": 23313510000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBNiPDpi2kJajioHwUTAw1Tz839h1", + "amount": 23301306295, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFNwwLnD3w8TPw6J5MymVPND7Wkj7", + "amount": 23290700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3fNJtWDa1PALM6i1Vz9aj8sXJ3E", + "amount": 23200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXY9fjcFBxqmtWfGAxbswvVc8LCTD3", + "amount": 23199766150, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xJFLR2VL7ojrCtYrnBwyrsioSKq", + "amount": 23175800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNNJXu7h5ocYsg1DnJ3xgMsuA1psv", + "amount": 23172336000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZ1xfxEPhVnvGmhn4hwXTGCSb9yN", + "amount": 23055202000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLkw3AuS47Sn1fS7MzdXhNrSNqAn5", + "amount": 22874000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXorg1shHA1MEjvCPaW4hH9vzovp44", + "amount": 22863800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt2M2NMSo9nhmeW1rQsdjY83iWz5B", + "amount": 22851185400, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmcsW5vEY3JFCuynvLmMcDRK56Dxc", + "amount": 22827000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9ZcCzwsaE5DJ1C2Wn38vAZgbKfhC", + "amount": 22776200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAKWkc73hR3EgbcHNz4ABqsy3VEce", + "amount": 22462600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfdexLpQfKUbusxHoYSAiCVtQ4wft", + "amount": 22332600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxDRPQq3KqY3HBUfkdS1L5H1daDSb", + "amount": 22306670000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZ6xJFgXrgnrVrV59Fjp3DCdxFXa", + "amount": 22219300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsFZh37TY3Ug3GkDyY6NXpm3uYfu3", + "amount": 22218521314, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEfjiHhpACWmVJKucroanH6YkNyDf", + "amount": 22194483000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadozNy1Zko2wCy2iEmnoQfAry8b7Z", + "amount": 22122900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkBD17CAUTEzBTpqkqw5w6L6adtof", + "amount": 22099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNQKDCZrvW4hRHDDUBU9gtppf3g8D", + "amount": 22088100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdzA54n3hGAzqe711y38Ri99iB94b", + "amount": 21927600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCDeGbybbkY8ZsoX83cBRkizz7kMs", + "amount": 21922330518, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1yNGvZ1CeaAgKUm1WPGPih2c4MKD", + "amount": 21874100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgexy2HJH6M4NYLRpaGTU5ru5DBk2T2", + "amount": 21760500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZBrAhYHD8AuxD3XCdsvsxwPAEWQo", + "amount": 21658000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvLfVCSCug1vvFXpP8zTBSNzpmQ1w", + "amount": 21276886097, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2oNKxr5RHotE7YmpgYCEuEvJzQ8a", + "amount": 21190500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicEfrwjPtwFtuC9nbdQm973L3drLM", + "amount": 21098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "amount": 21023770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYL7cwSw2uR6g3cTDffqCUsbUTG2GK", + "amount": 20997294776, + "lockTime": 0 + }, + { + "address": "NULSd6HgV59dCzw3FQD5L18DKK78WKMNYSJ3a", + "amount": 20978000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTp1Eq9S6TPwyvjQNPYTCiJZwc1uD", + "amount": 20898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVcgtFcPWFwrDUxY7wyW5R8EVfDLxP", + "amount": 20845100816, + "lockTime": 0 + }, + { + "address": "NULSd6HghpypAig6JCVb5AXsGvdz3tRYeDf48", + "amount": 20696349700, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMHsYFftP3AmQgaH8bbMa3weU9MTz", + "amount": 20690000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYyY1c6jwEqwy4Hkq3V5jwoc34PX9G", + "amount": 20559500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD8AWZykziZA4EFECNQZENb6UD2Dw", + "amount": 20541631000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTMX3kFjmNH7Qysqqakz5UQ8P2jhu", + "amount": 20509670000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWvrxDKppASV4J4D1tbLiQtyeDsra", + "amount": 20509200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzvYGy3EudmuFsnHon4QBbQ839PWF", + "amount": 20470000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZagJDFXJaJr6u9qZsxnaWGXAC5bJQ", + "amount": 20449000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKF4fAQP8THi3qYJPLSQe86NKG5MW", + "amount": 20399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzcVoCGcahfYs4yVn9SxTQ88iMk79", + "amount": 20387000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedEx6EK4j9rUPrEdmo1ddhh1Z6VnZ", + "amount": 20347033837, + "lockTime": 0 + }, + { + "address": "NULSd6HggXHXRp5VkE4ABTH4PuxX7NhuTK4bv", + "amount": 20297000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcr6Gj7T4XFTF6PDjDprhkAmh1afR", + "amount": 20295000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchHafFzuzsC9FyeQ851tUm7KDjLrq", + "amount": 20256200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGfJLaVozjyRMmSTuowDtZf1Jx8rz", + "amount": 20223000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF45SecHZir4pGbNWEVv3YYweuEwz", + "amount": 20192737678, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLaEFyxL9yhiTpg4aYWeChTohSHiX", + "amount": 20102587502, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7tYLw9jq44EHo4B3DWfFkgzKsKpw", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTvHHhWpPN41DjDa61XyuxFPPNWpG", + "amount": 20100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXcWzAELHcEs6pkhLvdmHGyiB94pF", + "amount": 20098500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj75gYHM5fcTTxknfCHqwVb34ofqrp", + "amount": 20096800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfU9HzFCM4SkfRocnuCbxrzupj7C2", + "amount": 20080000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUB1GG9BYPNLGPJXebZMfwE2xm6mtj", + "amount": 20069000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepM7GJyKFRSCTJVNYNemUqzsRXWhz", + "amount": 20058864588, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbbpsoi2JG31yzRm1LUzCdJF16JqZ4", + "amount": 20039700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghd2ppgve6wYcTJL1wbgRVeqBHLgE", + "amount": 20013767126, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJxY5hqQprNwhHyLmR1t5PE98rkVa", + "amount": 20011444000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEn7KockLQ9v1SpKRkrVUve9RE7eh", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZonDHH6yX4J2LpjEhCdwu8zDsnnr9", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPYA6vr45BeaWTZ92KotvPA5r7qDJ", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgamu9cVjYDMSyNg3EGJhTCv9xK1XLW", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGE9TR3xhALZRnS8ftYY59Rww8Nyw", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAT1DbcbZz2yhvLzUGD9cBQMMFQj", + "amount": 20000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1gwoT1Er6hTvJ3cxHKTE19gxAbPQ", + "amount": 19999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx6ftfktG4hDcyrtDmT3W9eKqNF78", + "amount": 19946031400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJx9uEZCfRkVfjapNRVxFKS6LV3JT", + "amount": 19909800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUZ7AmvdFhZE18MTTgsjCaaxxjLBu", + "amount": 19903940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhG5sQfs1JeDYcj5rMQJvtPsbfnzg", + "amount": 19879100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4sUryWHfWCE37BumtdUCMVwu7YY5", + "amount": 19870000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5455KGSwiz9JWo7dBmhHmzHnBttb", + "amount": 19855400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhYLv8buxmyXUX3HaFuctg4RZXFuF", + "amount": 19849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3s4ggg88yYCuZyWiPs27Bajh9bJm", + "amount": 19840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnshvhEqG53493SgyBJweZojWeBWk", + "amount": 19811218050, + "lockTime": 0 + }, + { + "address": "NULSd6HghCWD3YunX8VVoQWU48EyP4cWFhQYG", + "amount": 19800100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAhMZc5EhAD3kSCGWCW2LsPfZsZVP", + "amount": 19780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirTsHn3Ar1rXhKr616Gxootdsqyds", + "amount": 19779200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkHULNzDgfgphvxUf8dYRowfwCHR3", + "amount": 19778040999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDSHNUEigir9AzVqmXLdhovtKYkgx", + "amount": 19753222500, + "lockTime": 0 + }, + { + "address": "NULSd6HgijoqF7dLVyGxndw5PepZ2SbgAtqjK", + "amount": 19735198768, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "amount": 19710051725, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvUq7hXw1rQSDdK3BJML8L69hRb8y", + "amount": 19655460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZBx8M8rRp94NugkhVrAusgD5KH1b", + "amount": 19600400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeVLD8WE7ZGZzQL8inuAZagQSQGfU", + "amount": 19598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgbUtJzD7kbSFhwrXyPzGp8oknu6", + "amount": 19483000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchTRRoHqXCLfnuMzwzBaF8aQ8o5rk", + "amount": 19470200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvjUQkS2VANifS4T12NhntgJJzCF", + "amount": 19418000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaGm1LHwaTK42UHo66mrLEWbn18hx", + "amount": 19070800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboKSbDpHD2vp19GUujUTKuEGSP97P", + "amount": 19063899540, + "lockTime": 0 + }, + { + "address": "NULSd6HgbcTvmQFjwprtrojfUY3q8Y8oyEGGh", + "amount": 18900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmVFBjzDTkn73TrUAReNtitmCTwhZ", + "amount": 18844200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev5FRULsWSR4SfdDbqrt45vNcyepo", + "amount": 18800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUy3V4pAxHUYkPsima5CDUX4ZPdFPJ", + "amount": 18737886700, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN3yqkni6e7fBPjXe3KGkPHmEGFMn", + "amount": 18570420000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdU31J6EdwpkxohZnsh9pSoAKdUcpp", + "amount": 18380100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpsNVCe3e5RudRTC4n9WeUVarLWo6", + "amount": 17999040000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtCpCJCmWrzjrn7rLm36aVTcwzMXy", + "amount": 17998300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdppYu1NdNtNn5nxFe5XafCDf2xh2U", + "amount": 17945700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPQNq4XmfKUGpvFBU8x6bDnKmRz3U", + "amount": 17781200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd6TG5nrmD58J79Vq6ijee8aEiDK4", + "amount": 17659300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGUi5tmunuwCs8R8jP76XUU2XFWNT", + "amount": 17602940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipFcrUUNFwiqcYMxiUFdAW2AmjnvG", + "amount": 17579400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogkkxuwGG66q1dvG6JKP8rkTQNVY", + "amount": 17498400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCsLus6Se9srZtBtZuwMNpYtvJKFN", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4dN8weAYcS9LkomuRxxVzBgvxFyR", + "amount": 17475678000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQrKS44nJR7QRUnQxtLzgqwRmkiXn", + "amount": 17457984000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCh8Hd1h72HG8aDnuUtecXbV4YWK3", + "amount": 17374939230, + "lockTime": 0 + }, + { + "address": "NULSd6HgeCUPjozvx17H4pj9rQSvBHju1AKxP", + "amount": 17306763012, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJbv58ddzGrqkF5FgdrfZUaTFLBPZ", + "amount": 17112344000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekNSGZVaDqPutGoqZPsVYRakKcCPe", + "amount": 17090000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2vZh24iAu5KSxQuNmK9vVCm6Nb9K", + "amount": 17081500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWpEtgYGEFS53M4xjtU57JgDGqJtN", + "amount": 17069999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDiEEUjBAZ1eJwKBJjj3sM7tim8SU", + "amount": 16998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd72CmrybuWBBh8cCHjhcVkqEPzFy", + "amount": 16941000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRiJot3wHXiPL6EbY1zML4poc9P88", + "amount": 16781200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWpTEeNgzGhGGppEKcRr7dVdLhe9H", + "amount": 16718832900, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZHZR8otpaRHvNW7pfdvJjQqGRv5m", + "amount": 16436987700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8TopVBEJqdoWk1PJcQNHBMR6ae2X", + "amount": 16383538200, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTFihQiVZdCQzZQF6ruADvZs1Nuxr", + "amount": 16253600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7zj2HBZ4UG4FJAuS3yEiDrL1thHt", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "amount": 16000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeEu9Qc4QkH7GEKczJ1m3v9FiZ9P9o", + "amount": 15999900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6DfMP2kXtPLNGpZefiinWpx1ziZt", + "amount": 15983699999, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH2YbKDzvaGDPvDDzHBfcG3srgNu8", + "amount": 15784520000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk8txAEQKYnKxGABumQa11zgy9Qxd", + "amount": 15783200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeynRW7HuW159h4o8P7oU19FE96s6c", + "amount": 15687100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffiVX8VPfB9WvhXeCmAueaK5rtngf", + "amount": 15646596372, + "lockTime": 0 + }, + { + "address": "NULSd6HghpzKgrwrMANE2sUBdyqvcpF2av7D2", + "amount": 15614274000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapeuRVp1QHURjMP3GRuyKDLGJydsN", + "amount": 15589000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4wCeYFbAumKawq5BvW1yLHueU4SY", + "amount": 15530000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8NzFpTVX2vqFhycsjB3MShxwUdV4", + "amount": 15500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsdPjfj3TwMtLCiFQujprMRbwKHnE", + "amount": 15440000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegAC3i7XJNSKBU9HJHs3Wo6XvCQvk", + "amount": 15299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQg8Fsf72yEk53vM4H36Y6x5ugjiC", + "amount": 15280000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYPYejmxMUkw6Q2eJwdFidHawLepB", + "amount": 15099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWC7XK7TbHVghjFCRKrEEDs7hWwQS", + "amount": 15095690000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgUpcLD7VFDEJLu91w6gYaorWZSik", + "amount": 15075000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTpu3U49fJRneAieYW7X4q7pFG8Xa", + "amount": 15070000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPRbXrXHMegWoPp2t33B3RTC9E1Ra", + "amount": 15043040600, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3p6M5hfLmnKwCT8kQQmLYpyWToii", + "amount": 15036965552, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdqNR8ysBauL2Fb34F3EHWhfZ9z1K", + "amount": 15000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL5SfUkn5P2takLE52waggjtXRr7c", + "amount": 14999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYr4w1sq57Wjgr6xsGFUfHea62QR6", + "amount": 14998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT8kX9WMauoiEHe1pxsAsAhUvhjFo", + "amount": 14881000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFUZRe71rRBRuzdoG7rQtc4P5LAuu", + "amount": 14815000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8qqfS6u5Wq5msQQ9KHUUSAaCgjYM", + "amount": 14698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJAXhtNWfz2uvpNwet8mCBiebsx2q", + "amount": 14574000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4npLfP3fnY3Q12wpuFZ8csgLTjMs", + "amount": 14545300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUSy6Atkjd1agYWbYVMm2sMLvTaFR", + "amount": 14445300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo3itwYfXNrGnNDRkArQRxsbZCy4d", + "amount": 14416766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgitNrmUGdrPZLmbQQig68jwKpbvAnf", + "amount": 14373548062, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxNpHkrvvfsL7Bn9HM8bNwQowsNRh", + "amount": 14268090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5jmmHa56QyX52J74GensgPzW8k6t", + "amount": 14160899566, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWophnD9V1tyKNgKhdahq9oCohnUi", + "amount": 14100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNZeeMgUMEwNxxXqccAejEWnQwZmJ", + "amount": 14000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSNz6tPxwWEHir6aVm1NvSHGJQ6kU", + "amount": 13999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaBtRV2oXTCtCrZB8z3SqSQeBSAAC", + "amount": 13898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayadddrTx1e2SvNmo4yXAkAiDCaVt", + "amount": 13884699999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgijn6HkdzNAYjGEBk9GZLcVEmcYDY2", + "amount": 13858820278, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVpVwqTLuvNuSoqCZEd1rPFZ2CcwN", + "amount": 13758000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6EUs3LsKPgcvKHgK6Mde2uiCEGpJ", + "amount": 13692000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgechj8yg6qcnDEs8TwC3kAFK8PZeZU", + "amount": 13667204136, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1YdWSFso5ce5UpYVHPr6FTkCBGPm", + "amount": 13600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgE3UtKwC4rjSKWTcBio75G54QSB3", + "amount": 13597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeH1nfENKVPc5pCw8wqpnsrUDQsfhQ", + "amount": 13517041027, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU4WrdsAehBrnLRiG6dGtvf1Ahgr9", + "amount": 13464000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjL3GfmfMuUtHui4MtDPdn3ACkpce1", + "amount": 13433938024, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5vb6Th853bZBn5RPhKW3YYQSRn63", + "amount": 13426650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHK864Zt3cj9aLFrvTDoauFA89YGz", + "amount": 13380701400, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJvW2zPBJuQEm3XrCa2pUH9dx1yn", + "amount": 13378150321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJkGtVva2aLUgfgyA8RMsW8JHtkXv", + "amount": 13304681000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeF8un5myuiyMrb2QCEqvbuGCFg89h", + "amount": 13231106000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftntsmWiaBkUCrfA3tWmPEfMqV4Ju", + "amount": 13199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdV5j62vLtmVMB4Jar326GgzE53KZY", + "amount": 13195950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBmKheyfFpxWi5joTfUpKFXWoFCz7", + "amount": 13147200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctRSMDHmXiBBkpvPwHF3zQw6ALek1", + "amount": 13098000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7C7fmSGPDzP38PdApMGAj3zPvVAj", + "amount": 13073920200, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz7XkcaBMGwdZNfijW7WzGdAsuRmB", + "amount": 13000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdZkSaCi7DuHjZhL8ofjHVpvPS5GQ", + "amount": 12966859999, + "lockTime": 0 + }, + { + "address": "NULSd6HgZotzCGYopeFpdE4Zyx4D6VVVsqufp", + "amount": 12950258399, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "amount": 12825869423, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3K8ppKsz4RnWkbGXaSkbPduKwjNn", + "amount": 12818200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrbJxgkJ2K7zxrim7wqjgKhtbdamB", + "amount": 12815729681, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdNWVHdNrsiHMtzjZsuwihqBNrkQr", + "amount": 12804488800, + "lockTime": 0 + }, + { + "address": "NULSd6HgYypsoGEPyJSThzAZkG7koau5C7tzb", + "amount": 12746568000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnW8tBxnYBBbC5Vd9zxhL3aLBD9jr", + "amount": 12700000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "amount": 12588000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHixVAAiyEL1DyEGSgESUXnF5VL8r", + "amount": 12540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvAFC6aqU3E8ECBNjChLrMMLFB5FD", + "amount": 12500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9KWvaoabyK2NCEKSks3H5PnvfrrQ", + "amount": 12399100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisvQrX2RiggaLKNfrQK89cB1Rj84N", + "amount": 12390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXvAJRM7f8d576QsfGJ7hoHHhve3rN", + "amount": 12277600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiD4PZ3MzqDVRi7nthrgDkD1KCF1qm", + "amount": 12267600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQaAXXsNHneWzygjUmMEQNgVaj9qg", + "amount": 12258770000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPhaDTGdGDCXAdgSoXaQfdriLXkkF", + "amount": 12187500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2ujVYTJZafnQrR5Ntk8wVvkbYXQZ", + "amount": 12186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdPnDko8Waq1TcoRimTQKmajEGbrZ", + "amount": 12182253278, + "lockTime": 0 + }, + { + "address": "NULSd6Hggago9qXaVhgcPeXW7csiAdMjTEa4Z", + "amount": 12156100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1LMryzE2sDEWBJSqrrFVEy53Z4yY", + "amount": 12118929786, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG4CrSW1K5ma64riAtWxzJg4RMT5C", + "amount": 12055793000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMWUVPcrehendj2FqHGYPabtuh1JF", + "amount": 12047600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRdYn92KvPmJ3NJ2kphjfsRey7uLG", + "amount": 12019521136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfE9V3VBMehJo4r8b7KPhKPNpfQetf", + "amount": 12006700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDqtdiNPrNLAidMkfVo42rKRyWhW1", + "amount": 11970000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3Lz7XQc6kD4o3mNCn9n6BD6HgatZ", + "amount": 11887800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepykLBjs57zycz3n8Rjg4NLQ3WbCR", + "amount": 11839000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7u7egNpWMFGWtFjKzH9xs5QpMZw", + "amount": 11804492730, + "lockTime": 0 + }, + { + "address": "NULSd6HgekTVoAPidUqsxmS33h7Z5VoPvNhH3", + "amount": 11720000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeE42MMWnBGLfwpeEvjnAtxqmufjFH", + "amount": 11675600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikYJQeMdmKKZBzEXHjekSrdtrQViF", + "amount": 11490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ21WgNjrwDEW3EHoDHjuRpqCweX7e", + "amount": 11422404709, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTrBBSPFfqqSHoCJ9EHEjsMbqbSw3", + "amount": 11414300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVgPQ6anjujJ7zEVsydJNqUmJHz4w", + "amount": 11299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPTX4GwgXH4KK3SuUYoiUJ8X5VsVy", + "amount": 11231521140, + "lockTime": 0 + }, + { + "address": "NULSd6HgajHWciDcUJyMsEf8uKFfj8ZLgxGs6", + "amount": 11223125100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA2XMg4fF1Fau5wVT5yAQ3fGeqGMV", + "amount": 11207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxpnj7qiFg63iDYziTBgBCB7USGUG", + "amount": 11199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVgcSNnMqcxEPfiRCz4PkfjLMsimi", + "amount": 11195500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghzV2WHXv1cW5fT1N5hxsifaahTKYv", + "amount": 10999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "amount": 10997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7GU9T2YUerTHCQ1jnqQ15xZYDBNR", + "amount": 10988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpFWA4pkT87NHV7AfRYHVbtqzNGYP", + "amount": 10987000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghNLPapezb8WmWE8MssrLk2WhYjvzr", + "amount": 10975527776, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTjJGjWgF53uj2kuTmivzwAcpntCU", + "amount": 10958800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVx5kF9rJyZpJsbcfXsbPxTjJgLLJ9", + "amount": 10950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPGAxxe5RGsjZw6bTg5nmBAHfjGwH", + "amount": 10929400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAxVyBx57zk5ZDQ6XxzbgvggqDQFo", + "amount": 10911299487, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcno5Gs5djYBRvSXxmxsfn13PpbSGj", + "amount": 10898800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDB3CwkdaT3S7RQkfTXgHRpYefa6x", + "amount": 10887100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfERhRr4xwRNULdP1BNXsnDuBSVqdj", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJvMPZoyhRe5PCwf8Hd4H7TC82iu4", + "amount": 10800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmLfS8NY3gYAdxout1zgAxF2NYyk6", + "amount": 10788200000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvyHUXY4z9ye9zha5SUtVGFhai2XT", + "amount": 10740140300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVULY5oGm49zMQwz72BYq1BQwmhCW2", + "amount": 10724095712, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrX8Qo4tMNpvPvxPz3e8iZGdfcwDG", + "amount": 10659000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKodFtZ1B4cqLEPDgRPU2iWujf2N7", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJzmAhaHByU25WpL9c6iu42aByqyd", + "amount": 10589300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgawpm8KfFTz1wp9JBnfbWHhwZRJ87Z", + "amount": 10588400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ6z1QdG8JBmfgmLPTem6BJ6JYpGm", + "amount": 10567591900, + "lockTime": 0 + }, + { + "address": "NULSd6HgUagXdr2vd7bSnMi2bruLVF9VXjKje", + "amount": 10499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVacnbqnQfF4EomXshPUjTvDqYXbdP", + "amount": 10498653350, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMdXwUFFHLEBhkpm59g53uEFNuDtJ", + "amount": 10469338925, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwjJbWEbadW4TAEWA6RUdjzUt5bcE", + "amount": 10459400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6Pdc815x3vMaouunAY89q4qau2vp", + "amount": 10457675800, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtB4UTfevRkt7iiC6CiLWGmGNP2hj", + "amount": 10454530000, + "lockTime": 0 + }, + { + "address": "NULSd6HggZbp2r2ZSYKTnhqwHmdfgJjKa3v7G", + "amount": 10399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGHPPz99svpi5DhZZhmay8YBRWugd", + "amount": 10393000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAkR6L35iptPjCVWmAt2XCLHuqdxR", + "amount": 10382594000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaswgmGfCE15sYEvjXu1JjaSCNXfHi", + "amount": 10369000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPFUYqf5AnL82JYyWQm5sf9shHhG", + "amount": 10340000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgccjNmZiTaEkeJ69Ta7RWaaa4SiUkR", + "amount": 10318602800, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcPqBCeTfgPgJ6Djv5V9CinGumwKW", + "amount": 10272100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVnaRrMSDnnbZt8gk746rqP8JBd3Va", + "amount": 10213000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFdqUUtSUGQ9xM55GTEsn9oFPKmxP", + "amount": 10199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7ChJ6KqgbzTsZdWgWPATaDaT1DXr", + "amount": 10189000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxgDh7mqxk4q3fD7afNM9gbccHHZw", + "amount": 10188800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "amount": 10166320000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafUfPLmmGoe2badZ4Lg5yDPFXc98A", + "amount": 10157754500, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhNZb7raWJtQoRzSkZ57Pgn5NBuhy", + "amount": 10131836000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYjKZvWHr3J5fCM9GSAC9jFvRiHsq", + "amount": 10100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbsNusXywzEE9tFhXy9h2UtFJSvEm", + "amount": 10099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNRBFumV5LsoEzprU2jxHeLLpu6Kz", + "amount": 10098699625, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5sL5UuA7N475f9DV75VX5c5qLoeW", + "amount": 10091000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUDvByJP6meQGhrbdJE8eitYeNP9e", + "amount": 10090100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffbuzmdK4mrw6fKkj3nWHXHAMq1p6", + "amount": 10088900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw2znRjbhrBxMC7Xy49xtGqnRPkks", + "amount": 10086900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgieBFtDdtTRkeD8biLfbLjrLKdV98C", + "amount": 10076174566, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyroDMozioiRpYRZ6DTD6JA7zvpxg", + "amount": 10068058100, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKj4d7wmsH6JvtcmCCr9Get55Lmrq", + "amount": 10058000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbPmy74L6aKZnLZrR8YD9KvouS4im", + "amount": 10049600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLRwbGNmsij9zdgXGfYzVvk27BFmG", + "amount": 10047920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCPwSaVsncanYStnbfpdiHdcdWnid", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWRxbMkewD2e8P5CkwimRPRiumkg", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRPVgRwgKM5zc6zEYEntdsuLt1sBz", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtMqxWVaSnYTMVRfDsqDm6BxbmAa", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbDYdC8UBdvquNNDHCsjKcKP6ix3b", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVATHMxq8z4uSF9xpC71A4nJad5Kj8", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgefVbyhuMhC7rYgDVvD2SmjDPNiGje", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghu3YEmzx2vuMiENLL2J19zbQCrvJB", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGtjSdofkFL7DrcJobccTKzKbSEhm", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHXf3rP31umYUBBZa6d5wM5dwW863", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyjaQMG3bHWZkKxofSgV9MYmFZcx9", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBcoYTcQedfD5rbLGi3ZVjsmhTcWF", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgikiZk3PQCScnCH7bU3vgVbzgYvsx5", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicFsssDhiWnRH49jrEonVxLU8sCuV", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc9wMHZPF6oUBg7JUdggBRAe8bpt6", + "amount": 10000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghcv27dyKkfC9VSdBTGoVndtqVtyH", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1YnoddBpV9haidPcMqYbrW3HpGEh", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcSaKJZLXCHzRWfdL4bwt3G7HSJCA", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVMd9kZ4SBf7HJ1YisgwvyfA1h3bR", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaZ5xZGWPvqhLn2Ef8AvPW8BJ9AEVK", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecF5CBG5jomKT7JCph6REVHakSR5P", + "amount": 9999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhwtH9VCTTgHmoeLsLJyfTMKmKp2L", + "amount": 9998790375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWQFuR4WUTfxasa6J4vTKxfT7auXy", + "amount": 9990834200, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9Jtgq4suBVAd5mjaSPPipzHzMnfx", + "amount": 9989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakUKa7u68KD1wpLxb7PWSiCERi2hY", + "amount": 9988000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "amount": 9976600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRccWadXVeMFqRJWGju2Ukjn3zXNs", + "amount": 9954300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQJ3Syb2WrZzWa8We1aSsS8mKD2rs", + "amount": 9919900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbARQAUTvhsFdcAizAsN1g7C5iXf6o", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHTwQhXea8uK28GDLAHR4cuKJHZ74", + "amount": 9900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW2Q3Mn2PastqnzV6ewABT31z6GA4", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGnRtUeHxXHM7Gz24if7r7ix7wtkN", + "amount": 9890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUALgz76iycdUwkv5rew3RSzQ3t6Pe", + "amount": 9882089798, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvevndbhGCT3oyFkckn9bWMRpUvib", + "amount": 9825315093, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEBmha8HbgrE8Hcoh8fNo8BBtnQnT", + "amount": 9799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDd2GPpxYCFX25UPgo3wv1UbyihBH", + "amount": 9796583105, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUp19T76qbP5DitXMMP7pb5m6Rr98", + "amount": 9769964669, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhQTt1HRJFtTk4RXaQcjdsNkHaNJX", + "amount": 9769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP5tJGfXHe6x6Bfrds3qTzMLndryQ", + "amount": 9700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbMTvQ6RT7N9aBs4NLMxBP8E3XxM1", + "amount": 9628000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqsaFraViKL1wUawwdardnFmSMjMX", + "amount": 9600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc6z94nTnb9tbpU1XcAUeJ5QumP8f", + "amount": 9589185669, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsK1WQxXSL34ZSCtmXvnpE2QZ2TH9", + "amount": 9549440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYu9HXpYVZKyGJQTP9apMUvBnV1KyU", + "amount": 9069093000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2McwGAFodzHRLLJqGiNakhPDdyHp", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcRYc4bcpNPRRpHtpuL7sy4SZYpah", + "amount": 9000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEhD6K8vU3h97Me8cputtYzWK2hWc", + "amount": 8996073325, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtuQ1P5qnfeuWqTyDJKsGNVwdY4uZ", + "amount": 8992200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisD3jGnypAEuHY2QzpzxUXKiRw9RV", + "amount": 8989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAMDQqjLGJtwC4gA1uyGz27Wvt6Qk", + "amount": 8980569965, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBRPz7x4hDpee544Dn2DMGsJ2ynCR", + "amount": 8880000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZS3YNHmBHjvXQpcLg4exUyGS6PED", + "amount": 8800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkBtzGoUTR8ydsjLZ5xC1KBou3VpB", + "amount": 8681200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6ukmnRJzhG7M4zZxQaYyBMvoYUpo", + "amount": 8588300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgix72Ao6xU9LS25riLUjXjSrEdzjnB", + "amount": 8523917503, + "lockTime": 0 + }, + { + "address": "NULSd6HghmpYfVDjS9mdcK3Kh6hLpLC9TCMj2", + "amount": 8459300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAkPjyezbVEV5zSjR63NtkKyZiQNB", + "amount": 8450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDdbqyc1PRSCWVcuPhp5a27wD4P7S", + "amount": 8419755589, + "lockTime": 0 + }, + { + "address": "NULSd6HgebjJKX9VymMMVA4Lu6Gk85RMDngmu", + "amount": 8407923000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVGyaPTeuoCpRPxPbAgcvKtBYio45", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyfm5TJzaJWRp6f8W3i8u9HqhBsN7", + "amount": 8400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghZXhja5JLC3pxnUQk6vhgLGGeY2mM", + "amount": 8388500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVquPC7DyPVzmnEW28Zo9AEa9VJvDy", + "amount": 8353569832, + "lockTime": 0 + }, + { + "address": "NULSd6HgemDMqNTwpRkHFZaLDqaLbmcqXMQnd", + "amount": 8346200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAYjhrkibxLuUWGuHAM6nNJVCNtWD", + "amount": 8292062999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTbDXEMkjQAAd9YwCxcTNuEkMZ4JZ", + "amount": 8280070700, + "lockTime": 0 + }, + { + "address": "NULSd6Hghn76xLJpSg1pC3xAkSR8d8PXzt6Pe", + "amount": 8157225337, + "lockTime": 0 + }, + { + "address": "NULSd6HggeFYPsjFykAFHJMxbhm5UCWXgt6Qk", + "amount": 8146893864, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmNB2TJnnhff52zJoykmnN8NeZx9", + "amount": 8126787800, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFj8X2HmnB1fKA2YVrzSz7reet6Qk", + "amount": 8054930643, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBiWVJmSaQisY4iJniJPzfz2zRp1B", + "amount": 8000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMx6E57ExsRoouDSjrj1E5WCLeE42", + "amount": 7987800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarbHKPRfNxAFrpULBRi3aZDvzfnun", + "amount": 7812882000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyiBUM7uQpqHEbFiYswrcnT1S1ooW", + "amount": 7800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCXDt1RvUAYCr4Nb1aACNhSw6T7UC", + "amount": 7755644700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1sDBoCzrZUA7qtDay42bMNmsU4NE", + "amount": 7725500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVF5Sb54Y5GuY2bbVx1SpEvsQGwM7w", + "amount": 7700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSZViD2im6VaAihoJhzdxiiw5x7J7", + "amount": 7670080275, + "lockTime": 0 + }, + { + "address": "NULSd6HgaETJu6GCRzB8JLTNPVYgknxPx8qEn", + "amount": 7578800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ABZjHYbRZkNdUSx81GwToKeH2vB", + "amount": 7542315000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaR3k6ToK5RioLJSgMEbmZZq2gr9z1", + "amount": 7534799999, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4y7d8tjUy1F9Fwh9pZCg5eLUAoCP", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqwCEqYNafvdWbmJXmQaYdoJ2VS9Y", + "amount": 7500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyC4ZKPctKBwcoQLaWcWdNxsgvqTB", + "amount": 7459896000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg189h4Q1xn5RWciF35Am6CiENzT4Z", + "amount": 7440887640, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbdXKy5keUK8JRvbJujpSQVjqqUoW", + "amount": 7391600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXG2sAzvVx6drLnXASSxtTJeUzwQeq", + "amount": 7382500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggsVgsZxJ48eJKxvgbRCSoeqtKvExe", + "amount": 7350000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWB9gfUEx5X4PTCwD6s2TEGW4jNdG", + "amount": 7332570100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQuM1j5gwr5xC3xRdskeq3sJ4ozdv", + "amount": 7232500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzjKVR1HynPwfzU51HjgnxR2fY9SV", + "amount": 7224441246, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVJNfJmUzER7SyDKUHaj3a9VqRWnu", + "amount": 7184700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4Qp4N5AxqGxbNcMujP2GAR9bud9W", + "amount": 7067073816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZJBGMobsqJqgAeS3FRN7g8GrF3iJZ", + "amount": 7000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5R4Dm7g14n1VmDQEUZE3V5Q9xUBk", + "amount": 6979000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebpQyo4YVExaAQYhNMDEA7kvuwqQY", + "amount": 6880500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamD4S4AHdvqAMw4hyD7GZ41SDM6Hd", + "amount": 6842707290, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge2fUhj84hdwn5AzqSgFfpGsrQy2U", + "amount": 6799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuyiN3JMTqmmDnLHqxdBVVes713wn", + "amount": 6732000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6E4SuZqKcMa1FGJQHbD4RmPkMwwM", + "amount": 6679070393, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8gDdFC3AeH4uvvsXqscYM5NtcWnU", + "amount": 6650286683, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNqZhazF74xnEv4oEXZLZAAteF6Pw", + "amount": 6557294931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiau8SwSoQ4kUWwH9b3RaYXvvu2CYv", + "amount": 6536849903, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaHQwRadfbxn2CFsGppG6ysyqML6m", + "amount": 6535640000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8kfhTEufYHWz5tQAYEE6oqaWCXU", + "amount": 6506096000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcLG3iHZb8rqpX5a18oJY5bi3nZLT", + "amount": 6492500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9LP3XhuSpFxytu7qwP9XVkgLVXbQ", + "amount": 6489950000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbjSTDn4DGgXSDNWSwoDf4KABjviJ", + "amount": 6298900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8ZUCNASY2bUvhRyyjxa1ou8ukAVT", + "amount": 6274400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSMm1NV9K74v11Vyr7qziL4zJ2TV2", + "amount": 6229600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUzJUwQUcb3sqbADHVjjrixAbFgg1", + "amount": 6183279100, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVVf4xXFW3kuqfPBcZCKbNZpAGmPe", + "amount": 6174500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcB2F3xJDf7bnZGYz66ZsFuTuXxKNX", + "amount": 6044740883, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSpgRZ4KDBtoXALmN4nkTNGYmhxCq", + "amount": 6000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSYtQMiXZ6qMATchVt9gBCLkBztnv", + "amount": 5999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFhyfoM5rmPMecLRukNKdKM16qpSz", + "amount": 5998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvwwGoJaqE786YBc862zoxU2Ckdif", + "amount": 5993000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9MJzysMAFfew2aUtQvPLXx6oEGi", + "amount": 5923000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUud8BnnNP4zkGM7g3XDQmU9nHbDAr", + "amount": 5904944000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbnSPnWs7kUiwFLZR4Jm9TSTVdBnrR", + "amount": 5893100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5f3cfKW96SNQf4GYw1WrGrUKN4kp", + "amount": 5863130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaB5TQEwtYiye5TWv9FgdPAcQgDM2m", + "amount": 5857830000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8S97UZHXuKDNq6KhFDCvJxhVxP11", + "amount": 5844910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGsKaGz9Yp3FvaGjzmVVPpbYCoAyU", + "amount": 5841000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNgBfDkS5eZ4zuGVXLSkNoEdgEqLt", + "amount": 5823987520, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhpC8yRd4cGYAf4kKx1iidw21oaaN", + "amount": 5793200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiMK9YsbSxLR3UWax2i9SbtiMp27S", + "amount": 5792661600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEPBjyJvu7bbhCqqCyDXTndX6aEQ", + "amount": 5769000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibeeWgeB3ExtD7A6j2ZVNxLfa4NjG", + "amount": 5752000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBd5VKDnwrTXfUBs9vivTjiQNETj", + "amount": 5695000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapyhHGpg8ctT9ga9iz1Hx9MFpZAhU", + "amount": 5693666875, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLeZsctuGajSAhm4qRAmoqYZWebwf", + "amount": 5693300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJiX9EirVeYByp1GdGM9aiePjGDN", + "amount": 5670000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5kDJB6BvSc7F5MTw2ThxTgfr6xos", + "amount": 5617900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQ9FNyeESoQTQ6WPVhruK2qdJbA7o", + "amount": 5504000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfSw6494tLyF9QS31Y53hQTYPiwhi", + "amount": 5500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPcCo1VCZ91vx2zunCWrYZjA8YXev", + "amount": 5498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSme391M8HHenN5qJhhGeWPt6tzLn", + "amount": 5493500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyPCaeHVKDnEKrAx78VMrZ3SPZ4hB", + "amount": 5445100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnvPVSGTruVLgj9UZCKiqznep2EAZ", + "amount": 5402055200, + "lockTime": 0 + }, + { + "address": "NULSd6HggRMK3Kvox21CkpBpsabqPVwmzksQQ", + "amount": 5389000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSA354VsLE7eKoMEQYKEaLobgNKYE", + "amount": 5354500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCfm5x3gbCMBH22nAkbGcdY9FSEGE", + "amount": 5314881000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahSoJVnAi63nm3b5VHcsdXARbpaXb", + "amount": 5305118140, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZKg5n933C57XdqctZ5A2371dj8eR", + "amount": 5261361095, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYbbe9sXpzDNtH3tnpiLSpzBxNCj2", + "amount": 5200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimVHXa7iZ7ENSQhPaDQrFN3pGAz8L", + "amount": 5193800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdiB8UAAF1q2kpzphm7ycPswj39MD", + "amount": 5184800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUam1su5xFewHHttFdiFAF3toA7QCJ", + "amount": 5129000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYCD3hvYSLTEpQLg4zUB3WcZbfDc2", + "amount": 5127954000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBqGFx1QXZYh8M4Li4oW4Mzs3RMfN", + "amount": 5114700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUx7qvqXqnohRihDFCLKapac3ocno", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZAmgg2wU3LT8SbVCPWkw4KpNGLMG", + "amount": 5100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTrt9sHaHioU6jzgFw6fQNmmasvrE", + "amount": 5098634900, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbD8qnzGLeWKy4ZSzHDUTzRm9Wfpu", + "amount": 5051398560, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCyLDwYyrtaYn4WjSM6wruqdMoRF", + "amount": 5030000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC7UwNn9QqNCjh9k8ZbXJg3EbNYoB", + "amount": 5024759000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxQeqRHufKYKMd7wc2fZoQMdrwgjY", + "amount": 5023705100, + "lockTime": 0 + }, + { + "address": "NULSd6HggwBnBxyn5y3HSdQgujxhkyo3WnQMF", + "amount": 5022200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvQyBExoPqVFC7vYLNVYJGt1ZjA7", + "amount": 5004340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDqsG29FsdQvCkT2LyektA9n9Frz", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpwrZuCoWENvnGzu1MsaHGjAY3Pxt", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuCNPVGXxg77Q3Gshjd7MJZsUZwHN", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnCVJr19GXCWn2aSfhjNoSkjqL7Kc", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMG8jeZvryRk1sR3rMvG1YR52gcqQ", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ZdZZwm9oAmN4wo3NTu8fKuQewgU", + "amount": 5000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4NsF6hdubKSEaTnM9gdXbhdvb7Kp", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGxF6KKBJjxSczjQzperi1dL2sULe", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUmCXvixttaTZpVnfYbRq5A8J8rz1c", + "amount": 4999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRGgLV9Ycib8LW9dqtfvXoJ5XC7Zz", + "amount": 4994600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgic77jidZ7kHcGL9S2V6n6aRsnSYUL", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuagjjqk44hmBA9o43sZ7uaC9CpEB", + "amount": 4994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX695SjM55ELKTaTq2hGdR6bpC6nV", + "amount": 4975001000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnx3izE2U5KXS9oGrHf17FK9yGaLJ", + "amount": 4950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV42TJ9725RgrDkG8jRYSGNZKuLfbL", + "amount": 4944951000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFLqApq59VU7QFWqocY6c8oZmF4UB", + "amount": 4944722100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN4hfgTccqLrWjwQTe7ZGadHr6SCu", + "amount": 4898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFvWQUhyK6y9NyUSpd6WA486mNor3", + "amount": 4858098201, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUGYav2zd2LNPCm987gXNkv7KqJ8w", + "amount": 4835000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuJBnNhrLnf4riYXj7CuNVHL1nGzJ", + "amount": 4813550181, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXJho1QeBveAPw5U3UxggZzUt97dv", + "amount": 4799400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "amount": 4750102081, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKUc3nNEM4GT53HtzgBC13GmLPnDQ", + "amount": 4655000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzgVezFxAuJz1yvDnj4Lk9ucaF1S", + "amount": 4508590000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghor93W5DL5WbFNLC1QE41wfNYqwhn", + "amount": 4500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKS2iJThBcAHsYexLuWZ1AnPu62RM", + "amount": 4494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbYKaM6Pa3HXc8ZbUypMdV4tsMCeD", + "amount": 4475300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNqwAr72D8E6Zsb5kL8B2zRCj5VX1", + "amount": 4457277000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggz4MbKABBvHLXAF3WCb9w5iRMGBtG", + "amount": 4455814869, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQ3fhZpWuyyAQBWZLmZfqaQmn4Jnk", + "amount": 4398000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg28hqQ6rUkt663yW1DJtrx7G8urSt", + "amount": 4294700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjG7FcCPvsrVFqtHXXFfn4BqDzV6Pb", + "amount": 4238000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNnCkvo9ENwyjQCKZRbhGG5Aj8pB7", + "amount": 4194800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmDqMtUUGcDgwtaDrLHUiMTJK5jit", + "amount": 4177036013, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1xGZJVVYmqCDc4qsqF2iELWnNPUR", + "amount": 4100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeVrWc9dUKb1ApqTZqtjDgMf8jYZB", + "amount": 4063118687, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrNn77rsuZqJ5jXU4WTiAgCQNMfLk", + "amount": 4014247000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uas7iDrwWx4Dj8KRCSNrVDRMscZ", + "amount": 4010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8SMPDFKZ2NRj5n3ou7uFJnxjPZ4i", + "amount": 4000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAJisCnGMroDFTKpWWR3xe9TPd5K6", + "amount": 3999100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgimEWWXGVa396Hmb2Y7fryse8kdtQj", + "amount": 3998780750, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZJ1uD7DJovE2T4c6VwMtWxPjVQYT", + "amount": 3994000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXacfSgCseYumY1cHeRx68oXLgHmeV", + "amount": 3993200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5LF5iHWX587EBY34F4pi2g5Rv34t", + "amount": 3899718575, + "lockTime": 0 + }, + { + "address": "NULSd6HgW97r4dHBkpfPt7TLJLAoiyvYXLgt8", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoYzuGNen4Gq7T7XZQfYncVa8Sbbr", + "amount": 3898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQsCru8cMJpKKxV9UoPtT1M8mprkZ", + "amount": 3886000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtxYyEuaro31kn2BB54rzr8BKLM1u", + "amount": 3880000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeq8j1KhhMWU3CkFdWFqcdeunh6XX1", + "amount": 3799000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp2FttU2NmkKoT9fBFBU9aWHSvJ2u", + "amount": 3776900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHsm4a8ywwsVCBuRt3Ni1tTM5reaM", + "amount": 3750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdqhPhzBaDZU2KLz9S7aWPuiFTEoK", + "amount": 3601350000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5m3ZMpwAf6g3GdoW5UpLYE5t22vb", + "amount": 3596300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhWXPGH95SDEb6Fpcat8hb8uk3vcK", + "amount": 3578798656, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnF4GKZWXmE9rAWCu2E9K9JbYbQdY", + "amount": 3564038000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeii8dFwqYiAiXYvAj6yJExqco1Rz1", + "amount": 3528200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZP2Mt2Q6UNgxm2KLAhdQMw1TfsupX", + "amount": 3497804834, + "lockTime": 0 + }, + { + "address": "NULSd6HganZAL2Bye4VzvjyzmiLgq9sw6Cwty", + "amount": 3488228657, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5T8Q1xWKEQC9NBHdkucuhNC4KpHL", + "amount": 3394800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbh37jRkwcMJ1WTMjBiEt2pGCFxfP9", + "amount": 3387304999, + "lockTime": 0 + }, + { + "address": "NULSd6HgY5TX1sk2X7q6XNeHZnec8F5WVseCQ", + "amount": 3345900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5Gna498uoBN3knTiNuoxaE6rH4tX", + "amount": 3331000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGhhmXHZuoEjyPYCxbUEbEPDcviZQ", + "amount": 3299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWksrgFVmhTBZgSt99hm7L2NGBg6xg", + "amount": 3296200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiZPX3SduZi972SJ1UcqG38VWotQA", + "amount": 3295700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY428bcEvJwwQdtYu57un9VS8yg7g2", + "amount": 3274970000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHtMQ5kyr6VEuUWa7XYa8MiWJ1UtQ", + "amount": 3269170000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9qxCPYQu6hVadgkAtic87n1iCqWz", + "amount": 3262079400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbYQGduNu2V7qVfciqnQ5eaPJr8xs", + "amount": 3254660000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz7bh5iMffqGEDYvFugMWCSowtQrC", + "amount": 3249140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLPwkJ8xnEPedCXAjs29gtQLtqbYV", + "amount": 3218320000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "amount": 3192291145, + "lockTime": 0 + }, + { + "address": "NULSd6HggLUng4mKz9gDPmUp94yAyPqFdfex1", + "amount": 3191670000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabbv2W6WoswpBsyuugahL3PKgK3MP", + "amount": 3173000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhooujw6b5V7g6r1hZHZa61EXhJ2C", + "amount": 3111740000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTWV2e1q5eyso6VPqVLyzYM1etvPP", + "amount": 3087440000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddaYMXAo5gkgwAL9dqYqD9MGPY3Kr", + "amount": 3062583425, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzagyU6uanaqcdNBESHYiUJERGv4n", + "amount": 3051500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTZ7mRwiWkJdsPRae2TnLyosgFaXU", + "amount": 3012657406, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzMFn3wBWyeYJNgxPWc3fvXxFrpat", + "amount": 3005080000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgezke2vii29Fs6esN6gD5YdmijjVt7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgamFidvqiqcA4hvBE3jxhYuLtmyCJs", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK8WVdmRXpqhXpjwrhxB2KbuiBttm", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRx88KMC4VCbqKJG1QxxbcrRWhVNt", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2BbAfGWXsQBPWMAWarzejKmaG9Q8", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip5M1uzVnAwi8ep7G1GAT4RiQVnR7", + "amount": 3000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQjGHTz2251p4MfiSc7xc7J55EbUb", + "amount": 2999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcVzR5eLzWN4F6bkZaByzHyuQny69W", + "amount": 2988840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuPBxaSJTdud4RU5xJq5ZaSrWFRdc", + "amount": 2936800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiK1EoVc6EVNAFkDUMUjs9PyEPvLQ", + "amount": 2910820000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2eLcNbjGPbjbKuJ4qR5tSUjPQ7QJ", + "amount": 2901460000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXT1kxLvQfRG8FuAA3YrT2G1TynTy", + "amount": 2900750000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoZ1Fis1pQUTCx1iF6NioZNTdsL2M", + "amount": 2899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjxHPxUc1GwEsRxbneG8cVtAyA1dw", + "amount": 2896970000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggu7yfF7pvPcEwJpVJwhdjZHQrDZrL", + "amount": 2887000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr8KpkVm93TediLYHziCAviSAdWJm", + "amount": 2868000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG9wpF93Lp1QfQzWa5urA32qwfUma", + "amount": 2867000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghFHFWLKE35woXAUywmJc3BBDDmn4L", + "amount": 2836000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghL23q3HsEZeU4wtjqhUqvTCty6sXs", + "amount": 2799100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCZXSv3NBm9UUw6V9WkADoVxJ3YTc", + "amount": 2799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZsjAvZ2sKz8hLUjgVsnxqyCSFyZxH", + "amount": 2796200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP4Hw6XfouSwFxQgHCcoYvbHGmVC2", + "amount": 2795672800, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc5Ei4ZRAYBnPTi163c952ZzLRe8o", + "amount": 2783891200, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNBjhNZPTtAEXgJw9R9pS1pQM1feY", + "amount": 2772000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtLEDg5MmqZtTcZxCcwcr9yPd9MXk", + "amount": 2733439115, + "lockTime": 0 + }, + { + "address": "NULSd6HggUMPQQwbGG5ifY2EaJuFfB959Jthk", + "amount": 2728600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8hF7KGpZ53RhsyByNnsMRnZcJJdB", + "amount": 2720000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4cwkZoBJCapmz89LTWcZhVnKTfD4", + "amount": 2600000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5QJwSydU1p9pz9Z1ir3kxtnb28vn", + "amount": 2599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkqEpkUHZYCZHHgvBC8JK1BfvNQ7C", + "amount": 2598000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisaM1hNGngTm51vPhTBnVMxNdDozt", + "amount": 2589900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggLeKqByqvcX3Ai7BJsSDPu8wCr84G", + "amount": 2541627000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQVou9Ec7DssgFtoLDTrqusVX7gHb", + "amount": 2501000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbJ62qEYhnPF1iEkjVqwq3awFKKecA", + "amount": 2500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDZy5Dtei4ksBiZy5ABWPHiNjsH1Z", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgghb2DwaDEQCAF87JYYAv7SFE5cSZz", + "amount": 2499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBnTeywTk8NdRxcTYYUzxxF7Mm9HH", + "amount": 2489281556, + "lockTime": 0 + }, + { + "address": "NULSd6HggteDGDa8EzpHAMqUQWS3P1JTQX4t4", + "amount": 2451000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUYVzBXTJHTUpKJnbio6ajMtwXtQ", + "amount": 2433606700, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8WDe5xK4fbMHCmQSeRxzhzdR8iaK", + "amount": 2400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5corKyQo9PrvFaFytSBzDG4GaByB", + "amount": 2380142333, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnY5WVeHYjY2EQpcW4j25QbCyHb3u", + "amount": 2374750000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgehqizq4dN1UEyhJLF3VvJTxiipgPc", + "amount": 2354900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvSCdwAkzxHvGcXaEQV1W1mxoyasy", + "amount": 2354092984, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf28Mm96a1UnsD8nDhrDCQ3kNXWrTV", + "amount": 2317200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggt39xw3UKJSZgov4KgiYqzzVTT3nQ", + "amount": 2300880000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcbsgqQxNMb1rFU2MMwbSzPayM6X3n", + "amount": 2299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRGY83izb6sAHaqGFDZx9d43xwusW", + "amount": 2264724000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpJG5WVMkTfvn55N1K58ZvYW8Uznm", + "amount": 2257200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8remw8voBY1sfwHdn3ArvvoCe25w", + "amount": 2255457300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEMAeAvitBCSXWcARJrnbmQsyd6qS", + "amount": 2254824000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUyjiaPvCVDFGFfzCaxxHcPmPfpy5", + "amount": 2250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUptExYSqe7Ubfzayhp2Dn8xo79vjc", + "amount": 2237400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqFZ4arDWr2ZNVj2ptFoPENneoWjf", + "amount": 2236440000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhVoChSJz7gP7B5fHw38XaKhmKiJE", + "amount": 2206700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXpkYC1UwSaYoBesjMPquYKwi7m5R", + "amount": 2200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWG2kkQZ6TDENr3cUZpM21MjU5bqo", + "amount": 2199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZk3dMHMbtA28v7ydnvPZa5sgVAddo", + "amount": 2175723000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXh9WqUiFpBctvHKgdNmVeGqYWTR7z", + "amount": 2160622295, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Wp89f8wyuu4QqGydffHq4oea2wr", + "amount": 2156631687, + "lockTime": 0 + }, + { + "address": "NULSd6HghYhaXwdNt7MxbX5mDgDy1z8bKUDrA", + "amount": 2021747535, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "amount": 2018971225, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr7rMmtEb33uLhJq1GbhjVBpUEVzt", + "amount": 2011370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXx793cCRjQ6AUjvXRwGw7pNMPwVCN", + "amount": 2008604700, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bAq4ku5Q6gUPZNGcUDuR84Z1uEB", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiCL5AJjcdBXhGicCsYmmupA6ug8o", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge3NaGnJN4zcB5HkM5BakTKYwN5B52", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnLrAPYmmUxEUpCGHvfbhijxoxBaR", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifaX8c28H49hAectmjkZEYvFoGtbb", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7t3Qy53SLdJP21rc3yKkCH1QF3JT", + "amount": 2000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVUFASYZf5h1WfUs5ecsPhzCSBdDH", + "amount": 1999500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdvx6ETpCRNVDDSgaBzpdgPx23ZFQB", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbuo5VoLdYfp5AWsAvC6BxBnpCzVTg", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWi1RZSihtrDaFUAZWRDTm9FSEeTAJ", + "amount": 1999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8KyZdTBsFJ1P1Wgx1xunS2zw5bYR", + "amount": 1998900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYF1YFGfayJ2GnWWmMa8zRRB6p9Hy1", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdkuBtP32R3u2Ec2t17Sg2wdFfpqM", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGq4s9Pr2isFMWUEW1dneWPEJ2b1K", + "amount": 1998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXd41thBoHukCG3Abzv5MQqu1Ct5PM", + "amount": 1997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcbQbedZ5xELA9osSu32Z3GhyDr5S", + "amount": 1981380000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv6wtNYwXr1FSB5vvq8P24njfWDdu", + "amount": 1901162000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfYGndxpr32xA6UaAvXgn5mz93eWHf", + "amount": 1900000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf71LgaDy8A6yDHHvv5Piowq65zyCL", + "amount": 1897700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmrRwV7pmpi8mZrEDVskEjEsgjfQa", + "amount": 1890000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8v1UsvsfbHovqftontPVuzJTbadu", + "amount": 1880999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6wJihPdLMGF5Vcz2X3zqmdQUuYL7", + "amount": 1850000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv1uCQbWe3f8sSnTH47ryBnDicY5C", + "amount": 1849370000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHeqfGvX9rCj1LBapfrhfM3yLdmyd", + "amount": 1832290591, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg98ztaXFsTxUmH1W8cFMexYcCJ2dJ", + "amount": 1810650000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU447gS2Gfrfn9a6By2n2YwVqT6gaV", + "amount": 1802732700, + "lockTime": 0 + }, + { + "address": "NULSd6HggFyC1Ry1s9MbZ28gxvXEkpWKogCej", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrHYn6t1JnmHkPKFv1huits2V7jEr", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAk8ajv3AUH14WSrrapagso9VaNST", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBCZK2H8Loe2ZbJ7GYnwGea6LnFu8", + "amount": 1800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgibATpu9XKAhjz8zUTCpHcQQD1N4CN", + "amount": 1797800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV67Gq4mV6jvB8HgxNLRdvsxJBxZYN", + "amount": 1791408000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgis1k8TNWRn9W9qpitT9BDveeqTJSa", + "amount": 1786000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXUcwfRgjLZQYKovwnPRGu1uhzT8h", + "amount": 1770120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaPEfEqt6zRpwAPCkuVJT7xDcTGQe", + "amount": 1701600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7F6NuFDZBK7VPDJAR1YUP4NMhhX4", + "amount": 1699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDL3KPXaESpbnfgTK5K2qjevT7umC", + "amount": 1698200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYj5TLqzMvtYEJKAfVHjq8e1oaeYS", + "amount": 1678100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMYrZ9D9zALtNaEG2wW94B3NyYPau", + "amount": 1662000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGA11mD9LeRfNcLgroTpWGzBuJEVZ", + "amount": 1630000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdYGgcc6i68ujWJTxkE3ZX2nvRD78", + "amount": 1599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpvvSfqaxD3Y3Fu56SDdZJKXvgpNp", + "amount": 1597108047, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAVe9uZpt5YB2HdQhQdg3Fjp3uon9", + "amount": 1567500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "amount": 1565400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRsY1Z1saL71R4ALfMEp8EWAt4qBe", + "amount": 1550000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8SjVUcSrGW3PYYX3NDydW53GwkhZ", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRAUU8Fgm8qspS78kScQSSUbvUfZR", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXMcYsrPpZtiFpmKV4BjFGJHaYzoW", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDHozwpDs51CfoeTQU9Bry3HmhRUA", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjuESpiqMyJbcNd2VcdNc72BjFE6n", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghp3feb6ZLsWtuJ9tyzaUCJBjoWmBY", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgViGbD4VDo2PLwKfmu5JXm76QqRQHe", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEsAbxnK4hbSvca8h68sP8Me3w3Qh", + "amount": 1500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCYmK9trsmjb6qc7UcgHfPegFKeMx", + "amount": 1499900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5iPnKf1cL2BpAt3mpw4j72T7e4d6", + "amount": 1486859411, + "lockTime": 0 + }, + { + "address": "NULSd6HgarcEVh3ofUZpUY1W85hA66gyJNoxK", + "amount": 1476989000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid3UNBVVjggVNgP4nek18Twksd1GB", + "amount": 1475160000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYugU3ZEJvBzwcyodbSBfdszzU85LN", + "amount": 1472790000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7QdyjPbXgaBGJpGmQtKTD9VXqnan", + "amount": 1465255698, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSV7ksLL6EcSj3wRHt7rE2DxMDCG4", + "amount": 1457099103, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTj3bQB2pTH7N6YZkfovJywfeX2su", + "amount": 1449454625, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpNfbw57kuco29oQpy43EdeyNsdbX", + "amount": 1448442313, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4b1ebtZdxWa9fp9JrFufg4QWoauV", + "amount": 1434000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsky6DQnJR3WzR45e6BN15JeaK7h5", + "amount": 1425300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgQqWZmhm2qgJL3xWNwqjDcXraRaX", + "amount": 1419840000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvXaQqbdQCrECsQxa1Bvidpt9kpJ5", + "amount": 1405309144, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxnnxtdPzrWzPfywUcd4daigVTKGe", + "amount": 1400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVGNEyg17FcwmkxJrdkcgZ88y2mnt", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "amount": 1399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAp9qVdkimcx584QmPM8bPkjUjfj6", + "amount": 1397138909, + "lockTime": 0 + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "amount": 1375366150, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9CA6WceapY9yidzzKbvrfsyYKT4a", + "amount": 1368900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeSRD69MtyQcCnNCibSrjQ9qDJooE", + "amount": 1323940000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3i33foFFBy6EuJGM5dEkf7XBfqy", + "amount": 1302470000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbm21cnoZuUZ2mFLKKT842Lk2Ra44P", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghbLT5CU2eN1GuS2DDEU1BLhseALD3", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxCHA3FFL2bYNYbAD2Y6jfhMyTqvV", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7WzyrRA8rsXnYwEp7NwWHHD8VM6m", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQew4r1hwabQrxwvnp6yecJWdogS5", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFghDstZag6nadQjY2VA3LPzE9nbz", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXC7ieLApMmYVbXyZaB2TiWxNpTGn", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFt2fgG5RRA5SxSQduZFGtpL4whWJ", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggJPWfoUegwdzQ1TWoc62K1ZKZ4C1T", + "amount": 1300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeytJq5sZBBjQzjSTS7botJsENiSsv", + "amount": 1297700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWk3Pi6GHtBNa1UGyZDWhV95eyuq7N", + "amount": 1270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnRVkBQB56arnd5KrRogSjcFpCg23", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRk4E6dC9SHwvhmcSnPV5BcvsaSnc", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJPd74LE1hnNmh9b5KwoP5hMhFyF8", + "amount": 1250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "amount": 1237234575, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnuLrHNzicyFWjQLrdahKWy6CbSPA", + "amount": 1230000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV33jGBNsYC6gXKwRVoGJGus8cK8Kn", + "amount": 1214000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpbViU4V2oCzNyoWN5W2Re7BNY7uP", + "amount": 1209000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYQdbaPQiV2C9WyTi2XtTknA5W9dA", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfjhx3xCPPVd4paZFsJwwJJwcV2K", + "amount": 1200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVQz5iw9jLGtLWdGdX43ivn5yDk2w", + "amount": 1199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrRXNtcQDPSeQ2FpxPU7x6QcmpaN7", + "amount": 1197009000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZX5eqwkbPZphgcFVaGp6HBhyx362w", + "amount": 1196800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrTPKKQE9T9VguTE3djPz5n7ChxT7", + "amount": 1193500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW9notYJcb2adKuaK73G2pymCj46F", + "amount": 1165732400, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8FbE7XT66tBAHRwbb9nYoJkqeXis", + "amount": 1158800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqyrTNzynFYvx6uPGhRPtWbVPVBMZ", + "amount": 1127625246, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeYpkBiho3eJpYTrQ6ydwbzXDPNUr", + "amount": 1116439043, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKgF1fcEAgnvShyjDh298vVHV7j3E", + "amount": 1115760893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdB9Vnr6rqWNCWXfAARuvG4YrM7wVP", + "amount": 1109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqUfptDWbSkqhwEGFwZ28xqD1DAwU", + "amount": 1105416011, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqJRap7esezTrRmaCKd3AEQ6HjStE", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR3HJbv76vR5zroeG35zWS3kxFUAd", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckKma6NbLaFDwizAtUmpszeesToRw", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghGvvRiW5J4vEyVFbCr2QDKUS1zmk9", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ78Kw6CoT1MsWdPwpsahCg2WRBmPy", + "amount": 1100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY15tbzNuU9WDrarYNTRYPWvJGuNWV", + "amount": 1099800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEezTMAHYGoy7Gs5vVaqkRqSzYsGG", + "amount": 1099702467, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcwwJGPGQH22s8CfgNdN4wUC3hSy6", + "amount": 1099000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUhv4vTcZZoVneDdrhLWnqD3sYDq8", + "amount": 1098000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS4kn2GYgbjtRvNYB7jG2hDs9htdd", + "amount": 1097900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZHyzUYKutwC89R8NqpX2trjWZGLA", + "amount": 1097736525, + "lockTime": 0 + }, + { + "address": "NULSd6HghR7mkYkRTnvrifJeExPSWAfwbqJGx", + "amount": 1093877315, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUbdY5Xvcxc1ekKuyAStL2o5Twda", + "amount": 1088626560, + "lockTime": 0 + }, + { + "address": "NULSd6HgiffrGvLfQeNiUWDZWKBe7dLcPzGkW", + "amount": 1086745966, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrZ9ZBvniHRsUHt5MgSxDs5Lhb9fx", + "amount": 1079900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2feGKYoG9fBuVCKnZb78oHYNKXxb", + "amount": 1076500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtikfrqxkFsutCmxJccqnAnaXayRo", + "amount": 1071543823, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJJTpuL6eAPF9KUbHiPnaUsh9qF5", + "amount": 1057000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaSxc7yz9zPYCXDqY46Vadj36drwS", + "amount": 1049000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdwaoA3N33jSCQALBurtp9UdbkQLa", + "amount": 1048250300, + "lockTime": 0 + }, + { + "address": "NULSd6HgatXTUafaQqyokvWUSS1U7ADYYiwSi", + "amount": 1047400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPYAL8aafapgLHJSbQSXGtaLBuS3j", + "amount": 1042335949, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWMjLpW9DpoYGmW2BanjxigJ9wjgb", + "amount": 1038462866, + "lockTime": 0 + }, + { + "address": "NULSd6HgePYLJB2S4KejUUp8EEN7AG2tRwpz4", + "amount": 1026196953, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVW38hDsWD8DuVAbNsBty8CNUbesd", + "amount": 1019307289, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4sWxhky84yGfg6ndKsQLR3K3EqmR", + "amount": 1010000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnYsiKExh51fGgV5rmGHB4roEJvSp", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7dW34sg1CXoymmP6NG1HUex3Ym1H", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpKD6Gb6zqG1J9eLqqJADCg2aBaCE", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX82C4Y4Sqj4CSRwLRPEXjiFpDkST", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGqLPTu7K237BohEXKk7TKiqJ3sdN", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8TrTxGfRp8fNzGXyMgaLcZd1x7Yn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceomXYQDuXidWRTjubo8SzN3FgJZu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzZkGzzfvt7T6YeJsQA5p6kSGZMva", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZozECdTDGmH4LmGtLNtcZaiSUfg2j", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN6HpKdgwHcC2rhgWJ4L5tMwFprJP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMDTcqvGVPFrHBrJUz6BLvmJ659Ar", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJNJYX2MepG7kXvwahnLgy7ynXQf7", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcnk7aDQLoF5uU4oS6c69NxMs6bpfy", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1ZwZ8nKsuM563Z3Xx262G8sUcE9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwKzhvVsErZ1aQg8dXWXcNSWpwQU5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYn3CCiXtKoaatBPvxG1z4G7Ly9pDw", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHjV9pf6jfaysiFssaTUXGMYdTVSe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQwjjPaHtJ3LH23qZQSkQU1Wbmhae", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZBXTznAY3RKCd73RzzdPK2Y95ZDe", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKaPQN2enwCQDarpUYtngx39g8GmL", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhCd5HCRMGoVoaVNY5AqE4tj3PLkH", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjuE4nc9pBF3kQ66x26eHFnHybMJ3", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4xPNMH1B9tFAw9DekVCqD5egdHkQ", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtdSb4nB1SZCk5SpyTZXLzVkBv4k6", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrQpUB6f966mzoXDoYsYcRv2D6s5", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1o1PDYeY5gzWb1vyj7o3BsgEYD9w", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcinxXdoFWydxSZ9S4nZU26gqy66zP", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftNxoEwoUHYrHYUEZLDJhZwK5aSUg", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCR5YsL17me3QwoniVvaTz8K1upKn", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtR6nhrmc9kYo13X52mvZhNikGGgu", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq7x88z7a7wrC8JGdb2qmavjp5sJc", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdw9QLDb8S4TVMQDMVNTZz8KCWVUFR", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVps6bSCiHdrrXQbmfmQKGbMWTJQsv", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij2vsD2AFtkbFhdG7cXLPYrAkTyuq", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXAEuYFEZVjqwmxqeZRmprwrBSA8F", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWNTGgTyq9T9Qtcqz4pmbBWv5pnLF", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTySZGkDTrBQhu4dGibh4LhVmQv2Z", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZq8fYg5Jm5UBcttta9UG3wfMzczqd", + "amount": 1000000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYHz28fbP7aDJxu6vc9SJvPqhkFMD", + "amount": 999990000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcLvQoAvFdwPSt12AtwBXV8bXwc2sK", + "amount": 999800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXohXytgfMKucmnd8hjmCjq2SUgatc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesrYQ92Q5iKbWM63J1zAYmsxsLhHP", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5beurdVEhukzoC223aaUoTPxgC9E", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXE7yjrZuBmP22PzuHhpNoEdNrRWN5", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctpvM7Zx62yDLaoPGmYRuHxGtL7gd", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVq3JSSrXHX8NPnUdZDjNC8tGBjjzS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjtJftiJKiqkoWXSURgbiLNjUC7mA", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWis7XzQBaKHtUzFQQ1xwCAXie6sAY", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgiTZQ52AkUSoEacWCzJTHo9u5jfj", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6xDSmW6RBSx92c5HxBDopeRKXRCq", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQzeqFxpKRFLW9Yd2mkmiNQvDK94H", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRyGK7N3EJiVvnLZdRCNvB9hGWAjv", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgasaPj4S69uVBgTNRkvzwPe2txcQbS", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB2bvTPnmtaDXHyKPRBA2jDzWuSR", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVrkLcy8HTQJpCAMXp4BAfPkcB46t", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97zBgn2WzKaRuqAQi86U3dLZ3pPy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMxKnAagHBFs11C1bfLUQzXewoLKy", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebLrhKjhwTCGnQvb889hFhH1QE7Cc", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtUqxYKwU3xPgxYuoiCiPGMAESHg2", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz1tWGZ58YcxPS4nLpQU4TrsfpfVW", + "amount": 999000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBpxZoaQv1rbYHv9ZbUY7bK3pBHr3", + "amount": 998911825, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAxw8qeZwUDnAPWyLbryMMCsCN1wq", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVANTNi6DpJWijabG1DPe1sZUT3kXs", + "amount": 998700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLuKLfT3ZPxH7cetZsXHghkfQuAyX", + "amount": 998500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYCxEwBJn8ace1YPUu2Eb2dCHzeG", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsQWaFUwguMByN6r4st4FmFq6xf6U", + "amount": 998000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1qMnzhvyfnA365aWD12i4sg1KuDo", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx8t9ijMhKd2hgrXdcQkfP7KruSVG", + "amount": 997000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUENgKtMQoonRsjM7ztVs9nX15eGaQ", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8U1JWsW4U272fejRpFh2Yp5AbbME", + "amount": 989900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6kjpa6qVXGSUojzYuijBL4xmthZW", + "amount": 989000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVAb49DgkjKu61o9YHvmLi6BHZPSB", + "amount": 987856800, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGyqBrxdWLQzRoznRQp1LxrhynHcX", + "amount": 983811025, + "lockTime": 0 + }, + { + "address": "NULSd6HgakmBEzqWJx8uiC1nmnBM7Ut5gXDLu", + "amount": 966477381, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLJNMFx5aPuK8FALcx5oQnzLvakVS", + "amount": 964816000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTzjDAJNYBjmpvBRNXMpo7pd3R8Rw", + "amount": 951999999, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDEt75gEZvJpChc6rXtsFCNjzhVTS", + "amount": 950000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPXm9J9cymQp6eJNNPjhcnQFfhzaB", + "amount": 949000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJLyzXU4ur4rbrDQ16NFwyLKcAn8Z", + "amount": 924012466, + "lockTime": 0 + }, + { + "address": "NULSd6HghPws7UYDeDaHCANdrbzGju1kQNyCZ", + "amount": 922876000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "amount": 921549763, + "lockTime": 0 + }, + { + "address": "NULSd6HgjYM1vm5Pogj4pfV1FUEdgaaJoTvVD", + "amount": 919375062, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8K5maYzg2dYYXF7VLykP11iYFGPG", + "amount": 911126500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYEa3udVbwKPhN8xch6cdW6VS9JaZ", + "amount": 910000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJB58RAmWaewefoxCC7uohm6mh7vS", + "amount": 906118999, + "lockTime": 0 + }, + { + "address": "NULSd6HgXn5CWCEjTk53bb6ZirLuP6JCfm9en", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzGg8EVgFSt3VYT1LMrXyww51WaQ3", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMchs1yCRyUS1AUqzFh3NYL8fea9B", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWGs1W6zdVn6jW6LVw891zGdgkVSA", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtyyTNR2VDG3btj8ga4U9qndQKRLy", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY2dc9BrZCD3jeUrcqr7RRCTxCowqE", + "amount": 900000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtKiFkD2SbchmYJVNEeWrBs2n8Jv5", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZDxzpZkdpGnNxVvCpro8tmLrZJCy", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMGaz57tR4zByaEYpzCE9w5iCQ1UC", + "amount": 899000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4N8X5Kad5J9XPhwLxkk8Aqz7AsQ9", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYJFVCbG5sz63CLjzHie4MeMHv4r5", + "amount": 898000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggPfZAG6VUmopJs5NX5qgRr2D7wXUQ", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPkrujxmXDwSgQAEvL16FdnuKgqqu", + "amount": 890000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmjHhn8sxRVoixeb6TNRbnR6ivrW", + "amount": 888000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGY32xThxXmTeyfiMoUNnjTNL2Son", + "amount": 884000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6G5S72wU9MPzyuf6oEfhYEUWc4kf", + "amount": 867523406, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhpXnQe77iUZzoh43EJU32g8vmRa4", + "amount": 866000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYaFE2DMDAAMUSfQGQ1VhHWM6xtAQo", + "amount": 849500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQnG7cmtsNdTmevQXindzUVG1bF1c", + "amount": 849000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5qkDMEkjC7LknkbouVJuNADG9W2J", + "amount": 848500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUF1uR1QNturCrMUwjtwhqSn1NWuRh", + "amount": 840000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQPo1hRUGMkQFqnpn1eGd93jmSHwF", + "amount": 825000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQrfK29zJ3mbA7ErhjZLQVMtSLSG5", + "amount": 820716695, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYxGemwmPYQm4yQkteM4153ufyS7G", + "amount": 818412190, + "lockTime": 0 + }, + { + "address": "NULSd6HghQY85FQBsusC9Sm8GATQcVtUF2JQH", + "amount": 810000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMF4Dy5WKB5WJiZj1KDf6YhaRBA33", + "amount": 808000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghh8X2EsczoCno3bnfdgagV3VVyz3S", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkfRPbQ21ZzdhLqhX2cagKv99uvA9", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi7LXUTVXDHjBJBg97DmGPjyv99bU", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfg8uNoYXGWgKGn3SqhJHfpa3wdbK", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYnFBdVQdJNZDVX8pMgn5Ne5iDNmN", + "amount": 800000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQaw43QKaMNgvmobwsTMM38ozT5FK", + "amount": 799731825, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXBTiuLhgEfSyYbHB44tsrkrJvttn", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwSL8KEa93aGQneRREsNSxxo49veT", + "amount": 799000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9qvRWZJzrvhNjwTnCtRZ94hbjmSB", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJeWQ959TcM2ZQff3TixkxNbN8EvK", + "amount": 798200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwnWEFDmTaQLSdhbBk933A28ppd3M", + "amount": 795500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkBF3x6yAcHWkVktd99vgAyrj5gCd", + "amount": 793000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAfWUkStMp3tnQgk8hN1PaYfZQvC4", + "amount": 782000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZh3kJQFar6YFMXD3AvjFiqqRxsTKA", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaG75fDTJqCeLmcATMLVBoPFxFcHuC", + "amount": 780000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggD9uLgomZeRUkR71y5dmJmdA612JR", + "amount": 778716384, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeic3Kfd3PmBc28p1SLWVgC8PvxgP", + "amount": 778100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgsnqPSug4Asi1FN3QwuYUqgqVD9F", + "amount": 775000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMMHZtPyizCxtxArLioA6kLjRjz3s", + "amount": 764698197, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjgwxT2uyaFzSWzVAnJTWbPubXzUu", + "amount": 750000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWb7KsU9nMhxPcrsxvR57jsedJqN3w", + "amount": 732384154, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJq2qK3hGn981aCZe68eiKG4Wato8", + "amount": 728492845, + "lockTime": 0 + }, + { + "address": "NULSd6HgUq8H4Fzhjwz2f2sEWzx1nhnmv1Rjv", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVddMo8EXBBfw1K4kqQ4hRyqpEuQvX", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUEMUd2rmxp7CXUbDGTGQhq8kcocN", + "amount": 725000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbEs3qstiLE99A6QGBL2gdoFrtYgWG", + "amount": 723650393, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyUVYS7bJg8o5Y1mZwodDHgyh3Rtp", + "amount": 722926273, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBHAiEL6WHPnbqFwUWv5CY6m7fJPS", + "amount": 714581000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEdinptsLa8AF59ibpA4iv2cse3a4", + "amount": 713000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDZh55pBFHcn7ramo67BRci45MYVF", + "amount": 711000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8D5n7hYpD7YzHMw9n9qoFn1SAazv", + "amount": 709820317, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "amount": 705454541, + "lockTime": 0 + }, + { + "address": "NULSd6HggrG56zMtbnxZcJpE2oGT18egmJ3YM", + "amount": 704000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtZLJrM7xx6JnyYjkVXgp7d4KbzBw", + "amount": 702883600, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLHfAfvxVcdyXNi3o6zUoYjWZYMsX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWteJGC7PYhDmemZxbDeL5qmiy8prc", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTZvJwApycPeDJtVvZAMhsS6GitxN", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcmvbYPi7ctFSnryjLQU2cJQz13yn", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqWof391C4kBLvDY5ajYYrFjeX1Gm", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkGow9scL8TVTPGCfLHNxNPkTMm8c", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeh9eWXdjaxqma53p1wK9MmykEzzX", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTKtirzHs2d7Z89R4oaqinuGDj4aE", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLWmrAXr46qPVie7U6PpYp49bBFbb", + "amount": 700000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUAbQqfmUFEeMNCpVemJEb1LMpak14", + "amount": 699267300, + "lockTime": 0 + }, + { + "address": "NULSd6HggPQ6FYNW1tVtHCKbbVWaXwsTae6ji", + "amount": 699211700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHmt9KrMzvh9E51XyCmfE2RhVdLJK", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf29j9LpMjz6UJQC1UoMBmtQjij8H", + "amount": 699000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoHbaFABi2Fw5HuhjSq6mY6nchMej", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdxMknemzD2zAsornyhPMSt7DLRke", + "amount": 698100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLU8TYnbzCSEb9SchdXUFffx9wgT1", + "amount": 698000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYBKrhttNy1jgxSUSTt4gDCnGzo6j", + "amount": 687299600, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLkykxW5Nvw52h5RackyzDpVZf6ud", + "amount": 684000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYEkdyZb76kG2NtDi9ZRZaqCPtvzg", + "amount": 681750844, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAYpdyC65o2uTYY1Nv7rke9tMdX9E", + "amount": 676000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXunrjqQvnkLp4WUtFGVjNuzVU1avN", + "amount": 674598000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbwb5FQ8FBsnLAy7kaJsaJmu4GSkW", + "amount": 670135839, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj3iDq3F2deBwTT7TirqgovHxFKaR", + "amount": 669340000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "amount": 669317799, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYsETgY1iQonHpwAKPL5DiRAWMyn4", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9eJfCTDTsWAwZUaGZW1mFLZRAmwx", + "amount": 666666666, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2r6QQtxCadZaKpcYPbRCuvvVWFmo", + "amount": 657685055, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkgpBTyc7d4C7wxEXmC9EKQZ9a43", + "amount": 655904931, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbn2cn2e2JaF3z6eZWGJw2icxR91UJ", + "amount": 648825325, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9z78YKVG9BuZrg6rGXWhtEutmePJ", + "amount": 644200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgDiDpN9Now4RVyNyCSkCyxaFn6iV", + "amount": 641665200, + "lockTime": 0 + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "amount": 641442294, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX6LdE83VDYfQ9dGvqhGNZ93cfW4N", + "amount": 638316000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXS5KNwVFkbqEtWXCDfCK7QZrx6RVU", + "amount": 638290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1iGjSpkdZUk2cajbJnJcmUbps7Lf", + "amount": 637310635, + "lockTime": 0 + }, + { + "address": "NULSd6HgYycGdREeVzwZgpzRe7H4CVSgpHiUq", + "amount": 637000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRMhmrZWCHUM8MNndTZaynHYreKEK", + "amount": 636638405, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbv2EoW9pWWcnswY8mzEJdBkAvpb", + "amount": 613354540, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsEP86CHbALAdANN2sNxXhNEKy5DF", + "amount": 610000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVxjQJkdiBBcSJy6eh8XvruCKYSmk", + "amount": 606500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "amount": 600658627, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTUavym72FvZX7dTDbetfokEGDraF", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhDkbPEiR8yTubKWui7qL5draizn6", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLLPhyoHvhUKW3xpsBGEhPjSwqwPa", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB6aagLJHkJbNs4ubhUjEpwYs72zb", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9V6yUuPs9AhEPT1eTe4PFP59pGda", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYe8JVdJ8BKL7MDDwdWuNeHPFWiXzk", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdA4uqSRocYKbCyRyaHK8Xur2SPtKw", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVvuMJE7CdrC2ewQMggYr5PZso5oL", + "amount": 600000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZM3QC8FpVn8SJGtgAgkJafyCBEPNJ", + "amount": 599892000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1tuZvjPMGhaGjnDEooEPVLspgkaa", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJLCxsCAWZNJFSuGBSdUs87kpERr2", + "amount": 599000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4zNs8JZRzcqp15Nz4ch9i2Ae298g", + "amount": 598400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVw8Ss3FLu3pKwyMtBiUTuMXZzVfvs", + "amount": 597900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5vJ3ZWauJtV2ebR5kgUNhsRx473L", + "amount": 597500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2L1qeMXLeJFKjub4AKTjJo3F7BA3", + "amount": 590000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEgaga7Hv3Aebz4UY8pMWGZe2Q9r5", + "amount": 586928090, + "lockTime": 0 + }, + { + "address": "NULSd6HgUymaVh4UeXDBnXavSMiNTe9me8bSg", + "amount": 569133800, + "lockTime": 0 + }, + { + "address": "NULSd6HggjtmjRguscJ2t3Su22QzddcthfVvw", + "amount": 568400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDjdeUkYH6U1Adr6PMmrk7taQ6bv", + "amount": 563347505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeARTM4fW8ENoogSVJqpedMiAwewEu", + "amount": 558000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUMzvdLeXpjhbcnfNM8YCHizt6jab", + "amount": 554388330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ57EvoCbWXTbHxwD41dFubR5s31Gi", + "amount": 551000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwbfXYqwMHoHq86LnYF7EbJbtaG6s", + "amount": 548700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUHxYxjSmFN1btPoYHywu6BamG1JS", + "amount": 540000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYueqFTk9rh2wKW4c9ikFJ4UJYsxro", + "amount": 539300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiC86sp8mTyAG492XXsjvWxaa4cFs", + "amount": 525710000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecduHsXdFiA4srdQ1RHF4LrmhTBCv", + "amount": 519900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJN2sJ8fjWjtxaUxbUST9GEnpN7Xa", + "amount": 518165513, + "lockTime": 0 + }, + { + "address": "NULSd6HghW9vv4KY5kSqxuV7qpEoFzY1GoRNV", + "amount": 516997141, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpqsBvbnVkzknYJt2gzGYtWVapNz4", + "amount": 510000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfscjM7vL2k3TBsM7U6L15HspMq8d", + "amount": 509521992, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYebx7tg1ZojbcEH42mdxTQG2FCca", + "amount": 509000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEKsv26kXXQtoQJSuZEXDJmUX76Q7", + "amount": 508500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "amount": 506103993, + "lockTime": 0 + }, + { + "address": "NULSd6HgZesmX32bUrT64RApWsiuffyDw4QKG", + "amount": 504607913, + "lockTime": 0 + }, + { + "address": "NULSd6HgftfyNoKhzDzvAUHCA2vgnjCBUuf7a", + "amount": 501257116, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdztqqPbLaD6b8GPzj9BKFgEyUctN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeVnXuKi5ebpocbLEWc7C1cEgMt7n", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf2piBm2eEzc6kPEYx3tqod5GChQT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUGCHy5romT6ftMPNJVe1bbc75jvcv", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY9jZ11rAWeskRejGq3jMntjXMxZT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2d7toVTJC7YGoPox6FCbMmBduXFj", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWF7Fm3QhMC6MS9Q4cdQ7BF77Cyked", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6CtYwSz11xZEq1xB9QCndi46kyMy", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9wAdXmjx7SHAJ4CeUeWebZhLx292", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVz1dvkoFAaM8GkaFuM8SDAWkmqwxZ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJjT8u6Q9PykGn58M71uYEaBKYfmt", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwN6x5LRuotnCbpmw2iXuRtAvyky2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdx75APeyNZu5RYkpZ1EQ2QKdogG2", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9R65HaV2AVLaZSUoH95zzMiWAth4", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFG57a2qXPj1YBTd1oaPG778kZ2EQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbd3gtrEdtEX6WPje5cj4kVTBQxEYr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAWTbLJBgBeiQRNEAs7WuPqMx4WGU", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJ3KzxuU1Hs3MfmctjmnzWXrirRMR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzsXGzpquCtbTrkUSWDTnwQqZyFTQ", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLN17d76DJcHj6766Su6rrYVhB5BM", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9PjsX35b1wBLAQvnKK2KhFQeG9z8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKxsL9TBVmcYEsZuhKXNdxZG3U4Ar", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCg7BRwtbRM3ddn5ZSyxcj22F9nWE", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnFoXR6PWLG8To6WbWw3XXgG8TReT", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcU4rzDD9NgZpmExfpxpUbNFQhTcP", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZdc9UyFkS5fkwQxydUvB9JApWFsb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWKc4L2txicAmE842WEC87X26HDSeN", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXXoLLP9NVD57c3wPpc6Mcr1ghKtW", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQUFNFmsRAMroHxEbk9aRXadPmYw6", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga6x4EygxEhPx6JSWUmXmHuNyGeAs", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPmdHvFM19EDQLNDF26zbMTdvm4R5", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWB1JDbZgEcYka6rnDcAgnm5Cv25cC", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJdQ7J9MMMPxztEErLmR8T4KCTYEu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZooayRJ9PWMG5qxuQbNG7Lq5enhP8", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcchPPoVBy7q5aoKYBA4M6bxxqD5ho", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpgd4QcAFdL2LXDXmVGWZ1t94sx49", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfWUJwCVqFfdvb8a9Dr4ikgKpDg1N", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVWUnDc9A4umm7VFQ1R3Yjtwnx9Qr", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHrSAaeXk1xf7EassYEdUoUbJWnJ7", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc8yBhSucdwbaXtoKUucuBiu2Y8aR", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFWpKbZGBQQPd1F3bpKA4LSfBW3ND", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxoAhRSh3VrW7iufMjLFvPDhKNyEb", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgho9SuFLoxo8BF6kxQTEtbzQTcofKG", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgceJbjFrYbRWAoYHgQL65NdxLHYEkp", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWRk6xCebYeqUxekSPS4Gp1nrR4Wu", + "amount": 500000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd2CJ4TMAnsHqpUHNKwUh7LWb7CME", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuj8KDCqLdXqE1FvvyqiYs5S9bjtE", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHAkhwzQNVxfGwQqYiZEduv4grUvH", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoLaDQKvtFhdCiTAUi9kVB55t3vK5", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaszME1QeDwQWpxEDf4AF5zHSdFxC", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeADMJVupAcAGWPBEhAxhwYc8eTMAg", + "amount": 499900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMiY6Zt3tzr6aT9Dk1hFS6ZXLKDfW", + "amount": 499767300, + "lockTime": 0 + }, + { + "address": "NULSd6HghEdhWxxwDcYnwpDvnbUtgJMsyAF1S", + "amount": 499700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhy6aaUunpuzTBAH7w8nT1p9GXdkd", + "amount": 499500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV93JntZMgDSZ3mofVHeiPganUqXn1", + "amount": 499400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYV74LFuPZf5z9Z8hHuWu414UMaYA", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFqPPuunQNzBMfq6P4mUUbKSrrW3G", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgCsTiJQqBKd4jojBK3gkW1HrMFhG", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVex5qyZYhk814NeszPJkTmsA2zvPC", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLmyzJPFzduHqQv83bE6YdkoiW8", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbUXi5s3qmJDN6i89hsJSk4fojJbi", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgimjm9ptnA6SD2UJVRcRWtkiaA214E", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbdj3qt3REMybkFJd5DptJVvnynW8q", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaktrd8sAwMzAnHw9UqWm6pZWkUqRo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJP5WN7wEsb48gneFuMuKW6nsZ4wa", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjR3xerEVcsRSPmmzK5EYDJMcKJoQ7", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4ufAvjyqAqskdUZ35sihQPxHqr6R", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb12F6BkmUb1863jVh4tTcL73gikjP", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFCmXaLJQFU4bVgc74tQcihooeqEo", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXRkXQTRw9ZdRCRayvrre3tm7bDLj", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfG5BqbVMQEgbwmW6vxizDHRF3M5oN", + "amount": 499000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMFtcjwxNgdD62mZUXL6A7x3BC92f", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6aVCceQ2zZkr3FYnJ9RxkUAuz1xW", + "amount": 498900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbsJ2WdBa1Tka7iYYEXdHH3WM12sS", + "amount": 498500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYydTm3fp4mKEg1pzLUDmFRfc73uq1", + "amount": 498300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKgQTdgP8arbHBXJvwGB3Q9k2QChQ", + "amount": 498000732, + "lockTime": 0 + }, + { + "address": "NULSd6HgYybak47otBiXrjuieVmymhPZxpHGi", + "amount": 497000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWSWjCQBbCJV7abTr7n8uK5kAVTvAd", + "amount": 494500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc5hkAzuA7nv6Z7ejP9CyZzi3fyo8", + "amount": 491597000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcX2oV8tb7utfJJN9G3x9Tjj5YcdXA", + "amount": 491336919, + "lockTime": 0 + }, + { + "address": "NULSd6HggEnUm17e9uKAmo3eBczvttiYSP4SA", + "amount": 490199678, + "lockTime": 0 + }, + { + "address": "NULSd6HgU45F7dM4nbDJQk7uJ9vF8KroQVhQ6", + "amount": 490000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV6EwyM9iAaGPPhcKZWZ3yTNvV6wyj", + "amount": 489560572, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWTPCJTtkQFac8qnCkPX49dCpKLyK", + "amount": 489000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXH69b9x1NZNMnprpyXaLg5v3Aqtna", + "amount": 486701915, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJuM2GXhTMJ6cor9Q5m3bXMettyjV", + "amount": 486552834, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfonH1ipnLg2yWb8RAr19zPj4wL8G", + "amount": 486400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiWgY2GSe2QnijebRP29GmTT5SbxT", + "amount": 486000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggVUbZbC4aVk8QpvSnhvSfmKqmSbjQ", + "amount": 482424197, + "lockTime": 0 + }, + { + "address": "NULSd6HgbuUiSpB2Ck6ropYgwNy7sr8SXpe5R", + "amount": 480000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZno9ycZdf2wGKG4RK8ANBXqkysr4i", + "amount": 475353211, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTroMh3M59hbMWqeYqbgVXioa8Jmz", + "amount": 473898911, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6QKRxqYT4WyKXByJExUXwSByEnV1", + "amount": 471699724, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcvd7tFygPQLqKcR8dVjt3ZqYf2XU", + "amount": 465061855, + "lockTime": 0 + }, + { + "address": "NULSd6HgjScviL1LWubo7U79v2bb4sE3mQ9UF", + "amount": 457300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRpq1ve766QTMnzsfHA86zww5qNK1", + "amount": 455700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgz4fCQjoS5RF7t1ti3K1zDzqttxM", + "amount": 455200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ7Y2e42kVDhYzYW58JnS75Cfk6TC", + "amount": 453969673, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio4vUUkpZYdfba1kE8Tt5AX5x1rKi", + "amount": 450000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwqHRB161s19KBjt4VYX2vEb6uf4g", + "amount": 446000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6EpGDHW15utG81mC6rLYK2EoethD", + "amount": 445000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7sMtWjxm4rxCChrhFkxz38ayjn38", + "amount": 433845700, + "lockTime": 0 + }, + { + "address": "NULSd6HgiP8Mpv6jojtTK7CoaC3RcXDVMRcYg", + "amount": 433600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnoWTKyLg88UaHRztMkAH33A8PGsU", + "amount": 432400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBYzxEFqNpRcKoAB2YSsJJaRvw75V", + "amount": 418400390, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDHXKBE9jgc8EjwmGYs4FB3txP8Uu", + "amount": 410257579, + "lockTime": 0 + }, + { + "address": "NULSd6Hgco3LrifZ1Ecm3XkX7VRry2mPbVpJ4", + "amount": 401127279, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFxUnmr8NzxhUx8NqK6oC36dyfJLn", + "amount": 401105580, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4AXG5NVLhDMGa33CcCc1CkSxWEav", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCpZsHnD7krUtKvnsXfZyb2HMpEgE", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWvCCxcvYUwvr52dAw9Gjtgt41u6S", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyqbPwjqR5K6BZkUvsKCGzLk2A1AN", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1mx7DDBUYhxeFYDqHkpABa8A1aEi", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrCF2umQrXbZyeq7HNr3eH3XZrLad", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaqtc2XLrWRdAsRzk4JNkvyJHK3Dnx", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghj9PXtN8QHpA44ZDbj4dES2viwyCp", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwyyNMvxExvdQ7mFmgvghxE3bTKLs", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAfdPC4fJ3hkTWvQBHdvPow5WkDEt", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFcJ1azZMrn82NwX4iaaRCbcASjBR", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHn3wmnM3GNEfoKzx43Cr12vpgYDr", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2os8n4ctZADUTrbhcdz2HXt3YcU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3xTe2x5MBMxFjgJa1LqJMneLi1cU", + "amount": 400000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDNV9XheXeMefBMMJLbbaiGiRhb1J", + "amount": 399700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8jCeZVAMsxA4ksnSU7mFz6W4ZNSe", + "amount": 399400000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkgDKY2JCKiBtHufW7XKW6X2Dutou", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWodLf5reiBrCi8go6GouqxMXzM3LT", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRdgLSQJwY1LwrdjoVbXXsEN3qgri", + "amount": 399000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCnNbJ5DFjYXrDgnVYztTnnm5PY7t", + "amount": 398500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSnwS4h6Ltt5bmgQ3UAKxCxvDB5UP", + "amount": 397131759, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpLrAtLfjomWvuUumxJVZbbHqkbYJ", + "amount": 395478100, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2xnr9kgShXKLEeXhSb2DpFbzXGi7", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFsuJTLHmR8uGCWxzR2vopmbnxuRo", + "amount": 390000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQPWCsNkRMwSwcRADtvFvMREEKmqZ", + "amount": 388600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7VfDVuzogZgja8P8BZLrtRR5CT3H", + "amount": 388250800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQVEd2ZYsTgwjqTvTd2Zna2MFJNan", + "amount": 384575891, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFUgEJuTQns6CRoJH3PJKXvetF2CK", + "amount": 383985656, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPSVq3TKHbAjFK2qMvupvj7xfkjKW", + "amount": 382097330, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRUD2uBNPrRM9ETT1kW87ZAxLFF1q", + "amount": 380000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDLtJWCQMrJAwYtUShZCpTu6LeXv2", + "amount": 379900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgawWKAzpaFP9gqvogQzc8aoJidquVV", + "amount": 371511484, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPyr1zAsSo8qLAYYts6HMeTXcgLSg", + "amount": 370000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "amount": 358783553, + "lockTime": 0 + }, + { + "address": "NULSd6HgX7sqnQnArV3i6utSXyaymeXQ1vFtW", + "amount": 355180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiPnEufQN5TppEWuhGENaseqaEess", + "amount": 351428540, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9Vre4wDLctDULV1vbS4h3K2Sd7GP", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTtAjHi9n8Yt7NohsCsJ7GVsYhk3V", + "amount": 346000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9eryA2cmdAtRSPQhrTQkPiksMDrz", + "amount": 330000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeEWYdsoRdUj24fkkTfSkEnwpqS8Y", + "amount": 329000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtMTM3r4cHN4oHSv4UPkKFWC4Hm6A", + "amount": 328947897, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg8oLycy7J8TZ4TPXr86ccG7zw8thf", + "amount": 326445864, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEjRpwMJJUi1FEJWUvEzehVPcxdak", + "amount": 326336225, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwfphWrkJnwkcG7wcTBzxKvmHmMhQ", + "amount": 324504111, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUzXwWJXYDqf7JxMf71yG61nxV8Aq", + "amount": 320000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDDKFkciabBSsRvvMC6ik1uTLQrMt", + "amount": 317042167, + "lockTime": 0 + }, + { + "address": "NULSd6Hghtr3nPM9nUSU7BzoFZ68gTFkoKMXZ", + "amount": 316503686, + "lockTime": 0 + }, + { + "address": "NULSd6HgYx5N6hfvyTFv7kBKDDjkMGRGHc3QF", + "amount": 315700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzTb52rC8565PEJHCAQxBvvMiCNDN", + "amount": 313569000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavd33xRSzGKSVVNarZuw5DVexomhA", + "amount": 305000119, + "lockTime": 0 + }, + { + "address": "NULSd6HggAHckbgnSKB6NmX3p7LsuSYQwx35f", + "amount": 302729175, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZToPqZ2M5NqvbeDbjzswGRFHxzCh", + "amount": 301435300, + "lockTime": 0 + }, + { + "address": "NULSd6HggUuGhS5uAP9WgZf1FE57vbHzVW6J8", + "amount": 300156854, + "lockTime": 0 + }, + { + "address": "NULSd6HgVko7jL6msLiPaNDPqyrtgPzAfwvRW", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgcS2x4jkK1PbuhgZwTFmn2VDMeEb", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghN4HWuVkx2QhFC5NtvANBkPaxTV4q", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGTifaThBgmGKSmZng1gSaBsGW4ou", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw1zyro7aK8qiGmUmRTpEyPM7CKgq", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqyEpzAEmKKaPYFx2RGBQTN9raq7u", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULZy3sajC76xeiYBD6wcyguZGrYTF", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsDcy4rtAcsQgtRvnpE5SJnR5bmSY", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNWATUbCPgt2iof5h4qMuyifq2pWE", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDGzieUJBdKqHuYEtdD62Ld5Jyh2A", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjeqRRTHRMTgPLG871izLb8aKCWyN", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBVX2F9uY7N22cDPfZFJiu4ha275Z", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUTJB71dAXFKSWeMriC5mAjhw9tSw4", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcd4SdGcETCXXAq7gxgFn1ouQLMfi2", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSjGbfzJP4Pse5Yz5NtVnMbKXM5Ac", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqy2eMytsP8zV7yxDWSeauwsVXdhg", + "amount": 300000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZATESE84CtFsLLoHwRMBUa5qBDKx", + "amount": 299873000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6PfPKTF5QYamEzSd2pM7AXL7H2Am", + "amount": 299267300, + "lockTime": 0 + }, + { + "address": "NULSd6HgXssePETGVLbbtbvMWv8q1CzcDFHWF", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtod69DuwkFyoU5u9Hb8sRD56T5Gt", + "amount": 299000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPGbzXKZB8pKeBdAyMs4LKzwpn5EC", + "amount": 298500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV61VAVU89S2tGYKozyqk2o2xwUjJ9", + "amount": 298335350, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbr5K3osK1mmHtK4WYBXV9Zwcnw1Mb", + "amount": 298000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcivZofqVE5ycZtt8WXpxnVtQpoydc", + "amount": 297167999, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoACLQUue3nz8CbbgWsrdxKEaBP2f", + "amount": 289704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgYrWfB3ZxFur3QWb7JhL4RkWKZS5Zb", + "amount": 288704100, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "amount": 282420000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "amount": 280649126, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWphws7KNRFm3hLEvBpzwzVQ2ZAVM", + "amount": 280015680, + "lockTime": 0 + }, + { + "address": "NULSd6HghVxPuCQ8cm6xX8r814UXJWRi4887k", + "amount": 276737871, + "lockTime": 0 + }, + { + "address": "NULSd6HginZN3DgUE9sNmWL9TPaas3AMG7LXu", + "amount": 274151201, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa2ENSAx84S1fpACC2j8HE2nhCq7S", + "amount": 270408000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRtx63Ebvnvkoev3Z6kcAZJF5f4Ee", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghAa824yXKEJYStpXAPABTzZtkcybu", + "amount": 270000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuRdMMenGKs4MU4z9LvmCTzFZGgvo", + "amount": 267000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjFD6jNnQeJLtBrZ6Sk2sBXH8w9yot", + "amount": 266960005, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFc1M3v4kXCg4AbAhAgEtVH4tFuiX", + "amount": 265775585, + "lockTime": 0 + }, + { + "address": "NULSd6HghX6zkVNxMM9efkRJrT8D6JLBzxZAY", + "amount": 264526302, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM8BTPYLku7hxJU3LNoPEjgHL4Br2", + "amount": 263600000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQqR4APSnxVzAww7cBhqwHDzr59p5", + "amount": 263206294, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqKvZqH53gzCJzv2kdfQaiFVk2L9r", + "amount": 260000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqQHUETgHDtAqE7HE26yXek3dBR2T", + "amount": 258290875, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTDuHzuU9YLGSR8tURKg6HgLwJCsT", + "amount": 258126470, + "lockTime": 0 + }, + { + "address": "NULSd6HghNj2uism6DMegtmfmxZHQJum7tz9i", + "amount": 257900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggfDXesyRsuLhyAwmsk1YXE6BFcYQp", + "amount": 255000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXvaASGe5oyzWxa3Ut49DwpheVNDg", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8eGzMzcsD2qyJ6XKF8JvsBLFxTmQ", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggqXeR5T93M76HKmHCZ6iako3pU3tu", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGEyxwvn1LrCW2SP8KLjbcBmb2j22", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKNeQGg2xrgdihhcsj3n3G9B7HnY7", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwnL5o1xg3F29XHvWGr1puYH3ZsMe", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCbGhEriamBr8j5Miz46Kej2YircE", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1yygWSNUyTqgLQjYNzXfVQi7Wowd", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbvpnVT2JQf2cyRbUzau64cLpEkUz", + "amount": 250000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicKLs5xU2kLEWkLtqx6JJGdYNeCrB", + "amount": 249715755, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZpfmUnRfWn8WepYLvVZ9aPcgbqPn", + "amount": 249700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiuqhXH3Y3qMiK1hj6UvTWDpKeWQYZ", + "amount": 247517821, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4dca23dB9Lk85X4jUxjCUotjqUEb", + "amount": 247000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHUV29pJWfn4hfJTmK6BVryU6qrtn", + "amount": 246924214, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyDyGXgrCdN4duS6q5kYicvXcoPcG", + "amount": 246000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetF2Gi1n4i1E7nZjVCiciQSMQsosi", + "amount": 245111848, + "lockTime": 0 + }, + { + "address": "NULSd6HgebW3YjswvKGAVGmmRp5VDMNYunCn1", + "amount": 242657013, + "lockTime": 0 + }, + { + "address": "NULSd6HgeAbFihAu6aiQfG2GWSCvZ8NDh6Uq8", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc3rjiagT7RA58FJ8XnsATp5xHr8V1", + "amount": 240000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVqn6YiFTYipkKmnTwXNv86YUZuhCM", + "amount": 238433807, + "lockTime": 0 + }, + { + "address": "NULSd6HgWDb1NBa4QbifZEgFGkc9pzC2f9BSZ", + "amount": 238332494, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgB53tdn5ieoWfo6p16eFu1UJgCia", + "amount": 231872522, + "lockTime": 0 + }, + { + "address": "NULSd6HgTynuNVAshzqmMoXdRNrcZGtLWWRmo", + "amount": 231120000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL5vpv2pPC3wxcWx4xQAGJGuwaTYn", + "amount": 229900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXeKudSyPjjTZwavWE2R7Mnc4PdA99", + "amount": 226960636, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGTCJvhqnKpBmtSc5CPA2Wa5MLj67", + "amount": 224900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCeKv6xnsqL9qyksrx94ciNHf4xu", + "amount": 223270196, + "lockTime": 0 + }, + { + "address": "NULSd6HghMJwKgE6TX1Pyiun5Se2DZnrSNuwT", + "amount": 221803515, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQt6aUva6dk4NanDecvyLBNbUeuAo", + "amount": 219000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSb6EV1biqFgnPqj6Hh9W4kSQJZje", + "amount": 214444251, + "lockTime": 0 + }, + { + "address": "NULSd6HgTz3aWchw2kqmMQ2EXV5bYFZazPcuE", + "amount": 210500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg49YCd1rnjFHoCUmwxmarUGj43av2", + "amount": 209900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26Yh6Te4ZPNBATNvHRADDp4HMPQC", + "amount": 207241763, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoEUdfhtPZfdNvdSuLpxJmcsm6yRg", + "amount": 207000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZNRSRrrNTwhsUVjXJLj2YRoZcssGU", + "amount": 205908984, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "amount": 204253193, + "lockTime": 0 + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "amount": 203506579, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyYkXJZ94HsUdub7ezdcxCMKjUyCK", + "amount": 201900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkYTgA5m2HxtTj5hPu2riQhfBt12H", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hges9nYWHaFgAKtCzDHv94LKFFnpzep", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzqmPtxzb2HGkxJULpT5qAgyCBrMm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZtPkziunFvADtL2Jdxbtdcfr8Up5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8RbcqA1a12YR3JTb3nUW9gRvzqCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZitGgcpGZt369eV8aQEV3jTHRv79E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfm3EySe8Xr1FTcsagrP5N7h6FVrnd", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDe1iwX9YJ4xiYC34KMMQrpvK2ENj", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjNQjAB5xeuPjJjCJDYk5DBgA9J4VL", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjtgnLf72aR5QRtYgEsXpcLY9E3fE", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqVuNTbBC55zFvqK1aU4tcQr54NYw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1shkrBMzGCc5WYZjbMt9GrM6kRpo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCCe7wzNCx2ufYqFYMWinzrjsTYHQ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRzp5MgvWCvqGVEwJ28KBtiWoym9L", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx3z45VeBe6HchHxRemB4MVTPKdxw", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY22ZFvMHGZC3jUHWmQCyfwBsQuocF", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebhpGA341XsBonJFJUnHAHpRwpQ34", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUUfB45oLWAoH5x83EGr9po8V2BvVq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEzHV5oDuvAzBPzekVJ7sABb3h8RM", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguT6eYiLcQmEc96GxL7kucS87Gh6", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1QQ3Cdh8heAGiJZjqRmqK9bUjAMz", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKa92UTqhDtaBxcVd64dJ2ZbZZXee", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghC6BZQ7WxGxW3MrqCQiZKP3qNbnaq", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg8HzSjMJCPNaeRF5Pkun1toqiG4", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgekPVbv8fVqAb23wQ6pEfrPBdEwtv5", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkPKra8TB8EJHQF3aiJ8UQzpujwHA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWgcuzRDQDSkv3yRcFPdWb6FhMsTy", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUP7hoXTWfJayWk3CTnDuThMkQVzR2", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRL8cJ5riEcH9TadqKDgYNsCnKpL1", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGU45hj9wZ8BK5zu1RsfkjULh6HRm", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsqqfeEdr4ZkBM5hG9vZyJNbvFNdf", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegDWFr69zZr1yDEEX2VTXSMTtKoCn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDVvGMW7borNVQRZ147DeDr4hdv9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiaein7HmiZvSo9BpyCZWHBPgSThcJ", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrpxpmFG5sxM2vCDUgaWqqi2tQ57b", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2CfWMMELUoz2YzpicT9dnha35pfT", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWP6SauRLvuaTFEft4UqnmKwbsxVB9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2DjDTmNrDV4mKyyHwaaBBseCwxJs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTKZFXHoLt2Lw1t35fLem3rauuUZN", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSYS7SD9YR1iHzpYNikSY9z5iwwmn", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs79d7QT4y21jCULFF8xrCTHSSUSo", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc37SxMsPmMU6Yzv7ApEKVgZmnWHFe", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMRT8xUQp2Dw9wLDWT1bEuUZr7xhs", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge6j3H3Mhk5q6eLL1ibcqKyxjzynW7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7zUnTScTXy4taQQoEkRdmK26MPmA", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgSHvrC3C68z7Mgthbn8FnzAwrGP3", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVihotWoknhVfhXo55QRuPD5DWwwR9", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfENE6zyFnRkRSiAS5EXemh2fVwi7E", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9s3RfLGQJpnQiyA7jW8wJ9a4W7zC", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQUk17yvENzkT4LShrF4vWicvui6e", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbbHE9LpykoYTNgtuqDAFD7hV2eV7", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3NEkp6R3ag2WqCovNd7NDGMq8Y3Y", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsjTQuREXYApSif7Tq7zamXuJtDqV", + "amount": 200000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqhUx4NkjaTUZV5PtXdyKmWenR65R", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtAEtkGCFhVWd74SAk12mr4E2swgN", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURiKT9hr4cE1RD4fdxZDfpWBy8yLv", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUw2bFnLz5NpatNGvjzhZAF7rRt5TP", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLX4bb5pKFpyN8YyoCQxNMiH7keoW", + "amount": 199900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbVVWRkWdNb4Bp7NUHppGizuViEG4", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3BFgJHJ9fZzGDiT6U8vpeLCyg4U3", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJm4PmkAVgRebCW187WQfZbPkCBZ1", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaADttWgddWa6GTZYQXoAXh5HnESm", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeejViHi84tTQWyZ3pzMxviUaywtce", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfjt6Kz9zSHBLj9xuYjpKRPUYftYAQ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTwuVYvQHEK7oGYQPXTbBNXDQnHmsJ", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "amount": 199000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYo88ZYexVLqaurtP9tGnrA2Y3Nkv", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoTFAUwEN9qRyGXjpUo6KMEmJ7uFH", + "amount": 198900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcL174Z29kEdWxdcSnnwpq4kBhToAP", + "amount": 198800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYroc4Md9FovWjcctC2gMB9cRxiM5u", + "amount": 198265250, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdVHd3qPm4d1PaffSQMUKa4R1Fhn5", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgorSQhQQo6ofJiaoavLY8iqdBMe6", + "amount": 197500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4bWfootSG8WyqKE81DcPrjQoFMrQ", + "amount": 197324848, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "amount": 197000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQJ7nN5buFsCwVGFVXxgbMnPdCmVv", + "amount": 196935684, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHatoorgjmL31HovENoLnxEE5FA6X", + "amount": 196700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZibG5EGke6rpe66XpyUGGXEaZGp9F", + "amount": 196600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWq14GCiZUYSjUvHrZewySyp3UA5Zp", + "amount": 195103558, + "lockTime": 0 + }, + { + "address": "NULSd6HggmzqQsAvdvtpQTZ4mKLvrf3ogXfdn", + "amount": 194761997, + "lockTime": 0 + }, + { + "address": "NULSd6HgU71G5nNLPWbpVwcdhikbHg14CR93W", + "amount": 193041064, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhNpQbrTxCS6TdVFNngqcrqVyqZKv", + "amount": 192373935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcGbJy8shZdRwnLDxDhj3DjiKWWBMy", + "amount": 192300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "amount": 191577917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6gCiqvsR9bWRpySFpDGhfmSQ6NYk", + "amount": 191200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBUWyEFmWCJcqfouzk2b7PKxshY89", + "amount": 190064307, + "lockTime": 0 + }, + { + "address": "NULSd6HggtUNhVqt3UbKbD3q4u3fsL9YJggF6", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbMshtLXsv9ZWJ6woj3AYuDEMcaHC", + "amount": 190000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUp3TjoPv7zRwrCp9YyftmZFqk7Kuj", + "amount": 189200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "amount": 188671398, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyQcDz6yWXTWtDPPipCp3cFB3C1jk", + "amount": 188256951, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jTjxZVCBLXFK7ckvNpXD2ik6RCT", + "amount": 187144406, + "lockTime": 0 + }, + { + "address": "NULSd6Hghmwh7ftjDnQ5DVfi4W1uKbtvTee8o", + "amount": 186800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1UNowf3ah2JjAw5GmmYWBpbhrDdW", + "amount": 186761758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHcELutZf4vgmwFvPvVeP2gs4V68", + "amount": 184026525, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5CdVgnSR2pJaQZ3KWyhu1uLAiKHH", + "amount": 182783601, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9GcDkVu5pYb3SVvD3oxp7qknHTBE", + "amount": 182100033, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTEXAmUtjannrbRiTdbRSN2mvnUxE", + "amount": 177790668, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3TPa3iuczMXiKnweFd3MpJhGF8cE", + "amount": 177787969, + "lockTime": 0 + }, + { + "address": "NULSd6HggTdCJ8Fh1QYZCq2tip6yVenaPwZEL", + "amount": 174300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "amount": 173612453, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDLACVM772uHBC5mQUnQsp2XsN1NP", + "amount": 171974145, + "lockTime": 0 + }, + { + "address": "NULSd6HgaA37JPHoRcQKsYJRhCtErRibqEdiG", + "amount": 170264862, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLxUGY4iUdxLruyvSyjifqrghReF2", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXAFSA44nVy2MNWv1jAWN2ozvukMh", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgayYDvL44z6QBJnsgfaXtFZxBbz7im", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWCXPV9oR7oFsCqnRos4frVwepJyB", + "amount": 170000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRJhAkesrBLKf6A4ACa6BYXywYAMq", + "amount": 169530334, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6TfrApMqrZ4keqz4spTpw1p1oN2X", + "amount": 168231750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6ykJAmMCb6pNSRWEE9tXAis8Tsxs", + "amount": 167285108, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1G3M2x2d7v5i6iPytnGS8MhZohjY", + "amount": 166023705, + "lockTime": 0 + }, + { + "address": "NULSd6HgexGxsfufLqmGpREb6XQKjktog1Smf", + "amount": 165600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWo8xnWbxwSBR7ZDBqenxJzStXiyfs", + "amount": 163830262, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvJwmSBxYcwcTXcYRqxX4D8cCngKt", + "amount": 161646652, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXqkRRLwr9A12RHZtgeZbijCaBsKV", + "amount": 160000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "amount": 159661817, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSPYi1PGLXnxbbaBLijzhNGcLiZ71", + "amount": 159000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46M2gmBhvFx2qRQS97PHWEj81EQL", + "amount": 157355794, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUx1BetRs78iMyQcK8F31pbAkEroo", + "amount": 153674338, + "lockTime": 0 + }, + { + "address": "NULSd6HgiSEr4w7GFQkjgyHGRQKX1LCtNrQFd", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfdje6q77ZRE2xrtkrFPeSmbqcgdfm", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHB7MzXtZrb5ZmVsE7ZTyvFYGJUrN", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggxiEGmmPzZdNXVV8feEyPjmFpPRbH", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2XDBkoiKDz7dYHgV9W7iMEb8XeNP", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTAGSTuVk1HFDqQ84zUAZC8H6JXdv", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWN7X3F4Finhk9QLxZB6Ln55hQdeHs", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVkwDRrZp5g4ji2tSb89i8XHZAcgjf", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4W86A1At5QMbyaoFuxgQYAUBZN5s", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9UsyXz2jFUNjr9Sm5z2qib5WRUiJ", + "amount": 150000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnUYSgYsfDSub5S96BZJB2edGQ7zL", + "amount": 149775708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXr1VA5W29EuqrzXq4Ep7j5Szynrem", + "amount": 149666150, + "lockTime": 0 + }, + { + "address": "NULSd6HgVe6JtKsrcPGR8JJB1KZNV69XCNfHP", + "amount": 148700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcia2A5BzhfxGDm2Sp653FM7qdQZ7f", + "amount": 146000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaBReRFDE8RNfh95khBzStvpHVyGdX", + "amount": 144964485, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8yCPzNMhFJX6pb7GKDcQ3uckwzxc", + "amount": 143851143, + "lockTime": 0 + }, + { + "address": "NULSd6HgbpsHR6ejq4Xe45oHJJnDos6sW2VQ5", + "amount": 143712915, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvF8X6Tab2dg63ucPCqsaDFbRdQLq", + "amount": 143545871, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMDFUEMBqhU1oUdmjmS61f4fBBBNH", + "amount": 141900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ5a7xDBk8JsxbMjhGKRdFxSAGRisv", + "amount": 140402077, + "lockTime": 0 + }, + { + "address": "NULSd6HgZegSwZ8BRNBNsAxvNPLwbUhwd5Kin", + "amount": 140000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxobVwaaUkLDPZiw7xsP4Hj8Ca58g", + "amount": 139500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMF5EaU5SzCHyFKRk88bMPYF22N7h", + "amount": 139140181, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHBnEcUJK9m8Jpbeuvd76nuqfxDnE", + "amount": 138200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXWsCGoB77wJkCPUcgVZ6UKWDC7Bm", + "amount": 137361793, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHkn3FqMeSnD3K6btzYpkynvPR96L", + "amount": 136283067, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKtQ1PeY5Yprdn1vqnmzyWH9TMPhy", + "amount": 135749198, + "lockTime": 0 + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "amount": 135523673, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZvRqm1hLjdSGJNiR2UE4ft9v6Hvw", + "amount": 135297015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9LkBKMNgco5XshrQJSAdiWFN287Y", + "amount": 134388698, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwDB2Wgi2e6CCJTrcK7MzkMFWrVbZ", + "amount": 131474912, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdio7WFzY9bnfzDoPvVijKQzkd5UKZ", + "amount": 131081458, + "lockTime": 0 + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "amount": 131026440, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKH42E9Gg5Qfw2MEuYnciQzdEuobX", + "amount": 130070709, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRvV58w9o8MbDjcZC4Kd2ivGMmS5h", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeAVcfFceHfVsY56ekTFHFAofSYks", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmvDJ6edz9Zd12o55AUJYUVB3SFrr", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCmFQS7TdYPhD6vqkS9B2rxytDPnj", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmyvX96wcWKDzhNRe2VLXpVygztn", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgenP1DiYwGBs6Upv3HV4bJgsQA2sP3", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiiDLhCkBNcWJovk7w7r1gQAzmAnkB", + "amount": 130000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXv6rbpiK4bUaPxZUV6ywBGK7YC6o4", + "amount": 129900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagZkgPRDFUji9dJunXcqyU5qwM7ji", + "amount": 129135639, + "lockTime": 0 + }, + { + "address": "NULSd6HgVwvK295w4Hkc18utnUc4jQ3SLDwz2", + "amount": 128607478, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfENKGL9MyhZ25amq3sK7v3jCVvem", + "amount": 126086500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeRfh7bkW38nCu1B7AYVS7RUSQnwJR", + "amount": 125508440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBvY8ARv69aKw6wswDt2eyrLnxYNk", + "amount": 125205440, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYKjFt1EJ2BwYA32cEJRza6f7NDgs", + "amount": 123535996, + "lockTime": 0 + }, + { + "address": "NULSd6Hgav81LeXq4pQr1LW7Voe1WtMw7XWFL", + "amount": 123456789, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrpLLtUyzdaGWdTHETjrZgEuxnNYC", + "amount": 123241738, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcht3h2NKTzxB5o8GWnn1RJY7NDLKz", + "amount": 122235309, + "lockTime": 0 + }, + { + "address": "NULSd6HgcDG34j4gxf4g4Vi35vyvjvUgmmJSJ", + "amount": 121200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPFs2b4n1DFu1wCt6erSq7dfSeWXK", + "amount": 120581538, + "lockTime": 0 + }, + { + "address": "NULSd6HgeQwMPPYontvNMsG9b3hnjRkHxVyPm", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVfxPpoa33VHKBoPCec2JSeJ1S4fV", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbj4bLHJog6MAta4U3Mxe2ZqmtAh1H", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtg8FoPYye2Nvm9AooU7dawJ44nLS", + "amount": 120000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgczYtJ6AjubiRTJSD62acPYvmjEwQC", + "amount": 119207762, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaekAMyq9n5e1FXZks51svghdMWDZ", + "amount": 116842374, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUosk5RKrg9ZHJ2K5Y3McpLXjMvco", + "amount": 116660266, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKyA1zosLgrLm4F2GCmBh1crrBBUs", + "amount": 113954247, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEpxx39YFLDdgNRNiUrCAUZyyEKdw", + "amount": 113951486, + "lockTime": 0 + }, + { + "address": "NULSd6HghQU3vxDTMvp3b5sWNdGBKnFrgb1RS", + "amount": 113886595, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "amount": 113670193, + "lockTime": 0 + }, + { + "address": "NULSd6HggPMSvzQyvVJKotbL8r8h9o7QExMQq", + "amount": 113427063, + "lockTime": 0 + }, + { + "address": "NULSd6HggU1MsyaQVS13qPbJumBVKpd3Yuj5K", + "amount": 112000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgab2QeZSd8NeR1sXtMurf4VDw1Gw9E", + "amount": 111633229, + "lockTime": 0 + }, + { + "address": "NULSd6HgZbSADnPKQcXs4KH61cH1DxYJ7RQWZ", + "amount": 111378474, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzMkf4gsDZipfym6cMgLvh3uniPUD", + "amount": 111100000, + "lockTime": 0 + }, + { + "address": "NULSd6HggtcshDo9bnA8wBExrzrVgJW9NnoGb", + "amount": 111088708, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqhgrtsAStbuHVnKs6LkvRPzhwKBJ", + "amount": 111000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3qpwKFdNSwrx7PUYyE77DpccW62R", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZi7uJLtbcmCufVoigWZcT1sJQFGqK", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnhRcqthsUfYvqyfz9in4v6vgV9TJ", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcaiZtiudHuMpeZJzKvUhr6z9kbjY4", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggmg445dA39bD4TpngPVrQmjEqsSmp", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcuEu2EP1fDs1ibTx6EyZCVcFGmBkX", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6CEnxVyUrJetJNB9ZZKEZ3y47kKH", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh19G9Dmw6Xs3kvHRftKCFU1h6p3T", + "amount": 110000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1tDwabU59RnycLP4EAidJbMqkdYe", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6rgjEH6YiVbcndxzSKzrDhU7xGBv", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgESrN9daMLZSESi6D2ABVgJaATvp", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghay1UnKA9reKANmZKtsdRdzNATQeC", + "amount": 109900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUedc7nSMPVitS17bt6g26RkQnkDSZ", + "amount": 109700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQM5AYZZkEAXVy2KvsBwEVyQAChrS", + "amount": 109377023, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWpktswVdWbgaDoZDAd6ioaQcZQMa", + "amount": 108828082, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLedvQcPjNkpR8AjZqDxYtKiMsjhW", + "amount": 108551938, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbv3bTehseHXuxsPLas3LbWPwHAAbd", + "amount": 108410125, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHq2n4cG6h2GSxT4JQAa9tsp6vssR", + "amount": 107454537, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "amount": 106351895, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbt2CbF8Gy6TurDiaDGHSLz3hrZ5ez", + "amount": 105707909, + "lockTime": 0 + }, + { + "address": "NULSd6HgUku3gU8X1eNfdo3ADKznUPFWxcYJG", + "amount": 105465300, + "lockTime": 0 + }, + { + "address": "NULSd6HgbysFCCvK4yobJq5dtkAR4VBJgLhav", + "amount": 104900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiqEqk2jVTHePrdDpkD5ZM183Fm1ZP", + "amount": 104627641, + "lockTime": 0 + }, + { + "address": "NULSd6HghMt7SuMnwfZppZqrC4JNyoJ9U9y9q", + "amount": 104621550, + "lockTime": 0 + }, + { + "address": "NULSd6HggMdYSA889Lcqgp4EirajoL25JubPb", + "amount": 104468595, + "lockTime": 0 + }, + { + "address": "NULSd6HghEDD7Uonmxzr8bRfSNYFcPD2tXpHK", + "amount": 103669177, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj4jjofQDGmkFejBKySSH1QD2YDxM", + "amount": 103546504, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkkV1ptd7PapsoptzPpo2sTp33WtH", + "amount": 103542651, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9TYPf2UnQefSLqt9ZdYq8F1vYMnL", + "amount": 103395488, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKpr4JUswKmAvSYLM7Pyik3jaB2aM", + "amount": 103229948, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4fX5SuUYH6aHARsc7kkGWa8Fa4s3", + "amount": 102925401, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMu1r9P2d43C4YMmkcNSXttS8CSpV", + "amount": 102712086, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdFX3xv6Hb9Yj5JhMqX2BudSaj9e4", + "amount": 102500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoAk1dea3zBof4jNtWZuy12o3YgL", + "amount": 102400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMExT8CnhK6926zDA8UEbFbVr9oW3", + "amount": 101888000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcEwJXqswQcnK55uKUFDarVhzp6V2y", + "amount": 101733344, + "lockTime": 0 + }, + { + "address": "NULSd6Hgij5CwVqxvPkNPGqjLBxggU8XcTYaq", + "amount": 101680846, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWKxDvJ9SpPGGi4TehoEZXUcKEVpn", + "amount": 100997392, + "lockTime": 0 + }, + { + "address": "NULSd6HgZR2AFLYXrDMqyBCgPFcMoFPQwfveW", + "amount": 100770054, + "lockTime": 0 + }, + { + "address": "NULSd6HghmW45JV5LJyZhQyZ16istTFPbG3Na", + "amount": 100642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2gPZYfeT2PHXVXjLKbS5pmXA1jV5", + "amount": 100508552, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrGPnnsqSDdd5RoEE7PDwatT5zbJx", + "amount": 100300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbMA2NiAVbajmnHxmGDGDawSRJwtj", + "amount": 100131797, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcYyzAPjSLNqGC97AMZY7dYE7aZmG", + "amount": 100100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9shRPJ6gKFNjAPmFEbaEWocDBA7Y", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHYXFUXPZ1gyHPj39c9S3Y4g7V4Yf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ahVPwtxsd3LuGw53s9Yni4wMsw5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgffWQCCydMLMWqNdQQM4fA2j3C2QKz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUe4QHjFgMxJmo6tzxG7PLv7Rx3bAD", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzHso8S374A1tKquKN12D3gD2HAnV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnnxiQFvCgxyNDu8pF28W9n5cBf2b", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVYR6wPAuL8Swz2KxjhyBXyz7fYF3", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTfKdUu2VRKieZKwuubjqyeSBCCkd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWot5q7mZ3eXoXP2tAPbur9CDWoTeo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeM6WFAdmw15MZgmZeJQrxdVxdDMao", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAoUZndf81nEKMXxPUmqtidButpE9", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyCTzx5zXpoqBEsrhGcHK8hdmGwig", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3pbsmGPEYXzbT2bqMRb7m8j9FNYP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy5ks7MjxYiG8fJW3zKUsqWoc9eRf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTR7kizTvkQNvcca8R3t4AxHkS32j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggi6bx3q3QMyFduU3kaFqRZqyZxe7j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVtpJGSuCkQmygMWEYk4cduNtfB3m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgivCeWHGKUanjuw1m6TrQEQQpGW66o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmyxjDz15UeB6Y2GwHYihMJMZLg2F", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXc5hDSX7jQgithATYXVrFzNHsS4Cu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtVNfESeAQ21zMwsMt2ZBCQpqvJL4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfb7NPajxL1YrKqGL2BEPj5ZBqh6i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgejkviiBmoG64CCMDqiXUg3C7kGNET", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggCVqtC79oSL5UNWanJrXi1qFh8LcC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtTxDuVB3iJCEAinttZ4PfG1jMHQR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmkgrcTJs9tWsgZR7gy3QmKgSjXqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafhcLFD6bDjTCCiK44HKY22zejA4m", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMK89ywfzjR95o34NNiaqdwB621GQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgkxFVV3APt4z37wGu2M74mPDNK6o", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXPJqaKEW3xsU3L3gJNdTMzkGCwd7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXRiaCtK1XBSbZXrLA51q3DykvJ5V", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxEpDxNG8Wie8WuUn7o6XRjquVNGJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmeyVbZWPeGd9vgQCCVeV2wXAWW7H", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWT8qm6fFz4RhnXEyHVARLHDGFh1g", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxf5ooAB8KXTfZjgtz6ETny3CUrJx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2pRuGkdQR8zxU4JqR6Mb7foPncZc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6apEQoCdPxDpiQHrtQosHuRpW8bn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXwKKnTKmb1FfUQo6PrV34AtYF81E", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe2WDXy2h76UJczzoKGVpRo6WWcz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdpFtNdAp5fEhzAzSMYoMcczy22jVw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrjukTdsgVQE2tcmNCYxG9o2xjM9s", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEDFctJraARRNxZHKKwHm3dyegcyn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhELj4imA5V1Cx6KNqnZtGhxWAG9J", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKgDdmG1AF4xBUaVFgtu7b2XEVuRp", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgL1gQL56XkrRunyRqA1EMgNKodwo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpzAZtafR3cDVuv6p77VohtciajMV", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3ieoi1NZe31pXNNj5RakoeG9AgPh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKse9JouvYGTgzSHhU5FFwzSFJ5gL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXQsy2oix3Sbrb2qzE33xcxxoQrp6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXxp9T8LataSSkGAyMQvauhwsj7YS", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjZ6xMq4LEBWbLpbbj4CigY6VGhgVt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5kYTPWpUHshqf8NtZtNE83jbxdaN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4dan4rnGeK1J9y4nc4NUQYJTp4Cc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY69BVYkaRCejarenyzZBxAc4kG4hf", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPaJ57aBQiBo8zAVE9cVVsf6wCqYn", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXB6GRxWKBJseBdjGuUE7RrTY5NM72", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVM1Txgvt58XK4PbJA5WSw6TQUQ8mJ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLvRkdrkUsxk5yyWMFubspETNg4CL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSRaCY5gHAAGxQk1uBzpCtFw7TUmM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoSxpwHx86o9bvfwPxKrc7xcED2Ck", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVJnguzABPaexjrmt2JohhcMVsHMM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVFsLiS1zhEfwAm3VqN3AYrBDRUqM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcKQUStSroRvPYh4xYCo87w73oCFo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghjk7imwTwVGUGozTFQafruNQcAXwK", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZShLCFk97qu5E5U3TYQb4CV85Foty", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjma8FiKSWoX6JumoLXJgPQTDmviy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8SWaPvMYZdU6yHegU8M6fxPRgdqh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q9ezHSGL1xUPQL9DsJSCUYrjrsN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRZWBcQSXShscxbCoKhQ2wA8UrDvF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfsZcgxjZp3qRkShCoviQ7Px3hP1bG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8wYMMW5NSez9rhd9SwMnJagCDy7B", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUijE4eDqUDpmSBcTSu3SMb4J7wMCk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3VVoNbdp6Scvqa81f8vZE5bcZrEZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4QoCofXLPRqr24vRSCjizNi78NnA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSVQZEfXgJmV4udfkZRz9uFoUPRaU", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWymyJpkbD3iegRKPdijYhekDw1te4", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6ErF6FiJ31xhZgkSedqiAeze169C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEhFTicXENQa5mHDLu5nzsC6rfGd6", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2QCip5bnarSVVnZiPP1PojKsXN9n", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwYBCD21kGTFr1jMKZKAnLgRARpmX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbhoGs6sg1CPnMgYxiz2jUfkpvNXie", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxSGzyBSatzDjUjQ8P2qyB6eABYwZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepWEYHfNnRbseVMkfNxsnhbGnovKZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchioLB7A3VUGjbvxfo4dZaFwYpfJA", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwZtStDRrhufmPQtx95FAW8BgQeMC", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSEFkLM57k17CZgqKcApsChZYDd1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLjzi4tHb7k56J2mULsePe8WYPwzs", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyffjwNK7dhP7muF42XLd9jncJyxi", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNyEZ18LvAa8Wk2Hye3TtWJT6qLup", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbB1HJdvVrEN2D79cgBGJ35Pr5wVeB", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZp1m9akHJ8uN7fvXb2tC5fo7u2Hui", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1KDToSzinwUWtJF9ncU2V6FHsnXo", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboN1CmUtYPzRdyx8c63JdEiKcEhTq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnfD4ANeZt9vdD1Bfgr5NGF7d5sym", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRkE6KXGAcspwcJMDD6r8ubRSuoJT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTzPPUSqEnsaSLi962xA1d3BdfPnHm", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLJzya9qNpFFnCzdexLDt7DfzCui8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKLFGajxbnTogh1ADqaujPAcVxgxb", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoAHLiJ5ZsQo1L5CTstHa89pFssx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXa8NJNwmN6AhXYXgGcL4Y8qYYWkDW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkDCk7Juxt8nwqRf4iZwu2z3tX8Lw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjEEGNRGNZgEJJkRwM1gERtzHpdAiu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYLA8aRM4nwQgy6RwoNxkqmDw9PEa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SJMBLmz3DEkD55TJiVAGy3swKq7", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJnZT9YwWjyz7eqgjXHARzGe9ijDL", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8pHxh6D5ZPAXKvBEEcZcijFofTYd", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMg1MJpFAnTWZm1LuTstLvqASAwtv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVWz6N3aKfm2g6a6RDrQe9NjGTgCQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZVAbDqBjJHDBaPqxuNFwKgG7WKyog", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePKkZSeQJAwaxoxKvkNoeZhCPpVSQ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFEBixxqevkeHnzM2NRqu6f82X8kG", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjsB18FQGRCpaHe7vjQNgbkLtQfmW", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1WWd5MXXjJEybQM23Ks16AW1LBmx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdUyGcg7mnXnDe1S5E9M4XrXW1fWGz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfX5jnMqa7q6mfTVeRNsrCGPaCY1za", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfzsz5kTWF4fpySVXmdyPKtLTQyivP", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8LBaJTbfr94Q82v6XXCnwBZdhRBy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgchxd7RQcAaZ3bCYApD8VsNkFKsVPX", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYARpkZ2A3FjnaJGU3PTeXhbVE9hJF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGbivnTbRHaWuhm4k4ybjkb2YaHH2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjakEXLivhwWSoK2dta369D6t7dQyx", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUg3nu1LEwJohu3r1geq615goqc544", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoZFjt6cJSPEtpD6UB5yf7Teb6kcc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpjabGfW8Sqti4RLA2rHSnS3VfKVv", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7tqY7h49pgmxj7NvZsTWCryijkwT", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3MY9NyWLrwq6hdk93Jz6w6xhT32C", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1VmoUtvwani4rZAUGUbXScFgJ2bR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaeP8X1dveWDX5xRiWThRCLQhD9kSh", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZr69GvdASZFpAk34uc64MTwWSXQ1", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcceFMWWBE264Pn2HTiHfnHLRSefWe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaw2offYe7o4NfSLXwRVdBCthi4U3j", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMvWVJC8VCtSNDC7LF33q1XwAyvk", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvtjRTbs1rLMJehGtmhBGCE41TwHt", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSaQ8PSJR1XwtgQEBAKcLaCTeURj5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghA5vvLMgnnZ4FzH9QY3CzV7nkqNTz", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQYNa1meBnobRFVnc7DuYXkG8eRnc", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSSYDNQVt7QKTypbEkTfmR7evopN", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7g9YAHNUvBM1GC8JgdLbbQT491rM", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgihLPGWwKoyyJ9p2SLVyvZkAHA421k", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgecHrYCGjfCiPRFWLQA4DntCr5MT2i", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyQEgc7FuaeZsguMRk1HfGBVY1EMq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtVHQhcucuCA49f1coYTkBo1FLs4u", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRFYWK4QMeK8jMSUEbo1y69kfXWvw", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ2LduXL8YBQfMujZjgDBLbCHvdVZ", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYw3gjo4ogHqS54H9cZvTuGvZi12sy", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gxmRfc9AAiviEewUnko7xqcXsb5", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKxGqkmkz6zth5jJ6X81udCi1UsDe", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeM3z2eoYoLcbx1haYSaTk3RXp6S8", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbAdybgrMU6oh2MudWFy6wQgDQVmq", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPqUyvdm8RBwhwBGhpHDnyLaHGV94", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoahp27sn9WhctpW1HVrQjiSGXXr2", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzLFHEChWxRe8r8TiFyTMZWSqMkXF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA9HaesM6Ri96J7TEJaFNzKgxZ1ir", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWTWHPYvBgfxPrvska52E3g4Lq3ns", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5bxKtpttYUwCe1nQWd22nCsGp4fR", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX3qpBEEPPkDtw13soocedTMCdGfnF", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEACXcQHSG2LpuLNyuanhwSjWzvKa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfkY3LAz5im93bqi4Ue3HJ2RCo15Xu", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgifQ4HxxZEEADQvGftzbY764q88bpa", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggU5yuK52ao4Liu2AWCnyumcHtd4Fg", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHsHbhtphD8ijBQtpAg6fdZn3ZxRr", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdtc1AKUbWux1gUoHiwq6c6w8Z2j5q", + "amount": 100000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1arWWC8dKDUSG6veHN8BgxTnhjSu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8xqKuEeaKpMbS8e8g4Kdu87ooAc9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfpUp8Zr7d9a9YsxbWa5UwELdxNQtG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhCqoPqn2A94n1AWFDLviKPLpwKwu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8hbQqYfBkUYxvR7hEfoQB8WNuXPt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTx8bEqvKKSE4kXpt4Sw5kWx9Hn4sq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjU9VPMZe32YQ6HT5AukGtowRvnX5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYS8oW2Lxt5TKyfVDqLmWwB4LY1Se", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYq2Fv6t1U4tDQNJonN1TD8CVBXoD6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAfxHaYH1ZEDfhtoFCJn6SaWYzMen", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNHkXrzU66ayVrosL1wcAJQTP2rHD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8pXfjj6JYcsrvEbQzigSpDoQm18Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUf2MrwE4pS99vhnVU74a7dEjvXPAK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX8zrXpmaUZZZF7RMWr3dDcYq7eENf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggrsje4dYMdj95ucE7fpd3dtWq7tj3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmsAdzxBt2kVDkzkpkprXzcdiHJd2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNin4pFyvMaPuurNXE7LExCbRxib6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHEETWFDAX65Bct5iApbqv1oGiUy9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtpw6t7dqNHFuV1SA6m6pwUMHMiFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayY8PUcpnPYhJS34x4tQbCg4yDnv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRCuzM5ZNNyimpNdQQYybYoAJ7JgD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsrfMs8z6e4coBWPSPQRZBknwaGiu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZS5WMwXa4NG1EUGi9kWeFwJVJqVkr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYjHCEutpB7KekpQ8HvRCrCofycBV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWZpsQXDs6EkNVYcn9mQ4XoQxafA5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKdG7tGdSbTbRTiA8Vf3NHjfirJPx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXLtTuZvkz13FE8tRKZSsVJExe8He", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQg7v2GBPVvRopS25Ssk5XY3X2JaY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVcYkoXkzqHkjHR9XW6qxNKPDuwaE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX99P6hTaGZu2u5CTpHipgcHoYke47", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijBWaKpNPF7CpuzUfgYLoHnS6pweo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyXX2VWHg45EGTvKfLZCk8atVnSwN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4SffgMm8M4vr4uLTFHeBgrNeMzgh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5MjzG3AVmqc4eDkKq2XeyizneJdp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtB97y37rAVFTnFj8dBLiUtmgLxrN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgggzo3sc3CfgKA1mxbGYvJzhTUy4eJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHjjdYpUDLPUekDyoc2CULBuJPqRf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhCTna7wEMmtqNkesyL9jCCf1k8gj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUm4VYR19h4Aap9sCd3c67y6uSTn9r", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8YuAhzqcC5JSsrduBW6xy4HkjM7a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1TCdZAy6a6eFDbD6gPk2MQPf8Z8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgchN6H6XKeBgzQpvZjd8LEN24UNmHC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaS7eg7fh97f7sAsNvBVEUcdppur21", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLt4r9MFLK9nJoZ2gqYZzEq6WkMcy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ThXJvtdrKp92G9Hyu47SLP48ZYz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqjV8XAUMAxPgngPwfQey769N5xTZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRwqMAi9u2nUTnoiXWiAaeLScCtwy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGtpcXdiPwP62jWZnjteq4Fd8gTsM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZc8R4JJQ8dtXBmqYShkDfP44zNdWG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7WYUG4XyJQYTezQXzkToxzw4g8d3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHREGAqgAzuSvxjmG9sXmdEEAUgH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghaqQWvScYHZuUiRhqa41sCqsEp4G8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxmXpdRPgR7sqBNPeYDFT4CcS83Ju", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggNf1zWcu5AcqnYJe6UnRbqybNms9A", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahugM2HsXUhH8CzZLPXHFi9GpnMxF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2GaTv5ixwDNsehptxL651jWbVMbr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitV53cuYHSZ8myFhuVMUDR8S14kpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvzPW58kxcYR5H61PyqVLP4vLhh8n", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaguHQXsXJqKA5fQWN3ufbvtwGec3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLMz646VpQCD9x2xi9JvJj2Pq7i3c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd455R5iAioVPDXxw7J3QEKrNJAX5b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgatK7bcmQGxwzsS7BXP9ya1KQPq2RA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjv3Tpn18fk3rdxAg8ScN2UoKpTaU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgge4siEZTSGEewdiHq9fyGZQvsE1h9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGJf5e6d6by6v1Gxv3ZeCV2yYsU2L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWfeB3cDM6N2E7t3sVFKQnWWcbgM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfqecjn2vHBwi7xx5vzDBjwq9nayYs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv5mCNJijWTBFz4EhinAmKJ9wsj8L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUMsborHq96zxWG1JiXZv478K6Yu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCQMwcTyRKhpcTe2KbwpzW7Na6WMq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1paL8gqYyyT2FtzAQfC7rn352RYQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbb2Cazee2SQYcFzymHAanFcWUM8Pw", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUapW7pVAudJo4TXtPTx7sjheZvBD8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6VbCd5THVt1QhAHhPTyWoMwzr1VU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidsTtLQAyCDFov2Dsy4gTouma2wro", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7V61T44b3ECR4HXRhot7AhscgsDF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhkGNwjC8ep1qAffzonyXW6XKeFSb", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgae5CKSfos8kYr1N3GPa9yPxemKKM5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRToaqCKuECkipiGdNH7aNuMqjFiJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzdeKZo1brrFy2cihPTQ8Mysz1Lg4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXtBuaPmXhgzL7WrB14n4RRXxinQPX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdVuUKu1qAGA1UvdRbH3zjcyexALqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiz6dxSpZZrAFAZDzRBNbUA6nsGZdi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciPQxctxMKZWQ4TdahNe5LZiteaLn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegdHAMNbnmREVwgLgs3g9xrHHM5Y1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5q1uCvmGYzs4nm8pcYBWeyVbvbkY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZN4Z8sqbM7W8ssD6SP5Hwzadssiac", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbzn252raKgnF3hm8cUJhVcSnK9DDE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4drcLtMeVMU7F11wbGVqdHR83Raj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaPU1SpHzA5jQT7h6scxm2rZC3YaL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYbTqkVMhdeaaoL3dnsM7fdZ79tF2z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggoSgPzhGYv3zjaXJBspcvekDHLCLL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghUZdzytSsCeHV1dYVJNADoUhJaLQQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVENF5timD4vTsJdxJLJs9hiXNcrZ2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnmUcqfS3tkKddMEj4zixgWoGt85f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURMfGyrEhvKKqRukyWHPw478cPbZY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtmRCMtpm1hZ6dqA2R1a4mGVFYPTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHWCYawFFkfKCS65foGv8htbzJskN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgau9mpqXWr7sFK87jsWUdmVEw9qkSQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfwx3LoFtSvnxk4c8EapXaki2hMiSN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpCYxjCjUHnNTGZ2krp5gYMCbHVpn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgidtfQoA3EjzTtaEe4rqdbPwyrsF6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgggtUb89CnJb4FFNXbj72nGq3AqzxR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwUL45si9rZKMPjD1zdSCxgDt2NwU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhDkSfZa3VZLjXiD2vxregxvRhbs3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZhMWgu2A6JjTjvmpH1Gc2CuDKFEe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQioih62CBiZCgxth2cAEjsXxSNe1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgedDk1EMHdX7r1DhBPTomb9bSwzw3v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXu63y1ar57HQt2cb5FP8NC5RKvX53", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ9zzRh7ozs859rrucjVgiunhAt8T", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYMV3wcLnBRftzgEHksAhbT7hLzNN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdC8hddvJK88si5o4nyisujPNfSNaG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggyY8PHnZGBpfHa6VGbsnXaFTg6TWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4mCLkLUFKx1y2gPYBP3rYPtfjGep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7Zo5i7Q7TTkwWbz351wc86uxBmu9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiy3U61zScdQzmUGQA1DjTvNULxZa8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDcPeacKYtiEYTutxiuxyCdvMgzhx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTGqWKM8R3idZHxwH9DXYUi3ALPcn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcmpEsu4cfqT39xM3xUkBXy7nM6vXo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiMGE9UEKnN29AZGdxs4aqjfG62azR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgMv73qbdysUYyHC3ZdNSj8i5n2pK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJGEDMcJyFJ3e483V88CTT2k6pdx1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhjnqiQDSTbhYANFWosocqkSYxWzf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazhHLT3TZPehFTjB4p6Uq9PWCve5G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR5hi9J8nkBFV2CsdkCnjgsW6QHDV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX5hFhPxVGGaLJpQbyS79ZvjFTNUo5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9zoA6iisqwYzab3sdLgwfsVJMqyH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhR4DxnaKjQcmHheiYX87mLp7dRXZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVwn6XmLQZoD2UNC8TiUF7QmWjMJc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXk3MxhWGXFcWBj5HurpPdTLRZTduH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarPHaRJobfC78u48gP1VJU25F4D5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBGDxp4RFZAUNKasxc2RanmRCe8PM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyFDqzUA7r9ngVQohcv8TpkGowMWQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKqfJAuQSBF25k7YKNrjmWMJ2GFxx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbUkQ7N2cZyrGMaabCwJzCYHtppuy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLZQaVkDcnasBkc48DkQ6zP5Uhr7w", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZybqoqDhHejFDFcoJB8CPbeajEc12", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNYwQn8vnHwoGcC3HE8y7Ka6hyhWW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJQdtE68MoMHHaJHBPdV3g3NiD1k9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6azhmHzsNxEenA5SyC5YrigFCZ6J", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp3A7fHvPHTdP5ToJyh9BSJF88YV5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDxVEMC17XmxcYiuyqWsy5qjncQSK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdJ1okX3FTepRnG2bbxnPwsfmHU5V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR14MiUa4qBGSXZkHZwxk4BYzZidr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghs8iyy5jj8g5WpEFrx6SEAEV1PmBZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgebvEpamNdwghaAvsdMLHG6E2HFK2d", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhVfDGcomKKAu58Gc1reFfGdy3xCY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTcRSdVN11vzLvu6H8ypwvpB2fT7b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5vf7TSEubrmJxUHTELPZn5pya4Y9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwdvtS5AZj1o9KTPJ12nHt3sdYa87", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgint9EBMHFZjFR3GkmZUvhLBKKcaPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdv2UVrLTXZpfZwS2gC2uBLAn1ih6G", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5fWU4kFJWHLEwzX88Fk8GXc32Vxe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzJ7Qjnd7MNLv9NsKKcYMARzMFUxA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUo2Ga8YviiTA4KaYXret3PnCztqU3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeDAwSKmxb4zkb4jfEag13WEuui5YL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghE42PrgKLfusre4A3rNBPhVxQaJ4E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgevE1fiuNGSUaSnGcufQNWRmJ8ZiAd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge54xsNS7KhAYWbook4jMiSvheKyLh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4syikSVhVQnsyVBj3pSSGM5TkE2v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUguXpXN6jG34DK8CWfCq3e2tKGPmi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6tjXBLJoy4wk7sBRaeddm4rVHGzv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgebhvh8SNWJRj5WyD4HUUm7ugFjdB8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWVNq5Twvry8ZbWSNZqmz6WBNhcdY5", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2cxHUvfonTYau8Ko2HVcGfUsx6k3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpRNyzrrv2y1by9s1WzTzNhnuL2Hz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghpDEXon5zyACb86qB2jJS3Hx1gCHT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUCdAGeMKGbYCmYZVix2eDpYNgbasg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUE7SrXmCkFn31TvxKoUvFhfsYovs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3si425HcrbFbUkANVf3TtKMc94WU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYM5tH8SgvQGiDWY1SThCbbqQ2krT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggYTPgxvaHxBMsdnm8cLAugHYxGCkV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeKRVinPEFhKmhdU5xEh3wFi3DFanT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2GT2BMveNZsUacipwyK28fGzYLWn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepDw5Bqax3w7mAPn5ThjExNJP8KYm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtLQ993HS2TTSpMhrim6nAjMb13ut", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGjvaBdiBrV6XnkNaG74uDsE33rko", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoGLqRb8YaPQJkDRyKg4YB1xF8UwB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgezYhGhTXj2iaMxhJmjQx7jPP2H8mG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN81eaBMPRx54zuiKNg1ViNuRyyua", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCo8kegRqA7Q3qDXMpqiA27qsmNHy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKKG2y7dJWwPwhpsrndqfzcVoksES", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURfUzV94fWaLFCv5LbkDCaHwGB784", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBitrrzJGEnSmbTWwmthpZ4mB6Xvh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjJAepa4jBaQC5uQHmGYJQgBvNdJhS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggXWC3q4v8Wo6jsbTuC3pt7Z8giC39", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCKnhWkH6ptV1icCMTZ7GrhwoHrab", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHY9fAjaTv9oy1ZLVXnWHAE4TqQtm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU44cEkPGZuVo4NNNQPYkxxtrAWqDg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9pgM2tM1y271sFm87YmUMvFcSLMF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYBL88iiYp4TQdcwmyTZ8MQWfLMft", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hght3zpQj8t4UCBXpEWgKxZvRfWUzoU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggaADH3ykyri5mHdxiW6p5p3nyM7Fj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGhv8jdBZ4qB1LvdWKnoAg5S2XG41", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmrS8Eushqg8YPzJkMnU95VXkk4LN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcbh8wWWP5MFaAn5TX7yVBCjckPWFQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR6br756zCHrWey4UDvyLFQjPH7rq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXexTTLeHjEwcdASVCPP1Xibuc1pL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrookM5p75EPvRNJhoEgEdVT3YFSi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghM1N1Pg5quwVgEK8Mh3WKZCQAafGs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaha9gncyAAs49DrRbfKK71J6oVQPV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeiZbqQNAeT1MAqYDjramEyYTN1uz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkxELffTkw77sWK63hGK8Xy329sUt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQhXajJojAgyrQSQDnnAm3oaJLCe6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabBDBMiohaZEodLajJNeGrC5xNnPm", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9JXvJpiqdZ52iGHh5V47RxRe7B6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5XA4C8xQ9hQfT84c3FYij4ChHKHs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVY957ZDrLyrPkAUxikwR7GMngX5g3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfZWCm6Ys42U8yRUv5UEA6gen1tdq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyJETN9rNwUAUcmmXYHtMNJNev3gs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZieCfRbZjpZX1e53ehRsvQ187tSuL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZdAXzwrYw7yVsD8M4nuFawSUjpDfT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKXQPeaPUBDDGShw9fwegVLrnCDJp", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM6QAbcsFNASTAnSexytJUKwqTkig", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuvyDXRayDCEFQXzaEmJ7gaoBgoGL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2fJpP7sh4YBXa8XwvZDffsE4Gh6B", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZScCUxAn4bEydgCiGC3oDFbbH8y1U", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiu4n3pEhDyW9h5CgSZjFsFsKZows1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBbeLCrjPeENk9KfHAoWgnyeZrUTy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghMVT4CqsNm3UBQUwKo8vQGXBwy2Wr", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDC3btiFLW6bjsf7B2BsoWoW87AAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtkpxiyRpgVM8ZG1JrCXL2gWRLuyt", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggeywHCB3RnEBdfeUL1Kb98fZCm39f", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKMLBDp9ZWFSzWP8EA3fd8Ay8W2XV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNJoMkAuKiEBL7DsGc2Dp9AHdPDRM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5Pq3EDkZn2tdFCVu1GkLgXuMQ54V", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcoCnYNfDe9BgiGMjHyzCq6VcaMtiv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUokN9zv1NtHRS7G4KTRiKnPEkje1H", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkWqfQUHsw1vLG88EgQPG19Xn2o9K", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW8N4yNeP8nU6itHvvn6XbyghirzJL", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTt1KwbZqbui1H4pjWgzteofZiusk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmB6xVtw7k6ckpR36fCTdkvbbfoBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJZx7syyTZUi42XWTu2e6bZiNJhyC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUQ46WJ6EWuWR4qsYiCT3ejicMxCq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMH7RdNZxBKRV8BgNRgiWLe2RXyPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL4shFNjiYDUuSLCYeSoS1Qu4igKx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4chgY4LwcCKnnHxUVsaSmjRhMA1y", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFyfJJ8C84yRm98wVsvL8HmErtCHa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2GTA1stSu19o1Yce5Ytz8cn9CyNR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVLousWi9y7vT9LpfoVRxEVh5KPeh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWuhYiEUM15U7Lu1AMM2dTeXGzXHkD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg87GQ29rk2b2VGXR9U1SdKdJDCMwq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgboZBDzDF6Rb5CjoEsCJMydaGQ9dqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYi7uvkbYN89DaDo7ZvbNAcEP9E5JT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCZ7KfoZKuH64L4ZHx7oHycmejqqf", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbiZdCy7hu9upgNyUr4X2h4xKVM989", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUd8TpjgmZfXhKRYkSXzfZK6KwZt7c", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfw2n4Zb4v552icWPbGUsmK1rwuP9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9phEQBAoQpcMGjNxJWS3CTHaavGq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgasb1YCDRnWdnSYDZQZDJrkJGxSshu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWA3NaGvMN7DAzmENo6WQvqs1mxyxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi4XRBXAV5SELk16tBaPo1ry5KApP3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiwUxYXErkpS77N79JG8YK3YwsFk9E", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZrZb8yabQUctmu9XSnFV7i6WD1ffu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYZqzJpgGwHSbGZPtsespBNokRHq15", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcvMc1RTasUS19QExqZrEV6SgwLxi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrhyav2qvPdE5Y9EVXUN9UV9bzRA8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZpw4yyi2rPuFcKjQtVx38zCAShNL2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtPhbzWrB1cHXtxjtHiz1zmvxkdfX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadbKkbr24FTzVYxaXiMifyu3p5bT3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2Q4fpGJEWvDszRkDvX69MZ6UHVUG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNDD2zD8RvBVgzzhXHq77WACsdYfc", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAHzCpoSpnonY1LLaacBpgJYMphda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNzqiSmaReKDQ78BabVKcbcwDA2nS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyCH2K9ji2iehioZ99a7hUw1BzRBk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge37MaoUb8bfiK7fbn4hHigS1tPmqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1ESgUPyGXE4sM6UoqfQKaBzRGc7v", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEt9Thyk72aaYMPFGVYf2ErKHkmeg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBrjDBzXjyca5LZUTiwcfeddsGkng", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPznzhvUro5iQYkhh28Sawqu6zKqJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhgUhsGqP5WCpdacYLVYS3HFgXP3S", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggdCcFMgaAkdVT9QbNzznGyG7j45xn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjC4EfVLgqnXZ44EH91vaPXsEBdj5L", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWuAxYEv7FQaijBWZWWFzeVu4zeoY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSPHjC47FmMh3nMEcCbaEweHqschi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1RLtfPbkFfSURfhp9tLRUq1PwYbC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzy6XbLRd5gKnym1v9W8ZpTXuwqt6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyvU9pvMHrJvh1yJfwsnsotTufZTE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcAf1o49BpmAgxKkU3ipzb3kLceGcD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrCP5ksKqPv9mVxb8Ha7bHpYPQNAW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3x7w83cBgT5nU3UUoQxuRi3S3yZe", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDn4znot81ydx7rRFVVEyWY2tppNg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWEbfyTPfy5YHdaJQGPk5V8wKbdRbK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjS5WHDTBFH432KaVfwxFcyH7ntB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvGW48KB1fWhkDGuBG6QhQRSVRcEV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZrQ4efXrCPUsoTGhLw8SsFVjzohK", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerDcwX4WFAP4Q1847LwRJzHWvCKxo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtwyWFL5RYAKNDH46fGopwQBaWCob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixSqJHW9E85NxW5xiNU84M1mnr9zC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZDmYczgQZmp4pe2hiawNnBwBZSJhB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYS4syefUEt9KtEcEDvcTg6oQkbqn", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJXEN9dRyNj2QBu9rgP9Hh29kqkN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCo4tPyJVFz495YGqsU4EQPF2wizv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJiPGqQ4H8CbP4pgaa1F9DrhoFktD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged1tyHy7BaxtHsnNwxqBLtJ9kDWVY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKbkmYUW2188xT6Q9VBaRGUvH1jQR", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEuwigVH3VAJaVRbqjFJnU6X4x3fS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJMPGpeZCjtWeeUPzgU55kxJvPmpy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgizSDZRUZUWhgzBgjcLbR9N5AWVUZV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxGZc25wYJMDREtg86ap2kirUPsWd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgek2QJchwFL16CxBMkKAdCDS1BHCaS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepZ899hoq1aQqea1HBTUNkH1ae8dv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWrNoNieApZqcvxs4S5BeMmvG8ora", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjcBA7SDvXsAp6uKZUTaRUdSbhz3Hi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTr2T2tJst6VWoba67bRdi7raqRBG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXAUawKjsXzQeAaSacLbPsw4TAHsz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbWP64BTUykBHRRQYpEdBQi7fX4t5i", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNBkLzCe5s7AjLsmayj4EzUnZwdj9", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg9pxzd2Dx7yRdUUdLcXsbtXNGXQ11", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfePaSeKwtm9QjmS2xvURh6ss1Dgxh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX37tdMTzAsP3jNY696ZSz9SDmAKCo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6FeeZvnHuPp9BKfmq5SdxWs3oAWV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXyw3dmyTHvLDRz5Qiv3R48SeZ2Hj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVbYoxBEnerxs7UokbC8LmWK8hBhu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2NcswKpupC2AxzFTHUVtrBJoHKZu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1mQvut7FBcyQfHzqXcRY76D5GCBa", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3pYjKy4Yk2XBuEJnzw9R5AzdmxPN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYWx9jmwhPMW1aMdhCvQ6mQtdfmv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWgnUyTLut79WhLWqmsbLL2N5XQfBW", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganJqaWdPGGMoxWMvkvWrwnKoLcVeT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgazzqw3MibuKMKHPwAvXQjjsqjRTda", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgahcjcoGsoLNb3KGXX28y6qNooK1Zh", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghV5T7gsUuZ1ctRPM2as517jUVbjUu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6CW7dGPDDXYkT9UpNfukMbBnhF3o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgck2bCR5oDqPMtCDWuNRTerE5BgVAE", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaimrEtes2o7UoXS1i3ZgPXw8q1Tid", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9bC8CyuGRAPuW9qnaDngXau5K8it", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTSaJuguHjgkgWpPSQ2URcgKjhpUs", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2KU5GVAkjV1rcuk3VV1n52VWixy2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctJ18hCMBVmhNjkk5RLGjAzhc1s9x", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7ktUCzFtmgCyU2BJiERugQ7Ca36Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCLZNCwuijge9CkbnC4CyTwsELz3N", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRs1Bm9kK6NnSfDgUXfYt8M6y1AGv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW39P1Xa1xViKoMVbBVV4KSt1MGUam", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWdyBHKqBJpU86QN3tSJMRw97quKu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiXpc2SWKMYvrxBMcsNmpvTf2f383", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVkXggkKXBjJk1mLFv3M9T346MaeF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZzTQ8PpPuPL95g3hWirCNcXSXxqC", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJdtW14JHA67Z9WB5nUcA5MvjoNmy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVE46oBZDv5HKyS7PbSRQmLiSR5V6Z", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghWxZyox92gevcaAxR2LL1cEgRwxWN", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUt1fWWxgxBkiKUKcN1XH3cnFcMPT", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZj74VZTx9MZARFbur8V1F4SweNZ7o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUk7BrjbrbqsqSSf34tk66LB6zijoF", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMjTL1xz8P439stxaXDK1tVse5Wd8", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghkRdnKxEeoQvG6Hv6Qkdt2RDroJKM", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghW7SLQjSftA5FHRcSrUsG21cCdp2k", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZQRekpbABW83DxxubVrXxt7gTNhU", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfxqyWvqRNz9G3H9AydXHM2997xqep", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggR3UPB5dsZkBTRhdPva8iWqynT1cd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcp4DpNZJaHUebMA9XaEWbqPHnafSS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgBWUqw3eb7vJkj55orvW8eUH58Ga", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLapb2SE75zNwhweJq3KnMNP3r4m3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULKSPDRQbjLQuQaUnyiVkTobysW3D", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXZ8bh1teeCKs97HxFZegZfBi2JGj", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfCNfARjmRLi4YR8FtocnTZNJsYsq", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwaPQoXMWGBsVYsTVdZ8WoeRaEkTS", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWtYAwKaU2XsiV53osaqCnAXEGNGQ4", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbF4w9BxFVx7zPT9dviEdGauv9MnKB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA5Js2Q64DYCtcStpNWaaYsRSDXw6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUZz7sKjHyKrdQiewKa89HdkNqcz5o", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafSzviLArg4xXPfFcrTsL3C4P1xns", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY1Yu94D8tWbgGjgfrmDZPbmoVcmA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqw838RfAVY365KX5UHP6nrCu1jQv", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiPwFRPCAzqgRbwtYH1kdyMD75tkAg", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWx1hrMJ2Npr97jiGTbnGsEYz7nMk7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfq2apuKP6zj7cfWwGM78YPucKnD4b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLDfRbQWw37uiFAHF7sZZcwTaPViX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdHZUUs4sQfZnQc6VjncVfYxuw8MQZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW9pExD8pPhLj4eMAcicqFPvJgsMY", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTh8zKkkT4394NhxLEQrjYt1Si4C2", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8V8poUQaD36yb2ua9xQrQfRowVDi", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCZnrLuDBL7Li6zS2chdeApE1eRmD", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhV23yVJ2Wkb2J9hKvLbnGn1nMn9e", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLiKQLUSY96seQj6kXPHQGUV5jACk", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUMxnXb3ERQDaGA6t4JU6nbeMtMd1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWHg2rvLqvPFZJgkf2eTpML1jYRob", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBywBP8bK2Ws3SwBv4iqHEeHwMsWo", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT4bjXf2zprMiMespxC6iqHgtqe79", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbP5PAsKnjVhDX5wuytSVVhFa57NqX", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUyHZZaNxB4BeuXCDBB2oGKkZkMSXB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf84iv7BmHXV6hA1o8B3BNZfGUEfAu", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUsdEW652aiqLYcWNrBznPhL7vbRz3", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbWNHVdt1Vi5yovyEDc1zF1dWfnxd", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVU2s4jZQYJWJ5GUVSCeHgmzJhtCkG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhyEUWANTiLFVDy9orRNsm7Lx99o7", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7xMxajY7iQmWzqEZkvszMqoqpLjH", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb8Wi6ptgAr75BocWTtKq7hSzReFnx", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXyY73LtAqD1Pd9fUz2ukoEgyRaNHV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqfjVqdk3DdwgxHzCCKwDrr3wNMZ1", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggW7s6cd52fydZcL1LbqfEFnqU4e2t", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgUxKpfborEMryQqZ4jsoeakfW45a", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqRfJTJCwu1b4pUscMFA5GwzSUfjA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggA2khF7DHcvdX5weWBeH9vm28gKdA", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiL4Ddthg1CxjRA4gXtPHfDAgBskQ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWmAfd4jD68wYNNECMtbgct2LsEHeJ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAqBuAHxcknqpvbW75yfuKYk8pUaZ", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFNxtyXAyyHbvwu9GRRspZNUeNbkB", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMwxoFkdzKqQV8LBMcQmMgjMgZ71b", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqRLD9oaiqRVahk365wXYuvP9WXyy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7dnBdQidaPzUyGQecmpLEpfpJydV", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWimUiWaNTXihAYPewAK8ncgUzAKG", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUmFc14NkvwQUnWCqYaAGdT9MHSPy", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ2C7g42VFkNaJ2up9HM9JgNoX7et", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbxyx6WV5wwsFUp6QnXeU1bi8Fe6Qz", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9HXcYcqq1LWpAvY4NHk8NfVpAfP6", + "amount": 99900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg55r8fJHUM47iuo5DGQWNZ4zhGJfT", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjKN1L8GyXbjJKtZ3FsiaNWMcFS9bZ", + "amount": 99800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjSFTFXWkmiJFhuVe9PMM3tXjvyMXW", + "amount": 99766150, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPMpw5EqQ1LYm2y3VcyjCdXDtNoFb", + "amount": 99757675, + "lockTime": 0 + }, + { + "address": "NULSd6HghUanqcvwU8GXD9ZmjQfLYKMHkqN1w", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePESyFFrS7sEu5dvUEeQsTyQ8Bdw3", + "amount": 99700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggDA56V8no7HpFumAXotiKq7UaYkEg", + "amount": 99654300, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6etQTZSzsWDtm9EHPu4mvvzstGHj", + "amount": 99600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZGmPKdKcVqSUpRWc7yS7mCSpMBro", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgabQWUVpRQronKuLfGSg1HensWYueS", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHM4UqPTvbBuMsSwZjrKAvPXv2drX", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvjeJWTJKwq3hKPZ9AAxnkZwAxouk", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm8VFQmRsjDTfJYABgsugvi1Rc9nt", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HggvNjNuZeJjcdYWCRTWbo94x3Gp6ek", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXARmmRciRZf9nEmrDZ2dF1AGZMq5X", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckaZTYqDjP3NMajpU7hCdU124AFzi", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmXcnw1GQpFdynLyoFRwnkGxq5hZc", + "amount": 99500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcYerYHiWP5Sg6xZQsLVcswvmkcGk", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHbHTKPCgZZbz8AUsovdbX9No1Rki", + "amount": 99400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "amount": 99293597, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDEQcnpEKBiz52FnY4yF1XNvNZSF4", + "amount": 99205961, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwFzzqLPy1prENbobySJdmmNhrvos", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8MTtEZvFaoaJZsxNafLJHxgsZNvQ", + "amount": 99100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj91CEoMFCaQujXTxQeMEQJM9mZDvE", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2maYZDiNzzgAtEfXY1n9DSaNnyXC", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBMPnCfkBu94KQVymLfwPA9HmeRB6", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaWCLgnQkWXcs2erw3SMdpa5GE6zQ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwstDJ8cHisNwxftjXgAgHCXkS22y", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMxKe7fQtXnt4H22v4kARmAGXY1eM", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCX4Vm4FKNqLW7fYSdccgngXwyabJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbgDGup5Vrx9ED9N15FyvjYvrm4Ckc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejdqjxqcz5gGTnW5gVeGh76R7qyNc", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGQj8r3ZHHpxrYApAGRk8iS3oJWB", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDS2DczoeLczVZprHL3Cn6FwKPfSq", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfutUAbCCQ5c7fkah1DRKTVbcRrwR5", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJJa4Qqca5aJ13YYWVB7FR5yPqzFH", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCoTXCSLQnGzz6kQFoWxhar5ECZ7g", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgik92TE4Wsqw47AQ7Jhe1wPsq4f7tJ", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjn5jXK5ubF3W7dpZgthBJ8Tcp2Hu", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQvDr9PZ4SGXkRqyPQvpKoZEeghpA", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghJaEcMRPGnxfV3Kz2SjA3gWGcTkn", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhiUjJCcpFfC7APYR3pD3LFg3oxG1", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdQ2Zc7GNKLySM7U36p6hZSCijeA5c", + "amount": 99000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "amount": 98945310, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXzX5q8Quypk1qVUMLTKEGwnnjzo5", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSqS4yjGFWBbxU8Kdt6P2rwqLW369", + "amount": 98900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepkUy4sn2rFdUeBDWfw8G1CEzCb2q", + "amount": 98800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCV97SiHLWFPQBSMnW524Qx7aSw2F", + "amount": 98755600, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtdwecKWNobt1L6jdjDL4jzGy4JtS", + "amount": 98518990, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNrd2r798smpc1SvofxMzrbw1LyxH", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNNv3fwfote5FrDeAes7ieURoMB2P", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ8DgVXDBLZLwC8qkmJ7r5Mdim9RS", + "amount": 98500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKaU9RD2r4Zx1ju8TM6hPwYzwTzsq", + "amount": 98300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2SkUgdNqm4BwqXiBmSrF6gQoGp95", + "amount": 98277516, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqXSN2H9TBQiUSBmPBsFFpAaLkxwM", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb55j4eKEbw3qQbaL6pcvX2rDC4Y8e", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZUGaPrQv626e92faLANnT38nnYuZ", + "amount": 98000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "amount": 97900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiq5MQdWv8GLkeekPHx2ZihhVK9XK6", + "amount": 97600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "amount": 97500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge8bnGaxQS5Zofymwn8MCQquwjUWMz", + "amount": 97140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWXqAKDCpRhsS6SUFcntiuu8Ua25Hk", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwhc14BiGj9Rdy22eokYN3E7D6Vct", + "amount": 97000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXdvH7utTE9v7aCDYUWKiS8LSzA9mo", + "amount": 96900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcadABeEsmjvdhP4WPEsPXRNNrZNNF", + "amount": 96828300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGc7K6UQcNmd7JwzirumFU65M8uF", + "amount": 96611000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitynpTNDJtQyWJwhqnxP1xHBGhrMm", + "amount": 96543495, + "lockTime": 0 + }, + { + "address": "NULSd6HgcfpAkd22FuVn7fxuxe8ZUkJvvHSfm", + "amount": 96400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "amount": 96163850, + "lockTime": 0 + }, + { + "address": "NULSd6HgUc422vob9VppGP5LwBevn5q41nrYa", + "amount": 95954991, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd4CMKv2ny9yd1SeEsbPfbjmmt76N", + "amount": 95867902, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "amount": 95863871, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8Pzb6rMdXJToRLdXzfLPVRy7xG79", + "amount": 95724927, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2hj1nTo8tQkrsdhFKoc4nnUJgqSK", + "amount": 95400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDyrvNWrya4MNV6DzUzyo33pf28AK", + "amount": 95385777, + "lockTime": 0 + }, + { + "address": "NULSd6HghKG7yp8jTi5BiTuc2eGh3YwWyFvbm", + "amount": 95260000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPJHpZujCgadteEmLpSuhMDaZ7eTG", + "amount": 95200000, + "lockTime": 0 + }, + { + "address": "NULSd6Hged8s55acEyf4K2Ww4ZKPp4rDg78EH", + "amount": 95130000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkRxyQdSSJiHmc6Vw5G7SY95g1iQj", + "amount": 94938692, + "lockTime": 0 + }, + { + "address": "NULSd6HgevkgLGx3m3uoQUeQ7U5ZquWFTMh42", + "amount": 94800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "amount": 94200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPZR291keP5XhuDUCnjNBbU5TJU9d", + "amount": 94015984, + "lockTime": 0 + }, + { + "address": "NULSd6HgVReAxnRsB1rYNuhS4tCsY4Ta462if", + "amount": 93901350, + "lockTime": 0 + }, + { + "address": "NULSd6HggKnNB3eKSYq3E6WUoTToifHYQ7gPo", + "amount": 93813255, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBfXyGq9cYxXedLwXjzvd314WNdLi", + "amount": 93800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcSHoPbn7xShjR9yWWaEm25qdtd9vd", + "amount": 93300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvwBC9vPjGHuETYysJJZD5Bkyuvos", + "amount": 93048510, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsQepyFUyLeGH3SfRfnb39c1RaPuU", + "amount": 92500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfi5z6KZ1uEkykEufoVAqu1MMg27Xy", + "amount": 91812514, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9qXSV61vmtzKpTUzckdMzCFM43rH", + "amount": 91811651, + "lockTime": 0 + }, + { + "address": "NULSd6HgTu6yYsJ4gTig6D4TUtsjVe6J6rAzv", + "amount": 91502145, + "lockTime": 0 + }, + { + "address": "NULSd6HgXA9ucB3pHA5imLUj3nhnGgv4GgVoS", + "amount": 91500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRT9Lyyk38KF9hZnf9K2w23ZXi8SK", + "amount": 91460053, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBpv5bkP24HCjQWD8YFbVQsPiUZJH", + "amount": 90900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbdQfTZ3GbNzW45RbBhbaQQAjZ2mM", + "amount": 90567300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5eopuxauaiEkFPdnNhXEqYrJssyB", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnK79sh47goiPi4oqxyPquFJQ1xHb", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPv17yzevcKRyLVXRbXkc4CFeQyZQ", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghEKo7vX158jUgrHGvj3VDjS3XY7HV", + "amount": 90000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTU2RgnPuNuYxDDUPRztMFBoHiaxF", + "amount": 89500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXHXehdE1qvTTideJHMhvwouueNU7Q", + "amount": 88858578, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4NdMwfHE8PyrZZSm8WNo8NtHFvsP", + "amount": 88708870, + "lockTime": 0 + }, + { + "address": "NULSd6HgdCBQ3coa8DmCNispEMkSeGnQmsji1", + "amount": 88189882, + "lockTime": 0 + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "amount": 88158538, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMTexoUgib6Lp5JKxHYP261TaRw7g", + "amount": 88000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQ9LpdAn6WLXGai35SiDQpTU92gZg", + "amount": 87800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKnMEmX714zESdcGTfPoqdgLsuiwo", + "amount": 87008984, + "lockTime": 0 + }, + { + "address": "NULSd6HgaRmpkSdUpGrPNVt7Kw9b8hBzmNj1u", + "amount": 86955575, + "lockTime": 0 + }, + { + "address": "NULSd6HgatjpgSwvRs8B8qCdXaQPw5VTpt9F2", + "amount": 86910000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzj5JW7PHmpqiZKpVHCQhW1FQzrg3", + "amount": 86700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ7ff4GndU41qw1C4zG8AiFNGWcm9", + "amount": 86611859, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjYUH3K6WyUCQ8xH5kpHWXPzkgfLL", + "amount": 86423688, + "lockTime": 0 + }, + { + "address": "NULSd6HggoezoJdfw8hro6GCEZBu4XGeVgXkE", + "amount": 86267696, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5NSNzn11d1G7rMLw526eehazymAQ", + "amount": 86000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqpzYifggvLnZobALYzzhzXkMcxPv", + "amount": 85799789, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdnb3ESG1R7ohdByBchXpUFjqDgxd5", + "amount": 85144041, + "lockTime": 0 + }, + { + "address": "NULSd6HgZWCMr1xfrwDQsim596n39eKaDcRb7", + "amount": 84916060, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9gnDKSxg4Jn4vHXAjU8E4HY1F7Kb", + "amount": 84752403, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "amount": 84714159, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7bEYiRqc27CghPcggoH1U1Z5ccgL", + "amount": 84682900, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBCSQrEpqemmXhLPzKhnGUWJ8i5Fz", + "amount": 84399999, + "lockTime": 0 + }, + { + "address": "NULSd6Hgid8Hee1ER251cXTTCoARNaNGahj1h", + "amount": 83154269, + "lockTime": 0 + }, + { + "address": "NULSd6HggP16ERYY34U5nFP1MBwRvgPouSwXd", + "amount": 82800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYEvQ8pjGtXXtyEjjmn32qHML15FX", + "amount": 82646161, + "lockTime": 0 + }, + { + "address": "NULSd6HgfixYrFYV4X98CY4Hdq4Xumi7p8KhG", + "amount": 82109033, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgJBtsewGQrD7X6fcoWJ94F7aexuo", + "amount": 81331335, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb35cbwXd73bnkSd3E47Z1Q37gyqre", + "amount": 81316286, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrXAED7EUZoTuvsKKiHL5E6Mcf1Ao", + "amount": 81102482, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqinnC2Zb2XPtGeJQMnofrhiL9LUX", + "amount": 80506363, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLfQE6trSaYg73ZAY5PwuJRdwPLpm", + "amount": 80390543, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6o7FUAjhKFWo5QJfkMUaWcUegC8h", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnVxZsFEfUHQ4qXFwrt89MRctiJgZ", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaZgqQnUjpY5moPwRPFCTjknF8JXT", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiW1Kf88cw2QEr8rjMDnDhktUqE8ZR", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrXL1ok5KWqVitoafcBt5qUwYRoWt", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgctxHuV5EB2sGkP9kr8mBwg6jnYa6p", + "amount": 80000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHe9qZUewUfHZp19ZarBtWD4tu86y", + "amount": 79800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUV6HJQiemgMqK5hczo41LoRy25Lae", + "amount": 79700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegSfrxEqBP5c7pqpJpoVNd8y6qQkw", + "amount": 79400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfCSNBPjcvGGoBzAGJkf15JUprdprF", + "amount": 79162270, + "lockTime": 0 + }, + { + "address": "NULSd6HgY6egdgtQQ6HWiDnc4gxFfRjdTo1Uy", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4zt8z2DwKo8oB3sSCCNcq1SaK1Sb", + "amount": 78900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQnCkJWSg5h8j2G3r1RqY5XtzqMis", + "amount": 78782485, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6MZGYqi2PH2UjdYvoyMT6AQigJfp", + "amount": 78575020, + "lockTime": 0 + }, + { + "address": "NULSd6HgV7seC1NhHfTsT6LiC7EDnRP5MLKuu", + "amount": 78300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXkZkKpE67FyjZb2ZoFi3XC5QQVGJ", + "amount": 78200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdWd49Q9roLhgPsmUodp9yocKizrZr", + "amount": 78168214, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4DAzPu2wJBVoCM8spcoDwbCasYbd", + "amount": 78037986, + "lockTime": 0 + }, + { + "address": "NULSd6HghUQMUhSjREJFq2T7pDNAwP5G62bcU", + "amount": 77490236, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCaPPtJQYrQRFcky2EwdSdqNtbdgz", + "amount": 77232268, + "lockTime": 0 + }, + { + "address": "NULSd6HgioFbvx9yMY9896qovS2dHzUVonGTx", + "amount": 77212434, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcfaujb8VWN7aUzbaRoaskhrFM189Y", + "amount": 77063237, + "lockTime": 0 + }, + { + "address": "NULSd6HgihdDS8cpnNbiHmbBAA44JUB4eZ6sa", + "amount": 75800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY8XQx26EQPhHKo3dPp26dTEHnC4qX", + "amount": 75789126, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6qLQCtXmgXty2xZDpKF17xBd4Frn", + "amount": 75507321, + "lockTime": 0 + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "amount": 75503913, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdis2EtvHqAirfWPhtRQfmazxDkHKk", + "amount": 75327407, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrF6kphSTjWGVzXNthH4okcycb2Fk", + "amount": 75290690, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTEWBngLxGvpQhvKE4qCyn8szEPPq", + "amount": 74930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZDe7qSsw44MM6vMWMhmELXYWjr", + "amount": 74720000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6n6QQZ8U8eWCBLkTteQkDje2GNLe", + "amount": 74437098, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhFvCwrccRWNTcgzDDn3Ysp5pgsKn", + "amount": 74400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfwVt9Bv2z5cz6k23K3UjHgryjEbvP", + "amount": 74348762, + "lockTime": 0 + }, + { + "address": "NULSd6HgYAaUxW287SZZ9C9oxDjYCim6rzfEx", + "amount": 74203000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUj5GKW7tBT2qoAXhtfRJMrqSi6Hbd", + "amount": 73729934, + "lockTime": 0 + }, + { + "address": "NULSd6HgUiEDUQJHEHBGW2Q4ZyP5Fw1tvNLsq", + "amount": 73000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYNKutq2vvL9BH3Q1FUFP3VBpiWpst", + "amount": 72927719, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8JztcrRajQhif6YXDjaCnQUEsS4t", + "amount": 72829725, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYovK2ZfBkZS9XP7G2UoU8TAvFTiH", + "amount": 72724127, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXkdVxfQ6YhMEZLBS7VbBXQvwRyyL", + "amount": 72434019, + "lockTime": 0 + }, + { + "address": "NULSd6HggqCzBT3VRjHcC5wVCxzHVB27qcYE2", + "amount": 72265633, + "lockTime": 0 + }, + { + "address": "NULSd6Hgied7ym6qMEfVzZanMaa9qeqA6TZSe", + "amount": 71929294, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRi5FNQj4fNRm6gi6TttGQx1ZZt8B", + "amount": 71635972, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2XFJRgnBhhwuNbDDuq5ZaQe9VSJw", + "amount": 71427784, + "lockTime": 0 + }, + { + "address": "NULSd6HggPBj81vPbX6yfZBf1g3CMLP2eczzg", + "amount": 71135469, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgk7j2V2mJfiJNdD4mAxF8RYdsfWt", + "amount": 71000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFFrBafupeakpEBGtM9yM5iBNAjfE", + "amount": 70603817, + "lockTime": 0 + }, + { + "address": "NULSd6HgePaVsWXxbKyG44A1AwK3Xt7ThoLu7", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhV8jirQhNoBdQnJnLZGUWVonHsFk", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnB8dZZaBpKEcuo6HDnzwJP16qr4o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQ6vtHHkVHen9VjwyTFVW6jJ35oVg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxn6RiQLaDBqn5ejAMJJA3ebkBnDt", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ8HHQrP2wMELtubvy81Z2yGfaxVnw", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKtbyXvA44tBGxzuUwdEsQGket7Qm", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdneBtbC8arm95iRgm3uJeNHc6cX93", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMK7Ny6wzkjVUzqjqA4RTa9Ackh3C", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVmLWvYhMtmq5BBnz331HH47ifhLP", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLA2FF97CMAfRH364is9j84cp99pb", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdkExfHDNjsmSyGpi3TFJMm4mp5BF", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf9evTojJxJ3yHw3d9rizmbgitFy5o", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfweNqNroo3xSDp7oZ7PpzyefStfg", + "amount": 70000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDojvqj5DbDjyksQ3ytbv9ho7XDy5", + "amount": 69946609, + "lockTime": 0 + }, + { + "address": "NULSd6HgcS148rS3AfJX9WyXQStmBXHG9wgSV", + "amount": 69881521, + "lockTime": 0 + }, + { + "address": "NULSd6HgYs1ZSGeBpz3R8fW5vghKjGaC624CX", + "amount": 69500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXS5DrW4fP1GDNYU7EJFuUZwFGe6o", + "amount": 69259733, + "lockTime": 0 + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfg8FRdSFZMyreTpqznScomd7PSL64", + "amount": 69000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUdnjqVVast5Voiir7BFNML98voL8", + "amount": 68899983, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaszkCLPSbPurNu4j5kyHp3Jr3XRv", + "amount": 68714000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcecUEonurSknZ1WfiGCte1FEXPy1x", + "amount": 68519123, + "lockTime": 0 + }, + { + "address": "NULSd6HgdNaWd6nn1qTUhr3z1kAGw6jJPhh6z", + "amount": 68390000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYhHVtfHU7Qdfp2saRNs6RLsqgD1PQ", + "amount": 68174169, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3vHML9VPYvUKJJzjN5fbyz9UmTJx", + "amount": 67478854, + "lockTime": 0 + }, + { + "address": "NULSd6HgckFY2GwcJqEYATEyUSRktFeKWRko3", + "amount": 67128000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCZHtzBiK4Xnmp1njefsBAidMrsPG", + "amount": 66917577, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvnecqWJa4PJUW22vfwrESwfP47iK", + "amount": 66664452, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyuRjR5ycNc2kD5BxSCWJRaoQfjg9", + "amount": 66622754, + "lockTime": 0 + }, + { + "address": "NULSd6HgX32moKzZr7aS4uFj2kS7tCDnp2zxr", + "amount": 66513098, + "lockTime": 0 + }, + { + "address": "NULSd6HgfLJfg7CGT3ne6DUuzwk5GZHjdwoi7", + "amount": 66200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeA8z6wShsVNgkyRRzGP7f6DuYFXyP", + "amount": 65531149, + "lockTime": 0 + }, + { + "address": "NULSd6HgijaGbHdHSX3NcUMTv3bLsp42H5N4S", + "amount": 65513922, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdd19RMu8tjk4kSXejAW8kfRiXeUQ3", + "amount": 65324590, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfw6BYCATeY69VvNmaNxFaUx4QZSVW", + "amount": 65286597, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg2E7QToBSDiKh9kBGyEXXY2w6TJvh", + "amount": 64975464, + "lockTime": 0 + }, + { + "address": "NULSd6HggWg3Ey7jTSx3JAwMc5w1zGBsuSXMx", + "amount": 64583611, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTrQJoNFsjVoso1s2kg2cfWFqxGym", + "amount": 64526697, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqQJtzXPajhmCvgZV8bE9gowmQDbB", + "amount": 63537395, + "lockTime": 0 + }, + { + "address": "NULSd6HgfL8RfQ7CHaLRxPiXS4vhQtjM1gsiz", + "amount": 63423172, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr5WmrxD9AVyUcuDDUcuX1o5rDLkt", + "amount": 62611136, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHuyafVyiZ1ddea19CNjC24PgYaCB", + "amount": 62397230, + "lockTime": 0 + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "amount": 62291375, + "lockTime": 0 + }, + { + "address": "NULSd6HgUfvhB5NGCiboAJaJaeeTzKFTKTetX", + "amount": 61480427, + "lockTime": 0 + }, + { + "address": "NULSd6HgiobEEa8edSx4Jy8qG5ecNS1aTb2cc", + "amount": 61300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SDjNiCM4tH8KwnHVxvFWc4KzaFN", + "amount": 61226173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "amount": 61211118, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGBsDCftUZJwkmVKChs3LpNXz4dU", + "amount": 61085700, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfj6ABuWEMa1S7fivT8k6CD5HXMttn", + "amount": 60882643, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnS7N9S38A42iekK2LwitrUZG542W", + "amount": 60676916, + "lockTime": 0 + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "amount": 60415849, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoHvPjMpuW2YLp3JZhyh5bT82zucW", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW45xzm6u7NGKk9Nomv7XmdwLZwJKS", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt6JzmWCMf3d9oFVZR4WD8htcpL1p", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1BNSWKTpcLBJhK5HMnEE39mjmNSL", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrEyEAFNbZkHJYo2FkgEPoQ5fJLxd", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWZYQoNKCL1kc76yYmt7sDuVDNCKm", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXkt1dDFT5BRPPBhWuxBaWhqScmJCZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEbGe3xfs14apziYqCBFj6V2GTzR6", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGpJ9QrwBwzkMzhcFxEduKMzocNFZ", + "amount": 60000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW9a9JLzZnZdaKHL76iAqwi7mrYQQj", + "amount": 59900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghqNf3UGqGbzWhswGHDKXAYh1YZ2Pd", + "amount": 59254195, + "lockTime": 0 + }, + { + "address": "NULSd6HgieRw8aUVHBXhkuKhr64L4cpS4MH7J", + "amount": 59041200, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "amount": 58866756, + "lockTime": 0 + }, + { + "address": "NULSd6HgTxwsyeLFRHY9ooLpTrTN44xyS7LSK", + "amount": 58445263, + "lockTime": 0 + }, + { + "address": "NULSd6HgfJRCdbbyrA7Etba7iGnHBBpveKprw", + "amount": 57690859, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "amount": 57578422, + "lockTime": 0 + }, + { + "address": "NULSd6HgX4vSKyMV2vLAwwkxWFwFp5JBAAkFx", + "amount": 57350574, + "lockTime": 0 + }, + { + "address": "NULSd6HghKggBVxpWxFpYN4VP9SSGLSPZvfA4", + "amount": 57000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAxR3qb6KJ2z68smfCuzGLbeCM8qv", + "amount": 56984632, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEAHJpcHzUwdDit43U2WZkdrJrYU2", + "amount": 56644046, + "lockTime": 0 + }, + { + "address": "NULSd6HghFVGx2QztGN7fv5uDf3cuSxgbr4X5", + "amount": 56509850, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwHyePaCLEeNV4nmTYum3et5xrNEC", + "amount": 56021099, + "lockTime": 0 + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "amount": 56006923, + "lockTime": 0 + }, + { + "address": "NULSd6HgVt3L9NudydoqdeGsXx7yaditw67zp", + "amount": 55870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLGHjQYFxrXpNkVQP7ybeqoGZmSmP", + "amount": 55783816, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyPcW7bZC4DwZm4Xh8pfAjFqEx2XB", + "amount": 55600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC8mB8hrVCHYBa5Khasf4xQfdvfds", + "amount": 54840126, + "lockTime": 0 + }, + { + "address": "NULSd6HgYneoPtBUzHHy6SQLvB6PFLRVhBCFa", + "amount": 54227453, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQGRGMjT6vRwzMQm4SAND61wszGm1", + "amount": 53888056, + "lockTime": 0 + }, + { + "address": "NULSd6HgUaKZgj3aMYxydZ8mV3PYHrRiqK5FA", + "amount": 53821529, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTDpP78KxmNJzSYmGgsqKwugyAwpX", + "amount": 53700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2ReboiJUDAuqJ5HsVRuh9XCjWLeq", + "amount": 53616000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5CZd6TogByk6TYDadpFRH6nzCWAg", + "amount": 53593100, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMmy1KigxB1TzKL1ZvAdsdSxvay2j", + "amount": 53391817, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBq3fygdUwL85gkB7gQLyd4mxB2h9", + "amount": 53356598, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUbG51vfQmLZ5271jJaWw6xs9T88z", + "amount": 53316729, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDmQ64nNycDZTtkQ8ieQ1Sor7bgUp", + "amount": 52887364, + "lockTime": 0 + }, + { + "address": "NULSd6HgYH92dqooE2aHEq1Tb3v3GCa9tTYwX", + "amount": 52881765, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgDuj1kkKwdrnQPHVDGqrgXn3j83b", + "amount": 51925200, + "lockTime": 0 + }, + { + "address": "NULSd6HghU51Pq9Ep79ayuTaMbTmYJ7GSnf2a", + "amount": 51579050, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc1W91XbGhSsniWPSboE9D6rrbkD91", + "amount": 51184091, + "lockTime": 0 + }, + { + "address": "NULSd6HgjCpBmaeu4fSamvW3pUAnjBAQW9E9B", + "amount": 51161816, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ29DT4vsS6ZbGEpozXG9skPUqGPx8", + "amount": 51000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfoSmcT4g71Eo7itJvy92Pht7rC3E9", + "amount": 50833041, + "lockTime": 0 + }, + { + "address": "NULSd6HgbbiAr5B7cbL2bnGnhiLF5qu8UjedE", + "amount": 50806357, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb97kZvtk9t9rf2b7iNomayfTtBSWT", + "amount": 50644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGATPBzBgPbSJyoH7aFgxFT2ZGsip", + "amount": 50642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfBH1goy6zY38YDoZXv9XGi6Lsfo8J", + "amount": 50642636, + "lockTime": 0 + }, + { + "address": "NULSd6Hggexz4g7uA9ZMWy6n7BP9sDGaoaxER", + "amount": 50475173, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2ShLMBt6Z8hx3d31oqigtgBsjZFg", + "amount": 50429213, + "lockTime": 0 + }, + { + "address": "NULSd6HgfRurcqxkKUxXqSt8RaD7ti7FYmkwi", + "amount": 50040994, + "lockTime": 0 + }, + { + "address": "NULSd6HganLBErTNWnohm4RSYnMnjVRUnfX6v", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcg6xwSa34UzS5guRJU6cAPUoGbVoy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJVePRDdQ7gLA187NUc6xGASZUNDj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaFhqhDYwovyzFzpPSmMJXoWT2TVT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdJHG3Kt3LefV9P54e4BmAiB5dkbsg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4Bvi4TeZv1URVtyt8z6Qv9i42goV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFLbgnjQqZ9orSQFtXr94hmepTLZo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKg3Xcmt9uBPFPaxkcz3guaeaT3ik", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTecXTmiv36qubzckwKsyNvyj6ZTi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMFsKTNXvJWJQtSF8gVtZwZZJoxY9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ9SvLm7A55gE69GfE8Ztqm9VKX51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrUwbuir9Rp3eqYRKiChAeieYMCSH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSk1gnzanSBxhq2yiXXs2MKQEGh4V", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMU71Q8A89S76m3Pqb8daX98aRmvj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiTFBcpaApe9gZbdVUdAqdjuk92ncp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZruYNjkdvtiNyx1Eg4nwuu4rh4yh2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnRCM7ikexjpTyCRbRyzVDZd9cUZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsvAy3AwanVgYXrJRr2BY7Z92zq3C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwkeA7Kk772WToCBSFR4vNNwxB5zb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbfvTmWirNZgx3zWatybZQf9E8ozc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv61chZeVzT6hGMxqbveZSoqAHjZ5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1tpMkRKkkREmTJWYEDZyGDRttRG3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYND2eV15qvK69KLBqNG5MKpdbXyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzV5Bnz2F1LCvu5F1n3e8XfMzwxz2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcuycwee4ga1z2s7kQKzSvRLJ8eHWu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWNppzjyY7ftd5fdia8SPdzCYzQSh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtyRF51s7yJgS2JKcNn51khb5KsDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx7vCac6EreWJwrsKMgvNJk8e21oU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZn8xZKT1Jkp1QXXzpicPB1e71GTp", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeX6P1aVSvZAhfg145MbEJbwwKuhx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUa3Ee2xsLZCyt3Wgq4dweSnENg2zc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeiKtTCVBr2Qbt54xxyTBBsrZwuDi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjXKyP7pfYEcQka228JNh2iT4y3j4D", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghcvv5J2AcAGhSBnnEBM1cT56wkhTh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgam6yW73Q23ee26R6wEHMEy4PtSkXE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZjofhU2nTfmsd5oT6aMDDVfrAp4ij", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPgfBJuyhHuKgV2XjvKz89grJfpCv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfTy8aSQmvox3fFmr3kSYupZEy9XK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetZD1Pa9GMkMdeYCh7oUzbM2G7MaL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXieZX7QziqosyWAgNKzgwVKutqLZ2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKeAgkj4DvcrNPABrdKXJAAwZqJrR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3xRRRiY42Kv2wsfPVCTJ85mvScNa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVm939cTAwFLnLNrCDQHAeBeKwfvaT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcgprqouH9mgdt9vgoKLHyVXzweMLz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9JuZTjmdcUNkBDLRrTvCAr4LgHMA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSKFSRHpCSLaKvik44eQxnaBap19f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXaXAXXkaTBC1fJ39ovUogMYxwdq51", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHVcCUmVh9Wx8EXVkowQpPxg5k7xx", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJeTJtDQWSbKWcgm9cQAJeHekuwpW", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvgPJD6JYPfZeyVgDTrjmzxfSKxYQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYZbEdyzSBY9FY9Y7rbtVLu7472UP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJkdY4zhvnfM2WnoCCaECfXG8WKGD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiChR2i34g3ui275voUB7zbimpt1vs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW86TE8VGG5kY3pDb5xXyuA2L7ZQQG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqPVTiYj5gr9U7XyoxVv1fM4B9Tto", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTsrMcpPr2UD3VUYizT5Kke1F46Qwv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKeS8ZQ12muhgVTdo8UR5FcnR6gv2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggTYRwyYexuW6gvqU9oXF5DCMzJP1C", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiXpngFQvK9rCgNjPzHYqqJ8DjAkZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEoYCauS1LvST6K8Est86aPtQfEbc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYbRGWJ2hXAQuBMi7VTf6fTHF23va", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVk3dtD28c3SUy6XREX8nWmfeDYqpm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfac42tb99rNiRouPqoz2RDaPwTrw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghsoNawkbHGorx6eYSr5WawFGGz8KS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge2diCFDtxT1eafHUb6wCTyuQ4cWob", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJ5f3ufnWReAfUt3JnQAzqMekuyFX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUPB731YE7KYA3Mw93sqsRgi8W51aV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisoQnNsVhhRHGUrYn4ky2bjB3CtBw", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYoEc9oUAA6vSK6QrcPiyoeoA6wM5d", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTE99qviSCrneh8yqyKYFSTUFnrzj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2tTsDRwLnY73EdSD4w3i8Kd32oB9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiT8umUzLEzM85MGBnvEZVJcgFZoRv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrNcKpLw5ZtKpy7tyT43UGzX6w94X", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRuSbfE41pDN6fiAyzKzi7NMFAdMV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggmP93kUdF8NYGkit5kDZW2DD4zA1P", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5ijeckDEqFHoMFZnr2fStUnJqPAv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjiPqhN4VbjD17C8YYR8VzHiiWtx9", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX17ELXQMBLXhkHVsqLGDKMAeAAGQ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHY9cNgrjKoYJAyBck3REfkiqgPSu", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgLHzVtbTrSvZewMNTjtgiUAixzFi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeMwsva5UZJQazfyroxeRFKMYZzDvh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmBXitDTA6tN8gWkoZggpc692BQXh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjDd1cbwt66yHbNLTuXDs4qSTB1N6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKdnQCekDTteS4ymAYxzpfXkgo4dH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVotskdkZ7oYZ33rG28dPqQg2wzeAA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgih1HX2M35TRL1UMW4iTf9KSbXyMyc", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadtK3njVq6eZ8NWRJxCpwoY6HmUBT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb65wK9XXxhuohpLWC4gkqjCrLj9MH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggFhqqgzVHnkShT8NGyD3UwnExZJSi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdEDGL2XeLoPtskVGyxvhGmCm7bw4W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbij9wmn6eeTmv4mEauxEqVJRFPG6y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfTwysvgvpAU2s8J44aoEjAkEKTFRE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcarLDJQriiogaHtXQqihYFHAx295h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXrReaGcLGjoZc9DCjQPsny5mtQMX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZR1WDRsTYmzmer37qW4BGoycLxxL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhATaGHNYA9iSF583xFS1VpKjfbuq", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUM7G6g84WhAbCd4u1aLkwviN1j5gz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCK33bRxj7QKCucxi3eJh6kH2NhJD", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8iqqQiCxrsLf4RbbsJrjatdxFhB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfAgeAfarfim2AyZaQFuPRPtMSkU6S", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHDbKSsbc1bsCrhXFLaVUAtCpXBLm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcN9qUgyD5YJ4Cu6PpBnQ1PQPe4ucj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAinRUeWVG71aU2v6b91z9PbM8UaV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3QWYXYJA3nSbxtLjdPXS4vdEcCtv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSvbrBeb7d1yhha8DNXNPQkNKMFZe", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZgPv8hnSZRJ4QHLq4WyoLYwo8Mo3c", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUtnwDrwved1gvcAfFcmbz8QP76kJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2G25yj96j4Knr6nFgb6XTY7DA5Qi", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1t58RszPERAxQgTX4G4tC7heHkQ3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMMXGD81PiRjg8hcCrxcSbRZ8xHfX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeGKDoashSxVUKhJQYMuNQFpNWNsa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjar6f4SrDgYoc6s3dU9wAi8hPTgKZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghffbZKqB376rTmi67hiNULsx6EUfa", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgemPhNr1GDpkoZV28sHB2aEqsZbtQE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTywgRJ7hkGSQcwjWqj8LUEMu4hycP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2HHivo5isCcxA11xLo9XJL31ciRN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf93bFEErwuPFHXUuaoS6vd7e8rW9f", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmGkqHmQBj9EngBbDvrSu8jA5kFcJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV5mmgb81L9JQnAHfXMFbvZDaXWf8Y", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQTP6NNfiZya6nrC9UoJHrfUQjnyj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfnBdizp9FV1oRuHHBYiGT56awLU3W", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYp3cY1Yx1FC3MVWvhu6xyQUs51gF3", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmsM1a8wMXj4c5PAXfDUziejMfLkX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWmpTbb5Dw2RWABEX6khT55kFLFz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdLgmVMVqfd8PCcQgPgLCFTZ6f5jgg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgepxrUoptq8W1mK7FkVtsvuBVYYjo8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjM7WZrUZ3nDJ5KxEyukZbM2aSFw2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdZjW7gHwmo7ZRmKovu4CmGz2JEEoJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFzNeGHQT7TiBQZi7ahXcVp1keUco", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakEtd6ScYGUfeiAMWcps93FYZRxTJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGfp5zTTvxopXjZRVj4XHrEo6Ndad", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggGfhpokcernuejhRbdc5MDXHdffv8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWvMUJ5kwihod7vMvwMf8MdRSWmhjS", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2FxGFjmqMvPuH5sVxrEsuTmh8YWA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAPhvFPCo87bQWAiEyaKDuSVuhBNz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge12SPfA2dhciSkjAwKUkqe78sdTud", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsfwLhCUoggdH8EAjhqEoTGB6rcgB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgazRDi8M1YSjJM7ZvkAZ4G3GRHzXTA", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmPrDr4pnPsPpDhcktvv8f1sDm7Fv", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS3GBy6NqE9C251BPouavRGvdpEwE", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvKkyqiwcgWeYot8YikHeuNEatVVk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggqgan3KTCX7FBrtCWcQRHzAFdyNp8", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTuUSeehQjjXvvJBFFd785uksZevbG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyu62mkgCgvjgtUoJTA57t6HC7zBb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjE7Ddu4PRqd2DtiYocDFFWR3xZUk", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUnYriswPyopxbVpeVLn9RQsr7Hxqh", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUEkfe5RvW5vQzcQkKDHyb6CevtyK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcu2rEcUzG2WpzbV8YJZoveJAqxdJG", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXcwPHJgq8v5bu6HoNeUhrGzhiDdk7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUieB2vEFb9YBwH3D1N1SJR3cgs6M7", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHwzJnDV6RK4eWY1sZMx78WSbX9pT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVQnAryGyuvCQWnfQWh4foBTXfbDo", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYsToPgF6jW8B4KemauTRVRdZVfxpT", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoipJXnuD3tgNHNVqBepxCXrszp5h", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgctdwxi3WsjGmbkxNxv4CQFUsNW2Mb", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW1EUcsDzQoy6pKDYQaUfoAoAAj8nj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1ujvra3Ph4uE2KCQHKnizttzqQvg", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeiZuhyGinCPaRJEeH2BRuCnfo52Cs", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsYMTMnB3btQUGRpdNAEMDpF2Ly1J", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggUst5o6STDMYijS1uMR5X29oBEhEz", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgirRFzXiSgr7CwJREiLFbFYKChc3zU", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWoKNgFwyiWKmLMe9oUCYm2eTVWfY", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJKV4Eq7Rz8W52a9BJSz379wyWKE2", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBzE41XrHmKhuqi46Kws2N8dqEk3U", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBqxzURWRrbcR5atYA4ZejGw4mTKH", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgisW9sgNLxwLuRSNvQQ34PQFW2sXf4", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyKDUz4E3iwXJvz1KkqYiVWgmo4gC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzBgGQL7dxeXKBhCvTPeVpj73LVaX", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge67C9Vp8EWkevKH1KRiA5im3MJJix", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeg6eYY9C1eTQ5i9uxP1YbuQpymsrj", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWio1VFBn6SghtJEoAwgzgBW87SGbM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpEU1ESsGSrt7YyJMKTHxguBQfMYt", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPW7mGDJvJt7pmYbkso2weguGpNtF", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghopr73Pcq5dvPoXeAfYWkSSnauZrM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeyJP2yYRVH3D8Kjsj8c21v8fCsfQB", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcQp76uNp92FqZzEZyLU81K6Erzn1L", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGc528Gg43KoHmLXixSLsCBZXFSqf", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYU1ckux8ULAw9DKatkVRVicvnrfCK", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY12gKpRhBdL14aCDr2GNF7H95gYaR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqQrQaqmrXaPR4Ey2KNuUr1t3htKV", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjm6LNUF9JBWV7CLQDrYm7kVb1V3Q", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpQCHVzULN7z2HXQh7R4xTR5UsttN", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWJksXy4Y9RJHZJuK5zY6CkvrcoUBm", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMs7YsFHkvdqUvANF9uh29nhfA9R", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWnaEGPUdH3g2w7BdC2r3poft7pdM", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKtzz2cdmMqQiXEBci2CPpyYMRzJP", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggHCnbgGi8b4ss75HX5ha249M9SbrJ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjnPHdEs3pkM8b15pecunMxMAH7t6", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghxTf456kxaX2GZnoroAkr6EzDtnNy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXMTuDrTXUgPbGChodS5JHw61XZ9o", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNx9pCp2dxqae2CW6SbKxDqvbQuiR", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghmaVrKuCxvG8M9ev3nqxxTHnzAteL", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdzWixo8Dq4AhXdKq8ps713rsfU8mC", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghr1L7bf9Lsq6oT8HVz5EoPeVjjxYy", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFBk5T93kcMJMArRbMN9mhRamKnM5", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUne8WWxmnqfusTr88pbCQ3Mp3zPxZ", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTMk7wbeQx4JyVuUG4aZ94XTRCv2p", + "amount": 50000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUR9s5AbruAJEjksg5TERJKtwucagn", + "amount": 49910000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia87MHdzhnkJSrGKhCCJMdrFBBWn7", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjbYZTPWdA48NkzGCHLhbFLm8oJYzd", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghQ4G2aSgz8TmtDXH7im5YdTc7VLyX", + "amount": 49900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfyoqQ47Z2DrKyUQ1hvE9rmr1EbSJ", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXN5PQX3Dze9qvGEqT9YQ91JckYc74", + "amount": 49800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdJgY1k62iPvaxgxdEmZ96ECrmGSm", + "amount": 49765250, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9zSj7kfUo8AW3iKw8sv5P6bbhTdC", + "amount": 49713528, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMfTuQa6f3gc54VkUqKC5SzSob94x", + "amount": 49561400, + "lockTime": 0 + }, + { + "address": "NULSd6HggVqKuxAQNDLyzP3Wi4vH1iYgcSvFt", + "amount": 49487758, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf2bYNHSznzzC2Vu8M27NKQsqR3GoM", + "amount": 49367300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh1s2em2hGMASEJfhxpeDZ6ExyHso6", + "amount": 49325518, + "lockTime": 0 + }, + { + "address": "NULSd6HgdhsX8o3ZKEEAkHwqXwuFN3QUZfxcQ", + "amount": 49243496, + "lockTime": 0 + }, + { + "address": "NULSd6HgUL7CiCNgDqVfUDWXnzRh6RfDcK61H", + "amount": 49028104, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvg1gS8mzqGardpqsR7wyrMRwXE5i", + "amount": 49016181, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYv4KmRvdz5vTvbfS5dhT1gQJZn9y", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdgud2joMexu9FUGJccmtZjST1bH1L", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYGmgpRcgxpMApzvn3gd3xPkrBR2M", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb2bMBuxodBo3qp3sSUZ9BfwoYVbGV", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "amount": 49000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfSe9zv7erosNnMLGCWW4gXeBGou3a", + "amount": 48998605, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFJpuysm2e3dyt4ESA5muKULSemLa", + "amount": 48979450, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvM8qUpBniaP7rSHpWg9SbbciKenS", + "amount": 48600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaVedTFPiMwLmMJ6qerdBsyib8psGz", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqJTW8VF3QuBeyzBqHbcKADCGVmrK", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1JkA9fyfqcQFnY6qQ4shz7ZLZY88", + "amount": 48000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3ZWBXymBGcjNQwoB3SfSak8Ez7AV", + "amount": 47760500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd8L3hCiSnHRtuQ2TssnQdKG7x1LbY", + "amount": 47374909, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNssFSpyzK3bxnPdgsFr8RHbmeAyo", + "amount": 47347173, + "lockTime": 0 + }, + { + "address": "NULSd6HgdeSqKzZB3YeoggQ8KtZjMqp9wg1bZ", + "amount": 46939998, + "lockTime": 0 + }, + { + "address": "NULSd6HgVj13oYmMifqWoGhfokCgUKvsnX6MA", + "amount": 46916130, + "lockTime": 0 + }, + { + "address": "NULSd6HgXjhXuQWMAWxdrnmUsvMDy3NNKAtZ5", + "amount": 46824251, + "lockTime": 0 + }, + { + "address": "NULSd6HgWY3rKdsws5b7iqjs43cEBmNZdoP7m", + "amount": 46716818, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBBNGj4DPDGe7MfGfFj77joNqsrz8", + "amount": 46468850, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QFKBRpkUAJGMadxgTcU83QsF3r3", + "amount": 46446373, + "lockTime": 0 + }, + { + "address": "NULSd6HgibKxu2tLtdAYyFh2pmLtEY9vDdmd1", + "amount": 46284987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMmnFA82Z1642QFXeZ22FBhHoci4y", + "amount": 46000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghKyyP3J8RALXY1H1eyBZhrjF8qeJc", + "amount": 45635414, + "lockTime": 0 + }, + { + "address": "NULSd6HgemJsNV28ks47DUTmBa5r62PEhp6Kp", + "amount": 45506826, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEqNR28eHkT5sToNGGePfSJc1B7Ya", + "amount": 45370505, + "lockTime": 0 + }, + { + "address": "NULSd6HgeLyokyFCfbPdscvitUy1AXYmFokVD", + "amount": 45350479, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHhnaWMQ367fpHzy2oQ4oCJuwK4er", + "amount": 45220590, + "lockTime": 0 + }, + { + "address": "NULSd6HgVNdPEDSg428QBu3HrEUV3CD3oxks8", + "amount": 45146395, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo3qwPUyahVW2KNCwUfJ2vis7s1B9", + "amount": 44778517, + "lockTime": 0 + }, + { + "address": "NULSd6HggNziSkd1HPh68KSUgdXvuMWV7E7wS", + "amount": 44624277, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB5ErcB2RysDv7yJzsieBjhZn5Lwd", + "amount": 44596761, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgxYyBTH6mjANEtwCiT3uSmkdWCDg", + "amount": 44316668, + "lockTime": 0 + }, + { + "address": "NULSd6HgboRshFvys9qwn2ENx3ucQNFcZ8EEm", + "amount": 44273095, + "lockTime": 0 + }, + { + "address": "NULSd6HgitZPEDWjCSYcTXaaMTu2eXN3DGXeQ", + "amount": 43944130, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFG4fLfjuE7v7Fituc51x2fHUSM5s", + "amount": 43400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBADvGKcexzRBjCy8Tf7jw7UUPjE8", + "amount": 43349444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfzgTZoVFXyR3ARgNW1WZpaXH6cmX", + "amount": 43300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8dHfQx3cPy8MNQzXZVXeffBZESBH", + "amount": 42788664, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "amount": 42659480, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZqx9GHs4x7QPEyVFqN2YpGFFc3WT", + "amount": 42616465, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKBMonrgMAAgfn7RaMFfBEpP7mdpz", + "amount": 42446161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZExTL3r7y7B59BjZSNjay6gjnqtcX", + "amount": 42000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggpfxG1PhF5qL8mYyEh6uZcZADNh5c", + "amount": 41873121, + "lockTime": 0 + }, + { + "address": "NULSd6HgahR9kBrLWmTaV39q7k8fFvGUCV6ZD", + "amount": 41239864, + "lockTime": 0 + }, + { + "address": "NULSd6HgZoehq6oxncsg9YtUvmiHFGPzgW5fY", + "amount": 41217182, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtP7YvoQbKZams2waUTXAVwnV6nFD", + "amount": 41197860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgip7AcCLJZta2fkm8y7Gq3mkFA7PLV", + "amount": 41027853, + "lockTime": 0 + }, + { + "address": "NULSd6HgU31Hty4JqeB59SdoUP5tq5oMUSTzh", + "amount": 40000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKf8FX6oeDLrxq8gvS7sDSZEMph3S", + "amount": 39936405, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvkSyGcuq7snMJSPVEGBt86Pv84p8", + "amount": 39900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWLvDZcFySqSeAemCZAoWeVXDSoSq", + "amount": 39885316, + "lockTime": 0 + }, + { + "address": "NULSd6HgZyDuK5uYugigkhtkhZYZFXEamCL95", + "amount": 39400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaEXJWbUP1Z1NezaP8aj3hGunwTHw", + "amount": 39205700, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxuJ3HN4w8xN6CuYUKmPtE6V2mtiT", + "amount": 39204421, + "lockTime": 0 + }, + { + "address": "NULSd6HgatmJrHVEifPqDoueE2gFbhk3m2yDT", + "amount": 38430246, + "lockTime": 0 + }, + { + "address": "NULSd6HggkEw9ZqPgq2kuBt2AQY8hdNSp3TNp", + "amount": 38156549, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "amount": 38097837, + "lockTime": 0 + }, + { + "address": "NULSd6Hgetxm6SKotDF5RLRRVN5gg6jibRYVS", + "amount": 37977870, + "lockTime": 0 + }, + { + "address": "NULSd6HgUH3GV9oq7kitH44USvopxMbj9juqP", + "amount": 37848230, + "lockTime": 0 + }, + { + "address": "NULSd6HgXueAiMg27Yv82bojveu2STVh28nSs", + "amount": 37596341, + "lockTime": 0 + }, + { + "address": "NULSd6Hggj2ak4EspTdKtKUi7pGA7xwTeuws8", + "amount": 37138237, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc97RDo6PNP3bV6W3K6ZkLG58MZd2b", + "amount": 37000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYgVVptnXYW74fjVobTru1WAsC29j7", + "amount": 36645807, + "lockTime": 0 + }, + { + "address": "NULSd6HgTvUnQvExQbx3RLuVGBqRzGXGhdKvc", + "amount": 36632136, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqCmfbGrVYbLTgYG6f6AtRSLGYTKU", + "amount": 36340851, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3xAaLJZcsAURpjhRC3oNhAikD2n2", + "amount": 36305635, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVVeS5nm9ViiNaPACXEApYf5voD47", + "amount": 36260066, + "lockTime": 0 + }, + { + "address": "NULSd6HgZQyH6jhJrfEgAVCoXic2QztmhTmUf", + "amount": 36254473, + "lockTime": 0 + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "amount": 35657031, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "amount": 35289230, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMdUeTP7Bn8ptZ7uNPfb4BKZ3TBxQ", + "amount": 35113411, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHWrd4FYU11pPYSVfCyGgmF1gWW5z", + "amount": 35035381, + "lockTime": 0 + }, + { + "address": "NULSd6HgWxg3nBLiZCJeSk3w4EP5CmiFPajX2", + "amount": 34987000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbT94JJAuWb1MfXYJYHC8zeLAU8Usp", + "amount": 34985508, + "lockTime": 0 + }, + { + "address": "NULSd6HgXrfvikVtpzfGFjesB7oiDBKrk5S5p", + "amount": 34237984, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwDPtkmszJsWJGQJKgMe7X3xNqtjJ", + "amount": 33972168, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2vZTZKv6Us1cT319LuDQNbqV5mq4", + "amount": 33666777, + "lockTime": 0 + }, + { + "address": "NULSd6HgcwGb6QEoXtXsakwY8CTtdDnir28BY", + "amount": 33300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWPq4GQy8tTXCwwcFNyEUe3c9cnskN", + "amount": 33200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZ1j5gZG4v6k1nAJxgZ6ZraL7i6PD", + "amount": 32817751, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar2Cd43BpXEpkKPVzcjWj14kmXtX", + "amount": 32574993, + "lockTime": 0 + }, + { + "address": "NULSd6Hgforh4T3R5AUNxDnuKBrjXUx7MCVRy", + "amount": 32398803, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ1Gfh9NbFLRkpnDnktaAzDr7PVuSn", + "amount": 32390717, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKoE4xiGAk7rNnYjT8AJEhKSyVzKD", + "amount": 32300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadcQXVxEL8YAXASB3ML2uTGmLotQa", + "amount": 31705425, + "lockTime": 0 + }, + { + "address": "NULSd6HgcK5r6mxrYeihPPnkBTnVbGKMuUFBw", + "amount": 31573559, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcoruo29WiuUNPD7qmSVvRBCBAaBhu", + "amount": 31241721, + "lockTime": 0 + }, + { + "address": "NULSd6HghiJSMrVRe8MKLCHxh5kaX8N8HKzVY", + "amount": 31200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdfJPryxsFJo6Fh1dHFAYWhc7iP4RN", + "amount": 30919183, + "lockTime": 0 + }, + { + "address": "NULSd6HgdMnermwqoTVnkCkMxriRg3GYJ4oDs", + "amount": 30853387, + "lockTime": 0 + }, + { + "address": "NULSd6HgeHKifQkCLz86QwyCB1Qqm6BUg6wsk", + "amount": 30241548, + "lockTime": 0 + }, + { + "address": "NULSd6HggbTXEkEJUgRtviigSHfBsXbbZbhx3", + "amount": 30188591, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkMwCeTtFP98JbeHpyoZXJnocpSyz", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6KPTwzUjRhQdxaXeS8jyUH5ogDNh", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSj4Y3FZcWRtWRj9xLWvyhj3CpM2Z", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSizcJT9qbBrj9h7jkUtHpfS6CTix", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXzSj5xidLFzBPE352EeCiJU2eVatq", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggzjbbVQqeGevfrPAxfPTXpQ6FTV97", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSogKSKb8oHen1rjDKK9QfmJB3uZi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSRxVEhCgc7nr5XjMie2U2YvZoHLt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTBaMzTzh6pfG5UGsiubEpwwdNhAS", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSu47hENxxtYUkhnPcYuzK6n2pRP1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTGzrfSszDXjy8h155rQxyEX6LLVg", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVS5U4nktPrpoodzLjngai9oWEQYVA", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV1A2rcb4VCMe5CKC3Whxjca5wkpW6", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQxgjXJdym7MRfxPREcEy4eDkKsiF", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV4hwUqBX17JbMqVsLvCRXS3odEGwi", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgciFZDZy9Fez5R6wPSAW2EBTDPAbDn", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkjayYKD3dMLEP6JqRVqAoTptjrE1", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6ASAovL9W49LpxdcgNjtTSK5YDDw", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJGRRwTtbpZtrfNKXQ9onHoyBgxzZ", + "amount": 30000000, + "lockTime": 0 + }, + { + "address": "NULSd6HginzdRCM8KXJTigxc15vw6nCKo97Sn", + "amount": 29911616, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW1jpLuZwZYsqjPkx2XhAV7AginAr", + "amount": 29612391, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3dPXvEGvHfxenUJqn5T96prgDrpg", + "amount": 29505893, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxQRQTg5JBanyEN3FrNfkq41kG7Ea", + "amount": 29502131, + "lockTime": 0 + }, + { + "address": "NULSd6HgYC5tbYE8yfi1F8shrC2Aq6EDheav5", + "amount": 29447012, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddh32ZzUHCfhQYQjgbWKFzag6SCZW", + "amount": 29395647, + "lockTime": 0 + }, + { + "address": "NULSd6HghWrjnoErQWZuUwZXDJ6gsCtctn68U", + "amount": 29297176, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTGTrLZjSGB41BgfgW5rqJqSqrUFU", + "amount": 29193654, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp5RxUsg2ShxJJHKJMAkUxkcDvQwx", + "amount": 29170818, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjWNatPHQeXgdSZq81hZbEzWL7CX", + "amount": 29000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhq1F81VFmcZqf7zsBHBDGcCbwsKf", + "amount": 28930000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiyLP2Lg3ksU6YjLFQBVyFy4REQh7i", + "amount": 28031084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgen563BjfudUtyk9NFig69rRMBh6wS", + "amount": 28027962, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQSL7vRQhQUEmvsYpm5snVKTA3k8c", + "amount": 27975651, + "lockTime": 0 + }, + { + "address": "NULSd6HggBjoFZXhAwyoQxF9TaM6HLKHVkapo", + "amount": 27900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYSeNRRT9X8mWUtAGDT9SDd4eZ3Uv", + "amount": 27881872, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjGwVprickRyZbm388kMALuWC9HrG", + "amount": 27816878, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSJu2jeEJUrZx3xJdR1KScTGEzzm", + "amount": 27538587, + "lockTime": 0 + }, + { + "address": "NULSd6HgcU8oj6USdyjbuDpLNRoRjeY8YpRDP", + "amount": 27359023, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdg7pNzz8GC5K73bx9Jo29YbktHT4", + "amount": 27354161, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ49TQJBn1w8UENpXYpamL8ESxKwNC", + "amount": 27313907, + "lockTime": 0 + }, + { + "address": "NULSd6HgXZjPAdmfvvppziGzWt1NEnwZvg3ev", + "amount": 27037657, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwATwApGrY9kBtHACMHG4XeZDnHqF", + "amount": 26204778, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb48VxHLyBofF5rmfV82w8ADoiLTk2", + "amount": 25921742, + "lockTime": 0 + }, + { + "address": "NULSd6HgafpXnvG169Qk88J3AaRJLgNzHLQgc", + "amount": 25800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCejf1Yw6Efo42Lxjp1JMc7Vpi9aW", + "amount": 25214290, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrtSqz19nWXMw2LNU7EFtjc611x4x", + "amount": 25000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcvVw6dTPAfQMq1TmUZMJ2tzA1dDwZ", + "amount": 24900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcy2W6bcJgzxsTCyFnrCgQikGkcQQ", + "amount": 24862265, + "lockTime": 0 + }, + { + "address": "NULSd6HghzC8yJKW15Vzwwi9tJ9jBVc7G5ncx", + "amount": 24857672, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh6ZDqxdzhhmuJcYh3TpaWV2quCESE", + "amount": 24818000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX27ZbabZ4XC9vaFE4F3Af7XNfpeNx", + "amount": 24792001, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1Hm7a2fnmUMyqWzsuoyoeCMxiY3G", + "amount": 24764962, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzwFhFELgVNvxPf4VNtSskTtAqTBN", + "amount": 24752042, + "lockTime": 0 + }, + { + "address": "NULSd6HgfqGuMq9r7YwbiTJ4t1FtUy4zuP4R2", + "amount": 24399962, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpR1ta8yVRQh5zJU9Rn2dPKsewFE8", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "amount": 24000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghixzBbh8jA4r2Pzuy8TE4PQmeBQtb", + "amount": 23615149, + "lockTime": 0 + }, + { + "address": "NULSd6HgeBHq5AfcS8Ki3uUDtnKfBCxCkJbAf", + "amount": 23543424, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "amount": 23374017, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRe9jsHJ2L6ouppt2Wxr3Zp5ZPn5J", + "amount": 23095857, + "lockTime": 0 + }, + { + "address": "NULSd6Hgekx45iLriV8JYcRgjy3HxHRiMbP3a", + "amount": 23076854, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9kukDzV2geUf4ENhbr7M3upFwJh", + "amount": 22968358, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWBeVbjv7yWBmo4fqQYdWGdwqMwkx", + "amount": 22748293, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "amount": 22694797, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJndLeUbayC6r2Yebochu8XQy8qkk", + "amount": 22691356, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrNuq8oxBMzp7wevzuczpAr8rbEo7", + "amount": 22290000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisp8GNdAGzXdcAYRNrdWQSkW5Mda6", + "amount": 22207556, + "lockTime": 0 + }, + { + "address": "NULSd6HgZiVQ78yYsJeKEpDVxSpDgPA4Gecs8", + "amount": 22131393, + "lockTime": 0 + }, + { + "address": "NULSd6HgYXWLs6zncz98cLWeDWNEGHfWHQZD6", + "amount": 22100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaXo3zgjemVkejiJXXfDpTpsPjzyxY", + "amount": 22037029, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9om6b5dka1Ucm6sgqxxUiNUHfcCR", + "amount": 21900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgTscq89BFtSw56XWqqB4aNjs2xhbCr", + "amount": 21856757, + "lockTime": 0 + }, + { + "address": "NULSd6Hge7x4VrpxDWsLutZWR14xMcVNDZnHy", + "amount": 21500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZnNqJbKeUcwbqZEhnSNPLzvGntngR", + "amount": 21439758, + "lockTime": 0 + }, + { + "address": "NULSd6HghRKecnFuU9hy2rKzmNhnJNXDaabug", + "amount": 21405029, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4kHXTwSkthE1HP4ng3Unt7L6QjDf", + "amount": 21276018, + "lockTime": 0 + }, + { + "address": "NULSd6HgWbonHV1pcTijrRmwSU7BGkrD7zvZQ", + "amount": 21150519, + "lockTime": 0 + }, + { + "address": "NULSd6HgXQ3RGVYuaM4agjXzpeyc6y4jh8u6U", + "amount": 21061125, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHv8CHKqWTXDwMUnZ196rWC4t7bzu", + "amount": 20996563, + "lockTime": 0 + }, + { + "address": "NULSd6HgbN8kLBCLMAPR91uoJ8xdpJUn7R4Mh", + "amount": 20956841, + "lockTime": 0 + }, + { + "address": "NULSd6HgVLR4sRpooyNkhNUevQJMYGnpjGJM1", + "amount": 20728155, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6HPfcauZiURLTkTDpYTuFSz9Msj3", + "amount": 20676404, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHmcZFfwcPFXebmLg2dfyLv977sA", + "amount": 20520009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "amount": 20361917, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "amount": 20239197, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc94jmw4WmtiuxnQ94kgpj9wkCPqo4", + "amount": 20090000, + "lockTime": 0 + }, + { + "address": "NULSd6HgePVuux6wrne2BPCJauGdgfiPcmS8D", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh53NBCN8VruxqSCgLtAUqGG813mHK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWka7qCc1jvw1yoHttuUBxKdGwqtdq", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZuYHN68ULaXa4VhPDaxfD1cqxHPCr", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVauaxMFpXwM2LhEyq9J9WxH7S5hnT", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgisch6VTNk9fjQMT3zBZrAZEDVtwAK", + "amount": 20000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVimCoe1WVSCEkmDof3r2yRiwjyJmj", + "amount": 19900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgarQ47yLfW7bemMGcUd4TcvUmc53nq", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZJ5C52BFkz8ZY3h5DTVP8ker1Yek", + "amount": 19800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1fZUq7ec1dmc85mnj3stEKBsDw1m", + "amount": 19767300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVVutwxQSoLV5bYhU9gAJZMaWdjuFs", + "amount": 19753684, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXGrBchCozown9YuMnvXk9w8gdDm7", + "amount": 19736931, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYMQggQWATztdSfXicUxL3nfv1nyr", + "amount": 19700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9Af54P9xUopahunEtvcZMQZoFgcB", + "amount": 19671511, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcc79zE5dhiJkQVynr2a6G1dXrDJYg", + "amount": 19584000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkEZH5dhFGwTrg7yBi2VmxixTDLSQ", + "amount": 19525841, + "lockTime": 0 + }, + { + "address": "NULSd6HgcTBij9GrDqVo7ZfwFvXG3bNPHZwbG", + "amount": 19505045, + "lockTime": 0 + }, + { + "address": "NULSd6HgcMp4puZzBAbLyeTqHWbuhFANcWLxn", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgdwjF8Kasjtv4DPimXUxr5BXwiSD8g", + "amount": 19503275, + "lockTime": 0 + }, + { + "address": "NULSd6HgWL6Gx5m19ivM5jNTKfNrgAMRqdLKL", + "amount": 19501275, + "lockTime": 0 + }, + { + "address": "NULSd6HgW5DhZcSdccf29TZD9jAzfm38recSz", + "amount": 19500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVv8memKydKJXJNPTHCGY5fQmt3AM", + "amount": 19498877, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2oak9yDKnaPmqjWMnDKq4AZpMb1x", + "amount": 19497550, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxMQjJ9MEadSE9tXeQoBgRyu69UnG", + "amount": 19488228, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxTa4AQ5uqhiDYF8ydgdsqkBw5Xi8", + "amount": 19400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "amount": 19278110, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzobcB8pa5coQjYhWMexRjDJdtM5e", + "amount": 19200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLJm18A2rdcGiW4L7eMNT9YmLi2fi", + "amount": 19183455, + "lockTime": 0 + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "amount": 19129772, + "lockTime": 0 + }, + { + "address": "NULSd6HgbX6rWUfRJEDiSTERFXns6qSXHDmRG", + "amount": 19077005, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZC5aYEQRib4JtjeXkmrdhvDC85Hw", + "amount": 19065333, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb9MrdeJe9gNkPfHa5CKMDosY6EZic", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgULTEtbDAwRdSLBL1LqJ8JmTCrriWP", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWeR1xPdTRfH7UR6RBu7YwwYd398Ft", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "amount": 19000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHLGQmErZXNC36yvV7FuekbTKjpbR", + "amount": 18900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKNbzEEMve2GwYMqZDLiCFYq2zUa2", + "amount": 18751374, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjiSpH2U2MaG3BXVx5D355i2apqus", + "amount": 18644905, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9vRDP3S7Vt1R3JKJCN1bL5bJFowT", + "amount": 18618887, + "lockTime": 0 + }, + { + "address": "NULSd6HgaKvrYDvXBfLMDauGE9y4RJUpeqygV", + "amount": 18528978, + "lockTime": 0 + }, + { + "address": "NULSd6HgXpXxzZrJrbuCAQ7zUwT27CMBhJdyx", + "amount": 18516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFRatGunQ59gBH6fbJc4a41B7h2As", + "amount": 18500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc2P9ChjXtXuJGrC5iTQLwPQpQXCq", + "amount": 18400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "amount": 18399539, + "lockTime": 0 + }, + { + "address": "NULSd6HgckQSvdR2iTdggJaAuyajLwRgLBujF", + "amount": 18399110, + "lockTime": 0 + }, + { + "address": "NULSd6HggkxPTcqZEMokoQGkKcQ3mD5pMp1Qt", + "amount": 18394084, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf8BJhrDTVy6cigwLf7pfMfv3wTZeX", + "amount": 18342720, + "lockTime": 0 + }, + { + "address": "NULSd6HgfMrXMWNRYyWbsw976iUEbfnNt59Mf", + "amount": 18201288, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5g2X1hfR4y6DZhqB1x7jW2JEtMVK", + "amount": 18189414, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnLmAMQt3e8GauGjZsfkDBM6di3q6", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HghQiZNCNgz9Gvtr43iz9T4qRRiGnJ1", + "amount": 18013100, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSzZDQ6JEEqMgcrPzu2CiBx2gmmkj", + "amount": 18001058, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ2z3oCxdVmNKBgehq5B3rYkA7dqdF", + "amount": 17979537, + "lockTime": 0 + }, + { + "address": "NULSd6Hgby3uFWbFaPB1AXdr1Gf1k4UtSz3ic", + "amount": 17816282, + "lockTime": 0 + }, + { + "address": "NULSd6HgjY6NLzn12zT7f7LjcNPmMXqobse9n", + "amount": 17758707, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbAfbqFzHydZnHpfgsqb1uqWzPALo", + "amount": 17701434, + "lockTime": 0 + }, + { + "address": "NULSd6HgiToPo7dLXbctaJ3FjgyR7QV3nSjvZ", + "amount": 17700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcE8Dd1s4hsMnRagy5zb1Xjep5gRw", + "amount": 17652644, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX4bHHAx43WrvjCWTsuvB9NwR5VWC", + "amount": 17609575, + "lockTime": 0 + }, + { + "address": "NULSd6HgcNdhSaDUw8GTBeZX99fvYMVCuqJQY", + "amount": 17565000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPpQchbQD56rarD2AS3ZN4bR1Dy4Y", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgZLwppS7XrEGcsRUYgudHTDkJSHhUV", + "amount": 17516375, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBxe5jhJrtisvtB5Bx8MgGXCzsZHZ", + "amount": 17506375, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipie6fcN851PwX9nfnwA8yQyGb3L8", + "amount": 17500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgetmJdqBTEpCBCbaD2eMQA5EJx2s5c", + "amount": 17105570, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9nWEF2gbbhsbXC7Zv7yLnqVJuFW", + "amount": 17000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgafXF4H6n3dMkGHf2dY4JK5PVrZa7W", + "amount": 16900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZPyhPa4mEgtQKYnK7AuoHTZt1kgn", + "amount": 16889818, + "lockTime": 0 + }, + { + "address": "NULSd6Hgig5efJ7yGEsqeqMm42PwV2huYqRxL", + "amount": 16762383, + "lockTime": 0 + }, + { + "address": "NULSd6HggpnhCArxeiQFeBjtNDKD5pNYNNLpk", + "amount": 16728299, + "lockTime": 0 + }, + { + "address": "NULSd6HgWndSEDF8Dwc9UWPziuXEnJ7geVnbc", + "amount": 16643371, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhE6g2WrfJCM7rdvLNvMfnGRvDQr7", + "amount": 16500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRq4kt8yuf5P5Bt2sGegFTxsCEEqN", + "amount": 16482078, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1hw7F4Dw678TbboebV33wwdF2goh", + "amount": 16238871, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjDUaGSprkb9yNF3yPzJafHKgEtPr", + "amount": 16182206, + "lockTime": 0 + }, + { + "address": "NULSd6HgVUMz5SujGjF2DRP3WgATVHEQnT6Jx", + "amount": 16179514, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBV3TWN3pm5sJQJoanT28HsTpmjus", + "amount": 16163645, + "lockTime": 0 + }, + { + "address": "NULSd6HgZu7imibVC347tts9vhwUcDF3peSxG", + "amount": 16100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiizAEibrZmipndmaXmqDpvDZ42R4m", + "amount": 15967560, + "lockTime": 0 + }, + { + "address": "NULSd6HggqiF8W9iP9awcHcxoXZ7u71DhnpEe", + "amount": 15931878, + "lockTime": 0 + }, + { + "address": "NULSd6Hgatd1NXMT5hPm5SSgXUY6zLm5jDpcc", + "amount": 15800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9oCDPvFbEwqeqHv68uX3cjsXZrL7", + "amount": 15769682, + "lockTime": 0 + }, + { + "address": "NULSd6HggYza6R7EF8g3pJvZstqxFSC31u3K7", + "amount": 15767367, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7uTgXFGppK9utdF6sY8qrDJYGe5", + "amount": 15730804, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc3FLyFivQxw3zij7KHgSMUERXgsr", + "amount": 15692835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdcq55hzNdq7Ypc22XBQLtA9smEDk5", + "amount": 15619300, + "lockTime": 0 + }, + { + "address": "NULSd6HgVtwyrfo1HyPGHToBd8CMM4gz9Dhyg", + "amount": 15332019, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSyCJHqnhDhDrGGSTdp6fhKHavqnT", + "amount": 15299394, + "lockTime": 0 + }, + { + "address": "NULSd6HgXgic12RDJ5LRvZccFNC2hZ9ALaCpV", + "amount": 15251450, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "amount": 15192835, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfte4KV5KsK9MVBZ8yyandrRfpZLvp", + "amount": 15030170, + "lockTime": 0 + }, + { + "address": "NULSd6HgXULs7JsKc3t1pVhpPv2SQVBHw1xjH", + "amount": 14989103, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNSkDjGu2cjntz7fc4q5w7aNQDrz7", + "amount": 14920000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQtPzxCsW82RDTqjR2eLFHuGBjuTY", + "amount": 14884069, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax5JnXY1cyZ6b4poAXPi5EJqvMQaY", + "amount": 14813575, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSyLStCksAJwaosAuAbFuToJx6sBo", + "amount": 14795150, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAnjn7uYNdg9ymEfxFi1xWwe1xyFx", + "amount": 14769037, + "lockTime": 0 + }, + { + "address": "NULSd6HggwEhAsTWoRPqD9ChGMpmGUvT7T5QR", + "amount": 14682805, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmssT5FXcbZPPUnDh7qBcZjLXbmYT", + "amount": 14583996, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3NFv72QrtZ9BhUJq3BgoAHgs56nE", + "amount": 14548624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkTKSLT4PCqUKoCRPTwrdd2SqKJ5M", + "amount": 14532102, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi5WgzfW2RwRjaE4VUhwdFLjqKbTx4", + "amount": 14528369, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHe1sd7oyhYSYHtB3inqsCaB899Hz", + "amount": 14500253, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhcwbFdq3qsrxj5hFEbuSxfU143th", + "amount": 14489245, + "lockTime": 0 + }, + { + "address": "NULSd6HgaF9MEJs4cagsCJVXd7Zr8taYyR4E4", + "amount": 14489159, + "lockTime": 0 + }, + { + "address": "NULSd6HggTpBrvKujK4VrMpVE9wkM1VcXf9Db", + "amount": 14400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaE1CyVJ2deA263AUtabeAR7yFph11", + "amount": 14279464, + "lockTime": 0 + }, + { + "address": "NULSd6HgiCBZGuwPqP8HyZCFSg1Tu2Jt5oZS2", + "amount": 14123003, + "lockTime": 0 + }, + { + "address": "NULSd6HgfB8A3LwuW8xDsy2N2ewAnveyr8fT4", + "amount": 14000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4oMFpPGHfMkxRsBinqMapeJvcgWV", + "amount": 13988506, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqYmdEz9AdN5cWDcoKoEsoYukVS6n", + "amount": 13743449, + "lockTime": 0 + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "amount": 13488668, + "lockTime": 0 + }, + { + "address": "NULSd6HgVeb3zsq3nbXv9erTUChijxoxuJe2q", + "amount": 13438357, + "lockTime": 0 + }, + { + "address": "NULSd6HgXo47sdfsAhCbPtd2XxaYiDKqpAcxh", + "amount": 13390000, + "lockTime": 0 + }, + { + "address": "NULSd6HghssrzswmEpcGCPA5Zjf9YWChXTA5d", + "amount": 13132342, + "lockTime": 0 + }, + { + "address": "NULSd6HgYejEvANWBTErKpwNfAsKy2AkrTh2d", + "amount": 13000059, + "lockTime": 0 + }, + { + "address": "NULSd6HgaYCpraUBQDHWWQeNoEg5L9R1qw9Kr", + "amount": 12926318, + "lockTime": 0 + }, + { + "address": "NULSd6HgjHuUDP5hqAV56FnxqoLUdTPMaZB6K", + "amount": 12889665, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5bBBnJBr9RpokmR13owwsEXvfYw5", + "amount": 12868693, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYeyof7m3AW3Ei22JXKWYdQfthRw9", + "amount": 12858804, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd6eE1NDu4Z8CsuWJf1UoZmWZHFFYV", + "amount": 12810473, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8rg3kNZqcH5P9qTYuHfNewmzhJmo", + "amount": 12657982, + "lockTime": 0 + }, + { + "address": "NULSd6HgcFFwZa9SUGViFACHgNjbUfFboTwCM", + "amount": 12654117, + "lockTime": 0 + }, + { + "address": "NULSd6HgeC8saQSt3C4Ha3cszrpUwvaiKLfhs", + "amount": 12635092, + "lockTime": 0 + }, + { + "address": "NULSd6HgaStXoPy1RJKsqFUWAscYQSM2gJYh5", + "amount": 12620302, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsrsQRZtP8Y2Bewgjy5UTG8CQa2JA", + "amount": 12518998, + "lockTime": 0 + }, + { + "address": "NULSd6HgXurJ6sRBGW2r1KzDE5tBbQtaBwBPz", + "amount": 12500375, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyrMbnyVFjyuJzdWe2vkX4TXHGUBD", + "amount": 12373617, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP7Fe2HfCgMU6u4LezPVBzkv1BmWG", + "amount": 12323075, + "lockTime": 0 + }, + { + "address": "NULSd6HgXEqco1KUoXQaujPFrCYStVdjXYo6G", + "amount": 12299629, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcs5ALVGBN2m7eoxi56zC2zZrDuXQT", + "amount": 12247283, + "lockTime": 0 + }, + { + "address": "NULSd6HgYB3z1KzABJd2cxLEV8RnBXK8mTuVz", + "amount": 12233600, + "lockTime": 0 + }, + { + "address": "NULSd6Hghg6X9RvJfehPn6JjAXKySEo2gBLBx", + "amount": 12189871, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "amount": 12119019, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbk6ZL1WbUwTrd41FdKunDwm3rPiU", + "amount": 12000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjwAFLkQvLr8rordoomCPB4jTk95M", + "amount": 11869491, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQCyqUZDM44Dm5heVNdvrGJahmHgz", + "amount": 11854774, + "lockTime": 0 + }, + { + "address": "NULSd6HgYxaci2u7GB5HgwjiSQAAQacW8fjza", + "amount": 11852041, + "lockTime": 0 + }, + { + "address": "NULSd6HggMtrSNZUUmfiW97URGUJKG3Bk5CcN", + "amount": 11809086, + "lockTime": 0 + }, + { + "address": "NULSd6Hghpdjs8MxSuDxpSn2kYjkKrw8wJtfR", + "amount": 11798769, + "lockTime": 0 + }, + { + "address": "NULSd6HgW32LCHtPkCcJSvFdbtKZNV6wx2Abc", + "amount": 11727601, + "lockTime": 0 + }, + { + "address": "NULSd6HghajHJF3kbzVUpvqrnnAXWZ3KJuHsB", + "amount": 11687196, + "lockTime": 0 + }, + { + "address": "NULSd6HgbH4KA3WF2gZUKJ95DnL9Kk1zrEUD6", + "amount": 11681919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYTUtgSeFRiNSF6tAnVDwg5TZiUXmq", + "amount": 11630405, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqUXRw7teTqhG5PiiTZ67drjbEJTX", + "amount": 11596949, + "lockTime": 0 + }, + { + "address": "NULSd6HghN3q2K7hiqhZjQgtSG267TP3EBXTV", + "amount": 11531640, + "lockTime": 0 + }, + { + "address": "NULSd6HgfW3og5fAKsbRf89W4TLEAYedska6d", + "amount": 11463575, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL98mCXqVhKtqqHYc66yKtFdoT6q9", + "amount": 11407595, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "amount": 11268464, + "lockTime": 0 + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "amount": 11225011, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFjKhoZ3qU1ounNcn9hRw1SQPAE7K", + "amount": 11154018, + "lockTime": 0 + }, + { + "address": "NULSd6HgcY18Ko7sqA6mQC1yj5QNp8ERVFbkQ", + "amount": 11035279, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcQVbiMNMYgaaN4ZYrx7mavgdt9hd", + "amount": 11031450, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcMEof48wUySojLwyjAeFiPid4T3g", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcCo4ijnik5tPTmBQ5Z1jyy6WGSRu", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgev6fhUrdMsziRMskBj3pCRpqCoTFq", + "amount": 11000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi2FS8LJDbmhMMCzSByKePy91y1xvU", + "amount": 10928869, + "lockTime": 0 + }, + { + "address": "NULSd6HgfhYnJZJ6G7anRt6dd7SohTD1bq8gC", + "amount": 10844444, + "lockTime": 0 + }, + { + "address": "NULSd6HgdxfmLQvbmosfHJWhqE9gtpv1rkZM5", + "amount": 10841500, + "lockTime": 0 + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "amount": 10821533, + "lockTime": 0 + }, + { + "address": "NULSd6HgaogrT8y4Fc9xQ4brQq7Ez7dAxebka", + "amount": 10802050, + "lockTime": 0 + }, + { + "address": "NULSd6HgYooPpM8G5Ef4P5yQRAWLBT6XDm2Zk", + "amount": 10731068, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNhXKwBR4aUMidSPsfwsUGyU68ELr", + "amount": 10700000, + "lockTime": 0 + }, + { + "address": "NULSd6HghfdovZeBCZdJ3t3PEbrux6dQJqHUa", + "amount": 10557397, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSNDrfxUbzM1zti2dxGtp2KVTs5FE", + "amount": 10540000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUr7mhpWdMxSj6tjxLThR45PdXbnWv", + "amount": 10404096, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBnwELZE4WZiTDTHavrTkA6NfEkZE", + "amount": 10400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaFUzr29RMvQfj9ZKh7TZagPj5iVzJ", + "amount": 10398200, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHerBK8pkgnt95Ji4FJkjMx6GG74R", + "amount": 10369791, + "lockTime": 0 + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "amount": 10313359, + "lockTime": 0 + }, + { + "address": "NULSd6HgXnisGKAHd5hvqnHqb9r5K9f4EP7Ty", + "amount": 10300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgftT8HCMHnRWkc3sqbaZ5BVzuwYZj4", + "amount": 10139875, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuXGAxvP3tynjMwtBdc9NuCqiWFry", + "amount": 10105100, + "lockTime": 0 + }, + { + "address": "NULSd6HgVFKHZR5wwGTAXJA3cu8f2xZgwp9hf", + "amount": 10057265, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAYEQmaEaH3oRBUeG87auwYud1fwg", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauhwQMUgwTmPvZvcRF54UjUMHHbyj", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgia9Sdo9vHwAtFBNXdnfTb3ii8V7rN", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVCb1qtcZjh6JFXPUEXW3DKHhUZ1ed", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj78ag5C1NFM1zRmNdqna9LSahxXR6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb7yMtzrEysWDeKGw8TuvVpxDbCXJp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcqsP2iJ1Nu5V6bgNcs3e4MJp193Gt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSRZQkmSFqHjJfKpUvgjWd4gG1h4k", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYE25iqdsmMfbcXVwrZy2ow2M1Yjok", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKRagdZ8RS2P1XCuqJYaaTmzPAN6V", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghuwM2CfbgBjF4LBhLxQxi62n73jJ9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPzyuzUr3LVswqQiS3mWoo8HxSrbE", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgtjAWritf9E5wUc7XQxYMbRsWsPh", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZFctHXRJPdAgFeens8Cg6EiLSh48T", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNEyHiuwBfPwZEUkkXUK1soWPY4BV", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJ1SgYKxBospzoqnMaFTJCHnQZZH4", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgY7ZXM43roA6b29atu7a93ebxW9Xk6", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfcn9PduS72XVCQopZr4HRN6VbMYfk", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWNhH6ZMgNZNGgGf1aADfcL1My48jp", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgEhzyXu1Xa5ZWQqSK9xAYRRSP4a9", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXhRDi68YzAfvpT8oG1U2s2sYxYUey", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8ovBxDHFm3LTQduixNkCTdeK9jGt", + "amount": 10000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "amount": 9985727, + "lockTime": 0 + }, + { + "address": "NULSd6HgY24LR51D6jQiDFsPZRod2JLymm9iY", + "amount": 9982121, + "lockTime": 0 + }, + { + "address": "NULSd6HgWQmZfrNdCLh815Jh7EzfEHVGSu5rL", + "amount": 9964062, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaMxoEaVLwNczwz1c45saT9VCy3yn", + "amount": 9943524, + "lockTime": 0 + }, + { + "address": "NULSd6HgcWaPHb2ELTWfASGjwEKrxsLf6gSiK", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcyoyvcV7uprHKqK4ncS78b1pmfDjm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDpAh9mvqR7BrT8nXDvZmvfqYzXCW", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2E3UWQPEWXpwbhscdLTaFwS3x7BG", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQ2JMFbtidLd7P8YgYR62G5WcA2Wm", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRR2RZtAmvMuXYMVj1gery3VDufsQ", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7Z63yvHRvhDL2cCoQr7A5Uuyw19h", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtV6jXadZuzev7YLBYRfCKXjRuwUH", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeaAzbfX9qw8UhutpXZMexRRGAXvH9", + "amount": 9900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFtPhrgxeaLCgtYi5VXYWibxQC6Xf", + "amount": 9884363, + "lockTime": 0 + }, + { + "address": "NULSd6HgWnfRPHe4GJyuJ51sUTy4VZwgDsNvw", + "amount": 9870000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcv5mHLFMChVUDmZXJP8bPF2rGGngm", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe1Sq5vTmYWGciaGYvFoLjypkFVvX", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagSurJxWoZfSM8XQQrhcfx9wuQDeg", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdiwCbmbxwswMGoMyjuisgfbMjKdQ5", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGtvPod9Bjmwzz9idv2eK8Qzy3U3J", + "amount": 9800000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkZdo3bkHDwuPdhBQ69p7rdyzVuvx", + "amount": 9789458, + "lockTime": 0 + }, + { + "address": "NULSd6HghBDVsswGB8zQP2rML7zGVuLo23ERK", + "amount": 9700952, + "lockTime": 0 + }, + { + "address": "NULSd6HgiaxecNcEbDeaGTSZwZFQCitfAAwmB", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgixnFPvurbD1SfqanbFABMvjnWcGge", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPnXcTWHWXGKqoaKF6CPprRzmAg7N", + "amount": 9700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgesxFV5ansvS7NDTL2nJpZ392Dfz2o", + "amount": 9694471, + "lockTime": 0 + }, + { + "address": "NULSd6HgVo1JDaw8eVABMo6f9Jr6mMdH9ufAF", + "amount": 9693469, + "lockTime": 0 + }, + { + "address": "NULSd6HggsiKXTvpaUiFBVr1kUmgkNBG7H4sq", + "amount": 9622974, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGfW2tNKjWBRdcb5c1X2s58A3muUQ", + "amount": 9600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuNARt2p3XMEgcSJTDTpuwgW4jbss", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaaMM5B4e95tkDsESLmCVE9p6wwCqt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgicppLTo2qBnmVY2sMqChJNhvQDXnZ", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUhGzXSbWuh1Mqwbm1BEd2UvbajkAG", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZscMFL7Dts7eWceVKGSbG8nGpQ38z", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgerA5xKcFLy1PAnKEb1uTyKSBw181q", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDP56RR71TWyt7pSpjxiLnzbHiagt", + "amount": 9500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqNHYnQg6xkv17x6SAs2JUX6y7NLb", + "amount": 9450607, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxqsYDNSj7hioVV9QxKgPiuiVXBvM", + "amount": 9393600, + "lockTime": 0 + }, + { + "address": "NULSd6Hgax9jdNn3djBpWfPNDP264GnUYXKXf", + "amount": 9329474, + "lockTime": 0 + }, + { + "address": "NULSd6HgeofTSK5YuoeazL3AN2ETJrMZ818xe", + "amount": 9300494, + "lockTime": 0 + }, + { + "address": "NULSd6HghvcHxXnAPDGiv1WRgAQyNA8VdH1tj", + "amount": 9287099, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ4d9sfaFNjVp178WASV9zsUiyup2S", + "amount": 9261554, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4aAKyLvqyswvqcxEaZH5f9eCKnef", + "amount": 9261412, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLEbo2JhcGrCPVKG3Y9Cz1vKtVjqA", + "amount": 9200900, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVttvP2jMJ16ScMDNXKxVFaJz6a8f", + "amount": 9077760, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQNytfswekN1uFTGhoRhvb5zaHA7h", + "amount": 9002937, + "lockTime": 0 + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5LyhxRQuB5oJ29dinedE7Vf9jcNs", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxkjcLdZczrckyhCVnxzGcp3n58mv", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV22dD4zbTPnGGMwpkWmW1HWPMavmC", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYt3uYWrzvDvDPkzYBdzsHRSeZASf8", + "amount": 9000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpJBEcm4tDMLfuw3mfHcsK9d856qj", + "amount": 8974542, + "lockTime": 0 + }, + { + "address": "NULSd6HgaUJGm7E4o2VrTyRyMcnsqYxhPTGHr", + "amount": 8960266, + "lockTime": 0 + }, + { + "address": "NULSd6HgUA3miFfZd7gbXsRJa9nZK5rDVgmKr", + "amount": 8911684, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "amount": 8890000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq67LRQm4esTkVifF2Fxq3CD69Q9t", + "amount": 8878624, + "lockTime": 0 + }, + { + "address": "NULSd6HgZTajy2N3tphdqVVm2WDVSGJ7erTgN", + "amount": 8861226, + "lockTime": 0 + }, + { + "address": "NULSd6HgaK295kaFqSiRvakYnE8kBczBohjnB", + "amount": 8800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs7AMNqYT3uQNvYoWCapqSgckR5Fv", + "amount": 8755575, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9ivz5qTVWwu5PgZRwHhpupeuaWQF", + "amount": 8743626, + "lockTime": 0 + }, + { + "address": "NULSd6Hghch4g1nNF673dKKbQepp6bFZAC7N9", + "amount": 8730000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8UTgGfz5yiY6QbgwVSpyodXdd4kS", + "amount": 8700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdqC5n9ecnkjyqreDmF3QcALBh99N9", + "amount": 8618586, + "lockTime": 0 + }, + { + "address": "NULSd6HgU5ohQyHQFZiwpyKekdjbi31PjTLd3", + "amount": 8616100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbSpKrwyZHD19xu5yChisaT8Dez3aL", + "amount": 8600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXBmZa1Z1dyzvUtu7YJvLCLFJHpWd", + "amount": 8568129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ5BX9FmMggFz7bCEWCHonJZ3p9jt", + "amount": 8538393, + "lockTime": 0 + }, + { + "address": "NULSd6HgcCK6xgZkYNZeWNfAoCNyQQqHSmQdH", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaj3ExPGnoS7yAsQrqD14hqcdFmpLA", + "amount": 8500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUdKQ8ChSqN1PCuTHx83xdjX4BCbpQ", + "amount": 8394182, + "lockTime": 0 + }, + { + "address": "NULSd6HgUh7UkuWpVYcSJZTNY7cTTAof5bwn4", + "amount": 8300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaD4zP1LZVFNsEtMTvKY4Mcc9f1xSo", + "amount": 8263000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbPSJsz6pAFxd1AZoQ6qFskSFsE3ed", + "amount": 8046950, + "lockTime": 0 + }, + { + "address": "NULSd6HgV2E3GT33AH7dyW9biMwTCv7xFszVJ", + "amount": 8000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "amount": 7952107, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxq6Lyzh7MkuB63sL2bKqvvkcBexn", + "amount": 7933851, + "lockTime": 0 + }, + { + "address": "NULSd6Hgir16xk3knrJF6dBgqavsLW9PxvZci", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWnPm5dr6UM3gByecp9nwYriSD95M", + "amount": 7800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFZqapdXRgXLUyDekh7PHMjXwnVbd", + "amount": 7781500, + "lockTime": 0 + }, + { + "address": "NULSd6HgeqQGN6eS4PhUhSc25B2qv1GmtSPD7", + "amount": 7770748, + "lockTime": 0 + }, + { + "address": "NULSd6HgejgGChJz9vxVUhEteQZ2oEt6Sp7zZ", + "amount": 7764531, + "lockTime": 0 + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "amount": 7737091, + "lockTime": 0 + }, + { + "address": "NULSd6HgVhvFZFETm5U6khykpeuc6jKrYTzKh", + "amount": 7736399, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqZHqgXVTFtKkqNaJKS6LTbvV6QcA", + "amount": 7719601, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "amount": 7574095, + "lockTime": 0 + }, + { + "address": "NULSd6HggjdxFrpgTxNyyNkgRvErZyaJ73Jwq", + "amount": 7346976, + "lockTime": 0 + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "amount": 7301873, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5VKtQMy112QTKRYurE5YY4sVSJ8q", + "amount": 7112300, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4J2Vm8jchseEepqWJGfQPAXEgrrG", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjVqFpNwGt9qWh3pL7R9pmz6Cc1ius", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRcdUTBw2zaWxMQ8tgbjsUooQJbrw", + "amount": 7000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "amount": 6993706, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh5XAotDLwFYgKZtCn4gGmt49E3GSi", + "amount": 6918758, + "lockTime": 0 + }, + { + "address": "NULSd6HgdcP7nyjjCZksVcmxA7J7czBqYmRRE", + "amount": 6740188, + "lockTime": 0 + }, + { + "address": "NULSd6Hgit1Hb9UcSuVGSbCMsrzuGhhh4gZcU", + "amount": 6708448, + "lockTime": 0 + }, + { + "address": "NULSd6Hgffc4VRWoe4wiUdLVHbXZZMvve7Zym", + "amount": 6670583, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKUYfpJSdYdKKNo3NJvorcqKu8g1c", + "amount": 6500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSRDTMYKkqgEyDD8wPMttUTzyoTJZ", + "amount": 6400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7zFtQyZ6UgKcMN9L54ifSYQGC71K", + "amount": 6163200, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYzB3zLqW6NhPEpUSFeC1x9ZtEQN", + "amount": 6058266, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMEDvo7Gh7qrVe2cVwQwnLQtuv89d", + "amount": 5950000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh43voBrVm2W8ePspgUcGaUqpfK67J", + "amount": 5800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGeSUrdA5qeroVfszwvKe8asEiBJV", + "amount": 5738000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "amount": 5700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFppeSA4EUKf9WznwBQ2kkWWtuDa4", + "amount": 5557105, + "lockTime": 0 + }, + { + "address": "NULSd6HggtWozMXWttdH2aEyN6hoWQ8aTBJzH", + "amount": 5540250, + "lockTime": 0 + }, + { + "address": "NULSd6HgYd1Thgqfp7RbKW8vJawjgSgu5yaBn", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXESPDvRG6ydon8tzVMrboLnP1AKVJ", + "amount": 5500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWU29YMLtpUewfVSrRU32VQCPhFoKo", + "amount": 5450000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc5pTLBvgDRGAHqndMcngCk1KYuU6", + "amount": 5296672, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGikmaUpMnDfT8Q6Bm1piuX7xWCq7", + "amount": 5270000, + "lockTime": 0 + }, + { + "address": "NULSd6HgipxFVzt4HhigZUPhdrcNNhJpg3rAz", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXuTJ98eCkpNfUraRrv9EExsWmAxu1", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd1upAvTrqj9kVrNu5rEXsiZucsNB4", + "amount": 5000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "amount": 4957487, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQTh6SLTXHVpaxQMFQw5cxH31WNwe", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghcbvCJjy39U2qmhH9LKZfhCLwLzip", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg5FsHij2GzPbexv5CHbmFAVbMg7w4", + "amount": 4900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmyigPvbNpsxv2FjntFy8pH9L1ofR", + "amount": 4778681, + "lockTime": 0 + }, + { + "address": "NULSd6Hgikns2ogq2PMUjNyYyyrR5fABveJPu", + "amount": 4699808, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaq4PWkLXmWd4hVhYRXrye34Maw4eN", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWs2ps9Xfown5giTqeTVy2KEThXDB9", + "amount": 4500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNpbb6vXbK5MJhQheEkEKbCNSALYA", + "amount": 4482229, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "amount": 4386750, + "lockTime": 0 + }, + { + "address": "NULSd6Hgipc1YsUrKXwDBmaaukautoBev67XC", + "amount": 4325350, + "lockTime": 0 + }, + { + "address": "NULSd6HgUQ4c9y5kB62fLmaqe9APKMbBgUP8p", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX6vLBGiTxvCSjYzqf5dhMKG8Zi29x", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6rCk1yxTfxtJv5AWmWtcSZC55cTj", + "amount": 4000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghRg4QKSwuS6pGiZVs2jPiqdiBM45Q", + "amount": 3708425, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5Cm7MZNxhyeT5ZpKc4cW4BnKngSp", + "amount": 3500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbCCm7mX5XJaDVEsXNRwacbE2hpwXY", + "amount": 3365007, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi6W8x7Kh6HAFNPcoHJpAP39a1t9Gy", + "amount": 3360000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdALh96nH93zjecmMztaGrDYLoAzu", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXUBL2q8CT8mqX88NzwTZovbDGKLuy", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvh5WziTbgxc6oLdH6Mez6AkoARbj", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKym8KFAK2FunsrnP2ueQtaUQBjyn", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLmWNwrVYNsSJYiEha8fxypCewHNb", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggEfFMfeyxqJAn8mC1AXwxDvYPBG21", + "amount": 3000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4FBHvYR4ryV4DWJ3eug7VXqEySDC", + "amount": 2917000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjRzyeuREDFUeY6XAQpt6zNvxsymbk", + "amount": 2900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "amount": 2726099, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXN7sBRt537RgfqDS45nCBdZnWVz5", + "amount": 2690325, + "lockTime": 0 + }, + { + "address": "NULSd6HgjLquxqdgTeAfELfGFszebwLRJUdzg", + "amount": 2624000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi9t5Z9BseVw8YViGaYjfkvFrV9kHW", + "amount": 2555026, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2pZvydBA7XKoyWobuphukT9GkL3t", + "amount": 2377118, + "lockTime": 0 + }, + { + "address": "NULSd6HgUoXL1rpxB8U6JEM11xbCiMEARofL1", + "amount": 2308964, + "lockTime": 0 + }, + { + "address": "NULSd6HgUzrAKtL8quCefF53gzKWudRoZzg5j", + "amount": 2298000, + "lockTime": 0 + }, + { + "address": "NULSd6HggktYM53e2o97B39eUh9LtJ6vU29hk", + "amount": 2111000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDydusWGy1MT99d4WeV8Dh5E176yo", + "amount": 2087000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqXNny4fkqqz9xUNDckKnRheqUfN", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghv41P3VXfN9AErJo43yog7h5L472K", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU3M4thP419TyUiMBqbEeQgT8ifsLd", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqRedzeFc9B5XdLF6kLV1TyzAMkfg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WodmxunBP637fc3xX3wknDZQL8W", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZUvW5wYHmUReK5nv3PgxYLfuaVNs4", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaiEgwozoxgXN3rNQCnBKzwSZECGtg", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXMRD3Ho8xnrjCJSJEPDn4be7gHQPc", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJtRoXqCJRoixuC4eV3pEVj6RRXic", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghgrN1t8WwBuiFbDLYAP2pCiAZ6Xpt", + "amount": 2000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt8G7bjktWUe3dUqGL4W229ZvSZnn", + "amount": 1999999, + "lockTime": 0 + }, + { + "address": "NULSd6HghA2A7RT23pPC37UspsVmw9uUStpc9", + "amount": 1951160, + "lockTime": 0 + }, + { + "address": "NULSd6HgXAcVk4sAWw1uQ1SRCWJvHK9FuM8jC", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVfJLJyCK8zWQJzSXLLCPF6uHnSN1", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZYanmc3JYckquAVdEUT4tW6d8Wys9", + "amount": 1900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPZD9UX5dfEgioMbAgRHxSfVYnyYU", + "amount": 1888968, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPpECttVb14p753neipyifbQLnU7C", + "amount": 1856919, + "lockTime": 0 + }, + { + "address": "NULSd6HgYA6EjrQizp8xw2LEjnKsRi4Go78mD", + "amount": 1800000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8q5ocfCfbRDtPtN4MCn8JG5ypaC3", + "amount": 1725555, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpsQmkzuAEpSB4BM8BPRMasPKJGT7", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HggWzzay9mdikCPGJ4RzMMxvxegcsgS", + "amount": 1700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVW5bfsdYtjBGb7og7oZBqeSK5sQQU", + "amount": 1689000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbea4hDQmbrkwavw4phWbkPLwTngvV", + "amount": 1667308, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi3fCALR7vWzWuYnykpSjRwmESY3av", + "amount": 1640000, + "lockTime": 0 + }, + { + "address": "NULSd6HggRonvgRpHhSaVvfTCsaF4RxXUdUoP", + "amount": 1624765, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbhQuujvt6tFWnfdV19xnSSfKFaTW", + "amount": 1621554, + "lockTime": 0 + }, + { + "address": "NULSd6Hga7hdVx8PCDbrvBTGiZAt7iyHrsd4C", + "amount": 1606774, + "lockTime": 0 + }, + { + "address": "NULSd6HgiY4RhQRvj2nAri1qzrecokro4e85w", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdAv7rVWAVNWJMWJ6NNdobzkBJa416", + "amount": 1600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjWxZYNdzhpxKdvyNFDTVdFuKBbpPD", + "amount": 1560000, + "lockTime": 0 + }, + { + "address": "NULSd6HggnHPF7bdJ6mX4U6EWSErhUBhAdBwA", + "amount": 1517547, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUyqBoK3Pj6dmMyeSP9otwANAgSRN", + "amount": 1500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHt43QyoYCMZWVHR1mKJCBEgswJsk", + "amount": 1455000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcFvGANKTJuktmESFrwzYRFNRL4PE", + "amount": 1440359, + "lockTime": 0 + }, + { + "address": "NULSd6HggN28ZadrjyJCa6o3tgiUeema58V6U", + "amount": 1437300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbnu2H7ST86YmY44CgZMrX9R5kp25R", + "amount": 1400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "amount": 1392312, + "lockTime": 0 + }, + { + "address": "NULSd6HghCcFT74i91x4YmtACcjxnBYyWd4sb", + "amount": 1380420, + "lockTime": 0 + }, + { + "address": "NULSd6HgVTYVXy8rxx5wgXtzM3Vks8pLXpbB5", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYVCFSkmSDedVTU7BY3gw5vgYPZqMX", + "amount": 1300000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnk2LEFkurqhX6Fo41ysnxDecFNDn", + "amount": 1287899, + "lockTime": 0 + }, + { + "address": "NULSd6HgewkKgHKMs7NThbVDD9wD8PKBsDVyL", + "amount": 1267300, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg46ZRRG48aJ9RX6ciH5jdDJGjuV7n", + "amount": 1263550, + "lockTime": 0 + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "amount": 1217403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDUFfMcbFPY3ksoxaAXTUovYDkWcu", + "amount": 1140000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8hBCUyvE596xxK5osxs23BUtRkSb", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxwWGrZCJMg6bdKcHB4FGNwnMm9Zv", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXGdsyD2U3CGvuZZweq8MndGPvi5j2", + "amount": 1100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "amount": 1090000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5ao3JR2d5aSyS99CagbxSPrfucvh", + "amount": 1066000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf6PvZaLPwd57QxuodF6owe7u4PBCp", + "amount": 1030000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7tCNRyVcwMaHxceUjWx6ZavEjjCC", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HggfHieDCzUSu1ZFtaPgetSnNKKEXda", + "amount": 1011110, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeu8SSoC4fxB2zVRyirVJE7EKrk3A", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgagAKu2LP4pDnnmnuY2YpS9hduQUsC", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9SbDvRdpcWT6btB3imfB2wLNcuzJ", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6gxcoz9csp38SPPxyAiM89Rtyfzx", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSouPgL8zHPa6LZsrP9Zyy5ZCrK5n", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgijSeWebKFES95EBUNQXjJv9W2X7F9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggkRD3kcNRbLesgcDHKETvAVwkRTPg", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd92M4KrKQoSDh7d6WtTXUsgDR5HsG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXPFN1RkzqFsTPRDo3oDUWjKNWugy", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8o5M4UhJpRi2jLyBTBpdqSvejmhc", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBjsPxYErtQvU4bbCV3Gqqin3XZSj", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWwQvueUY9s76LbKtR2Vff5yhda4EW", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV44UwXPuhvv51EPiaSrLWWWfGLUvr", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVGt2hriskVR8zvDt1cQGPWuwWG7zs", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfirtWFbhfHcPJ8HQUrmh5toPLdk8q", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXsb3gj19KXT9RgKc5T6AkX3iVGCG2", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc6eEGwutDhgPxzHgcRB2TSo5zrZ8", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZB67vTDzAVqGiWBu8qPx7zhmBodiT", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HghJVRwtzrAqRrJHHzdwByzgXqPQUcU", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj7zFn2iKzUBBgEqiogQA4go3jXHET", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYwMuMdDY31SkPHvg3ePrguHDcwTtb", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVomWdBvMSa3LFAav9BtFGiZwGDYqu", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaoVGAKKHLUGBrCZ6qrzGJiLMF8rfG", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga2Gm6v6UJeu6DpdaKoQMgurQKkRwa", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPDzWAmGuenAzbspHuMHcfdi9b3g9", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HggKzfb1YRr5FQxU79ui9s9uB5CaE5k", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXviZikoGYphyyeYfXLdFxA2tjLWSE", + "amount": 1000000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXFKaTAvpYjmAPMR399Y1UiuygWqEw", + "amount": 987671, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYtX9zoLyFzbeiUWKcDaXsuKecrct", + "amount": 965641, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXtBC9erBE9KwFpAWEjGmDAhnsd4Y", + "amount": 960000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiFYtFZTbq99CzWgNrXPRd1nV7uyCg", + "amount": 952000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYP2RCVKyjsC4RJ8rhtKVaGE5gumQ6", + "amount": 947100, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXuJvsh7Y9fWaCCfqiXqjt9ubrxtB", + "amount": 943700, + "lockTime": 0 + }, + { + "address": "NULSd6HgbY4tmk5PhepndzNcuQeJNisi8XjEx", + "amount": 939241, + "lockTime": 0 + }, + { + "address": "NULSd6HgdaZ8efmBkos7wPsZjKZ1D6Qq8Bo6v", + "amount": 933125, + "lockTime": 0 + }, + { + "address": "NULSd6HgY88WtNGfqtxCKRPVjZU84oRVnTFJd", + "amount": 930518, + "lockTime": 0 + }, + { + "address": "NULSd6HgULjE9HgGceb2uGm9KpCkPFxAckf8a", + "amount": 926774, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWzMkmnMVZECHCyDea3872BGj1MaH", + "amount": 920662, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd4LyymSFXMZf2y2R1ikUvFNAHE4M4", + "amount": 901400, + "lockTime": 0 + }, + { + "address": "NULSd6HgeT7eWZfmkGayAVFZhbzgSwRHPeGJ7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfV9qBNTTX87J6wvsFuohXqga4A5Rz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSeUh4AFJshLC9FresnQSc7HzghPw", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgat82zHAyGaeRWwp5DiKNpTzUWuRKV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggwq4PuH9VCzhdUVqAXnqmkPhH9eyN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSsuYwwjEPaoNkPKSSiTcVfT4DHoM", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaAVsk6ywembbSiVEi6zcTvoBG2bpT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZt87jTCkm5qFhQ4YLRQwkAoAZiV3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghdBGoUXB92SGFphqSjaTHQBsAz3AV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrEE9N41ZwZrJrUWt23Q2FEGWMwzC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqVLavquNd4nkThyeBnSs8NSpSMx8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnaf1fM5ecAurPftrxmZnUFE7VjEF", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6xmcEZtrAaGz4HYMScmUooVsU5m7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghnGrTbGFhrkKkrh9nBPnkdfDBZkBu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXLBzWhCxHnfnTdsbaZ8yJK6xZq7pP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqED6sCpem4DdCCvdV4bWcPhXAkvk", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWG7zVojcG2DqX58MgTfDWUWVz8c5X", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYTiuZQf5msghiRDjan7WDETPyXEc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgaNyACEyVBk8eSA9yZcgYnJc36AW", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdAB2JZ9JnybSXHDVB5supgJeARxa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSp38TtrE4AKLYKJhXxsxR8JaxVQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc6Ho7Aj4oqrM6vFoV6JgSirPnPrEZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHp7uSFr9v8Lup9oLgjjAzGxFYe4q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggMK8CiHgwEsEUTSq5z4iExAh1djB6", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg3sL97MAj8fuz6Stey4L1Rg5QCBtV", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVoeJkV3omZse9FMFHPZ75BgL4MCWB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbExWZh8uvWzVx5UftLXjhYHk5Xx85", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbRFN8NGYxBqVqDyVs2xyvUzG2Y3Yh", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcshbHzgwdKZdiiydsQJfELFmRPkXD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVAKxqeeKEP2mVCeuSHmhRUUoGWYEN", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgURmb6t9nVT3r5mvDtSLtEndvAw19J", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBk8QFPEJtNMRkXygB2JFvhJZSNcs", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghVF2ViURbANP45uhqubTjb8LNZ7qU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6ZC1bnpA1HkXmiLEmpe4ML7TqywR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ18rigGoS3Cx7YQziHMr4Yyo2UTmy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZwoTY8yJeccQ3rqYbCSV8pH2ubJRE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZXwjSrSLWNe1usFTSmNoMr51NbGhe", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghLqSJta4rLwnXifRGZRQtPm4cjL3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsgRK49uNn4tbbQHViJP9CJwWC1Ki", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrNz5oMSdncwouQ6PTRAvhrcKb1dX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUvmcUXRdUvsc7BzdfdSZPANMupinD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU7D29RNv6UxuoCwCWS9pRxFv7s2wv", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgakePLpVtGu1y4TwckwL8oSi1vFzZ1", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiErAvrUNpF7QdbZRzUpFHK7xJeCGi", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj22S9fmSwdJSXuJcZ7xiHtegmZe2x", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbM2wPD1iVBXu53x1fGwXZL5FsorS7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbyF2RRGCPWY9HbmEqJskxp712FYJg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVExGU4x7BX3swAdxnVjepcS6UrhHa", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggp1bpuMyuuVLA4N2WoXcxBSGR3TXX", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYr2bwDiW3wjxfgcjAE9rv4AWzVsQg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfdPWXQMB9HHQtgKXPXT8dzBUfZVeu", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbc2cHAoA9UvuDrU1BqxXAmeFNQE11", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRxGVPfdDqSWQpsodsu8BBLMjx3jD", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcr71uWXHzxk7ApyM7vnck1XTeG1b9", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaEExvshwXFScwygHYABrPeskBiSe2", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGaqNb9SoB2xqBow1AvhRBNKQzcEE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSasZbwJKRS1ygMDPpNChbiy299eT", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVXXUjT3insQbvUnKQLmi39UhWEUC", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HghrdNRTDL76wZER34vJwsx5RdrPaU7", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdimVhe6PsypPNmBuQvDWgf3afo4Se", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzL443p7aD1uKGXS3ovgmJkVLBnyn", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZaTvumkpCcjTY6kLquFrEuyoYZc9D", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbi3uy5yD4rurcCnu4sKuk6AVZjLyH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ey46Aih8c8pFTeCmPJ4Azq8gYmU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUjwZNsh4118Xrob5kiRimRo4nYyJE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXXYza1Uyxw2costPPz4TaYrgK8Vx", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8MnqQY8RCDYir3PN6oMCYtpiQbdm", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsANUHmvdzdchy4pYRZ95AGjW22hE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz9LbnGavzCJkXJ9tU7NDeKGFpbet", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3NqX1qVXCyjfrGswfVPw3LeBBwzt", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXTs196PvuSt19ZjqY7N8HH8K4MrXy", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7T5LYUe69FLKC2h3xACy1U92oqzQ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgeb7i1W2XwTr62NDksTmdWU5Zsj8cE", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVjNDQCHNxzuNWGM3BVSZeyzVDVERo", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYkeSGVHCye8phKqDormDoNbDvADW8", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVD4wtzNd57EL1mD5xoEnJtevS5t3i", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbrzGZR9WnFKsvrcyRwK1PmQoCZGsR", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdGgkbAuQ7qUZFgoe3upZ5hz3JVPQU", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWLnxSP13SV4ArMiFoV2SrsuWdjowr", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghx1maJPEg94eHQih7FEVt3vC89x7W", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeL4jruK3xtuZeD4WkLs6uvMiNbL31", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgavi8x62MXsxHbB6fM6JzdyvxVbkps", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU6Y6GiLmDhz7X4u4vaKHjFSmcUqQH", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGzNATTJaX259D44V3hHpvR6egZf3", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgauCRPHKzMsVpNGk2zu1uGYo2VwW1S", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggSfxaKAPxS5xNQTuiXa8uk3q7tUSc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUeSnNCp5RpxPsQj6WEMsTxnYCXUuc", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HganyUeoxyotp8h8W5MgTe59pt2t2Fg", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcRKu5NdCwVPWD6JNqDocBnKuBcFds", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbUmSRN8maGghWvUonq8exXg8A2HB", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgff2jgcYh94fCij2UKfztEYhvGKhHZ", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfXshFApZmpGfzk8FeijyqKMETRP3Q", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEGRRrVhNAr4GV8j6q7nTnLjg1LPP", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdotjLauJZwAEP8Bohj61DWUkC1h4r", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdyyWsfevFkDJuX3Lj39YH8UQH8KTp", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HggbEzHdBPeQG3ZcjcKcHNaUpBB1BPz", + "amount": 900000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjN4Gu19ULZNRD9f9awkGudX6xuz7c", + "amount": 859800, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJyDygNjJr5ouPoq3owAEthKoPEzt", + "amount": 858028, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9P5LHkbBGr3NpnfSfwjQwxn5wpjK", + "amount": 855860, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6JDk2hnwsNTmxCHAFkdrHBZXepC3", + "amount": 851171, + "lockTime": 0 + }, + { + "address": "NULSd6HgWrnsAoHqgSe9XGWdto3k3EJd6CUfL", + "amount": 842092, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW8HwVq9RLpm4jHvXqzW5T1xeYaPE", + "amount": 840772, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFUHmKMjy9XzkyigCqhwf6uP7qsaa", + "amount": 838000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "amount": 834879, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2Jz9cQs5qH6arP5QfvbsVVQQpzwQ", + "amount": 831343, + "lockTime": 0 + }, + { + "address": "NULSd6Hgbw3Ce32NcuN5Ei6zhzYAYcMpYGPq2", + "amount": 810000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYYGr14NxSrpsWWW36G2uNEysP5VB", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhsR2ByGnkwdfskCtua9CutLWqRHE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdSvAaXBdVTcyHYjGz4jLABg38ftwW", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbMBztNwySo8KvyYZvxj6cDPsAfx1H", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXz4G1gJHZyPdx7KaBgw1uXj1nNYpo", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnoUtmMhGcCbcTTpcePc2qTGmapDb", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVRFgqxoH8gxGDmLiLSyp9uQjmY2R9", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKJ8fG2ruh1EYitq7ACpnLBtJHxsm", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HghspVuEFEqUXZVwxm4gRDhbJwCkHcE", + "amount": 800000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYRSF4fn93PguBjU5P6nj1ChhohTSc", + "amount": 780000, + "lockTime": 0 + }, + { + "address": "NULSd6Hggnckh168CmVdrRJ43pxLF7qefT95A", + "amount": 779400, + "lockTime": 0 + }, + { + "address": "NULSd6HgdbzpUA5h8xUDvfRv5cnJqJDSkbzZG", + "amount": 755007, + "lockTime": 0 + }, + { + "address": "NULSd6HgdTxm5JqDgdS6pLt58cDgxS4mZzZ3N", + "amount": 750472, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf26utgdW9KDJ33v19WTQsKmSiziEm", + "amount": 739876, + "lockTime": 0 + }, + { + "address": "NULSd6HgVXcmoyNyLqg1sWtNhXqfjUh9UMyat", + "amount": 732640, + "lockTime": 0 + }, + { + "address": "NULSd6HggxBbs2gxb9bTdyswKjd4m1Xvwybgt", + "amount": 730613, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "amount": 725135, + "lockTime": 0 + }, + { + "address": "NULSd6HgdPVjJDK62f9k6tLemKgdhZY99iGCr", + "amount": 713527, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ5xbkAxCZGMYzdCnMfQfwmE6YdoB", + "amount": 704127, + "lockTime": 0 + }, + { + "address": "NULSd6HgZcjzAqWAPjxShWZYvYpLcQqs5HdbL", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZEKXM5RHw1PKXKUSE9SAM6yzPyAJK", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWAVM73iEafTc7zR3HPJHH62QSDcmW", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiEmGMKSgLerfg1aBW9zuS1TDLvoC8", + "amount": 700000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak596dieCJ8vicnPKvHZgyeU9JgkD", + "amount": 693000, + "lockTime": 0 + }, + { + "address": "NULSd6HgX125X6X6Upd3zv2SVNCWdwC2cfaGQ", + "amount": 692801, + "lockTime": 0 + }, + { + "address": "NULSd6HginRDuToAF476ByqFzFcKEMiJSkeVy", + "amount": 678826, + "lockTime": 0 + }, + { + "address": "NULSd6HgVHTaQvVde9gF1Wy3x5j9eHyG5AEBw", + "amount": 661094, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgfED5aTjr7QqPf3grNVRNZqkm4yg", + "amount": 655797, + "lockTime": 0 + }, + { + "address": "NULSd6HgdkYj2wKUYuo9SVnS7vPimFaiurYrv", + "amount": 646006, + "lockTime": 0 + }, + { + "address": "NULSd6HgccMYTmwYyM1mPuDZakM7ihfr5Y7qM", + "amount": 645525, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvz49WciEfVQWq4VnTiJ3fzzMQCmA", + "amount": 645000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUn2qQm7rsKSJFPDtgm6EtgG5PAaRh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtb15AYjCq77ms4zafruRmXXqjGQe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWZRyAdD6VWZJtEJGXwhuxXFt7eJk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghsyx6vRTeKd7JupGadLLJ6jmCByod", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfNLCEE1iZCHxAXALAghc7bxy4QeKQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWc4LfoyE4XuanvZSDgk7tSkn4uc3D", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfaYRMYtBoVE7kXtK6y19JLkywJ3A4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiBiyK7jyypf1cWpXpnhsJCqmRJNHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYYuL7Jt8GDrWsA9RvK8dwaKto66E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvDqi4Aq9JzkMqC12ocXwhwXnsSWk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgddchSgqVpcUaSC83Q85WU7i6Uez9j", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUxhtcUbeUZdGBCWthfmNMiwzenLL8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWea6QrzZzDCAo5SsMhwfHJHy6NRn7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkRFB7gJVc8jP6PsBoemZgSx2e3HQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVc1EurcQE8p4pZquXsCNvVPDTZXBJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd3YE79Ydjs8AoP2V8KwH5p2EzUDpi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXDoLEm7MjXbwsHwW8iY8adKXxfbmX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjDzjw755LTW1TwLQND4vXerk1g5dt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWhUE82s1HRR8rk8tCP5f3VFCoSqYa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgivYefuBoC8ucXZfg2w8Xir4symfsD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd5hh2dXuP2knMXS2VrbozNgJjMzkA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUkKkJS9t39CFMN3NqRqxtydZvxFAn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUv39Y9KhbVniBR1A7JQoJREKvRMy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXWjXzkVVSYG1ppffNWYAyQECK41Ld", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdjBSfMhQa7M2xBTMKs5aaHzixiqPj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrtTuz93ozA8oV7tfyuDEGyZsyddL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKSvyUeo1sUCsXrrhUarofm9oQf3d", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZv7mMChV6rSJaTRG5DK5ab8qqjAJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWzS5G1tptv5rDGt3gLgd5Mx26EBJB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqjVwg9mjmhZpMhcF3TnYk9hJBG2o", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWyzPT6jbUwRk9C4gRD73ruQs4r3sW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdg3d336dBxWmFSRsDFxMysrRpDBLP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZAttHascfP87FbyJ8SPnMPwwPPC2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge83Dkiv7Rxh3QijYrpNRkNz1UcpyT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge5oM3FR5dS69woEcdCjWL4iwUHj62", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUrTQvDUtQDGtLzJcrpS7n6mk2tz8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeWooifnAyA3uMH5MxoWn9Fq4XU3e9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiewVM2fFDGYNzUroVHL9Rfh3u5sKc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbv4GLgt5M4PYBdGS9g9VYEEJ87Kn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKJceHkodwMpfVkiJX484Ad3DreH1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUHibfijRanvpCA4MFAzGzcrMW53T9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVX6bxDY7px7KDXGhsTRrW3h44nuRc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga5o1UtyJeLEM53vUtFhqn2EfeD3xx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf4Ykzd3NvSbHjZtRGtrSXQCD9jkTT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVn4HBQF2L1aMVXmd5S7yoAbaweVCh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghhjLjb6VptT1sMcGNzgtoQPrUbBdu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcW2vXJjuAr9WeVXHZxz8AWyiSZtsx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYnfX4F2Meac5Vcq68AZ4rbnLEBe9N", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZMZXmR6Vd7y7Nfa76kn8AHJiiSho1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXRHZGQ2weZ4u2yasbmZqpz23DaQfC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5uJGHJSjeW5kDdqZViFA1Jmn38Bh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm2JzDZP9u9NpQVjN6T2yuvDwHat4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgitz69vuW9ymWR2LRquVeqSDwGpDfF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXoXcJRiefzTyjpYW8S5PAAL3bGgCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKuFyPswdEH33H6tjbBZiYDPqyFSp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX2emr1gjBkrxxFSffW7kcbpgc4XoE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgitTyAL4yBRWziLciYWXD2yR4b3DGC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbzBs3fRiYfVwQJkaxfZS9JNmCZLrP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjAu9eRkmkwL4foo7hhr1vkCgE5Qji", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWCBfpSBd6HuJTZUHcPyo8YuHvJYvd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiQeYe42JQueyBuj7EZb6qn3rJGvNy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLyph4VTkYPTS6gs6XjwRq7YJKoC5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWzTrFeejeYDq1aJgsmM9jtosxjYr", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcdztoz5AES5K9k6BdZf4CtbFTa9U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuMeBNLidR4i2kkKczhmhdNPBAGS7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrWBzwzbmvgbUfDQYo7jrpStsaJfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJJqzUB9cPzcNoDqXYxFv9eQrV8Nk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVDjCoTdqbE4hEmrKQkuzAfRNY3hQu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3RTK6A6djkjGcvVpB3FuRwzQaqLV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQUpdKnJM5YwnYfco3VtvHh8we1HT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb5uS75qMbHNpbUX8g9cBzRvCFXGL9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggbQiTg5HjZsegamQUMVE6k92UKYsb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgURVMswhA7HZPW9Y7BZ9QmYAo3tBrh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcYqV1iNARd6S5qk2Yz787CFUirN3L", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbeATN7KK8xsBuiJ733Rx93tGxMHCn", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGn3mYguBN6q4ySZyi4GLtrLMNib7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyoHziQ4Tm8g177mKSk1AWmEEkyyy", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXU1BxYj8XVrz33YiUP71aWSig8J3E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW64SM43EwB4uucePmgwesZaXM6Jph", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY57goJ61T1P9S3UBid8rEDuv6wcHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEXFH4UVBGJB19Zct1oeAZ3cVgZXJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdXh4LhP2yXbUNhZJuPEvysnFDhzp3", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghFi4JakvjfY2j4rWuDuP4eVPrPWpA", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcapCJroayhmuBBwkWVi2EZJvnFBJC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeVixzSvATrXnvZqFFt6rwWX7Y3EX4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWFn2gFeMCPVptMhsRDuGfJ6CA3rcu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hga6EP1rqExQvYs41uCnssAPtwEMXim", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghR26i3yoQYi6fSPqodnzdZ89zksHh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbdPJd5uLhHihiwQRKFaDmpuTyoHSf", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfGnocRseDFNgeMWSfo5tbb4nJZTJD", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkTKPWB3ioB3xfG2RPZWCAmxzSE8V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZSrRTocvUQ52rahfNxFvy5PBqa4gg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUT6yDviQekUMPhSuQtnXMJotbmzXj", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDAjsMuDPYV1Q1ZNbq4GRHN7j7io9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXp4HzsG6i7bSiGMceBMunSmjG75hJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgefSN5CDgxWSzgep4GDN4vYk3jQmcS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgixZW9GPxjbcHFA9eevuyjXMSBJFrd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcsws8LEMdE1f2AHuQDAC7BLFnKeCR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfznojExYuQwq42QuZNpm6xeEkc6yY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWBNXtAYSUd8ybioXZMcUQpUoBr2tT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevxdmQhdbdVFZfbVhD93BZL7WUKwQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXK7cKrTkgRE7fSHJdXDv2PiujvmfQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZmXBbAVxHa4vyzqSDNRWDtWCtvWve", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbXnNjqEgAj1NtpKWJTbv1hkFEScU5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmRRQUprspMB1YHkMEG8JF9AuGeTv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVsvfHnFZx7PkZ9URaBsicViV42AMz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYeAkL7LUaHNn5M57TrkUcTJ1zQY6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqvxdgBiFZvGBjscerQKCQNxPoBEU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUs745WKfdt5dShZChA2rHQMLySMmH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdN9DVUAvGvkScAz4CLFPQHCxRYNA8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYLuSpPJDbM7miRPVa5xaM66imgGSQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3hzhHDonFgp31dDgbroMXzeadvxc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc2nsnHSTz2j4vkR3fXiCBeYqa5xYY", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVxbsjcq6xDgzCmDVH1SFBUs4JMWMi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghAE4xj8JYxK4XEFAyTatQ62bT7U3V", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6kaVFWznkMmDNGc34VNSgi6dXrSG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbQg34j5xyen3iK3HZX7s9tV1DueUL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVN5kkVmpjwCMWKScdvAcG8fKr88h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb45x9pZwwUw8nEqZhp3qEJmKETidV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWf7EuPi22PGZwh4iqoQqifNk7ds5W", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf2gZY9UoPJQc46BzwB4VLj5o1HNi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggARjN6ZYZZsks2Aekqsajs9Bf9PwC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4fZcjeSYekn7JiL2HpLhXKupsi8w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgioVbjdQqDVAodrSP7U6gqh2ytYCDk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUFA9iguLQcHdNujnjF4EZocLiDCtS", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyHVXWrjCiqbncWMskFMLsgdB45b4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3MZm4xUdWd7t7vUc95fZJ2U47T6F", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzGo1RJqyEmuo9XpmuVFYN57nXZJg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCMRRj8UUBeCbPyfxYcW3cpg3HM2h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVEebfbUGgVdvfK99qKQhGwChbYZ59", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYHGqpkYFjw2afKcHRLfhbhj9QZy1w", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge9iKU4swGN3UbSQYQSQcQjuDamSUK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfybwWwD4cjDTqdW34LBCezLaNkgfH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXf17Xy12DRs94TdyvMA1CrijjsX5n", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghEUrP4J4EGsiqd4rqAWJAZpeD2mjq", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqNnpaBNvvwbnTs9HWdJbEr6mYH5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZkJ3HCe3mH69AcFk75Lzsd9fCZ8V9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUwCBV7g86nTynsumgCN1uyhuc48Qp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcHGtyhShB2QdYvUjm4XfGKxRxYdgR", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGk955zyA5abegh8QKqXfixdSzmqB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggyJxfV6htAYV4wgsFud5KEGGNfLNz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgga5EH9dYBbWNnu7LAuiw1eS2uGxq6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP4LaviShzdFZ961MsdA2a7GaPd6H", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgssEAJHGKdEnTiPL4g9Tek12Comi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaqwYDsZww4RUSRVyqU2D4GhrDJ5YT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgduQ9kVdrU9gUzYexYdeMtZvFhSxxu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVT8XMUYpbE6fjjirRwtpkLqsf4Ujs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcar9cMqvMPKE6RMTNEEVaQGSBnR8r", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8Fhc8mHzqjgABuyQhWeikMC3LRYi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV8ULRSeWfXxNk2JZ3yg3gnKUqemQc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7ojJUEnSFituTtqnWfJsj1YuqbS8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYCngH5xoMsm9rcmsoUF5UzEJYbaVw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbBvh228WEPz83i75ndJwCizbvkqGt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiLVsRrq2FbjsNAe8ZTHMYzj52yTJa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggwZqFhfX9ifMsudyivLZ9U8sPeJDc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiRLQPRXNo5hyRRqYYaBWJ6RsawqoH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4YPxJCJwi16M1KGfM3bA24mUkmh8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXmQ1ymVeGDUQasXBihg97iQEZxbma", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggBRaTbnfyHCvGBkNxzfkaz85sfuee", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgjc17nHfawFSQSimvhV7Wb6FNLeATg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJvUpPumtm2fhn9pcBemeXtuqnLGe", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdG833nxyxUn1C1rbNCLvdAweRFcgW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ6MoUtvhhhBmxYkT4stfpBPabeqFb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY9HwgxhZysCwHrT2hSRozu4HGgShx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggxyVjXDN8yt46VjUebrtANnDii7fk", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQNmZrPpu63eqrBxRGJZxHGDrvdce", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdryxZqK3R3pEndF4XpKssVWvYB5iW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggx73kgNU56ttPX4DPUeENurAVzp83", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggDqy9CDybie77ucuYHYsGvhuaxRER", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdp1Dac3Bab4TtaVukjvMmz3xwZJLL", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVYh6d3Xa6wW7CdFYTaLRQEUo21YaP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcUktFoEG571cqhq5gUTp2M943FSKJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaHVM8gcuBLKMYhcTFS6fg7pXJnV8E", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW3XWKje2noQEmiJvixX4GBA66DLUV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWiK9mmgYoEfcvFm9Ki1WufekZ5q7U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHzSbpoHraQ37mV9ZhZdahCZTT1ts", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBDkfeEdc6DgZbLFpzBVUhxeT5Ho4", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY1w7njTavhRKxkxGQFmesiqj8ggHd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaDsLqBrFimJk96cKSrQu8xGR1JSJu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWHqsaxXq56jagfrggLd7mRDJV1Gmu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUEgtFkf1FomaBaYRUTcZABizkH1zW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUJRcvuoxYHDtrm1vJnthFMbRiJjjQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgakRWJVXdC67mC3t3JL1C9iketLEPG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYRuiXXFs85wvcyuCUixWtq3JyNns", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVJWM1V2tBNsfHgQjPBG8Mu2Paimk9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjP8NpXjoEy9CXYQrSHspaa2qqHfXx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcrF1YMrnYLwYRgkRKEtCRCD4Z7wzU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgV9UACBkt52NrxgQZnpEXirVhwpTjE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgebzdSZYYttqNbTStgw92TAMe8HsiW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghNbLDhnf4wbF33KL8ae4gYyYT5unC", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcnnKGmj4yYJoJ1X8SHRvNKekXgnZt", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTKhGGhn2mcp8kMkH3bi8GfdtB4rs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfPxB4RwrjjVKJa7ogEMNXadrjqwPT", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdbask4axUcaPV42RXp9c6kBf6W8Am", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfECbttUNgdq79nG16qm1uupJgdN5P", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghPfYsHUEQbyigFZyMXZUphByipojc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfyDBR85BVpst4xtUVMLzbQJxAfHvp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbFFfmuN6fSBJkhyDhjdgqeUk7Devi", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdsUctdt4V2Ud2yi3cLG65D1gtdBV5", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd2JX1vXbVMXfjeRxb3qJo6QwkxJAP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg7p32xKM9NyoEoKq3a6p2YzLKaJua", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbo3f1mbosf8iy2YVPzLD1T4VVMRB", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1mBvsxPRLAMAVMkx91a1DtwQrMX6", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbjHF3NEqUmR6dmM6J5aDgBkP156QU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZP3Wo1cbWkh7MhJ8mUL6jwtGyGmJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbimQn1jZTZGhZvnQCijqGjj86hHTu", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUXXjbxu4Jdwy1NAFfC3UWkcEYqcM", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZxKR94Uxy1yYGLX58kAkr7itLfVRg", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgdYaqZmJf6PteDubXci8HxnewJ6wyQ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaLvkqizLouHgZPyBC6HeQmZGCmthK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgX64ghgc6apnsvpqNxNND45YBDMeGb", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiXKPeqLyVrAWfkDK4V1n1CtNBGFL1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjayozGXuP3DduhYbLGoFRQT5Umi7a", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfUu97cpsuvSuXTZw6atXWQ9aga3PU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiit1QvfvaRX2pavvrQ1Muv5nh3sCN", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXJ3z7wERoLxc6HWVoyxEfTJ1U4sRx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoMXvLZ4djsQUaopQrzxQTy9tMfGF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtYrXxLxgQSxAm5Kv4qGUz5CZQH9z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUx9NAWZxw4rUgoxwYi3jhQMagk3xP", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaTERpXMzMr8FUkf69SoiXW2aKQ3PE", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYfZAGQDVDC3NUtaiuSuCrekMXYUyp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfgCWyoVLdb4iM3bbgpY1bQMxXJ5Dw", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZPdcEv7QnMLr2eeNraF4ANANjT75p", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfKcFcpZN1rRGmXH2zoqKa2GJMuHs8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8iH8QhGLdp8Wab7c8tRkHmbWW7Wa", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeGFB8cXocBopyWi3rLEW24RjGBuQh", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge4dFdKbEyAJDLrUwmWb6e6EjNVjGU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZU58Vh4UNEBJGvfKGruFNE7jfTtuc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcsWxxQiRCz8gn8EebKuZEDTdEJjrx", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggskEPHKSKKm6iNtRgrNt8Vj8UgVwF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfuERuEpeNvQJPsMyYPuhXZ6kD7JKU", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc73bG7sFQCk1ELTmRcHZFGr1NJ6Kp", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGoRDhMpa55XNqgEAji2r15UaJS5J", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiYjrrjtuo7bfENB8PSbXT8YNGWd5g", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQbxRnnJfhGSAvdCd9o3TA5PQ9Jm7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZGMAeznwPUjneTyzBH38h1oAuzbRV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgevHpsL2cF8YZTwbd98EbvmMYCba5U", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3HGmYypAWsdy4nKtZ2k65U3SBtbH", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghVKBhZx3zbU8H87vzgueji5SN1XF1", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiVBWUdZHwLzxq9S4WC7pQEsb3zM5K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRSFbpxNaJGJs75x4ML7Hv5TsW7k8", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWcGhCBFuYiTF23LVkyAaqv4w9jmxs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBA2P8dCkUwtPdbwPSMWkzrvsNTDJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfvfhketoycR2mAdoHP7pq1NDRPhzJ", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj3NhwvmTuvfF25YuMX7PEG4PqfYRX", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjGoHrCDD3dFwrNaYJnU2LC9zPJSNV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgY54n5W5xwAAn2WXxmyXD8fn6cdWcs", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYEAJcSn7tgHHWzg5HyyFpARtBEYZV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbp6qPkAYVf1BwJnJQ1td37sQ9Sav", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgaH9eUoA15LDEdHKkoDAxnpVX5ze5G", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgjUUvmDR6vXdNKbFjofyq6MzSs58mv", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdoLWS6XRSUJjcScgNeqVBPPswfL2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hge1XEqYqP2T1SpXG32Z92CxvpvrkaF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgW7jbh8aPMrmWnxyMU1mJTVRpsJGhc", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgfiFpcvRjAeqqTNkkyc3zsLxiWx5XV", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgiZXpsiQm4ubEgFw64jcvrqmJcAiBF", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hggc4zzWUxCftXqYVUUpdY3zsynVamW", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgffJdhr59XjB9Xrk3XfUm8Kx2Y1iW9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeVH8XtnBQ4zFqZb9yYCwPQMCgv9h", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8wGy8cNxUwtBhcN2udz9ZTw7zp6K", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HghJyBt7VZFYpu9aupYtMs9m5mfg5S2", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgerJ7sJpY122oBoubiZ4VicKQkAfY7", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgisKssQPSHqPYxY8J9DkMQHoyjLrnK", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6wgrze6UEwDoHSVa48kGkKrTX79R", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxxqBwGGeVzYGW8gQCsbbCqrbuK9", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDjsaDzDNXN8q8UZzcZ717XigqpEd", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYzaWsTBB49Kr1fJkypkS5Fpnychty", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmRpnBLroV69oE5nsuZHvoiQwRppo", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HggSjdTQzphUQ8Q7Ztib57yKaPncdhz", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgWdfcqLVBNUq8Y195FRjcRjRSe9n4z", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrj8dn2kG6G96yZMSLxR2e6N8tQWG", + "amount": 644985, + "lockTime": 0 + }, + { + "address": "NULSd6HgbKgJNez4zHnYdgiGTJDf23VToShyU", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgepcUkuSJCFPnoFTZhcPHF6BxJZC6C", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvKdSiKmTscTsAmCNws9qj3z4KrvQ", + "amount": 644634, + "lockTime": 0 + }, + { + "address": "NULSd6HgjQT4W1x9v6CHZw6GhWoKQou2gNsha", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYknQuqyjLvp7hWRwyKnVfDwb3bva9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaMD7hKAL6XyJbUyd9KN1bBrVGvn9v", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghaJj7zoj6rsEJPFMaBWod54ePx8uU", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUYcusFKmstwjXvPxCsm3gew3QXkAN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgak7zcQjY814ZWQqipBx6tr85wnrpQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYuvq1F8ywRMLXNegysEGg6ShrmuAA", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdgxmApvrfbPbXSbRVqeM35bxtzBYa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghUufocxc6Yn6pU8ALTHohGYVEtx6g", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiscAoT3rZnppQt7u2YisJzoEfjJav", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhPd1eEmD1qeM7xSCTbLWhwjcTH9F", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghPPqQW1SoemGSRxn1MUmkSeid3A2D", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTEJ8tWsK5T6DqGntnBDpzwL9fiUE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc5zxWKTaB8icy3XKHoeerbpezWpx8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeTf2shqVheQWbcYbRwZanePRcB3oq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ446rdQ4YicHLHL7AEG5HMmQGxebE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ3iRZ1CKzH8c23R3xL79Go5LoakuD", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbtFh7Y6kVju5CrbvmsAKH1rKzi35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1WjH8YFHup48U2fun1qicyH6PQ9h", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkj3wXNMM4XFiGem2rvfuHgV8AhAZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUpcJHUpazc5KJ7vByLgaKZizcH2ie", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggZuhZJn7D1cbSujCfeNEs4XLUeTQM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghhHt3Tc14nWZUzbdRMLEcQxVwpBoY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4QPg3FV7J9ewNVn33cY5Y1aYH9tW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcXfbUHvEoqHjqP5z4GUvMt5HsaMQS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcxGzzs6HgKCpBsb2dzRhoqPuZyoWQ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWkWwZZHU6R5gjiT9UrTHAAjACXvEz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVKfBMyzvV5vk74oAgrfTVF95T6Erv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggkryg7x8QDTHTomrr1iDdMmfbgkCr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgY3LfaizvBg1MZ9eQXCU9oGWtn1qsY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJizvxzvHewzZcD4iUpEX9CzfQzSs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYvt9oxxB9hkLbJ64jm8hd72H8ZkJs", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYUP3XZY3DaUpxaAMmzSfKxNBgCtQY", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc347zEnKb7Zef3CMbe8g55neCMoQd", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggG74VquRjVe5baFi18tVtMTtTw7b5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh7qoWSGQ5zyh4U6oidPYA2R6z1mR2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFBJj4rH4qdbd5CfBz8xzuRDnuGg1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiS1GnGtE6otLw8BcaNB1gGTJEdCAT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgV859Nde9xYxyFpjqghgzEafHT29j7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgU4TXrDug8SHAb9fWpKTQ1JrjkFGEr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZAHLP8M2R5Ep9E2JCsdZncuzb1D5", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgagUxKZafnjtTXKfP61t34f5x1d9Dr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXqHbWzbKsqpenyZV3WU3SJMW36owa", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbaE2J7eUS9b1XAtwc9nUjFBX1DA9A", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUrnFFkoPMhBvLiUBrG6mrC8aaXiGz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh2qieipB5xzbPe3Q8VT98rVQXb1uM", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg4WUbzy2hP67ExCQJtDnNyUrU7EYV", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbxMkXdR5bGACHmxeC61nWuvCueF68", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWBUyt31x2hPhVkhKtsgWyd5LU9V1", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9GVxCGpZsxAqR2ZVcUBZY1fjGN8p", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcf7sug3Z19vhP2wLga19qRfHdGRCR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgjBhoh1K5bQaZs9tqpMBbSBoHTbnJ3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeZk83sM5qiKkaTUXutSA7D8s9Rhga", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWWVxMdbV5MxytfEfhyZwvWKqmXpoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggieXGm1zZrZhx6Ps8Z79acTXZsYsE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgcneiVuisNzPRocqmmiYy42BHZUsea", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKavbuG415iheovTbxBwqvnAhJMFH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi1zW2E7B7cSaBXzdZURiNcudGttfh", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX1EztycFyQV4HabevQZ5n2SZFLyE", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaxNb8p39VHZsAzrdKhfmrZXCyk9JX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTHubAj3zQzCURoBRJfmBQYXBV3jK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgULpEhh1sMtQ5mfQthF2k6zFY584fr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZRcreYw9mwidDfJ7tVzpLQsELkRjn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbvewhEbMwZdbAqZrPYuMLDzDUcNip", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVMJnTWS3iGm9sRvN2r6g1jrkJQ5em", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVZeZWiPrGpGrZGs2PXVxf6cRVVD2X", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYSUQSAFXVv5Ys2TBzE1YFtWpGSkqS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf3k8gn8MvjW4wSp276rp9pUV7zRBb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYiPemdxjYwLDEsFqumfexEgDafE1f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaCTnvkaWR7fDMYg2Eixg5ygEvgxJH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgdf2p32waUki3ryCs52c45Pugb4oHz", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXt3ayQZ32SxquT94Z22CRAQsaVipN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBh9bz37RKSbMHe5TAUfgVUf4gnnW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaWJdcG9YZcDfDa9Xk9iEvbJFUR44V", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWfRvHvGHAnLCSVUsu6bTN4WW8BCTx", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hga8WWV64gDw1ZVzxPrpHBbMC4Y1ju9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghwTFuHLCQBg681DFjKeGdkLTuzZux", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW41ZEw418wSGSFp3XDH6CkXfpg3UZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgerrYXXeJ9yhUcsXoz8Aqq3A5PAURN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgchhVTknw9ip6SmupWmCfKTwoiVvXL", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaSPFCcZAhyp4FntRxk62EreW41tmJ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZBE7NFDReBXw26b4hLzTCyqVx4D7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZzda9gWv7FXEY19cdNsdfpo5ud9oK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMKCM1v3N5o69LNEJbgijSXiv18tk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZHHaV4nVqqcPS2oeAnh9xz4Mx2jMR", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVv7jnBHsi1pTEXrGTchvMozfiuYoH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXe9cA4inPQUsvRtxcjtmLUquKN7gF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcamd8ofbkQUJcF23k2t6PLievzVNX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYFmRo5FBzbr3fZ9NzsBDsXgyCoU38", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUWARmiR5FbdPg9S5DaX5tpAsGwJSS", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgif1T8jdj2GghLSRyCfjv6sRikYfDX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeeQHx1r8qxx6xuWLXFaMt7EzrbYh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgXja6W7wRi5YsbpfzMiWst6GXwietq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYjrFqUGgHFkD6vTDkPjrNBr4TfEVX", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgfVjorGFBy1XxHwYhCv5NbcHPjtnBK", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdmrMxnebmrepr1TApuM6VNK9yH46y", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hggy7KdDXUFVcyC2gHGCUvYCyDFfwUF", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7xr35atBumizw4g9wLWw1RrPGJwt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWRmQAat4H1bLjddonahyiFyP8rMhw", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghXjw7rvS7sDiuSFtN2toigCe3zqXT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgW67YGtdz6RJWkeCkhuJhedfVtFYW9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVf1QaqfBem3Bp7orTDy9AYqKxWCeH", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgiNZTrmsGFEoEWBXk7kaSmojQyBh35", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWZ2i4Kn8S4T97bofxDqUR9be6kK6f", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdRyZBS8HG1bZVGRrq6R1moMoqpNwT", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggnD5T7T9njYjNUh26yFdqPBs34384", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdFtKaYh9zwdvATJAXpkxtTRNi3qGn", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbNa7USjufU7QYK3R5YAP6qxpvqrDW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgYR6KwZMsKxdiro1ZyViwmdEovEZUu", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb6oXKfPkdLEhzh1BDLJV4AyLnaUJW", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghcWS5tbCcf4raBuy2UUdCja119D2J", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7qBsBeG1sdPyLPaNWT3dEr8ZB3zN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUuJY9ZC61cSCU78wM2Prunr3Aux7E", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggKDj61TPsB2mqN2UcJJafvyg8vEtb", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgihvwtjrU9SJk455Veryg7DgRRo27k", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggLU675sTnSp5o2aBZc5cgFXRPXP2m", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjBG6MEBxCe1EysYmjPDf26XRQPcN", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgayuAarxYyDwfmApdmAhPPT7NHK4K3", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVWbMg81pCZRxd3iasZoUnnnzZFEcZ", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaa9ytQ2bX564okU6gzUamk3hJRaun", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVvWqrUokVDL1cbkBUQbFvn4gSXhNv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj8T4d8wGL4aUa6jJZsbr5Z5AcK7ay", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgerbi67ZSn1UkiVXYnoJaVcpUAm4Ka", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbTGps3DgnuJsNtgADcCyXYiUdptbt", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdBduKSjya8fPMsUyDsjmcZDp9mYwC", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAfQcMganiuM3a5CiRJfGYYvzEBUG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb1m5ChcmcRPvrC3EFen6yJATATmuj", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HghtTxbKs2gFxhhv6mgpNYneBztQ9Mr", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgenEU43QFnsqZJpmSWKqMWf4BuzrC7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKRDCJEoUZw9vvtp4ev3Ypb3cz8R2", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgcz8jRW2hnV8UPPdxgzN3dbT6JKgLi", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUMU8KUaiLgnaixGwsjHNHPR6x27in", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggQ523K2wn4K8gsLgMeCaEdxcNmX8r", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgaQjo8KkoPwvR4DMfnJeTiKEojxJFe", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgWynJSmP8Q66t6tyxFDjHYY5qDFedv", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggySyfFGu9bd6Cp7MxjErVCupTZ8k7", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgirUQtD9xqNEyTEH8GxX5eV5yLRKNq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgVBpgQ5otCS5wkxYcT9spjeXVvXGKq", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgajdmqy2vttvVZD5dnMeRk6y67goh9", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7Egg9fgopqQGyc2HF7MZQkuM4BV8", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgdoaV4RtzYpfYysWMQ3XQZ6zyjjehm", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgePNoHVtXA8Khv2PJYAvAbSiwwubQp", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj9KnU8pzYhxgGk4inemu5WW4rnXq6", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgbLK2gBm3f7Law4fSQLT3KTQ6bmJzG", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf1N2H6xEqGGqs3n7GNcjD49rUnr9Z", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgUcnFjSiBEz55zGqsYh9dicXLNjZVo", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HggGM51pat1YFE7B55JAhGsd2SPC4sk", + "amount": 642987, + "lockTime": 0 + }, + { + "address": "NULSd6HgeXpJVQ6jHWGCLJztG4gcjqmM8nmSa", + "amount": 642636, + "lockTime": 0 + }, + { + "address": "NULSd6HgXopYS4G5HPEMdH9pkKTNcTLc347cb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTyWDPBSWvL66pQ4eYiQqNdSZuBDsa", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZvxpg2o9VRakwJrPpE1aSeTmv59dp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeJY2RpSaKKMXfoR5ZGWrFdL9tbMiH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVbZNeZ22FViMMHYyURRDPH124MwEV", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWMUSoTkhZPDqsDjT5gBw4KbXdN9Av", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjA8cxXkrrDCyKq3xDPN85P5LEFndr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYYzL5sV2NjiyF1HG2FAMDVs1UPY8v", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgevFEapCjJ3dz9xxXCToYnGnnM8j2c", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXbAG1dwVCzBGbzyAgp3GtrEtR8K2G", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHrEfciGvmekb1EoAiCBognXfdJ19", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggs35tjwjzqFqNnAhdB29J4iMMmFcJ", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZqn5gqxWnzwSD4FUtGauyjD8yHdkR", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeNUgtVQfYK46hz7So6qLm6RwoGbdq", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgPaoq27ZdK1ai7eWhcLfKYkucwHo", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh4cnVMceHoR1qvacfWwZtixHZeiAr", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZAa1VLAqg922bWMPY2myEfpA3wZmE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HggPSzuPDyxtxsdTpj6U7CLDKVowCgw", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVzP7mucMe1yn4Wq55cfsC4YkFrvv1", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg1k4dgvmcE1yBGia1URWUXbRXaUxY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGtJMBdxYos1JMDjRTxrXNtWbjq7N", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZT3M3GCFdDmsf93bNXrYY3GExEChK", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hggguuzom84L3q4yYK1zKzVjNi4Uvxe", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfobmcu45zEeb9jK6XFuaZccNL9xUp", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgehNYzj29WgQjZ6DTHtPpF4c1KoDsj", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgXxGx9MBTR497xWrKQfhRpM4hDPP47", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVum9vCySTCREvJ6pFC4GMKPP8ef9P", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgfbxB7aHA8voUujRbURAExjio7K2yi", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUtTV3qDM6Ebem7chM2unq1NEiMeZc", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgeYvPmEJ5BN7GPCw2FUkDA3N4xHmdT", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgVpTB6knWq4f8f8q47hJS3iPnr934a", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj1jvxzvQ78rckxCGfRv7WS5wGEYeE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgWpjepnjQJTxCuU9EtR2AysGtB1e15", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKoKi9vGvKvH7hEQsmo9FwYeeQbpY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgZd3ECAxfoM3Ej22NSJh1umC7k5EWH", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcpwqTjSSF1WmUU5wrbyRwbffxPjKu", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgUNd8L1qbXPozswhjxfWZovBPQwx9A", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgcZV8P82C3ZDxPCT71Siw61ToEPL3d", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgYpqRNS9tRLKoDgiVJUVPr162XAdeb", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgY4kAcb21foZiDQRNQ9EaYSF2rWx8h", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgjMTWFoSNaSsUwDHLbFdKQ7Tvg1UPE", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HgTtk7Gf7Dn7KT9B818L5ZMpysNakjY", + "amount": 640935, + "lockTime": 0 + }, + { + "address": "NULSd6HghimCBoDDHqT2DKoVTDHT9KTTd6rZj", + "amount": 640584, + "lockTime": 0 + }, + { + "address": "NULSd6Hga9obZyMy7dwhrvU6bagRmiBS4jASc", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbHbLryPdfkGdSZCrbUxYvKbQcziuz", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi8FwWbQPno3W6HKCyhQpMzAHun54u", + "amount": 639207, + "lockTime": 0 + }, + { + "address": "NULSd6HgbwdHp9uKMf2oRV7Yy8ki4joZDxxgh", + "amount": 633486, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdKPDimSBnaQ1CVC1Uk7YkVptGYoqD", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYGhBtyvAz2ZXTnvHoTuZXM6mZkqfp", + "amount": 600000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdH91Qp5Z1aCh3Xjg1WEb7QqpPYtJ8", + "amount": 562333, + "lockTime": 0 + }, + { + "address": "NULSd6HgcBoEp36urLMJnLXTz4YizzM86x7Wr", + "amount": 560140, + "lockTime": 0 + }, + { + "address": "NULSd6HgcitCUfzq3Lo3CuGbT33SfZrN7HPxR", + "amount": 544852, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc7RGeiu5TWy2NB7zc12q28Z2j2Yx8", + "amount": 533869, + "lockTime": 0 + }, + { + "address": "NULSd6HgYMX4JzeiCYQDjvBegtvQLRycYuA7s", + "amount": 530000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfepPCsDWDusrJ4bfHxKxFiCLSQ2Y4", + "amount": 504403, + "lockTime": 0 + }, + { + "address": "NULSd6HgfD3HkSzo8Y7NZVTaxGwbecJwBePKW", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh8mTXsdHUkapWBkAqKmEs9uEkQKZ2", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWaqy5fNfiibJcHhhn9T8jzzVhdQ9b", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgegQSQhn1cinGXtQmLEpAgwCyTo52U", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeW3oEbbyxZ9iX6GyAraPWnKihbU8g", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUbbaX2CZdD7Gshyr6hozHLwbDkVdc", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg83NsTsH9XYF9b1cC9ddbAhyCNu6C", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HghCS2gNjd1m3S4AtENFxVSv3q31JV9", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXPxbf6cum6Th1grJ9LPAvDAV1iymC", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGgSzKcHf72gY1SbmK8o1EYXLm3pm", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgabt9Rtm69Fi5hsjp6F9yjNDGbZcvU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfcppsX3N11Upa3ZFmKDGz6YRehx9J", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYBSMGM28uwcxWNCGognLCiq95NUnU", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ9gzguunwU1x4HuFXvALrpranbZ4W", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdT5eisRoTLoHMRX5UUP7jTXSVZih8", + "amount": 500000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZfE9MXGSf4AqesaLB9bHPWQ5tvkcD", + "amount": 490000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdY5W1jEbksJ3eABdrzHz75gEpsko8", + "amount": 477569, + "lockTime": 0 + }, + { + "address": "NULSd6HgVrXeLj8Whx1LuVERQuVRSMWZPsg4Z", + "amount": 457913, + "lockTime": 0 + }, + { + "address": "NULSd6HgU9k5vvTJa3frKXBwuzHXBJBDi4fK1", + "amount": 416481, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "amount": 413430, + "lockTime": 0 + }, + { + "address": "NULSd6HgeoYzPeEv4dxy1fXUJfYaCgXZ8kup6", + "amount": 409000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWjF777AwX3JWAnzbS8xXhA2btMco8", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj2aLpfAj9cfRuL91KGTErsSEyoLBm", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWoFB79FoHMULvshrtwkkyQeeVkBke", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYPTuqmjjdJDtgVB2kaTys8kCgESZ6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfZMFyxeXMFdWqPDVAmcpBPxB1tG7H", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9PsntMTFPXkN6kfQgdeoH5CCe68D", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiWLrYYdWTmDFFLwrwvy1F3uhekcBW", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HghTxrkh2XrVjPQjDPv7GFYH5Am2jC6", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiciebJsRELhkNJd6PGtwgqNS89agv", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVQwetU1wf8b1p8sDTMPb3QTNhT9Jd", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYtCvPDNJb1y6LcosewQn8Q1nh4atK", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYX5er5ZrBSazYHUsuqMtGp5gzwbza", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYJkHhzQ6RaQiQND38EwgGkqtpu2X9", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgj5SM3dkXsAQpxus142ttissGyGxRx", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiw1HDFo9MxWbcxFcmtX4Gs5xC6Bdh", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadmeVwxAjcx1EvZu6fHgDDgfo3AEp", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW4Cbs1FEVR2nkJkq8piearGhKKEPL", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgjH89u1onuvTHVpepTEqocgzCTxfXb", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgXVRg37aCzsMGgPZ2UfKJBuiv4FFJC", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPn2sX5351P1kC6LYQcvFikPoGacV", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVSPHz2FZmETdHMZnqmACHLnh8j6Rs", + "amount": 400000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU1dN7ybRY5dk9qDTPgGjytsupgX8G", + "amount": 374054, + "lockTime": 0 + }, + { + "address": "NULSd6HgbV6jDJrDMjBG9DTQQHsNB1haFwMdz", + "amount": 365644, + "lockTime": 0 + }, + { + "address": "NULSd6HgZm4hrA1tmdgSL38uZDhCJZVzsi9nJ", + "amount": 330000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghbie5fzNQ7VnT6NohiDj9KTphi2i9", + "amount": 329000, + "lockTime": 0 + }, + { + "address": "NULSd6HgeuxRo4mJ7MYaquq6efC1DbExkNQkx", + "amount": 307700, + "lockTime": 0 + }, + { + "address": "NULSd6HgagXYE6nqkn5hKDCrxoyL4Jo9SKE9B", + "amount": 307200, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdiHXQzKkQJwqQUefpGzsVeWBABeS", + "amount": 300000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdApX6M5v2Rg3o4Lkf7gfj8rUbLEpv", + "amount": 297655, + "lockTime": 0 + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "amount": 285450, + "lockTime": 0 + }, + { + "address": "NULSd6HgfDPU8XedFapoFXRwUWgxd6Dh7QzHp", + "amount": 232999, + "lockTime": 0 + }, + { + "address": "NULSd6HgYv63kftjAhQFU4vQe4rbwPdWMDFBJ", + "amount": 203900, + "lockTime": 0 + }, + { + "address": "NULSd6Hged5cguTADSD1J8CptkjM9CYR5G2yf", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6HgbtyqgQcqn9Dp6SgX3qLNQ8Fb5JA8e", + "amount": 201900, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg99i5PAxLMTdLLTvdkjtmnLexaVqR", + "amount": 200001, + "lockTime": 0 + }, + { + "address": "NULSd6Hgad63Z2vJizXKhHJWEKAKKkAk1FtA3", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiJpCwDEYwVaobkhF8cVy1rn12wr7R", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWqcuJ2H3tL8pnscUj1LzufD6Eqspp", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgWGgpcVL92N5otxxDfTdpuoRNB61ra", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYWwfpAZY7EmFwohxknhvfo5or9kVS", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVC7r22bPkA2fgLbQG7skgnYvx7GiM", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZKsuBT9hu3oFNboRX7Q56LSdw3Xap", + "amount": 200000, + "lockTime": 0 + }, + { + "address": "NULSd6HgiUAQLPwrZSVwU6N6c7opTFvRJfSc9", + "amount": 180000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUKZPKzbnxuSQJL6mF1eQgfR5YXxw4", + "amount": 179000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc9V75koH374az7YnunibmoTxnoKw9", + "amount": 177286, + "lockTime": 0 + }, + { + "address": "NULSd6HgfmrPFwkLeP8MjprkSgBJYtQVw9gjy", + "amount": 174982, + "lockTime": 0 + }, + { + "address": "NULSd6Hgfvu1eTKWzVjZyCSecpg9bYbbPmAvH", + "amount": 173499, + "lockTime": 0 + }, + { + "address": "NULSd6HgfFpW8pSQsrwnQ77xYd69MBh4xftQA", + "amount": 173450, + "lockTime": 0 + }, + { + "address": "NULSd6HgZ7WWWtZSdktrTh57k5uzFsvdNRWbh", + "amount": 162550, + "lockTime": 0 + }, + { + "address": "NULSd6HgfQMJh2Yx49T6wihSQGw1fLqApmXHG", + "amount": 148400, + "lockTime": 0 + }, + { + "address": "NULSd6HgVgZ6uMsLwzLaNkxvEt161ZBqwgdCH", + "amount": 140000, + "lockTime": 0 + }, + { + "address": "NULSd6HghwSWdUJKzU1C2UGqDMQLHnh7ibcbG", + "amount": 128500, + "lockTime": 0 + }, + { + "address": "NULSd6Hgiqv4x4UygoY5cmXbatiRuLmfa7NNJ", + "amount": 125704, + "lockTime": 0 + }, + { + "address": "NULSd6HgfHg48iwvFSZLthg2RfhZfnhxv2EuQ", + "amount": 124800, + "lockTime": 0 + }, + { + "address": "NULSd6HgiGxYjPjJfBWJ2Z3iGHeXMEaN74E88", + "amount": 109391, + "lockTime": 0 + }, + { + "address": "NULSd6HgXNufZ9VJeGX82Qkze59DBdUHSJ4jK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd9n6n6rLaxSixxGNpsrNDpCqcajQ2", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVmoaKVzPS3ApzXCN6tZk1VQZdCSyt", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgf5nNSgaEsBtsnzCZCYggbUNnMd3A6", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgW2Dph9gv7XQ8XSahvs2vLH18XLRrE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghtPUKkF53Jfkdkt76u5KLHTgESxEf", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfN3oTiiRkESs1hHc6mrpAMsaMohLu", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgg6gG32gSZYdgiM2PYSft5gpx7X6SY", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgaPCfBhEGdX12rfj41xg8RQNTX2Mxw", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbkaBjwkBNcz34mKG217KRDBuPmQsE", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbYKY5VY7dn92FgtJMbscbLdsG8MWA", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgZZ1Qx2nBVc2TSBKkJZK7d5VVcA2qZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgapE8xZ8JWq4Jj6kZJjqWFiS1WtUhX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgYqgxud7vtJ4Mwey6Tvdh5uTfVtHXS", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HghPHEqgEkaAiiGjLyfk9SsJ18CaV3U", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6Hghuj7XPLfBKMnGu3WdPeJuVJhXSKyZ", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU8HYTUH6D44dnDVD1T5JWoBR2o3cd", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgadCxT3huVMVgai6YSkQdqwRCdBNzK", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgfzK974R3Ez1NDQYqF4jQgfaJMRbTX", + "amount": 100000, + "lockTime": 0 + }, + { + "address": "NULSd6HgU2MZdbZrRBk6Z1Qo2FtjcmMfrKPNq", + "amount": 98600, + "lockTime": 0 + }, + { + "address": "NULSd6HgXXXSyETfSmERnQ6SFYK5ozkGwbeup", + "amount": 92426, + "lockTime": 0 + }, + { + "address": "NULSd6Hgddi9jvXqzYD892TPE2y9RgcPrw5HW", + "amount": 92015, + "lockTime": 0 + }, + { + "address": "NULSd6Hgd7uzxTFY2r4pQ7akwWLzdvtPUwikZ", + "amount": 88713, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb3WSEnmKxp4KHnsp1XCWttJxXu8M1", + "amount": 84403, + "lockTime": 0 + }, + { + "address": "NULSd6HgUqnCn1QD4CHLwjvY6ZPrwYoghWBWy", + "amount": 74300, + "lockTime": 0 + }, + { + "address": "NULSd6HgYmDADGaAkDH3MY66SbTB5Lzv8fbnC", + "amount": 74067, + "lockTime": 0 + }, + { + "address": "NULSd6HgYQcqjYfo6syDXP5DHLB1Xmqv3Yvuo", + "amount": 62963, + "lockTime": 0 + }, + { + "address": "NULSd6HgcKrfCpKKzd1zcH2i8PNvSrMspdQne", + "amount": 62300, + "lockTime": 0 + }, + { + "address": "NULSd6HgdrCsegi1oqXQgsX3oKDQD99BSwdaJ", + "amount": 61662, + "lockTime": 0 + }, + { + "address": "NULSd6HggoDRstaETerEMVgFPMR3zWvjFB9bB", + "amount": 61425, + "lockTime": 0 + }, + { + "address": "NULSd6Hggm99wvfGnGSKEZgdspNuzcvoNwAZc", + "amount": 58129, + "lockTime": 0 + }, + { + "address": "NULSd6HgZv6AAN5oVw4jRKifrJuQCytN4KeXP", + "amount": 56594, + "lockTime": 0 + }, + { + "address": "NULSd6HghRSs89hVqsq4iJp9fPtfSSvZh7ivj", + "amount": 50009, + "lockTime": 0 + }, + { + "address": "NULSd6HgXYpE1JX8V8m6FNeUnHuvUuPNxKPz4", + "amount": 46000, + "lockTime": 0 + }, + { + "address": "NULSd6HgVPdm8rhXGokCWs37Atth7PBVrAYNB", + "amount": 41301, + "lockTime": 0 + }, + { + "address": "NULSd6HgWYGzwtywuEm75fuqHPbS7PEvry6Dg", + "amount": 38400, + "lockTime": 0 + }, + { + "address": "NULSd6HgiHYzjSZMg8kkjbFCxXXdP3jioCRdr", + "amount": 34500, + "lockTime": 0 + }, + { + "address": "NULSd6HgYKXUqVoe65ZMY1epaJ3Ju7hfu5GZo", + "amount": 33112, + "lockTime": 0 + }, + { + "address": "NULSd6HgbVWau1d8DoEQntcpQ6TSbgQ2mBDc1", + "amount": 33000, + "lockTime": 0 + }, + { + "address": "NULSd6HgbZpGSunSx2Ej1hvZFHqbuNBVNMHHK", + "amount": 32029, + "lockTime": 0 + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "amount": 21906, + "lockTime": 0 + }, + { + "address": "NULSd6HgWS4kSGuqHVbXkBhoDRRTbtADVhvRk", + "amount": 18725, + "lockTime": 0 + }, + { + "address": "NULSd6HgUDBvREhdgEEiBrezfsV6qSzkBw9us", + "amount": 16722, + "lockTime": 0 + }, + { + "address": "NULSd6HgZtCXEKgjsz6VuR9hNrrhnAQmyC7C7", + "amount": 16078, + "lockTime": 0 + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "amount": 12526, + "lockTime": 0 + }, + { + "address": "NULSd6HgczfnTvPpgqCeej2newYCWEnFF9tDx", + "amount": 11590, + "lockTime": 0 + }, + { + "address": "NULSd6Hga4ajCjRGvDNRm4J35H7VkgQ43PRqx", + "amount": 10212, + "lockTime": 0 + }, + { + "address": "NULSd6HgUN5jvXZoEQk5CZrjGXfTcigN1MAEJ", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6Hgi7QymkUPh6GTWjS3oZBgbGmQDMsYF", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HghDW5FV39vszoYSJVTbUhVCiL7CaLN", + "amount": 10000, + "lockTime": 0 + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "amount": 9011, + "lockTime": 0 + }, + { + "address": "NULSd6HgUBoVsU3ckDRMV1TLVumanV1vLthj7", + "amount": 597, + "lockTime": 0 + }, + { + "address": "NULSd6HgfprnhERnipAit1g7CMqXv18GvHGxR", + "amount": 567, + "lockTime": 0 + }, + { + "address": "NULSd6Hgc8AkrmUdNFy4fec4vX1Ufdy4qUoUn", + "amount": 506, + "lockTime": 0 + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "amount": 273, + "lockTime": 0 + }, + { + "address": "NULSd6HgWUHth12K6hjJGAzV1zhNZN1piyUDe", + "amount": 31, + "lockTime": 0 + }, + { + "address": "NULSd6HgbmYohXsiuPw7ZcZjQFRP9FpGmG8qS", + "amount": 4, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPLYqJCo7KR8EQhvbjMoqY7FWHhZ7", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HggehBSJ7LoUrpbGw4aM5dyEvjLvGNb", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hgb4QdwXamTQ74BBA6nt6iHVB7Qe3Ru", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWsBJshBAUEu9EosDFRoREJw3Xembq", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcdKsgt6duRfAcruHXapQJGN5cWayH", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeFQcEzXvBhre14oBQggZprW9yUWeJ", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgeUU5fFLzJ8Fyhyf14wr8idFbdZvce", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgXERZxSERgKkDSHCPuj9qC4EW3Q2eu", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZeUELF7ENxtCTQZXvT3pi7sAgQ8d2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgcPYPsokLnJeYWnwRLJaerBc9LrZuh", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgWTjBb9rrd7KME4Bo741X6mMJNCeBk", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgYDmft8W24uBzWGtGzKjvgF6MRM1c2", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW6fJq8n5HwMpirYStayevARt2AzxD", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgV3LExzBQ1ATRFJe7emtaYGyhK7bCw", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfWZEsfHmZdrZbc2gnsZSpBZykae1y", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgVybJW8EyxigEvVEL7ddJ4wkQAhFLn", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZCfbWqcG4HuqmZCXc37S1uczPuxsP", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgUVvvCE3XpbSwB8qmH2AJkdFbNCQCv", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgZb9jfHbbFAWzCqgKRvfgQiW8yzE3o", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6Hga1pgGdyiiiYEnkbmw3saiRbDdXQYN", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfrXjPXm1zWQsmpbawvvLiBd2EbwEr", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgW44iF8WGXuYSUSAhiGdYQ8Shty2Xe", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgePvYAqUgpkgeapj6P2SvFMfUsi4n6", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfEvyXEThHNEx1gFVBahcZTGvms2fs", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgfovD7sSa8qBrxZ8CjcjLv6nxXonzG", + "amount": 1, + "lockTime": 0 + }, + { + "address": "NULSd6HgbqAGpVTy69w8sLXXjGKFEnXDVFRF3", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgVG8YPjEHbvk1ypCYGPH2FEP2oWzHt", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgiKK9uCGXc1dRjeo2SVwh8zUQsLsUn", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6Hgh3TGCmgckJrtV781A5VaRs7JgFywc", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgXfAzQKir7oeL9iH9HYSLhtA4zUSFp", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgeSxot4ycQZUzzPYBp1D8GXU2EhVAV", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgjPZazit4eJRHF3HhCjZsP3oaR4eFa", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgUABhKx6eRWSjkFTbPQ6Br83Yabf7Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgZhNpCC9QcLDQcQiukt4HpVx2oNk8Q", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgYcVeGsPN4U1UQMHdrFMfEfNzt3UyS", + "amount": 0, + "lockTime": 0 + }, + { + "address": "NULSd6HgaGHCjQZXutZALXV8R6LXV3B3sXRRh", + "amount": 0, + "lockTime": 0 + } + ], + "alias": [ + { + "address": "NULSd6HgV19zRQybW9nRFdwswYj2eE2Wqaz9w", + "alias": "0001" + }, + { + "address": "NULSd6HgcurVCdi1hHobAXDwQRtcz2vZg7sxM", + "alias": "1" + }, + { + "address": "NULSd6Hgi1uzTiaSdnRUcz4LHAoMaxGsZNzZb", + "alias": "24x7x365_staker_king" + }, + { + "address": "NULSd6HgZ2dU6SLg3ftfH8vgVanerSvk3dxZe", + "alias": "24x7x365days_staker" + }, + { + "address": "NULSd6HgWfLdb1cfbmjJcVJbcsRHNU8cbTH8c", + "alias": "2_wuyan" + }, + { + "address": "NULSd6Hgfcc4x4snmzaYfeA7DWHAsRXhEaqWn", + "alias": "512_gb_ram_node" + }, + { + "address": "NULSd6HgavXA8i7HBA4i5j881TRfPPBiTk6k4", + "alias": "88" + }, + { + "address": "NULSd6HgbUHuKwZ2Vt82SFeeKrjW7qYhjsUg9", + "alias": "a" + }, + { + "address": "NULSd6HgdTfUjXUUML1a4Y7g1eavCM344vtNF", + "alias": "a_decentralizedworld" + }, + { + "address": "NULSd6HgeoD51jgNK3GKy8T1x3gVMwPsbxyoa", + "alias": "abc123" + }, + { + "address": "NULSd6HgXApAuBCzMjX58sa7TAGkCUGozxUib", + "alias": "achilles" + }, + { + "address": "NULSd6HgfJTVVbcmGNw9oVeRhTkD68sg66BvB", + "alias": "africa_ambassador" + }, + { + "address": "NULSd6HgYg9R9MRj6ji65fJFCVWT6kiRe8rx1", + "alias": "agent" + }, + { + "address": "NULSd6HgVQNuQeciAZtZXjTqTWQcXvZuXUi79", + "alias": "agent0" + }, + { + "address": "NULSd6HgdtAj4mEQWVHAgNeN3xefbpSneysSq", + "alias": "agent1" + }, + { + "address": "NULSd6HgeWgr59cU37sRkChCPt7gyzo1zy9sv", + "alias": "agent10" + }, + { + "address": "NULSd6HgXYPagzLqDMuQtqB3VHZ7rz5djnrTn", + "alias": "agent11" + }, + { + "address": "NULSd6Hgf3VCHfoEQgndex2wX1xnhoqCugwHu", + "alias": "agent12" + }, + { + "address": "NULSd6HgiPiC7WEUHX8ZvpwHZYt3jregvNaPq", + "alias": "agent2" + }, + { + "address": "NULSd6Hgadxk4Ltb3MBTVP3fECMfUkq8ivtSX", + "alias": "agent3" + }, + { + "address": "NULSd6Hga3fcWU9swJaNoFuCZ1NpwHQ4Er56s", + "alias": "agent4" + }, + { + "address": "NULSd6HgY1rB8fZqx5uAVg12L6a5WBKCTmiko", + "alias": "agent5" + }, + { + "address": "NULSd6HgcQNPXPBKDYafgMY6cbkFrN65d2u13", + "alias": "agent6" + }, + { + "address": "NULSd6HgUdGQMCSKu7F1VqEyyMDgiydbyWXHy", + "alias": "agent7" + }, + { + "address": "NULSd6HgcfesxmPy8VTMHjvFWQgU3ZiUJgc2Z", + "alias": "agent8" + }, + { + "address": "NULSd6Hgb4KY6dvFqfR8ti6SwGnhR72hHbGus", + "alias": "agent9" + }, + { + "address": "NULSd6HgYi6uf3hqnD7pqWdLMwUYAJQjbarfs", + "alias": "agree" + }, + { + "address": "NULSd6HgfD6Kec1WofS6ZAhqrB1bZkky2pq6Y", + "alias": "ajs_wallet" + }, + { + "address": "NULSd6HgWxWEfpdKb9cC4bSBYAtAQm7PkqSTK", + "alias": "alanachase" + }, + { + "address": "NULSd6HgYB1H8F9suADBooRACKM9ABgpU2NRn", + "alias": "aleph_alpha" + }, + { + "address": "NULSd6HggMHPXyL7VnjKTGdq7yhMUnC9o8kM1", + "alias": "aleph_lambda" + }, + { + "address": "NULSd6HgYMYDcXzxBsPWFZRoj5vubw8nRYkvX", + "alias": "aleph_naught" + }, + { + "address": "NULSd6HgYUJmesJ7szTEoM7BFe6D7AWgjWYUW", + "alias": "aleph_omega" + }, + { + "address": "NULSd6HgYEkmFty7rGDYcUczXMhUVbRRqJWqB", + "alias": "aleph_one" + }, + { + "address": "NULSd6HgZeN93qbvr4zJWYgi9f4R8zrqFcFVW", + "alias": "aleph_pi" + }, + { + "address": "NULSd6HgaEFZ6YBGz7k7DiX1BzNNQ5nXpr4Cy", + "alias": "alexia" + }, + { + "address": "NULSd6HgjTBMA4DR9XznzDaWnfqTDQHxaLxnp", + "alias": "allenheung" + }, + { + "address": "NULSd6HgahGRPp4ssCXCohxFjrWRH3dnk9dYy", + "alias": "amazing" + }, + { + "address": "NULSd6HgU2b1VdkTqDuf1b18d4bL8gEQJ4mE2", + "alias": "ambassador_africa" + }, + { + "address": "NULSd6HgfrWmzNwg1qFLM4uBTYDGMMrHqWPXJ", + "alias": "andreas" + }, + { + "address": "NULSd6HgfxhirAZNvJWPNrx69QLVYcb9evcya", + "alias": "andrewle" + }, + { + "address": "NULSd6HgiAPXgSChkJ32edZGKo14XeaNfvdm5", + "alias": "anybit" + }, + { + "address": "NULSd6Hgi3qNPymstRnrSnfUeksyPutzoUtwg", + "alias": "anybitwallet" + }, + { + "address": "NULSd6HgZoDQ5JJH37jnL78tiuuKehTgLyyVA", + "alias": "arb" + }, + { + "address": "NULSd6HgX2cx9o3MXCAQwf2Ar2kNjXMStEm2T", + "alias": "artempl88" + }, + { + "address": "NULSd6Hgfq1hxSjR3yxmXBFtVNHkgCJfcvoie", + "alias": "astrid" + }, + { + "address": "NULSd6HgTydLELbLiFhmYXiYrdrUeNMu2AyT2", + "alias": "atlantis" + }, + { + "address": "NULSd6HggRWWph7seQwGW5NQkAJjBGqgLfXkv", + "alias": "aurora" + }, + { + "address": "NULSd6HgVi7Z2CWxfUAKLLodJr66iogrY4hBi", + "alias": "auspicious" + }, + { + "address": "NULSd6Hggbt66cf73en1BxmgLddpLZ1icYSik", + "alias": "aussie_ambassador" + }, + { + "address": "NULSd6HgdcchhgmGRt3J2TWwgHnp1MF8rRKxi", + "alias": "australia_ambassador" + }, + { + "address": "NULSd6HgYbBpNYytZNHwg9A3nadbkoU9aiSUi", + "alias": "bbbbb" + }, + { + "address": "NULSd6HgfBzEMf1V3WG5pvqaUmWCt2BadT5dp", + "alias": "beigaofengok" + }, + { + "address": "NULSd6HghwJNCSwKdv34inK8E5iitgM9TgEjx", + "alias": "bepal" + }, + { + "address": "NULSd6HgYTzYzPDPaxafDMVGpDtgmXtiKG4rr", + "alias": "best_staking_node" + }, + { + "address": "NULSd6HggrPCaXD9he5TnweQ81ajF1tvX8cyC", + "alias": "bigfour" + }, + { + "address": "NULSd6HgZeViTA6cPTLruP9t6KZidG67D816U", + "alias": "bikanuls1" + }, + { + "address": "NULSd6HgfP4z9yRn7LpCw5vZgn1sv2eUYzLdZ", + "alias": "bikanuls2" + }, + { + "address": "NULSd6HgfJYcDiTUejrzhL8FotZfEUbW6hejh", + "alias": "binance" + }, + { + "address": "NULSd6HgdeLwTeqWbKkHWUCDXp2LuSRtRVzUW", + "alias": "bischmaster" + }, + { + "address": "NULSd6HgZbpKdSYLX974uMPzsWH5aPrSq3hQa", + "alias": "blankpage" + }, + { + "address": "NULSd6HgYGBV8NDTjAhdXuhADrPf7jShUBaJS", + "alias": "bleegod" + }, + { + "address": "NULSd6HgVBvPJ46GocFY975sd42WGnvbGNxEe", + "alias": "blockchain_flashnews" + }, + { + "address": "NULSd6Hgj2uqY3H1aMA5Ggj4dNMNugSwtdQTH", + "alias": "bodhi" + }, + { + "address": "NULSd6HgiAvKiUPMaeKmAGhgU4Den8gT1H8zD", + "alias": "bonesers" + }, + { + "address": "NULSd6Hgc4WMSibrBsdRgyHNsaonx3r53ChoK", + "alias": "boydreynolds00021124" + }, + { + "address": "NULSd6HgUbGJthAPzaqWEfxP427KeH6gyNPwr", + "alias": "btsabc" + }, + { + "address": "NULSd6HgWBmrMFx4iRE4XsNdYHuyN967HLeW8", + "alias": "burgs_yacht_party" + }, + { + "address": "NULSd6Hgbp5Mj1yUn6K6oX2ZgmDFaELzeRCCN", + "alias": "bystake" + }, + { + "address": "NULSd6HgW8x1Lp1o13YPrJjDTVpZRAFwcKqkT", + "alias": "canghai" + }, + { + "address": "NULSd6HgYJCVff5MJcp6UZpWHiiKGo6zdqkt2", + "alias": "cc" + }, + { + "address": "NULSd6Hghso8XR5H8c1fPuPhjCN5q4rEwHSza", + "alias": "charlie" + }, + { + "address": "NULSd6HgjUx39kihRVuWWG99tcUfBJC4ALK8p", + "alias": "cheifbrody" + }, + { + "address": "NULSd6HgWfhMdjUmXUnhTi45edAmsdeJWbDXD", + "alias": "chenweiguo" + }, + { + "address": "NULSd6HgbSaVJscGYNVi9ASxb5djAvkyvBohg", + "alias": "children" + }, + { + "address": "NULSd6Hgi1os2unG38T2aYCCsRXZrTWebs7Lr", + "alias": "china_ambassador" + }, + { + "address": "NULSd6HgZn8QzYJvseFH4ATvFpKv2jZGX1C4C", + "alias": "chinanuls_01" + }, + { + "address": "NULSd6HghUYkZbev9SWtGKNDVFcgpz3U2vg7C", + "alias": "chinanuls_02" + }, + { + "address": "NULSd6HgULenT6oKwKbSibL9tkuU9pm42XBYY", + "alias": "chinanuls_four" + }, + { + "address": "NULSd6HgitdLR2nHFxAwiP21xkZYSrnRjbiAV", + "alias": "chinanuls_one" + }, + { + "address": "NULSd6HgWN6C37ETCW3FMAvk78akpPcy2ARqu", + "alias": "chinanuls_three" + }, + { + "address": "NULSd6HgdepUCFcbdeTbdDcwiazfQj6smE8Bn", + "alias": "chinanuls_tow" + }, + { + "address": "NULSd6Hgct2c3wEYpKQ6h7rnjDqQoMcQK6ipN", + "alias": "com" + }, + { + "address": "NULSd6Hga7gThhjHStSivoCKDMf93iBnUPwpA", + "alias": "comapatient" + }, + { + "address": "NULSd6HgbKasq8NZaeo5NUxrN4BenWvocybty", + "alias": "complete" + }, + { + "address": "NULSd6HgiPQGJugSR6hkizEgrHmBAC7pEWB24", + "alias": "crypto_basics_1" + }, + { + "address": "NULSd6HgYdNBXTAK8Y3xaCRpeyd1ridwfhhb2", + "alias": "crypto_basics_2" + }, + { + "address": "NULSd6HgVSP2Tb4WK15SnemW2EQDonBhuaA76", + "alias": "crypto_nuls" + }, + { + "address": "NULSd6HgVJXN2XYXL5wsaXcvurAXT5dMsNs7g", + "alias": "crypto_nuls_2" + }, + { + "address": "NULSd6HgYoeqMgJsWV5WPPpzDR7sdrE2QtEyJ", + "alias": "cryptobuzz" + }, + { + "address": "NULSd6HgUnUXjLpT3VcXhcjcfHFUvkW3gG1xL", + "alias": "cryptomennekes" + }, + { + "address": "NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx", + "alias": "cryptoscrozer" + }, + { + "address": "NULSd6HgdBSZG3BAGgiR9mP424vmcKsjW1CLy", + "alias": "csc" + }, + { + "address": "NULSd6HgXkB3TsQ8iQM3HHUWCitCvMVeu48d1", + "alias": "cybernetwork" + }, + { + "address": "NULSd6HgUemzxQ5rMb3tuLgc8kXzvoUtRPhHB", + "alias": "dalton" + }, + { + "address": "NULSd6HgbWr6CqPeH6Bi2BusgpNpfhVxqTWUY", + "alias": "darkzun" + }, + { + "address": "NULSd6HgeyUSyVdeirRN61mjH6eETYVuSPan3", + "alias": "dbnulswallet" + }, + { + "address": "NULSd6Hgj6nHethMn1GAiKZj3ZNxDmgXQxLsh", + "alias": "dche" + }, + { + "address": "NULSd6HgYw2oPvbutzhsC8NDHtpkFZGzbvk6W", + "alias": "decadence" + }, + { + "address": "NULSd6HgfXWkoRc4RAVhgLZ1ny7RKLMbSpy4z", + "alias": "dee" + }, + { + "address": "NULSd6HgXJSMrkB59p2nojew1T2Ep3gTgDoCS", + "alias": "deutsche_bahn" + }, + { + "address": "NULSd6HgbDZekSmzXwAStWbbqLZtyLWKjm7Uf", + "alias": "dextop" + }, + { + "address": "NULSd6HghmxcVA6MNmKd7m5BetUwTmEFLdmfj", + "alias": "dingxiangweituo" + }, + { + "address": "NULSd6HgatZGMtyrRbYrTkUU1UJRk1Sc4eVcv", + "alias": "disbish" + }, + { + "address": "NULSd6Hgj9e5Ep5MhZRfCjBJDAXLFrFHpNuHj", + "alias": "djvasilek" + }, + { + "address": "NULSd6HgZxSgswzwt8iZr5ubctAV2ja6Tko4M", + "alias": "donchen" + }, + { + "address": "NULSd6HgV2W9ZQ7d92vJV9Tzs5mYPDPU6PFjR", + "alias": "dreaming_of_nuls_1" + }, + { + "address": "NULSd6HgdyDLEuGFRaApaMJTNLzt5oeY5qbHe", + "alias": "dylan" + }, + { + "address": "NULSd6HgUNUkQkeKBjaCyoQm3UpntpHEtoi8o", + "alias": "elunhui" + }, + { + "address": "NULSd6HgWKULKHNWHWvGBeQ8S2hwn4UX4PyFH", + "alias": "empowered" + }, + { + "address": "NULSd6HgdvLihneyZNYcgyxVQZJwR8hBxvPvB", + "alias": "exc_one" + }, + { + "address": "NULSd6HgXBgV4BkQAdbRy1zp4c1rkxLLB3M3y", + "alias": "exo" + }, + { + "address": "NULSd6Hgf7aiSZf3S1BZTs19D8Aj6Qt67aAGR", + "alias": "faisca" + }, + { + "address": "NULSd6HgXYE27bh3W6uEtGGgz7NoMJzR1Nnx5", + "alias": "fanxinghua_nuls" + }, + { + "address": "NULSd6HgVrHY7jyjd5atH3w7MAUp7SpHMG9Q8", + "alias": "fcnuls" + }, + { + "address": "NULSd6HghvMY9b6vEsFdySxKHBM1TNyBam7aX", + "alias": "fierious" + }, + { + "address": "NULSd6HgiL4pbA9pH8PfDrbXfxkKY9kE7LD71", + "alias": "filip" + }, + { + "address": "NULSd6Hgh7eELiYcYQZX2VpaXM9HHFBkuFepL", + "alias": "fips" + }, + { + "address": "NULSd6HgYf57twfdCFyTBBRPb9cjt7wik9y3m", + "alias": "fj_ly_lc_2018" + }, + { + "address": "NULSd6HgcM5iRHUoUWiBhXvsehwCMwaxePosp", + "alias": "forever" + }, + { + "address": "NULSd6HgizHG8zrgSTAAhWSmQme78ui6fxgqK", + "alias": "france_ambassador" + }, + { + "address": "NULSd6HgXwUiPgfAy4cX2o2zWuHByhtkyxe9h", + "alias": "frenchienuls" + }, + { + "address": "NULSd6HgieLC36TpBfGyJHQffr8mTD5tWh8Hc", + "alias": "game_of_stakes" + }, + { + "address": "NULSd6HgXuRfXhnNCrcVumHLBGggAiKpqDK1a", + "alias": "german_ambassador" + }, + { + "address": "NULSd6HgZCbkqcv9Jb7i6KeZ96VnaRV5rYUSB", + "alias": "germanarea_ambass" + }, + { + "address": "NULSd6Hgh4skbSUpdriQJh3Rn5bCXGAE3Wr9W", + "alias": "ghsjz" + }, + { + "address": "NULSd6Hgj5zyRkfNmMmgGf5UQt82ZdYGyxjou", + "alias": "gille" + }, + { + "address": "NULSd6HgVdA49PzoW2sqxTHZwGcJVP2a4t2oE", + "alias": "gogineni" + }, + { + "address": "NULSd6HgbxsGEyuZHgSS2G7UgVRMf6eGufcPV", + "alias": "gone_camping" + }, + { + "address": "NULSd6HgaCkeNC78WshjTzz5MJihXpaD2xzRp", + "alias": "guobao" + }, + { + "address": "NULSd6HgUctEkrah4foqbZ8BDmV8mqC5g7emR", + "alias": "h" + }, + { + "address": "NULSd6HghhabUEHpgMfBQakzqJ6uCMcSKf6e5", + "alias": "haciabi" + }, + { + "address": "NULSd6HgdmWXGrkmhsFUZ9gkh1mHs62GWqBZ8", + "alias": "hai888" + }, + { + "address": "NULSd6HgYX3GgGXSJXp3akMcweCNp5DexyLjQ", + "alias": "harthur_gf" + }, + { + "address": "NULSd6HgdQZxmk3v5WNN2mR4sEa6GmTCHtB3j", + "alias": "hejie" + }, + { + "address": "NULSd6HgdjEPdR8GPgXXu5Q45388ezsrv1JL5", + "alias": "hena_alias_test" + }, + { + "address": "NULSd6HgiD1FcVtzeUTdSwmFB9qMueXSyGeN5", + "alias": "hh" + }, + { + "address": "NULSd6HgUC2A2LcvrF4tr97iRU1g7DcwdauGA", + "alias": "hhao" + }, + { + "address": "NULSd6HgeCFPB9Yk7jbxxM7havRsfehJ9rA3E", + "alias": "hibiki" + }, + { + "address": "NULSd6HggEktw2BZNqTbXjGQdUmgacyUQi1Ps", + "alias": "hodyhe" + }, + { + "address": "NULSd6HgVL8YRr369MAJNNNV8AMLTh1EmTq1N", + "alias": "hpipsdonate" + }, + { + "address": "NULSd6HgiYWntrkxUyZf8UV49rr2wpzNBoMAp", + "alias": "hpy_nuls_node01" + }, + { + "address": "NULSd6HgXNV4ih2QXyoXxy8QkBZQPCj9V7ABg", + "alias": "hpy_nuls_node_01" + }, + { + "address": "NULSd6Hgd9LrKjbdbPhzirDEEYFm62V3n8WHM", + "alias": "huang" + }, + { + "address": "NULSd6HgYdCUFyRV1n8srE2fpwMCZqbjD66Tv", + "alias": "huanghua" + }, + { + "address": "NULSd6HgXHsTCqSSYtckyGiYhce6DKBcdvfua", + "alias": "huobipool" + }, + { + "address": "NULSd6Hgj2h7kU9XHv91txu4rZTqnFhfcHfb3", + "alias": "id" + }, + { + "address": "NULSd6HghXMxsHeDGDmRLaEXuV4C9a8XAM6Wi", + "alias": "io" + }, + { + "address": "NULSd6HgY8cBHNk2ZxGrGGpypUVNYJ4wz2xqi", + "alias": "jackeycyt" + }, + { + "address": "NULSd6HgjHJYj8hGbkUh8RYSBNmhWj9cjV3KK", + "alias": "jason_zhang" + }, + { + "address": "NULSd6HgYmMac6Pk64aM4uXt3DggVMRYPejpt", + "alias": "jasonthatdude" + }, + { + "address": "NULSd6Hgf6a8bUghzvmNy8nGfy45CUc7gBBsU", + "alias": "jb23" + }, + { + "address": "NULSd6HgUNBsMPv5ovYgCucuXNZShAHVKYoDm", + "alias": "jimmy" + }, + { + "address": "NULSd6HgfH72sYHECgXRTDDZ77vTUZAyuhZP7", + "alias": "joele" + }, + { + "address": "NULSd6Hgejre5WUYV3PwDqohnEv9GVcUrYSKh", + "alias": "johan" + }, + { + "address": "NULSd6Hgio7XfuRgLgNUwpD9yb3kTs7mRi1rv", + "alias": "joinphonejmh" + }, + { + "address": "NULSd6HgXKLTGA5okBDPqHPWfPS1FL4DFN7Qz", + "alias": "jota" + }, + { + "address": "NULSd6HgfHMUFv3bY8c59kUFN2TPUx5vco3So", + "alias": "justinevelyn" + }, + { + "address": "NULSd6Hgcer4bhXvucJBYiXhFNfScdNkqEHDS", + "alias": "jvdburg" + }, + { + "address": "NULSd6Hgf2Ke8T4SHVzrqWBvpAUkftT3C3kmC", + "alias": "jyh" + }, + { + "address": "NULSd6HgaZtNfuJN2XxkFQHUT9R4XdXMocw7N", + "alias": "kadel" + }, + { + "address": "NULSd6HgfpRKeaGgzLhxF2nDTkG5dDXYUbHki", + "alias": "kaippilly" + }, + { + "address": "NULSd6HgVsbZpqHxxpPkZUWSaPbas3iFJMT4V", + "alias": "kb24" + }, + { + "address": "NULSd6HgUfydpRKmJv3Hf4XrYS1gVfDwrggFT", + "alias": "kevin" + }, + { + "address": "NULSd6HgYK4t1qcei6KZVVi9NzSqGitK7zZau", + "alias": "kiss" + }, + { + "address": "NULSd6HgYRY16uuD8yC2crpmUobTZrJsxbkpf", + "alias": "krzwalnuls" + }, + { + "address": "NULSd6HghppzGpVL9ZkqzMs15vBvyNG8KwG7F", + "alias": "kucoin" + }, + { + "address": "NULSd6HgbohRqCNYeZQjMvTRUNoxA656iLTyo", + "alias": "l_nuls" + }, + { + "address": "NULSd6HgZZAn5nnoMyv9Ssycv5GqkXrgVTauW", + "alias": "li" + }, + { + "address": "NULSd6Hghb3KzXLLcVrEZvitDZaQTckCq74s6", + "alias": "liangye" + }, + { + "address": "NULSd6HgXxDNq7C9E9kerbiHktL8RXSt2wNq8", + "alias": "liesa_huang" + }, + { + "address": "NULSd6Hgez9dbEXTuSqbv5o7kVKiUCyd1gbaL", + "alias": "lining" + }, + { + "address": "NULSd6HgjMCvN7stRd1gcjFp265ZnPaX5YSSh", + "alias": "linkworld" + }, + { + "address": "NULSd6HgXJjsLbA5ZwrubEgpe8emGEo7Q6g1f", + "alias": "liujunbo1234" + }, + { + "address": "NULSd6HgZtAdFTyb4A7NYEA8HngiTs8jiahxy", + "alias": "lizhilong" + }, + { + "address": "NULSd6HgZW2bVnYZciYq8iroGkyGVmmas63dM", + "alias": "ln" + }, + { + "address": "NULSd6HgVirGbqvLgFxS9jx8y2i9Z5ysHejSX", + "alias": "longkayo" + }, + { + "address": "NULSd6HgaJSxvWkNYX87ycgx6QvA1fHNuyiHX", + "alias": "love_nuls" + }, + { + "address": "NULSd6Hgc9C4vuXZ5B5sWXYGZCTXRjjpYHacY", + "alias": "lsfnuls" + }, + { + "address": "NULSd6HghhCPqGgJU6Uy5QVhmVkgxQrZmt65R", + "alias": "lsfnuls1" + }, + { + "address": "NULSd6HghtYVBYTbrVee2YY5vdJf3KgRLt4po", + "alias": "lxx302" + }, + { + "address": "NULSd6HgiqkoMkQH2VoLuCsSFEW7eoNSSQJvb", + "alias": "main" + }, + { + "address": "NULSd6HgXSUw7Koa2HiDxdntcdZ1ifA3vNhqq", + "alias": "mainaccount" + }, + { + "address": "NULSd6Hgcc9piZ7xKMT73pKZEW1NkWwto3qKD", + "alias": "medes" + }, + { + "address": "NULSd6Hggb3ovsF58WuwpzkU83iqyjiNJp82H", + "alias": "men" + }, + { + "address": "NULSd6HgXsaBrXjUGcy6PDphPfd7JXEK2e9vN", + "alias": "meowmeow" + }, + { + "address": "NULSd6Hga2hJ7o52kxxeKkcC7b8LTH2xnr5k9", + "alias": "mick_one" + }, + { + "address": "NULSd6HgjAL32AnPNcy51bBxn2ckvhE9Sp2At", + "alias": "ming" + }, + { + "address": "NULSd6HgcvJ5jY3GPx4E3DqZtP6Pa32bPBdT4", + "alias": "miya" + }, + { + "address": "NULSd6HghvVRZbtxo8imXM5bSooYtaJe2eyyR", + "alias": "moon" + }, + { + "address": "NULSd6HggNfmAhTWkduX3GTSCc8s2JCZvM3ZB", + "alias": "moon_lambo" + }, + { + "address": "NULSd6Hgd7CV6n1KTqqSYsujAb5avecFKKVkn", + "alias": "moshe" + }, + { + "address": "NULSd6HgUjHHqMcMQofvdNqRbmWNcXoYLLEoi", + "alias": "moshe_malawach" + }, + { + "address": "NULSd6HgUh5cmtirv2MUj4sZtADM53EvpY4Sp", + "alias": "mouxiao" + }, + { + "address": "NULSd6HghMUQtCup2NZ8mhB2dDJ3dygLcq7qb", + "alias": "multiobhan" + }, + { + "address": "NULSd6HgcxR6geMvnrvPnzW8H8cPVzFEdzyZj", + "alias": "mycoin" + }, + { + "address": "NULSd6HgV1C3iqknki9ZzADogCZBQdrrmh6QF", + "alias": "myklicious" + }, + { + "address": "NULSd6HgexEx9WwDthLj3GwnETv9FFppaHgPc", + "alias": "n1_nulsnode_org" + }, + { + "address": "NULSd6HgdtpxQ5kJupKpHFcYMatSLd8ZqgaBS", + "alias": "nalen" + }, + { + "address": "NULSd6HgcxakN9kpidFH5jLNYHNMV4LwEHmDX", + "alias": "nalexnuls" + }, + { + "address": "NULSd6HggJg1d2it5DLANt1WdtbzxkF2WspVn", + "alias": "natural" + }, + { + "address": "NULSd6Hgac6bjrnuNbkxpRyEcA7jDCEVSphfj", + "alias": "naveen_reward_acct" + }, + { + "address": "NULSd6HgecrWsEjJJkxjwRYYDpWDzWAdxdCJ6", + "alias": "nebulla" + }, + { + "address": "NULSd6HgctW5Dx8itJqMY98WCw7R65nPEgCE5", + "alias": "neva" + }, + { + "address": "NULSd6HgUsdxQQumMFGzorKxCpRGaMdRqyTvm", + "alias": "nfrewards" + }, + { + "address": "NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", + "alias": "niels" + }, + { + "address": "NULSd6HgYe3PmKfL5ZDudxvEL3j2TTq7tsKPy", + "alias": "nodeforge_ii" + }, + { + "address": "NULSd6HgUkCQASdpzgFLY7KQWhvvVvji7kAwd", + "alias": "nodeforge_io" + }, + { + "address": "NULSd6HgYdFYV9siV5oBGH5cQMA2qaQncKCAs", + "alias": "ns" + }, + { + "address": "NULSd6HgXUcmpgakJcSFLqvyzuqonV7auGek3", + "alias": "nul_b02" + }, + { + "address": "NULSd6Hgi9X6i4G8u8UjdgMjQDv9KbTedAJYw", + "alias": "nul_b_01" + }, + { + "address": "NULSd6Hgb2rXU4jH3BbDXShvyskNPBMTFbjVW", + "alias": "nul_b_02" + }, + { + "address": "NULSd6HggHp8wT1yaQ8eg6cnJdczdWymppcCm", + "alias": "nul_b_03" + }, + { + "address": "NULSd6HgcJW3aSwAHH5aUS5CG1z2856YSyXjX", + "alias": "nul_b_04" + }, + { + "address": "NULSd6HgUuE6K1GPAxgV8aHncS5idWMjaJWtt", + "alias": "nul_b_2" + }, + { + "address": "NULSd6HgUbzTpjrEz3YBbhNBeSTm8gegL3exo", + "alias": "nulp_fiction" + }, + { + "address": "NULSd6HgbfkSuRGKSLJJzAPAihgDQtaUhuE4L", + "alias": "nuls" + }, + { + "address": "NULSd6HgfVhdCnKLTPbJGLm64LzQVbaoZ8Qu3", + "alias": "nuls01akrs" + }, + { + "address": "NULSd6Hgi3sZ2e9QdzgVCMmnuEGVaZMLmtebp", + "alias": "nuls4ever" + }, + { + "address": "NULSd6HgckQgVYzLHgAfVWBf9ipU3jTK7jFFh", + "alias": "nuls_00" + }, + { + "address": "NULSd6HgcRpJzXGzH6G1zCrEWfThpmSwRGtRv", + "alias": "nuls_01" + }, + { + "address": "NULSd6HgZM6winNCKEZi7Brg3jhgJuwVZMUZ7", + "alias": "nuls_8" + }, + { + "address": "NULSd6HggRuUAY5U7wrVWbvsivvcTo88BKr2d", + "alias": "nuls__portugal" + }, + { + "address": "NULSd6HgawtG6pbS9NRnnQRqLLDkEK75zB2Be", + "alias": "nuls__to_the__moon" + }, + { + "address": "NULSd6HgjQSXydUoAXPahHU79zNQV7aTHmRk7", + "alias": "nuls_agent_node" + }, + { + "address": "NULSd6HgfHZ5Y4zhsZsWgxZYZG5KMFurQM5Nb", + "alias": "nuls_armstrong" + }, + { + "address": "NULSd6HgjcNC6oQaWrWM2Hf59NbeMgb1Kzd4j", + "alias": "nuls_australia" + }, + { + "address": "NULSd6HgjKBr1zdzRFRBPnSt7ksVqDW9iUJ5h", + "alias": "nuls_bonesersnode" + }, + { + "address": "NULSd6Hga1hPXkcvgL7yFm6fhNMBV3Drv3YoF", + "alias": "nuls_by_nulswest" + }, + { + "address": "NULSd6HggKtcn7Zj8VtKvtuWbSfhvw1GL5jRQ", + "alias": "nuls_canada" + }, + { + "address": "NULSd6HgdVL93JAwoMrJNr1d6WFTkqKnprFJB", + "alias": "nuls_com_sg" + }, + { + "address": "NULSd6HgYLyKYQLhuJ8V6Wnxj1xrvnsSbboFu", + "alias": "nuls_connect" + }, + { + "address": "NULSd6HgWtYViXwaVBpedSF2aA2LTQWNC8vK3", + "alias": "nuls_cru" + }, + { + "address": "NULSd6HgV4ieiwjqPo4pzCUCp4VhpqsXWh4B2", + "alias": "nuls_cru_sf_ca" + }, + { + "address": "NULSd6HgVTHYyMHhu52pb93T1ns69vNzHQSyV", + "alias": "nuls_datou" + }, + { + "address": "NULSd6HgadSMEtn8kxGYToHZQZegPiB29zn3b", + "alias": "nuls_deep" + }, + { + "address": "NULSd6HgivRtqPNHnbCSoMZ5VJk7bEAe5yz1r", + "alias": "nuls_deeper" + }, + { + "address": "NULSd6HgV16NrYXoUCoiW8QEYiYG7rHgkeSBh", + "alias": "nuls_dextop" + }, + { + "address": "NULSd6HgbdbUpqqsqP2KaT9sodZmQEF8Yjb7x", + "alias": "nuls_enterprise" + }, + { + "address": "NULSd6HghKuyqmQir2ZVh3iFFzhXVzMPQgKKt", + "alias": "nuls_europe" + }, + { + "address": "NULSd6HgbxHtzNf4ggWDUx9pLfKVYncmaxtUR", + "alias": "nuls_europe_de" + }, + { + "address": "NULSd6HgVSVSmZBLTD87qmPksCYDMpKKtJ7hX", + "alias": "nuls_fans" + }, + { + "address": "NULSd6HgZZQNv5nJWsMWicaLXwiFzvv9ggdX9", + "alias": "nuls_global" + }, + { + "address": "NULSd6Hgf7WJpvDk2JpW69NKoSJnb5insJqhh", + "alias": "nuls_global_2" + }, + { + "address": "NULSd6HgZtibiidpQKw6SRcJzACvusSq6bQEh", + "alias": "nuls_gold" + }, + { + "address": "NULSd6HgXvHWDFMLxe48vuQjFQ1qVhzuaeJky", + "alias": "nuls_l2" + }, + { + "address": "NULSd6HgeJosW9CpmGDewBjCS431NxchtDPjj", + "alias": "nuls_lianquan" + }, + { + "address": "NULSd6Hgba5bySgsGrJCKrFYPKUh3CjrAjLLh", + "alias": "nuls_machine" + }, + { + "address": "NULSd6HggXN4ZBwns76sSHMQLjPWKKxicb8MY", + "alias": "nuls_media" + }, + { + "address": "NULSd6HgaiAUanZiFKTdNdUSHBwEXNd6RRQDb", + "alias": "nuls_node_london" + }, + { + "address": "NULSd6Hgdc6p7GwXJE6x4kXHLeQjr9JDCaJyP", + "alias": "nuls_one" + }, + { + "address": "NULSd6HgeS9v5rKTQ9gcyD9BtJrZChNGXZdfA", + "alias": "nuls_org" + }, + { + "address": "NULSd6HgW8A8eWaPoJ9uWAjEfupapPNxVrnrG", + "alias": "nuls_org1" + }, + { + "address": "NULSd6Hgi6MorQCaRU8EvE2sDMqmGCyGcG6im", + "alias": "nuls_org2" + }, + { + "address": "NULSd6Hgfjhp6kiQ39CbdDo72je3eu87VYHSY", + "alias": "nuls_org3" + }, + { + "address": "NULSd6Hgaz8BeNFnEh73PZWhLjkPJp3FT7F43", + "alias": "nuls_org4" + }, + { + "address": "NULSd6HgWWUUPH6GwcHUmwBxqbdWFdveVXAh4", + "alias": "nuls_pacific" + }, + { + "address": "NULSd6HgYU9ddtDACi33njJq64xMRBfv1BGEx", + "alias": "nuls_pi" + }, + { + "address": "NULSd6HgYXBkamn6MFjTg2Q9cZ5Z9D51KJ7fo", + "alias": "nuls_portugal" + }, + { + "address": "NULSd6Hgfd4pj6povFdR7kXeikc4CWfDix3DC", + "alias": "nuls_power" + }, + { + "address": "NULSd6HgYBz8pkYVykMBvJLEb5pD73HJz7N85", + "alias": "nuls_singapore" + }, + { + "address": "NULSd6Hgbk1tadxhNW9tkRtAi12V41rhhHMFq", + "alias": "nuls_the_king" + }, + { + "address": "NULSd6HgVuDW1hWX76zEj1cBe1uJaPsw7uHQt", + "alias": "nuls_to_the_moon" + }, + { + "address": "NULSd6HgXPTqxgEuZGtEH33hbLcLyxTUDWXaN", + "alias": "nuls_uk" + }, + { + "address": "NULSd6Hgde2Wd5awAzRJxhP6qLXqAjp1Do2bo", + "alias": "nuls_usa" + }, + { + "address": "NULSd6HgdVsfQiwk8wDEKKYxmTCdACFUjPDDs", + "alias": "nuls_vip" + }, + { + "address": "NULSd6Hgg3yvoPr1ZZo6X19gfqkn44ymUGKnf", + "alias": "nuls_world" + }, + { + "address": "NULSd6HgiYsM5S3b1K79R8o7ecoLjQNvfPRus", + "alias": "nulsb4" + }, + { + "address": "NULSd6HgibSGaq6xkJJ3jsi6FGQ82Srvr5SUp", + "alias": "nulsdeep" + }, + { + "address": "NULSd6HgiZhwcGfRJWJB8V5Lm8Jf8XQprue9i", + "alias": "nulsdeepaustralia" + }, + { + "address": "NULSd6HgXYqM1N7ZieMoUAjuVi3eeN5rHNNVo", + "alias": "nulsfans" + }, + { + "address": "NULSd6HgghsjKSCRvJpsmWLnqCgVVMgTFfea5", + "alias": "nulsforlyfe" + }, + { + "address": "NULSd6HgVU1Lkr5KB8Rk6M3bheyaZxhGQ5qAX", + "alias": "nulsgalaxy" + }, + { + "address": "NULSd6HggA1kxDXy1Q6va6XLdH3Pupu7T4F49", + "alias": "nulsgalaxy_01" + }, + { + "address": "NULSd6HggCiHFEJL3m5CQVN36z2gE9BPMNp46", + "alias": "nulsgood" + }, + { + "address": "NULSd6HgjDZmLMbZSmH9tqb6smdzZHCxsCRD3", + "alias": "nulsio" + }, + { + "address": "NULSd6HgbAtcG57dsxSYpyVuGyjrm3JuE5ZcJ", + "alias": "nulsmasternode_com" + }, + { + "address": "NULSd6HgWkq2Uq781z37LAsrgohgMSJ16jkiK", + "alias": "nulsnice" + }, + { + "address": "NULSd6HgU8vhRM2hr4RW2jMaKZw9ATT68iPa8", + "alias": "nulsnode_com" + }, + { + "address": "NULSd6HgbsbuqNeQYffwfA5hNpQK2P3SihTyV", + "alias": "nulson_mandela" + }, + { + "address": "NULSd6HgddH7ZBVtJ7BMNpKr9ejWQYa8JCWF9", + "alias": "nulson_mandelaa" + }, + { + "address": "NULSd6HgVJjx4DioDezWfLzYBzntqyHd5Tgon", + "alias": "nulstar" + }, + { + "address": "NULSd6HgfdQygExpCnQYnaB4fv24veveDp4cv", + "alias": "nulstomoon" + }, + { + "address": "NULSd6HgYFMtGyMFgadrp8JKEcWu3DYnfb7R7", + "alias": "nulswest_1" + }, + { + "address": "NULSd6HgiF3M1gVu5j9QqEDtaVkrSBSzQxdAm", + "alias": "nworld" + }, + { + "address": "NULSd6Hgh7JpX8F9k5bukv4m1A4YpKfALxAeu", + "alias": "odzerchenma_12_12" + }, + { + "address": "NULSd6HgVaCQE8YoeAUXsBpxYsbZg2hSTT4gw", + "alias": "omar_voting" + }, + { + "address": "NULSd6HgdnDK3j2inZvbatVe5LQKsEhfpSnxT", + "alias": "one" + }, + { + "address": "NULSd6HgUM8S8iF55fsjBLEjkUzCTjagBrEjn", + "alias": "oo" + }, + { + "address": "NULSd6HgagM11WK4AYyz6sY4wZ8TmSkk7fwmr", + "alias": "opulence" + }, + { + "address": "NULSd6HgYepjnJifTfmVECiob45ToRCTbpQAZ", + "alias": "pay" + }, + { + "address": "NULSd6Hgd3Jef1Qn63MqRV6mFUTLBsPDCodW7", + "alias": "pepe_the_nuls" + }, + { + "address": "NULSd6HgccbxhcLKXBzowmh3vx1XjCNoCgGVR", + "alias": "personal" + }, + { + "address": "NULSd6HgV3H5FecBPdXiY7r9d9cQa79KhaezY", + "alias": "pierreluo" + }, + { + "address": "NULSd6HgbofdDHPF55jrebe4Xf62xsyVER6f4", + "alias": "pl_godfather" + }, + { + "address": "NULSd6HgcWukYEm9FVzmj2s1weX7tzLiuEwde", + "alias": "planqk" + }, + { + "address": "NULSd6Hgj9UZBsJfv1rZotLsAUfq4g7cKxAGU", + "alias": "praesum" + }, + { + "address": "NULSd6HgbibtLn1FgYUsboAp5hnKMj6ypdV6L", + "alias": "prosper" + }, + { + "address": "NULSd6HgVNFi61mGX5Gtxycpo7c9n8jjN8TUY", + "alias": "prosperity" + }, + { + "address": "NULSd6HgWXTmDR99ATgqDzcEJBmWewcCvx14H", + "alias": "prosperous" + }, + { + "address": "NULSd6Hga7UcfcRKRULo6DESJWPAse8bY9JgP", + "alias": "quickcrypto" + }, + { + "address": "NULSd6HgUgLxphcsqccNxioQByvC5PA6apKmL", + "alias": "radigan" + }, + { + "address": "NULSd6HgYbc3j6dUf9dJGTLLZeRRRJ6tWSXs8", + "alias": "railnetwork_europe" + }, + { + "address": "NULSd6HgWmFfgomZJTT2bSebvMELLdZSbuG94", + "alias": "raining_nuls_usa" + }, + { + "address": "NULSd6HgVfveU6Bquy29yFESncpTPd3PKMAE2", + "alias": "reaper" + }, + { + "address": "NULSd6HgYpCDWMuJmG3KvYbnrC7TauySL1kYh", + "alias": "regularguy" + }, + { + "address": "NULSd6Hgda5J8rSTpkuQGQSwetwqzqvTQQkXx", + "alias": "rf_1" + }, + { + "address": "NULSd6HgbyyuAYk9Zy4zu8un3SbmZTeh3343Z", + "alias": "riaris_stake_24_7" + }, + { + "address": "NULSd6HgYdZU6Fhx9nFwKGDrMpzDN7oWEJJ8o", + "alias": "rico" + }, + { + "address": "NULSd6HgZhGn9W6schR3L4XKCSnsAziq2kBsK", + "alias": "rillezk" + }, + { + "address": "NULSd6HgZPSNRwG14TPjUirppAyYyt8eprr1F", + "alias": "russian__ambassador" + }, + { + "address": "NULSd6HgjFUx1TEe2dsxfZFKd9jWPnMzCigQi", + "alias": "russian_ambassador" + }, + { + "address": "NULSd6HgV27UqxemiooAxX2P5FsepdZVXwDTQ", + "alias": "ryanprivate" + }, + { + "address": "NULSd6HgXdqYuPEDfnTjmtFFJ3iRxiQDLGhsV", + "alias": "serg" + }, + { + "address": "NULSd6HgZKKDwDiwL9UN64SGY7JdsRq8Xyg2T", + "alias": "sg_ambassador" + }, + { + "address": "NULSd6HgcggF67LX4tdw41rJrJhd4GNS6HmUm", + "alias": "sgfe" + }, + { + "address": "NULSd6Hgef5gxyEm31N3X4bhsZJNXD39Tat4d", + "alias": "shijiuzhou" + }, + { + "address": "NULSd6HgcCrxrHjARG6Uhhu1kjEpXWqysfD7J", + "alias": "siwei" + }, + { + "address": "NULSd6HgUQ1yxh7UxwyWRpCdw6YFn5hMXNcbi", + "alias": "slo_0_nuls" + }, + { + "address": "NULSd6HgidynFtPRVucuzi73akNe23ZrRWzuu", + "alias": "slo_1_nuls" + }, + { + "address": "NULSd6Hgi9YcW3fZbPoYNzQGcWUQvipt37dCe", + "alias": "slo_nuls" + }, + { + "address": "NULSd6Hgd7uauxhoubxtSTNUSYT1RNPpcqGdg", + "alias": "snzholding" + }, + { + "address": "NULSd6HgXEM5YnaQ4kAwZBcN3H3fQM6dchpxd", + "alias": "spanish_ambassador" + }, + { + "address": "NULSd6HgeskzPEZF4WYQ2XCVcz6bg8PDqTBUQ", + "alias": "spartansz" + }, + { + "address": "NULSd6HgWdnJPobNXE1PYeZXqpLN7rRJ5wcP4", + "alias": "spendyouth" + }, + { + "address": "NULSd6HgdoBt83UrmjrHusbSZ9JUC1bpGMcR1", + "alias": "stake_n_take" + }, + { + "address": "NULSd6HgeX7X6oXZi4qQfBG1mayEF3gyvh2tk", + "alias": "stakehouse" + }, + { + "address": "NULSd6HgW1rZAoXe3zsv2XFWRR23mePJ3jAVf", + "alias": "staking" + }, + { + "address": "NULSd6HggG2KNxisg7tGTtLFFGZHf7RfWXUaG", + "alias": "staking_best_node" + }, + { + "address": "NULSd6HgcUAzz7BX9AK6mzYznYBNnvveJ25qa", + "alias": "staking_capital" + }, + { + "address": "NULSd6HgdEtrzGcehUJFtu845hdSLxX3ZvFyc", + "alias": "sue" + }, + { + "address": "NULSd6HgfabpMiKgaNujQqZQpvAsroWVDt6R9", + "alias": "sun" + }, + { + "address": "NULSd6HghLWi3mWZiQ61EwbQapE2eQPjLzJx3", + "alias": "supasativa" + }, + { + "address": "NULSd6HgXSu22TiAA3FcUGqEEFg2rjjQevZDa", + "alias": "super_nova" + }, + { + "address": "NULSd6HgUBRV7VZf46AtpnFEbq4EvHPikXT4m", + "alias": "superlinks" + }, + { + "address": "NULSd6HgjPCg4qmYmbZysBH3nztLAGrzFQnnb", + "alias": "supernuls_q383524260" + }, + { + "address": "NULSd6HgcWS9gpgXFoLduFkFEuFUgnwvgkQbo", + "alias": "taro" + }, + { + "address": "NULSd6HgdSXh2fw4ioRe97qTVts3i2jMbkRKP", + "alias": "teameffort" + }, + { + "address": "NULSd6HgcEybqqCm1dwjaGWjVAELQx9DYGTP1", + "alias": "three_body" + }, + { + "address": "NULSd6HgW6mPHs5ewjw3YfT1kngKrnFvSyLkt", + "alias": "top1" + }, + { + "address": "NULSd6HgaiH46yjsVwdcxo1KkygfGeUeojkLj", + "alias": "tyrolee" + }, + { + "address": "NULSd6HgiUD4hUP6vN18uQWv8Hq2mQ6caLDDi", + "alias": "uk" + }, + { + "address": "NULSd6Hgj6oA3MkvdtiLakGM1wW6e6LrP3yVU", + "alias": "us1_newyork" + }, + { + "address": "NULSd6HgjYqM7Q43MPF1Kot6YqK9r1n257bzg", + "alias": "us_west_1" + }, + { + "address": "NULSd6HgZmRugy8jaXYZURx88nqvuKQ1xP31s", + "alias": "usa_nuls" + }, + { + "address": "NULSd6HgUjfoUjtsDnCtiS5RdkuQpy8H598Sq", + "alias": "veki75" + }, + { + "address": "NULSd6Hgj1kKhQJ6AsiZU1kTToD1696zZp2rA", + "alias": "vhtoto20" + }, + { + "address": "NULSd6HgfYpp9kfgJU5z5q5D4BRHw4rrbGVH3", + "alias": "vivi" + }, + { + "address": "NULSd6HgdFGT9mPFqUGVxjj6WgtDdKvwRKByP", + "alias": "vr" + }, + { + "address": "NULSd6HgVyuzWzfCVmYpbmApz7oBjoDdz8wmJ", + "alias": "wallet" + }, + { + "address": "NULSd6HgUQ5TRrNhCwXhXCBY3sgq9DD3z3MjP", + "alias": "water" + }, + { + "address": "NULSd6Hgdb2z31mkJc6LfgnrB89Sdhr3jo4bS", + "alias": "wechat_6219172" + }, + { + "address": "NULSd6HgYU4MmqfxDiTD3Mhh9Lxf5VRMKRpG5", + "alias": "weituo" + }, + { + "address": "NULSd6Hgc9Vqe1gfZu7cgrPvsqrKRRLdQuHuH", + "alias": "wendysa_nuls" + }, + { + "address": "NULSd6HgYARwr3zAnY47Csc6gorKCSbGfxWxC", + "alias": "wenzhengqu" + }, + { + "address": "NULSd6HgjVvFiR8MMczEZYtzELAiW4tF7mnvA", + "alias": "wichain_nuls" + }, + { + "address": "NULSd6HgYYcsTcjPLphgzGoJ6bWqRjsE6oEbk", + "alias": "wildmsb" + }, + { + "address": "NULSd6HggpauDQN12Pkt4pLKBp3mXa48jp42q", + "alias": "winner" + }, + { + "address": "NULSd6HgdRLv69A3g9n9LxKTSGF2jNyXVFnGV", + "alias": "wolfstreet" + }, + { + "address": "NULSd6Hge182xPc23D5B1zLzXDZTfJULgAHET", + "alias": "wu" + }, + { + "address": "NULSd6HgdJhrQt1G4WYzZwN8dvg7Q6DGMhVgz", + "alias": "wuyan" + }, + { + "address": "NULSd6HgdmKpG2eHmExpzH1s9UUu9vXmBiJEe", + "alias": "xfans" + }, + { + "address": "NULSd6Hgam8DNzKWUzttbgUYCjChKxC4MXbCR", + "alias": "xiaomayi" + }, + { + "address": "NULSd6HgbqkLgu1RDEGrSDGGY11GHbi5Ftjzh", + "alias": "xiaoyao" + }, + { + "address": "NULSd6HgUSjSZTuRoVEXz3Z7KEo9SAnBY5oWj", + "alias": "xue_xiao" + }, + { + "address": "NULSd6HgXo4gF1kDKJSxWxigGRt1cZcKxA1U1", + "alias": "xuzhigang" + }, + { + "address": "NULSd6HgW6MozpGheXhf3U6dzNmxR27jMK6GL", + "alias": "xx" + }, + { + "address": "NULSd6HgX5oYcYGUPnkKohH8ap8xHNQ7oYvVY", + "alias": "yao" + }, + { + "address": "NULSd6HgiNBywK5ALptqQsB6Ktp1NauJyuZL3", + "alias": "you363317" + }, + { + "address": "NULSd6HgidueamFa34x9y4SyW2Ywzv2mA7bKj", + "alias": "yp" + }, + { + "address": "NULSd6Hgg6VTwXz56itvehgXwPQDiyKRHWzkt", + "alias": "zane" + }, + { + "address": "NULSd6HgcFJUwpmyKS5cdd46MnaFtC4zXXrbE", + "alias": "zdgroup" + }, + { + "address": "NULSd6HgfHcC2ux5w6inRWm8TefWFMC7mWr9x", + "alias": "zero_to_hero" + }, + { + "address": "NULSd6HgXCbxtcA2Jn9a6Y1vzCd7mXNe3MSSY", + "alias": "zero_to_hero_2" + }, + { + "address": "NULSd6HgafNwj6SAi4daY7uyPx5FGjcGh43V4", + "alias": "zheng" + }, + { + "address": "NULSd6HgfQNxqrNVegEJJuGt5uVwazzsR7han", + "alias": "zouaiqiu" + }, + { + "address": "NULSd6HgY9MZxx8i9xmRxXE9PRQ5zRagnNog4", + "alias": "zyzz" + } + ], + "extend": "01000000010076c8775d0100010001005a64002056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "remark": "4f70656e2c204c69626572616c2c204175746f6e6f6d6f75732c2053656c662d45766f6c76696e670ae5bc80e694beefbc8ce887aae794b1efbc8ce887aae6b2bbefbc8ce8bf9be58c960a4f75766572742c204c696272652c204175746f6e6f6d652c20c389766f6c757469660ae382aae383bce38397e383b3e38081e38395e383aae383bce38081e887aae6b2bbe38081e980b2e58c960ad09ed182d0bad180d18bd182d18bd0b92c20d0a1d0b2d0bed0b1d0bed0b4d0bdd0b0d18f2c20d090d0b2d182d0bed0bdd0bed0bcd0bdd0b0d18f2c20d18dd0b2d0bed0bbd18ed186d0b8d18f0aeab09cebb0a9eca0812020eca784ebb3b4eca08120ec9e90ec9ca8eca08120ed9881ebaa85eca0810a4162696572746f2c204c696272652c20417574c3b36e6f6d6f2c2045766f6c757469766f0ad981d8aad8ad20d88c20d8add8b120d88c20d985d8b3d8aad982d98420d88c20d8aad8b7d988d8b10a4f6666656e2c20667265692c206175746f6e6f6d2c2045766f6c7574696f6e0a45766f6c75c3a7c3a36f206162657274612c206c69767265206520617574c3b36e6f6d610ac39670706e612c20667269612c206175746f6e6f6d612c2065766f6c7574696f6e0ace91cebdcebfceb9cebacf84ceae2c20ceb5cebbceb5cf8dceb8ceb5cf81ceb72c20ceb1cf85cf84cf8ccebdcebfcebcceb72c20ceb5cebeceadcebbceb9cebeceb70a41c3a7c4b16b2c20c3b67a67c3bc722c20c3b67a65726b2c20657672696d0a4f736361696c2c2073616f7220696e2061697363652c206e65616d6873706c65c3a163682c20c3a96162686cc3b36964", + "privateKey": "009cf05b6b3fe8c09b84c13783140c0f1958e8841f8b6f894ef69431522bc65712" +} + diff --git a/module-dev-p.ncf b/module-dev-p.ncf new file mode 100644 index 0000000000..8b6177c1e6 --- /dev/null +++ b/module-dev-p.ncf @@ -0,0 +1,174 @@ +[global] +encoding=UTF-8 +language=en +logPath=/Users/niels/workspace/nuls-v2/logs +logLevel=INFO +dataPath=/Users/niels/workspace/nuls-v2/data +#默认本链ID +chainId=1 +#地址前缀 +addressPrefix=NULS +#默认本链主资产ID +assetId=1 +#默认资产小数位数 +decimals=8 +#默认链名称 +chainName=nuls +#本链默认资产符号 +symbol=NULS +#主网链id +mainChainId=1 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=%PACKAGE_VERSION% + + +[network] +port=28001 +crossPort=28002 +#魔法参数 +packetMagic=20220418 +#种子节点 +selfSeedIps=127.0.0.1:28001 +#主网的跨链种子连接节点 +moonSeedIps=127.0.0.1:28002 +#最大入网连接数 +maxInCount=300 +#最大出网连接数 +maxOutCount=20 + +[account] +blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx +keystoreFolder=/keystore/backup +dependent=protocol-update + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=0 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json +dependent=cross-chain,protocol-update,smart-contract + + +[consensus] +#种子节点列表 +seedNodes=NULSd6HgUs9HyHvcdfxeW6Q8sA6zvkjtCHSLP +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=1 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/365*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=0.4 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 +dependent=protocol-update,smart-contract,cross-chain + +[ledger] +dependent=protocol-update + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +dependent=protocol-update + +[chain-manager] +dependent=smart-contract,protocol-update + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=8003 +#数据库url地址 +databaseUrl=127.0.0.1 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 +#连接超时时间 +connectTimeOut=30000 +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w +teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn +communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg +syncCoinBase=false +syncAddress= +dependent=smart-contract,cross-chain,chain-manager + +[transaction] +dependent=protocol-update,smart-contract + +[cross-chain] +#跨链节点链接的最小值 +minNodeAmount=3 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +#主网验证人列表 +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 +dependent=protocol-update,smart-contract + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=10 +dependent=smart-contract,cross-chain + +[nuls-api] +#httpServer的启动ip +serverIp=0.0.0.0 +#httpServer的启动port +serverPort=8004 +dependent=smart-contract,cross-chain,chain-manager + +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:8003/ +webWalletPort=8006 +webWalletHost=0.0.0.0 +dependent=smart-contract,cross-chain + +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:8003/ +explorerPort=1999 +explorerHost=0.0.0.0 + diff --git a/module-prod.ncf b/module-prod.ncf new file mode 100644 index 0000000000..7f89ca8a2c --- /dev/null +++ b/module-prod.ncf @@ -0,0 +1,174 @@ +[global] +encoding=UTF-8 +language=en +logPath=/Users/niels/workspace/nuls-v2/logs +logLevel=INFO +dataPath=/Users/niels/workspace/nuls-v2/data +#默认本链ID +chainId=1 +#地址前缀 +addressPrefix=NULS +#默认本链主资产ID +assetId=1 +#默认资产小数位数 +decimals=8 +#默认链名称 +chainName=nuls +#本链默认资产符号 +symbol=NULS +#主网链id +mainChainId=1 +#主网主资产id +mainAssetId=1 +#主网主资产符号 +mainSymbol=NULS +blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=%PACKAGE_VERSION% + + +[network] +port=8001 +crossPort=8002 +#魔法参数 +packetMagic=20191222 +#种子节点 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +#主网的跨链种子连接节点 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +#最大入网连接数 +maxInCount=300 +#最大出网连接数 +maxOutCount=20 + +[account] +blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx +keystoreFolder=/keystore/backup +dependent=protocol-update + +[block] +#区块最大字节数 +blockMaxSize=5242880 +#区块扩展字段最大字节数 +extendMaxSize=1024 +#引发分叉链切换的高度差阈值 +chainSwtichThreshold=3 +#最小链接节点数,当链接到的网络节点低于此参数时,会持续等待 +minNodeAmount=2 +#区块同步过程中,每次从网络上节点下载的区块数量 +downloadNumber=10 +#从网络节点下载单个区块的超时时间 +singleDownloadTimeout=15000 +#区块同步过程中缓存的区块字节数上限(20M) +cachedBlockSizeLimit=20971520 +#创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) +genesisBlockPath=genesis-block.json +dependent=cross-chain,protocol-update,smart-contract + + +[consensus] +#种子节点列表 +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +#出块地址密码 +password=nuls123456 +#出块间隔时间(单位:s) +packingInterval=10 +#共识委托抵押资产链ID +agentChainId=1 +#共识委托抵押资产ID +agentAssetId=1 +#共识奖励资产ID(共识奖励必须为本链资产) +awardAssetId=1 +#共识交易手续费单价 +feeUnit=100000 +#总通胀量 +totalInflationAmount=11000000000000000 +#初始通胀金额500w/365*30 +inflationAmount=41095890410959 +#通胀开始计算时间(单位:S)2020-07-12 00:00:00 +initTime=1594483200 +#通缩比例(如果没有通缩则设为100) +deflationRatio=0.4 +#通缩间隔时间(单位:S),30天 +deflationTimeInterval=2592000 +dependent=protocol-update,smart-contract,cross-chain + +[ledger] +dependent=protocol-update + +[smart-contract] +#合约视图方法调用最大消耗的Gas +maxViewGas=100000000 +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +dependent=protocol-update + +[chain-manager] +dependent=smart-contract,protocol-update + +[public-service] +#public-service模块对外的rpc端口号 +rpcPort=8003 +#数据库url地址 +databaseUrl=127.0.0.1 +#数据库端口号 +databasePort=27017 +#连接池最大数 +maxAliveConnect=20 +#连接最大等待时间 +maxWaitTime=120000 +#连接最大持续时间 +socketTimeout=300000 +#连接超时时间 +connectTimeOut=30000 +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w +teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn +communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg +syncCoinBase=false +syncAddress= +dependent=smart-contract,cross-chain,chain-manager + +[transaction] +dependent=protocol-update,smart-contract + +[cross-chain] +#跨链节点链接的最小值 +minNodeAmount=3 +#跨链节点链接的最大值 +sendHeight=6 +#跨链交易拜占庭比例 +byzantineRatio=66 +#主网跨链种子节点列表 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +#主网验证人列表 +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +#主网签名拜占庭比列 +mainByzantineRatio=66 +#主网最大签名数 +maxSignatureCount=100 +dependent=protocol-update,smart-contract + +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=1000 +dependent=smart-contract,cross-chain + +[nuls-api] +#httpServer的启动ip +serverIp=0.0.0.0 +#httpServer的启动port +serverPort=8004 +dependent=smart-contract,cross-chain,chain-manager + +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:8003/ +webWalletPort=8006 +webWalletHost=0.0.0.0 +dependent=smart-contract,cross-chain + +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:8003/ +explorerPort=1999 +explorerHost=0.0.0.0 + diff --git a/module.ncf b/module.ncf index d3da46b12a..7f89ca8a2c 100644 --- a/module.ncf +++ b/module.ncf @@ -43,6 +43,7 @@ maxOutCount=20 [account] blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx keystoreFolder=/keystore/backup +dependent=protocol-update [block] #区块最大字节数 @@ -151,6 +152,7 @@ dependent=protocol-update,smart-contract [protocol-update] #每隔多少个区块统计一次协议占比 interval=1000 +dependent=smart-contract,cross-chain [nuls-api] #httpServer的启动ip diff --git a/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java b/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java index 5ac136e740..673b1a120c 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java +++ b/module/nuls-account/src/main/java/io/nuls/account/AccountBootstrap.java @@ -197,6 +197,9 @@ private void initDB() throws Exception { if (!RocksDBService.existTable(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK)) { RocksDBService.createTable(AccountStorageConstant.DB_NAME_ACCOUNT_BLOCK); } + if (!RocksDBService.existTable(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL)) { + RocksDBService.createTable(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL); + } } catch (Exception e) { if (!DBErrorCode.DB_TABLE_EXIST.equals(e.getMessage())) { LoggerUtil.LOG.error(e.getMessage()); diff --git a/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java b/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java index 9845621c45..d912483a97 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java +++ b/module/nuls-account/src/main/java/io/nuls/account/constant/AccountStorageConstant.java @@ -55,5 +55,6 @@ public interface AccountStorageConstant { */ String DB_NAME_ACCOUNT_CONGIF = "config"; String DB_NAME_ACCOUNT_BLOCK = "account_block"; + String DB_NAME_ACCOUNT_CONTRACT_CALL = "account_contract_call"; } diff --git a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java index 9621c2d382..9cbb66de63 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java +++ b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountBlockHelper.java @@ -99,7 +99,7 @@ public Result blockAccountTxValidate(Chain chain, Transaction tx) throws NulsExc } int addrChainId = AddressTool.getChainIdByAddress(coinFrom.getAddress()); //黑洞地址不能发起转账 - if(AddressTool.isBlackHoleAddress(NulsConfig.BLACK_HOLE_PUB_KEY,addrChainId,coinFrom.getAddress())){ + if (AddressTool.isBlackHoleAddress(NulsConfig.BLACK_HOLE_PUB_KEY, addrChainId, coinFrom.getAddress())) { return Result.getFailed(AccountErrorCode.ADDRESS_TRANSFER_BAN); } // 发送方from中地址对应的链id必须是发起链的id diff --git a/module/nuls-account/src/main/java/io/nuls/account/helper/AccountContractCallHelper.java b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountContractCallHelper.java new file mode 100644 index 0000000000..30c32d0f24 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/helper/AccountContractCallHelper.java @@ -0,0 +1,119 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.account.helper; + +import io.nuls.account.config.AccountConfig; +import io.nuls.account.config.NulsConfig; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.txdata.AccountContractCallData; +import io.nuls.account.util.TxUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.Transaction; +import io.nuls.core.basic.Result; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.List; + +import static io.nuls.account.util.TxUtil.getSuccess; + +/** + * @author: PierreLuo + * @date: 2022/1/18 + */ +@Component +public class AccountContractCallHelper { + + @Autowired + private AccountConfig accountConfig; + + + public Result validate(Chain chain, Transaction tx) throws NulsException { + CoinData coinData = TxUtil.getCoinData(tx); + List listFrom = coinData.getFrom(); + List listTo = coinData.getTo(); + if (null == listFrom || listFrom.size() == 0) { + return Result.getFailed(AccountErrorCode.TX_COINFROM_NOT_FOUND); + } + int chainId = chain.getConfig().getChainId(); + if (listFrom.size() > 1) { + return Result.getFailed(AccountErrorCode.COINDATA_IS_INCOMPLETE); + } + CoinFrom coinFrom = listFrom.get(0); + String fromStr = AddressTool.getStringAddressByBytes(coinFrom.getAddress()); + if (!fromStr.equals(accountConfig.getBlockAccountManager())) { + chain.getLogger().error("error: not manager, tx: {}, config: {}", fromStr, accountConfig.getBlockAccountManager()); + return Result.getFailed(AccountErrorCode.COINDATA_IS_INCOMPLETE); + } + AccountContractCallData txData = new AccountContractCallData(); + txData.parse(tx.getTxData(), 0); + int type = txData.getType(); + if (type != 1 && type != 2) { + chain.getLogger().error("error type: {}", type); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + String[] addresses = txData.getAddresses(); + if (addresses.length == 0) { + chain.getLogger().error("empty addresses"); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + for (String addr : addresses) { + if (!AddressTool.validAddress(chainId, addr)) { + chain.getLogger().error("error address: {}", addr); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + if (addr.equals(accountConfig.getBlockAccountManager())) { + chain.getLogger().error("error: manager can not in it"); + return Result.getFailed(AccountErrorCode.TX_DATA_VALIDATION_ERROR); + } + } + int addrChainId = AddressTool.getChainIdByAddress(coinFrom.getAddress()); + //黑洞地址不能发起转账 + if (AddressTool.isBlackHoleAddress(NulsConfig.BLACK_HOLE_PUB_KEY, addrChainId, coinFrom.getAddress())) { + return Result.getFailed(AccountErrorCode.ADDRESS_TRANSFER_BAN); + } + // 发送方from中地址对应的链id必须是发起链的id + if (chainId != addrChainId) { + return Result.getFailed(AccountErrorCode.CHAINID_ERROR); + } + + if (null == listTo || listTo.size() == 0) { + return Result.getFailed(AccountErrorCode.TX_COINTO_NOT_FOUND); + } + for (CoinTo coinTo : listTo) { + int toAddrChainId = AddressTool.getChainIdByAddress(coinTo.getAddress()); + // 接收方to中地址对应的链id必须发起链id + if (chainId != toAddrChainId) { + return Result.getFailed(AccountErrorCode.CHAINID_ERROR); + } + } + return getSuccess(); + + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountContractCallData.java b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountContractCallData.java new file mode 100644 index 0000000000..1e81e288eb --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/bo/tx/txdata/AccountContractCallData.java @@ -0,0 +1,111 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.bo.tx.txdata; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/3/16 + */ +public class AccountContractCallData extends BaseNulsData { + + private String[] addresses; + + // 1-添加 2-移除 + private int type; + + private byte[] extend; + + public AccountContractCallData() { + } + + @Override + public int size() { + int size = 0; + // length + size += SerializeUtils.sizeOfUint16(); + for (String address : addresses) { + size += SerializeUtils.sizeOfString(address); + } + size += SerializeUtils.sizeOfUint16(); + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint16(addresses.length); + for (String address : addresses) { + stream.writeString(address); + } + stream.writeUint16(type); + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + int length = byteBuffer.readUint16(); + String[] _addresses = new String[length]; + for (int i = 0; i < length; i++) { + _addresses[i] = byteBuffer.readString(); + } + this.addresses = _addresses; + this.type = byteBuffer.readUint16(); + this.extend = byteBuffer.readByLengthByte(); + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String[] getAddresses() { + return addresses; + } + + public void setAddresses(String[] addresses) { + this.addresses = addresses; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountContractCallPO.java b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountContractCallPO.java new file mode 100644 index 0000000000..d0f51a1bdd --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/model/po/AccountContractCallPO.java @@ -0,0 +1,90 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.model.po; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @author: PierreLuo + * @date: 2022/3/16 + */ +public class AccountContractCallPO extends BaseNulsData { + + private byte[] address; + + private byte[] extend; + + public AccountContractCallPO() { + } + + public AccountContractCallPO(byte[] address) { + this.address = address; + } + + @Override + public int size() { + int size = 0; + size += Address.ADDRESS_LENGTH; + size += SerializeUtils.sizeOfBytes(extend); + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(address); + stream.writeBytesWithLength(extend); + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.address = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + this.extend = byteBuffer.readByLengthByte(); + } + + public byte[] getAddress() { + return address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public byte[] getExtend() { + return extend; + } + + public void setExtend(byte[] extend) { + this.extend = extend; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java index 0bc54d66fa..016f9aef58 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java +++ b/module/nuls-account/src/main/java/io/nuls/account/rpc/cmd/AccountCmd.java @@ -10,9 +10,12 @@ import io.nuls.account.model.dto.AccountKeyStoreDTO; import io.nuls.account.model.dto.AccountOfflineDTO; import io.nuls.account.model.dto.SimpleAccountDTO; +import io.nuls.account.model.po.AccountBlockPO; +import io.nuls.account.model.po.AccountContractCallPO; import io.nuls.account.service.AccountKeyStoreService; import io.nuls.account.service.AccountService; import io.nuls.account.service.TransactionService; +import io.nuls.account.storage.AccountForTransferOnContractCallStorageService; import io.nuls.account.util.AccountTool; import io.nuls.account.util.Preconditions; import io.nuls.account.util.manager.ChainManager; @@ -40,10 +43,8 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; import static io.nuls.account.util.LoggerUtil.LOG; @@ -63,6 +64,11 @@ public class AccountCmd extends BaseCmd { private TransactionService transactionService; @Autowired private ChainManager chainManager; + @Autowired + private AccountForTransferOnContractCallStorageService accountForTransferOnContractCallStorageService; + + public AccountCmd() { + } @CmdAnnotation(cmd = "ac_createAccount", version = 1.0, description = "创建指定个数的账户/create a specified number of accounts") @Parameters(value = { @@ -1095,6 +1101,83 @@ public Response validationPassword(Map params) { return success(map); } + @CmdAnnotation(cmd = "ac_validationWhitelistForTransferOnContractCall", version = 1.0, description = "验证账户是否在合约白名单中") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "address", parameterType = "String", parameterDes = "账户地址") + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = RpcConstant.VALUE, valueType = boolean.class, description = "账户是否在合约白名单中") + })) + public Response validationWhitelistForTransferOnContractCall(Map params) { + Map map = new HashMap<>(AccountConstant.INIT_CAPACITY_2); + Chain chain = null; + try { + // check parameters + Preconditions.checkNotNull(params, AccountErrorCode.NULL_PARAMETER); + Object chainIdObj = params.get(RpcParameterNameConstant.CHAIN_ID); + Object addressObj = params.get(RpcParameterNameConstant.ADDRESS); + if (chainIdObj == null || addressObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + + // parse params + //链ID + int chainId = (int) chainIdObj; + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + //账户地址 + String address = (String) addressObj; + + //check the account + boolean result = accountService.validationWhitelistForTransferOnContractCall(chainId, address); + map.put(RpcConstant.VALUE, result); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + return success(map); + } + + @CmdAnnotation(cmd = "ac_getAllContractCallAccount", version = 1.0, description = "查询调用合约允许普通转账的账户白名单") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class)) + public Response getAllContractCallAccount(Map params) { + Chain chain = null; + Object chainIdObj = params == null ? null : params.get(RpcParameterNameConstant.CHAIN_ID); + try { + // check parameters + if (params == null || chainIdObj == null) { + throw new NulsRuntimeException(AccountErrorCode.NULL_PARAMETER); + } + chain = chainManager.getChain((Integer) chainIdObj); + if (null == chain) { + throw new NulsRuntimeException(AccountErrorCode.CHAIN_NOT_EXIST); + } + List accountList = accountForTransferOnContractCallStorageService.getAccountList(); + if (accountList == null) { + accountList = Collections.EMPTY_LIST; + } + List collect = accountList.stream().map(a -> AddressTool.getStringAddressByBytes(a.getAddress())).collect(Collectors.toList()); + Map result = new HashMap<>(AccountConstant.INIT_CAPACITY_2); + result.put("value", collect); + return success(result); + } catch (NulsRuntimeException e) { + errorLogProcess(chain, e); + return failed(e.getErrorCode()); + } catch (Exception e) { + errorLogProcess(chain, e); + return failed(AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + } + /** * 数据摘要签名 * data digest signature diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java b/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java index a0dacd797e..1fcdc7831b 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/AccountService.java @@ -65,6 +65,14 @@ public interface AccountService { */ Account getAccount(int chainId, String address); + /** + * 账户是否在合约白名单中 + * @param chainId + * @param address + * @return + */ + boolean validationWhitelistForTransferOnContractCall(int chainId, String address); + /** * 获取所有账户集合,并放入缓存 * Query all account collections and put them in cache. diff --git a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java index 6e35ed5d3c..61198ff1f1 100644 --- a/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java +++ b/module/nuls-account/src/main/java/io/nuls/account/service/impl/AccountServiceImpl.java @@ -38,6 +38,7 @@ import io.nuls.account.service.AccountKeyStoreService; import io.nuls.account.service.AccountService; import io.nuls.account.service.AliasService; +import io.nuls.account.storage.AccountForTransferOnContractCallStorageService; import io.nuls.account.storage.AccountStorageService; import io.nuls.account.util.AccountTool; import io.nuls.account.util.LoggerUtil; @@ -83,6 +84,8 @@ public class AccountServiceImpl implements AccountService { @Autowired private AccountKeyStoreService keyStoreService; + @Autowired + private AccountForTransferOnContractCallStorageService accountForTransferOnContractCallStorageService; private AccountCacheService accountCacheService = AccountCacheService.getInstance(); @@ -147,6 +150,16 @@ public Account getAccount(int chainId, String address) { return account; } + @Override + public boolean validationWhitelistForTransferOnContractCall(int chainId, String address) { + //check params + if (!AddressTool.validAddress(chainId, address)) { + throw new NulsRuntimeException(AccountErrorCode.ADDRESS_ERROR); + } + //check the account + return accountForTransferOnContractCallStorageService.exist(AddressTool.getAddress(address)); + } + @Override public List getAccountList() { List list = new ArrayList<>(); diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/AccountForTransferOnContractCallStorageService.java b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountForTransferOnContractCallStorageService.java new file mode 100644 index 0000000000..c3d4720f1b --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/AccountForTransferOnContractCallStorageService.java @@ -0,0 +1,51 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.storage; + +import io.nuls.account.model.po.AccountContractCallPO; +import io.nuls.account.model.po.AccountPO; +import io.nuls.base.data.Address; + +import java.util.List; + +/** + * 调用合约允许普通转账的账户白名单 + * @author: PierreLuo + * @date: 2022/3/16 + */ +public interface AccountForTransferOnContractCallStorageService { + + boolean saveAccountList(List accountPOList); + + boolean removeAccount(List address); + + List getAccountList(); + + AccountContractCallPO getAccount(byte[] address); + + boolean exist(byte[] address); + +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountForTransferOnContractCallStorageServiceImpl.java b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountForTransferOnContractCallStorageServiceImpl.java new file mode 100644 index 0000000000..7222fcd685 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/storage/impl/AccountForTransferOnContractCallStorageServiceImpl.java @@ -0,0 +1,127 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.account.storage.impl; + +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.constant.AccountStorageConstant; +import io.nuls.account.model.po.AccountContractCallPO; +import io.nuls.account.storage.AccountForTransferOnContractCallStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.base.data.Address; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsRuntimeException; +import io.nuls.core.rockdb.service.RocksDBService; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author: PierreLuo + * @date: 2022/3/16 + */ +@Component +public class AccountForTransferOnContractCallStorageServiceImpl implements AccountForTransferOnContractCallStorageService { + + + @Override + public boolean saveAccountList(List accountPOList) { + if (null == accountPOList || accountPOList.size() == 0) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + Map accountPoMap = new HashMap<>(); + try { + for (AccountContractCallPO po : accountPOList) { + //序列化对象为byte数组存储 + accountPoMap.put(po.getAddress(), po.serialize()); + } + return RocksDBService.batchPut(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL, accountPoMap); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_SAVE_BATCH_ERROR); + } + } + + @Override + public boolean removeAccount(List addresses) { + if (null == addresses || addresses.size() <= 0) { + throw new NulsRuntimeException(AccountErrorCode.PARAMETER_ERROR); + } + try { + return RocksDBService.deleteKeys(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL, addresses); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_SAVE_ERROR); + } + } + + @Override + public List getAccountList() { + List accountPOList = new ArrayList<>(); + try { + List list = RocksDBService.valueList(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL); + if (list != null) { + for (byte[] value : list) { + AccountContractCallPO accountPo = new AccountContractCallPO(); + //将byte数组反序列化为AccountPo返回 + accountPo.parse(value, 0); + accountPOList.add(accountPo); + } + } + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_QUERY_ERROR); + } + return accountPOList; + } + + @Override + public AccountContractCallPO getAccount(byte[] address) { + byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL, address); + if (null == accountBytes) { + return null; + } + AccountContractCallPO accountPo = new AccountContractCallPO(); + try { + //将byte数组反序列化为AccountPo返回 + accountPo.parse(accountBytes, 0); + } catch (Exception e) { + LoggerUtil.LOG.error(e.getMessage()); + throw new NulsRuntimeException(AccountErrorCode.DB_QUERY_ERROR); + } + return accountPo; + } + + @Override + public boolean exist(byte[] address) { + byte[] accountBytes = RocksDBService.get(AccountStorageConstant.DB_NAME_ACCOUNT_CONTRACT_CALL, address); + if (null == accountBytes) { + return false; + } + return true; + } +} diff --git a/module/nuls-account/src/main/java/io/nuls/account/tx/v13/AccountForTransferOnContractCallProcessorV13.java b/module/nuls-account/src/main/java/io/nuls/account/tx/v13/AccountForTransferOnContractCallProcessorV13.java new file mode 100644 index 0000000000..4d1e2c1cb2 --- /dev/null +++ b/module/nuls-account/src/main/java/io/nuls/account/tx/v13/AccountForTransferOnContractCallProcessorV13.java @@ -0,0 +1,217 @@ +package io.nuls.account.tx.v13; + +import io.nuls.account.constant.AccountConstant; +import io.nuls.account.constant.AccountErrorCode; +import io.nuls.account.helper.AccountContractCallHelper; +import io.nuls.account.model.bo.Chain; +import io.nuls.account.model.bo.tx.txdata.AccountContractCallData; +import io.nuls.account.model.po.AccountContractCallPO; +import io.nuls.account.storage.AccountForTransferOnContractCallStorageService; +import io.nuls.account.util.LoggerUtil; +import io.nuls.account.util.manager.ChainManager; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.*; +import java.util.stream.Collectors; + +import static io.nuls.account.util.LoggerUtil.LOG; + +@Component("AccountForTransferOnContractCallProcessorV13") +public class AccountForTransferOnContractCallProcessorV13 implements TransactionProcessor { + + @Autowired + private ChainManager chainManager; + @Autowired + private AccountContractCallHelper accountContractCallHelper; + @Autowired + private AccountForTransferOnContractCallStorageService accountForTransferOnContractCallStorageService; + + @Override + public int getType() { + return TxType.ACCOUNT_FOR_TRANSFER_ON_CONTRACT_CALL; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + Map result = null; + Chain chain = null; + try { + chain = chainManager.getChain(chainId); + result = new HashMap<>(AccountConstant.INIT_CAPACITY_4); + String errorCode = null; + if (chain == null) { + errorCode = AccountErrorCode.CHAIN_NOT_EXIST.getCode(); + chain.getLogger().error("chain is not exist, -chainId:{}", chainId); + result.put("txList", txs); + result.put("errorCode", errorCode); + return result; + } + List txList = new ArrayList<>(); + for (Transaction tx : txs) { + try { + Result rs = accountContractCallHelper.validate(chain, tx); + if (rs.isFailed()) { + errorCode = rs.getErrorCode().getCode(); + txList.add(tx); + } + } catch (Exception e) { + chain.getLogger().error(e); + if (e instanceof NulsException) { + errorCode = ((NulsException)e).getErrorCode().getCode(); + } else { + errorCode = AccountErrorCode.DATA_ERROR.getCode(); + } + txList.add(tx); + } + } + result.put("txList", txList); + result.put("errorCode", errorCode); + } catch (Exception e) { + errorLogProcess(chain, e); + result.put("txList", txs); + result.put("errorCode", AccountErrorCode.SYS_UNKOWN_EXCEPTION); + } + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List commitSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountContractCallData data = new AccountContractCallData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + int type = data.getType(); + if (type == 1) { + // 添加白名单 + List list = Arrays.asList(addresses).stream().map(a -> new AccountContractCallPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + result = accountForTransferOnContractCallStorageService.saveAccountList(list); + } else { + // type=2, 移除白名单 + List list = Arrays.asList(addresses).stream().map(a -> AddressTool.getAddress(a)).collect(Collectors.toList()); + result = accountForTransferOnContractCallStorageService.removeAccount(list); + } + } catch (Exception e) { + LoggerUtil.LOG.error("AccountForTransferOnContractCall tx commit error", e); + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("AccountForTransferOnContractCall tx commit error"); + break; + } + commitSucTxList.add(tx); + } + try { + //如果提交失败,将已经提交成功的交易回滚 + if (!result) { + boolean rollback = true; + for (Transaction tx : commitSucTxList) { + AccountContractCallData data = new AccountContractCallData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + int type = data.getType(); + if (type == 1) { + List list = Arrays.asList(addresses).stream().map(a -> AddressTool.getAddress(a)).collect(Collectors.toList()); + rollback = accountForTransferOnContractCallStorageService.removeAccount(list); + } else { + List list = Arrays.asList(addresses).stream().map(a -> new AccountContractCallPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + rollback = accountForTransferOnContractCallStorageService.saveAccountList(list); + } + + } + //回滚失败,抛异常 + if (!rollback) { + LoggerUtil.LOG.error("AccountForTransferOnContractCall tx rollback error"); + throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + + return result; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + boolean result = true; + Chain chain = chainManager.getChain(chainId); + List rollbackSucTxList = new ArrayList<>(); + for (Transaction tx : txs) { + AccountContractCallData data = new AccountContractCallData(); + try { + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + int type = data.getType(); + if (type == 1) { + List list = Arrays.asList(addresses).stream().map(a -> AddressTool.getAddress(a)).collect(Collectors.toList()); + result = accountForTransferOnContractCallStorageService.removeAccount(list); + } else { + List list = Arrays.asList(addresses).stream().map(a -> new AccountContractCallPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + result = accountForTransferOnContractCallStorageService.saveAccountList(list); + } + + } catch (Exception e) { + LoggerUtil.LOG.error("AccountForTransferOnContractCall tx rollback error", e); + result = false; + } + if (!result) { + LoggerUtil.LOG.warn("AccountForTransferOnContractCall tx rollback error"); + break; + } + rollbackSucTxList.add(tx); + } + //交易提交 + try { + //如果回滚失败,将已经回滚成功的交易重新保存 + if (!result) { + boolean commit = true; + for (Transaction tx : rollbackSucTxList) { + AccountContractCallData data = new AccountContractCallData(); + data.parse(new NulsByteBuffer(tx.getTxData())); + String[] addresses = data.getAddresses(); + int type = data.getType(); + if (type == 1) { + List list = Arrays.asList(addresses).stream().map(a -> new AccountContractCallPO(AddressTool.getAddress(a))).collect(Collectors.toList()); + commit = accountForTransferOnContractCallStorageService.saveAccountList(list); + } else { + List list = Arrays.asList(addresses).stream().map(a -> AddressTool.getAddress(a)).collect(Collectors.toList()); + commit = accountForTransferOnContractCallStorageService.removeAccount(list); + } + + } + //保存失败,抛异常 + if (!commit) { + LoggerUtil.LOG.error("AccountForTransferOnContractCall tx commit error"); + throw new NulsException(AccountErrorCode.ALIAS_SAVE_ERROR); + } + } + } catch (Exception e) { + errorLogProcess(chain, e); + result = false; + } + return result; + } + + private void errorLogProcess(Chain chain, Exception e) { + if (chain == null) { + LOG.error(e); + } else { + chain.getLogger().error(e); + } + } + +} diff --git a/module/nuls-account/src/main/resources/protocol-config.json b/module/nuls-account/src/main/resources/protocol-config.json index ba1031b62b..33b0a4c278 100644 --- a/module/nuls-account/src/main/resources/protocol-config.json +++ b/module/nuls-account/src/main/resources/protocol-config.json @@ -1,4 +1,21 @@ [ + { + "version": "13", + "extend": "12", + "validTxs": [ + { + "type": "65", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AccountForTransferOnContractCallProcessorV13" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "12", "extend": "11", diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index 347ebf0e06..a389187ad4 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -32,6 +32,7 @@ import io.nuls.account.model.bo.tx.AccountBlockExtend; import io.nuls.account.model.bo.tx.AccountBlockInfo; import io.nuls.account.model.bo.tx.txdata.AccountBlockData; +import io.nuls.account.model.bo.tx.txdata.AccountContractCallData; import io.nuls.account.model.dto.CoinDTO; import io.nuls.account.util.AccountTool; import io.nuls.account.util.LoggerUtil; @@ -52,6 +53,8 @@ import io.nuls.core.parse.I18nUtils; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; +import io.nuls.core.rpc.info.HostInfo; +import io.nuls.core.rpc.info.NoUse; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; @@ -233,7 +236,9 @@ public void accountBlockMultiSignTest() throws Exception { System.out.println("deduplication length: " + set.size()); System.out.println(Arrays.toString(set.toArray())); data.setAddresses(set.toArray(new String[set.size()]));*/ - data.setAddresses(new String[]{"NULSd6HgijKWAgsFDf469CSgzUA4x3vUqh9Ky"}); + data.setAddresses(new String[]{ + "NULSd6Hgbcn7gdGuapjgM8QsSTBtqsgKZ7Y8v" + }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); tx.setHash(NulsHash.calcHash(tx.serializeForHash())); @@ -292,23 +297,28 @@ public void accountBlockMultiSignProtocol12Test() throws Exception { coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); tx.setCoinData(coinData.serialize()); - //List blockDatas = new ArrayList<>(); - //// 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 - //blockDatas.add(new Object[]{"tNULSeBaMhKaLzhQh1AhhecUqh15ZKw98peg29", 2, List.of(16), List.of("tNULSeBaN2pQjawtQXr7k7KFN442XQ2CmpsUGr")}); - //blockDatas.add(new Object[]{"tNULSeBaMv8q3pWzS7bHpQWW8yypNGo8auRoPf", 2, List.of(2)}); - //blockDatas.add(new Object[]{"tNULSeBaMmbiCH5soCFasXnG4TwqknyTzYBM3S", 1, List.of(2)}); - File file0 = new File("/Users/pierreluo/Nuls/pocm_deposit.txt"); + List blockDatas = new ArrayList<>(); + // 锁定列表: 地址,操作类型(1-加入白名单 2-移除白名单),白名单交易类型清单,白名单合约地址清单 + blockDatas.add(new Object[]{"NULSd6HgZkPDuWG7vZP8yQiLwMSxEFzY1rUNr", 1, List.of(16), List.of("NULSd6HgntyX6aBo9ipFSxh9v7Tp2JZmG4rSA")}); + AccountBlockData data = this.makeTxData(blockDatas); + /*File file0 = new File("/Users/pierreluo/Nuls/pocm_deposit.txt"); List list0 = IOUtils.readLines(new FileInputStream(file0), StandardCharsets.UTF_8.name()); System.out.println("read 0 length: " + list0.size()); + Set unLockUsers = new HashSet<>(); Map> userMap = new HashMap<>(); for (String str : list0) { String[] split = str.split("\\s+"); String contract = split[1].trim(); String user = split[2].trim(); + if (unLockUsers.contains(user)) { + System.out.println(String.format("用户[%s]未锁定[已检查]", user)); + continue; + } RpcResult request = JsonRpcUtil.request(rpcAddress, "isBlockAccount", List.of(chainId, user)); Map result = (Map) request.getResult(); Boolean isBlock = (Boolean) result.get("value"); if (!isBlock) { + unLockUsers.add(user); System.out.println(String.format("用户[%s]未锁定", user)); continue; } @@ -326,7 +336,7 @@ public void accountBlockMultiSignProtocol12Test() throws Exception { } blockDatas.add(new Object[]{user, 1, List.of(16), contracts.stream().collect(Collectors.toList())}); } - AccountBlockData data = this.makeTxData(blockDatas); + AccountBlockData data = this.makeTxData(blockDatas);*/ tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); @@ -401,7 +411,8 @@ public void makeDataFromPocmUserTest() throws Exception { @Test public void accountUnBlockMultiSignTest() throws Exception { - setMain(); + //setMain(); + setTest(); Chain chain = new Chain(); ConfigBean configBean = new ConfigBean(); configBean.setChainId(chainId); @@ -427,7 +438,7 @@ public void accountUnBlockMultiSignTest() throws Exception { tx.setCoinData(coinData.serialize()); AccountBlockData data = new AccountBlockData(); data.setAddresses(new String[]{ - "NULSd6HgULxH4pjz6aeq1icmgKEZeqcsESG7i" + "tNULSeBaMrENtjYwHzpZNadKpd3gvAAy39LUKb" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); @@ -650,6 +661,131 @@ public void accountUnBlockTest() throws Exception { System.out.println(JSONUtils.obj2PrettyJson(response)); } + /** + * 设置 调用合约允许普通转账的账户白名单 + */ + @Test + public void accountForTransferOnContractCallTest() throws Exception { + setDev(); + // 设置增加或者移除白名单 + String type = "ADD"; // ADD or REMOVE + + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + Transaction tx = new Transaction(); + tx.setType(TxType.ACCOUNT_FOR_TRANSFER_ON_CONTRACT_CALL); + CoinData coinData = new CoinData(); + String fromKey = "477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"; + byte[] from = AddressTool.getAddress("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"); + byte[] nonce = TxUtil.getBalanceNonce(chain, assetChainId, assetId, from).getNonce(); + if (null == nonce) { + nonce = HexUtil.decode("0000000000000000"); + } + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); + tx.setCoinData(coinData.serialize()); + AccountContractCallData data = new AccountContractCallData(); + data.setAddresses(new String[]{ + "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN" + }); + if (!"ADD".equalsIgnoreCase(type) && !"REMOVE".equalsIgnoreCase(type)) { + throw new Exception("错误的类型,设置增加或者移除白名单。ADD or REMOVE"); + } + data.setType("ADD".equalsIgnoreCase(type) ? 1 : 2); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + TransactionSignature transactionSignature = new TransactionSignature(); + List p2PHKSignatures = new ArrayList<>(); + //根据密码获得ECKey get ECKey from Password + ECKey ecKey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(fromKey))); + byte[] signBytes = SignatureUtil.signDigest(tx.getHash().getBytes(), ecKey).serialize(); + P2PHKSignature signature = new P2PHKSignature(signBytes, ecKey.getPubKey()); // TxUtil.getInstanceRpcStr(signatureStr, P2PHKSignature.class); + p2PHKSignatures.add(signature); + //交易签名 + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + tx.setTransactionSignature(transactionSignature.serialize()); + Response response = this.newTx(tx); + System.out.println(JSONUtils.obj2PrettyJson(response)); + } + + @Test + public void accountForTransferOnContractCallMultiSignTest() throws Exception { + //setMain(); + setTest(); + + // 设置增加或者移除白名单 + String type = "ADD"; // ADD or REMOVE + String[] whitelist = { + "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7" + }; + + Chain chain = new Chain(); + ConfigBean configBean = new ConfigBean(); + configBean.setChainId(chainId); + configBean.setAssetId(assetId); + chain.setConfig(configBean); + + Transaction tx = new Transaction(); + tx.setType(TxType.ACCOUNT_FOR_TRANSFER_ON_CONTRACT_CALL); + CoinData coinData = new CoinData(); + + + byte[] from = AddressTool.getAddress(fromStr); + byte[] nonce; + RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, fromStr)); + Map result = (Map) request.getResult(); + String nonceStr = (String) result.get("nonce"); + if (null == nonceStr) { + nonce = HexUtil.decode("0000000000000000"); + } else { + nonce = HexUtil.decode(nonceStr); + } + coinData.addFrom(new CoinFrom(from, assetChainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger(), nonce, (byte) 0)); + coinData.addTo(new CoinTo(from, assetChainId, assetId, BigInteger.ZERO, (byte) 0)); + tx.setCoinData(coinData.serialize()); + AccountContractCallData data = new AccountContractCallData(); + data.setAddresses(whitelist); + if (!"ADD".equalsIgnoreCase(type) && !"REMOVE".equalsIgnoreCase(type)) { + throw new Exception("错误的类型,设置增加或者移除白名单。ADD or REMOVE"); + } + data.setType("ADD".equalsIgnoreCase(type) ? 1 : 2); + tx.setTxData(data.serialize()); + tx.setTime(System.currentTimeMillis() / 1000); + tx.setHash(NulsHash.calcHash(tx.serializeForHash())); + System.out.println(String.format("交易大小: %s", tx.size())); + + String[] pubkeys = new String[]{ + "0225a6a872a4110c9b9c9a71bfdbe896e04bc83bb9fe38e27f3e18957d9b2a25ad", + "029f8ab66d157ddfd12d89986833eb2a8d6dc0d92c87da12225d02690583ae1020", + "02784d89575c16f9407c7218f8ca6c6a80d44023cd37796fc5458cbce1ede88adb", + "020aee2c9cde73f50c5e2eef756b92aeb138bc3cda3438b31a68b56f16004bebf8", + "02b2e32f94116d2364af6f06ae9af7f58824b0d3a57fca9170b1a36b665aa93195"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.setM((byte) 3); + transactionSignature.setPubKeyList(collect); + tx.setTransactionSignature(transactionSignature.serialize()); + + List p2PHKSignatures = new ArrayList<>(); + List priKeyList = new ArrayList<>(); + priKeyList.add("???"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } + tx.setTransactionSignature(transactionSignature.serialize()); + System.out.println(HexUtil.encode(tx.serialize())); + } + @Test public void blockTest() { Set nodes = new HashSet<>(); diff --git a/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java b/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java index da36d03202..fa28de9632 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java +++ b/module/nuls-account/src/test/java/io/nuls/account/util/AddressToolTest.java @@ -39,6 +39,12 @@ public void test7y() throws NulsException, io.nuls.sdk.core.exception.NulsExcept } } + @Test + public void createAddress(){ + ECKey ecKey = new ECKey(); + System.out.println(AddressTool.getAddressString(ecKey.getPubKey(),1)+" ==== "+ecKey.getPrivateKeyAsHex()); + } + @Test public void createAccountByPrefix() { AddressTool.addPrefix(4, "LJS"); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java index 1e835009b1..6bf8898625 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/AccountController.java @@ -563,7 +563,7 @@ public RpcResult getBalanceList(List params) { @Parameter(parameterName = "address", requestType = @TypeDescriptor(value = String.class), parameterDes = "账户地址"), @Parameter(parameterName = "assetIdList", requestType = @TypeDescriptor(value = List.class), parameterDes = "资产的ID集合") }) - @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalanceWithDecimals.class)) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AccountBalance.class)) public RpcResult getBalanceWithDecimalsList(List params) { VerifyUtils.verifyParams(params, 3); String address; @@ -1005,6 +1005,29 @@ public RpcResult getBlockAccountInfo(List params) { return RpcResult.success(dto); } + @RpcMethod("getAllContractCallAccount") + @ApiOperation(description = "查询调用合约允许普通转账的账户白名单", order = 167) + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID") + }) + @ResponseData(name = "返回值", description = "返回一个Map对象", responseType = @TypeDescriptor(value = AccountBlockDTO.class)) + public RpcResult getAllContractCallAccount(List params) { + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + Map map = accountTools.getAllContractCallAccount(chainId); + if (map == null) { + return RpcResult.failed(AccountErrorCode.DATA_NOT_FOUND); + } + return RpcResult.success(map); + } + @RpcMethod("encryptedPriKeySign") @ApiOperation(description = "密文私钥摘要签名", order = 156) @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ConsensusController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ConsensusController.java index 3b057818e0..c7a9027495 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ConsensusController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ConsensusController.java @@ -25,6 +25,7 @@ import io.nuls.base.api.provider.consensus.ConsensusProvider; import io.nuls.base.api.provider.consensus.facade.*; import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Controller; import io.nuls.core.core.annotation.RpcMethod; @@ -179,6 +180,34 @@ public RpcResult stopAgent(List params) { return rpcResult; } + @RpcMethod("stopAgentCoinData") + @ApiOperation(description = "获取注销共识节点的coindata", order = 502) + @Parameters({ + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链ID"), + @Parameter(parameterName = "agentHash", parameterDes = "节点hash", requestType = @TypeDescriptor(value = String.class)) + }) + @ResponseData(name = "返回值", description = "返回一个CoinData", responseType = @TypeDescriptor(value = String.class)) + public RpcResult getStopAgentCoinData(List params) { + int chainId; + String agentHash; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is inValid"); + } + try { + agentHash = (String) params.get(1); + } catch (Exception e) { + return RpcResult.paramError("[agentHash] is inValid"); + } + + GetStopAgentCoinDataReq req = new GetStopAgentCoinDataReq(agentHash,1L); + req.setChainId(chainId); + Result result = consensusProvider.getStopAgentCoinData(req); + RpcResult rpcResult = ResultUtil.getJsonRpcResult(result); + return rpcResult; + } + @RpcMethod("depositToAgent") @ApiOperation(description = "委托参与共识", order = 503) @Parameters({ diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java index 61f7eaf3fb..dff3182932 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java @@ -235,7 +235,7 @@ public RpcResult broadcastTx(List params) { if (argsResult.getError() != null) { return argsResult; } - String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); + String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(call.getContractAddress(), callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); result = contractTools.validateContractCall(chainId, AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java index 990253405c..a517122703 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/AccountLedgerResource.java @@ -217,7 +217,7 @@ public RpcClientResult broadcast(TxForm form) { if (argsResult.isFailed()) { return argsResult; } - String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); + String[][] multyAssetValues = Utils.extractMultyAssetInfoFromCallTransaction(call.getContractAddress(), callTx.getCoinDataInstance(), config.getChainId(), config.getAssetsId()); result = contractTools.validateContractCall(config.getChainId(), AddressTool.getStringAddressByBytes(call.getSender()), call.getValue(), diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ConsensusResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ConsensusResource.java index 9b38683e51..fcfee6f07f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ConsensusResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ConsensusResource.java @@ -131,6 +131,29 @@ public RpcClientResult stopAgent(StopAgentForm form) { return clientResult; } + @POST + @Path("/agent/stopCoinData") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "注销共识节点的coinData", order = 502) + @Parameters({ + @Parameter(parameterName = "StopAgentForm", parameterDes = "注销共识节点表单", requestType = @TypeDescriptor(value = StopAgentForm.class)) + }) + @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = String.class)) + public RpcClientResult getStopAgentCoinData(GetStopAgentCoinDataForm form) { + if (form == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form is empty")); + } + GetStopAgentCoinDataReq req = new GetStopAgentCoinDataReq( + form.getAgentHash(), 1L); + req.setChainId(config.getChainId()); + Result result = consensusProvider.getStopAgentCoinData(req); + RpcClientResult clientResult = ResultUtil.getRpcClientResult(result); + if (clientResult.isSuccess()) { + return clientResult.resultMap().map("value", clientResult.getData()).mapToData(); + } + return clientResult; + } + @POST @Path("/deposit") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/consensus/GetStopAgentCoinDataForm.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/consensus/GetStopAgentCoinDataForm.java new file mode 100644 index 0000000000..200706d0da --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/consensus/GetStopAgentCoinDataForm.java @@ -0,0 +1,50 @@ +/* + * + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.provider.model.form.consensus; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.provider.model.form.Base; + +/** + * @author Niels + */ +@ApiModel(description = "获取停止节点表单数据") +public class GetStopAgentCoinDataForm extends Base { + + @ApiModelProperty(description = "共识节点hash", required = true) + private String agentHash; + + public String getAgentHash() { + return agentHash; + } + + public void setAgentHash(String agentHash) { + this.agentHash = agentHash; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java b/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java index 0749f3dd49..74ca268c7d 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/jsonrpc/RpcResult.java @@ -115,7 +115,7 @@ public static RpcResult failed(ErrorCode errorCode, String data) { RpcResult rpcResult = new RpcResult(); RpcResultError error = new RpcResultError(errorCode.getCode(), errorCode.getMsg(), data); if(StringUtils.isBlank(error.getMessage())){ - error.setMessage(error.getData().toString()); + error.setMessage(data); } rpcResult.setError(error); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java index 836dd91cc0..4e64393b18 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/AccountTools.java @@ -139,6 +139,23 @@ public AccountBlockDTO getBlockAccountInfo(int chainId, String address) { } } + public Map getAllContractCallAccount(int chainId) { + try { + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + Map result = callRpc(ModuleE.AC.abbr, "ac_getAllContractCallAccount", params, (Function, Map>) res -> { + if (res == null) { + return null; + } + return res; + }); + return result; + } catch (Exception e) { + io.nuls.provider.utils.Log.error(e); + return null; + } + } + public MultiSigAccount createMultiSigAccount(int chainId, List pubKeys, int minSigns) throws NulsException { //验证公钥是否重复 Set pubkeySet = new HashSet<>(pubKeys); diff --git a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java index 0e97305751..34469f81a9 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/utils/Utils.java @@ -124,7 +124,7 @@ private static int getDepth(Class cls, int depth) { return max; } - public static String[][] extractMultyAssetInfoFromCallTransaction(CoinData coinData, int mainChainId, int mainAssetId) { + public static String[][] extractMultyAssetInfoFromCallTransaction(byte[] contractAddress, CoinData coinData, int mainChainId, int mainAssetId) { List toList = coinData.getTo(); if (toList == null || toList.isEmpty()) { return null; @@ -134,6 +134,9 @@ public static String[][] extractMultyAssetInfoFromCallTransaction(CoinData coinD if (to.getAssetsChainId() == mainChainId && to.getAssetsId() == mainAssetId) { continue; } + if (!Arrays.equals(contractAddress, to.getAddress())) { + continue; + } if (list == null) { list = new ArrayList<>(); } diff --git a/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java b/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java index d87b9ec3cf..2d481267ab 100644 --- a/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java +++ b/module/nuls-block/src/main/java/io/nuls/block/message/handler/CompleteHandler.java @@ -55,7 +55,7 @@ public void process(int chainId, String nodeId, String msgStr) { } ChainContext context = ContextManager.getContext(chainId); NulsLogger logger = context.getLogger(); - logger.debug("recieve " + message + " from node-" + nodeId); +// logger.debug("recieve " + message + " from node-" + nodeId); if(null == context.getDownloaderParams()){ return; } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/GetPrivateKeyProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/GetPrivateKeyProcessor.java index 3fe1578f8d..8b5ecd4359 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/GetPrivateKeyProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/account/GetPrivateKeyProcessor.java @@ -72,7 +72,7 @@ public boolean argsValidate(String[] args) { @Override public CommandResult execute(String[] args) { String address = args[1]; - String password = getPwd("Enter your account password"); + String password = getPwd("Enter your account password:"); Result result = accountService.getAccountPrivateKey(new GetAccountPrivateKeyByAddressReq(password,address)); if(result.isFailed()){ return CommandResult.getFailed(result); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/CreateAgentProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/CreateAgentProcessor.java index 5a46100ce3..96e9a8dab2 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/CreateAgentProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/CreateAgentProcessor.java @@ -81,7 +81,7 @@ public boolean argsValidate(String[] args) { @Override public CommandResult execute(String[] args) { String agentAddress = args[1]; - String password = getPwd("Enter agent address password"); + String password = getPwd("Enter agent address password:"); String packingAddress = args[2]; Integer commissionRate = Integer.parseInt(args[3]); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/StopAgentProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/StopAgentProcessor.java index c4160eb1b0..6216d9de09 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/StopAgentProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/consensus/StopAgentProcessor.java @@ -78,7 +78,7 @@ public boolean argsValidate(String[] args) { @Override public CommandResult execute(String[] args) { String address = args[1]; - String password = getPwd("Enter your account password"); + String password = getPwd("Enter your account password:"); Result result = consensusProvider.stopAgent(new StopAgentReq(address,password)); if (result.isFailed()) { return CommandResult.getFailed(result); diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferByAliasProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferByAliasProcessor.java index 216c88a699..efe2321dff 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferByAliasProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/transaction/TransferByAliasProcessor.java @@ -113,7 +113,7 @@ private TransferReq buildTransferReq(String[] args) { BigInteger amount = new BigInteger(args[3]); TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(config.getChainId(),config.getAssetsId()) - .addForm(formAddress,getPwd("Enter your account password"), amount) + .addForm(formAddress,getPwd("Enter your account password:"), amount) .addTo(toAddress,amount); if(args.length == 5){ builder.setRemark(args[4]); diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java index b2fd662144..7f7196ac23 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java @@ -18,14 +18,12 @@ import io.nuls.poc.constant.ConsensusConfig; import io.nuls.poc.constant.ConsensusConstant; import io.nuls.poc.model.bo.Chain; -import io.nuls.poc.model.po.AgentPo; import io.nuls.poc.rpc.call.CallMethodUtils; import io.nuls.poc.utils.enumeration.ConsensusStatus; import io.nuls.poc.utils.manager.ChainManager; import java.lang.reflect.Field; import java.nio.charset.Charset; -import java.util.List; import java.util.Set; import static java.nio.charset.StandardCharsets.UTF_8; @@ -174,42 +172,5 @@ private void initSys() throws Exception { private void initDB() throws Exception { RocksDBService.init(consensusConfig.getDataFolder()); RocksDBService.createTable(ConsensusConstant.DB_NAME_CONSUME_CONGIF); - if (consensusConfig.getMainChainId() != 1) { - return; - } - - List list2 = RocksDBService.valueList("consensus_agent1"); - for (byte[] arr : list2) { - AgentPo po = new AgentPo(); - po.parse(arr, 0); - boolean up = false; - if (po.getHash().toHex().equals("528a630b43f5d1eeea5b4567e87c7f7f3d4b86046b8a3d079ef0b9a1aea64360") && po.getDelHeight() < 7865610L) { - po.setDelHeight(7865610L); - up = true; - } - if (po.getHash().toHex().equals("a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da") && po.getDelHeight() < 8084100) { - po.setDelHeight(8083986); - up = true; - } - if (po.getHash().toHex().equals("ab00e76ba14fdc1e14dc1a3c7d86e9751de81fa0dfa98c98b5f236f6638a3cc0") && po.getDelHeight() < 8084100) { - po.setDelHeight(-1L); - up = true; - } - if (po.getHash().toHex().equals("cc1b60c282d297f4431c283bc88615f8d70f81e065405d0d8448190620032a91") && po.getDelHeight() < 8084100) { - po.setDelHeight(-1); - up = true; - } - if (po.getHash().toHex().equals("d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447") && po.getDelHeight() < 8084100) { - po.setDelHeight(8084009); - up = true; - } - if (up) { - byte[] key = po.getHash().getBytes(); - byte[] value = po.serialize(); - RocksDBService.put("consensus_agent1", key, value); - } - - } - } -} \ No newline at end of file +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/Agent.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/Agent.java index b377a6713c..e87d8d7615 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/Agent.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/Agent.java @@ -130,7 +130,7 @@ public class Agent extends BaseNulsData { /** * 总委托金额,用于页面展示(由于2.4.1智能合约BUG引起,临时添加字段,后续版本需要删除) - * todo + * * */ private transient BigInteger reTotalDeposit = BigInteger.ZERO; diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/DelayStopAgent.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/DelayStopAgent.java new file mode 100644 index 0000000000..325100940d --- /dev/null +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/model/bo/tx/txdata/DelayStopAgent.java @@ -0,0 +1,89 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.poc.model.bo.tx.txdata; + + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.base.data.NulsHash; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +/** + * 停止节点信息类 + * Stop Node Information Class + * + * @author tag + * 2018/11/20 + */ +public class DelayStopAgent extends BaseNulsData { + + private NulsHash agentHash; + + private long height; + + /** + * serialize important field + */ + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(this.agentHash.getBytes()); + stream.writeUint32(height); + + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.agentHash = byteBuffer.readHash(); + this.height = byteBuffer.readUint32(); + } + + @Override + public int size() { + return this.agentHash.getBytes().length + SerializeUtils.sizeOfUint32(); + } + + public NulsHash getAgentHash() { + return agentHash; + } + + public void setAgentHash(NulsHash agentHash) { + this.agentHash = agentHash; + } + + public long getHeight() { + return height; + } + + public void setHeight(long height) { + this.height = height; + } +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/rpc/cmd/AgentCmd.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/rpc/cmd/AgentCmd.java index f5419e4166..53cac320d5 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/rpc/cmd/AgentCmd.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/rpc/cmd/AgentCmd.java @@ -1,5 +1,6 @@ package io.nuls.poc.rpc.cmd; +import io.nuls.base.data.CoinData; import io.nuls.core.rpc.model.*; import io.nuls.poc.model.dto.output.AgentDTO; import io.nuls.poc.service.AgentService; @@ -14,9 +15,10 @@ /** * 共识节点相关接口 + * * @author tag * 2018/11/7 - * */ + */ @Component public class AgentCmd extends BaseCmd { @Autowired @@ -24,7 +26,7 @@ public class AgentCmd extends BaseCmd { /** * 创建节点 - * */ + */ @CmdAnnotation(cmd = "cs_createAgent", version = 1.0, description = "创建节点交易/create agent transaction") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "agentAddress", parameterType = "String", parameterDes = "节点地址") @@ -36,9 +38,9 @@ public class AgentCmd extends BaseCmd { @ResponseData(name = "返回值", description = "创建节点交易HASH", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "txHash", description = "创建节点交易HASH") })) - public Response createAgent(Map params){ + public Response createAgent(Map params) { Result result = service.createAgent(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -46,7 +48,7 @@ public Response createAgent(Map params){ /** * 注销节点 - * */ + */ @CmdAnnotation(cmd = "cs_stopAgent", version = 1.0, description = "注销节点/stop agent") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "address", parameterType = "String", parameterDes = "节点地址") @@ -54,9 +56,25 @@ public Response createAgent(Map params){ @ResponseData(name = "返回值", description = "停止节点交易HASH", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "txHash", description = "停止节点交易HASH") })) - public Response stopAgent(Map params){ + public Response stopAgent(Map params) { Result result = service.stopAgent(params); - if(result.isFailed()){ + if (result.isFailed()) { + return failed(result.getErrorCode()); + } + return success(result.getData()); + } + + /** + * 获取注销节点coindata + */ + @CmdAnnotation(cmd = "cs_getStopAgentCoinData", version = 1.0, description = "获取注销节点CoinData") + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") + @Parameter(parameterName = "agentHash", parameterType = "String", parameterDes = "节点hash") + @Parameter(parameterName = "lockHeight", parameterType = "Long", parameterDes = "锁定高度") + @ResponseData(name = "返回值", description = "停止节点交易CoinData的Hex", responseType = @TypeDescriptor(value = String.class)) + public Response cs_getStopAgentCoinData(Map params) { + Result result = service.getStopAgentCoinData(params); + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -64,7 +82,7 @@ public Response stopAgent(Map params){ /** * 查询共识节点列表 - * */ + */ @CmdAnnotation(cmd = "cs_getAgentList", version = 1.0, description = "查询当前网络中的共识节点列表/Query the list of consensus nodes in the current network") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "pageNumber", requestType = @TypeDescriptor(value = int.class), parameterDes = "页码", canNull = true) @@ -73,9 +91,9 @@ public Response stopAgent(Map params){ @ResponseData(name = "返回值", description = "返回一个Page对象,这里只描述Page对象中的集合", responseType = @TypeDescriptor(value = List.class, collectionElement = AgentDTO.class) ) - public Response getAgentList(Map params){ + public Response getAgentList(Map params) { Result result = service.getAgentList(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -83,14 +101,14 @@ public Response getAgentList(Map params){ /** * 查询指定节点信息 - * */ + */ @CmdAnnotation(cmd = "cs_getAgentInfo", version = 1.0, description = "查询指点节点节点详细信息/Query pointer node details") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "agentHash", parameterType = "String", parameterDes = "节点HASH") @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = AgentDTO.class)) - public Response getAgentInfo(Map params){ + public Response getAgentInfo(Map params) { Result result = service.getAgentInfo(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -98,15 +116,15 @@ public Response getAgentInfo(Map params){ /** * 获取当前节点出块地址 - * */ + */ @CmdAnnotation(cmd = "cs_getNodePackingAddress", version = 1.0, description = "获取当前节点出块地址/Get the current node's out-of-block address") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @ResponseData(name = "返回值", description = "当前节点出块地址", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "packAddress", description = "当前节点出块地址") })) - public Response getNodePackingAddress(Map params){ + public Response getNodePackingAddress(Map params) { Result result = service.getNodePackingAddress(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -114,15 +132,15 @@ public Response getNodePackingAddress(Map params){ /** * 获取所有节点出块地址/指定N个区块出块地址 - * */ + */ @CmdAnnotation(cmd = "cs_getAgentAddressList", version = 1.0, description = "获取当前网络共识节点出块地址列表或则查询最近N个区块的出块地址/Get all node out-of-block addresses or specify N block out-of-block designations") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @ResponseData(name = "返回值", description = "共识节点列表", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "packAddress", description = "共识节点列表") })) - public Response getAgentAddressList(Map params){ + public Response getAgentAddressList(Map params) { Result result = service.getAgentAddressList(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -130,16 +148,16 @@ public Response getAgentAddressList(Map params){ /** * 查询指定共识节点状态 - * */ + */ @CmdAnnotation(cmd = "cs_getAgentStatus", version = 1.0, description = "查询指定共识节点状态/query the specified consensus node status 1.0") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "agentHash", parameterType = "String", parameterDes = "节点HASH") @ResponseData(name = "返回值", description = "节点状态", responseType = @TypeDescriptor(value = Map.class, mapKeys = { - @Key(name = "status",valueType = Byte.class, description = "节点状态") + @Key(name = "status", valueType = Byte.class, description = "节点状态") })) - public Response getAgentStatus(Map params){ + public Response getAgentStatus(Map params) { Result result = service.getAgentStatus(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -147,13 +165,13 @@ public Response getAgentStatus(Map params){ /** * 修改节点共识状态 - * */ + */ @CmdAnnotation(cmd = "cs_updateAgentConsensusStatus", version = 1.0, description = "修改节点共识状态/modifying the Node Consensus State") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @ResponseData(description = "无特定返回值,无错误则表示节点共识状态修改成功") - public Response updateAgentConsensusStatus(Map params){ + public Response updateAgentConsensusStatus(Map params) { Result result = service.updateAgentConsensusStatus(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -161,14 +179,14 @@ public Response updateAgentConsensusStatus(Map params){ /** * 修改节点打包状态 - * */ + */ @CmdAnnotation(cmd = "cs_updateAgentStatus", version = 1.0, description = "修改节点打包状态/modifying the Packing State of Nodes") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @Parameter(parameterName = "status", requestType = @TypeDescriptor(value = int.class), parameterDes = "节点状态") @ResponseData(description = "无特定返回值,无错误则表示节点打包状态修改成功") - public Response updateAgentStatus(Map params){ + public Response updateAgentStatus(Map params) { Result result = service.updateAgentStatus(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -176,7 +194,7 @@ public Response updateAgentStatus(Map params){ /** * 获取当前节点的出块账户信息 - * */ + */ @CmdAnnotation(cmd = "cs_getPackerInfo", version = 1.0, description = "获取当前节点的出块账户信息/modifying the Packing State of Nodes") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @@ -184,9 +202,9 @@ public Response updateAgentStatus(Map params){ @Key(name = "password", description = "当前节点密码"), @Key(name = "packAddressList", valueType = List.class, valueElement = String.class, description = "当前打包地址列表"), })) - public Response getPackerInfo(Map params){ + public Response getPackerInfo(Map params) { Result result = service.getPackerInfo(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); @@ -194,7 +212,7 @@ public Response getPackerInfo(Map params){ /** * 获取当前节点的出块账户信息 - * */ + */ @CmdAnnotation(cmd = "cs_getSeedNodeInfo", version = 1.0, description = "获取种子节点信息/get seed node info") @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id") @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @@ -202,9 +220,9 @@ public Response getPackerInfo(Map params){ @Key(name = "password", description = "当前节点密码"), @Key(name = "packAddressList", valueType = List.class, valueElement = String.class, description = "当前打包地址列表"), })) - public Response getSeedNodeInfo(Map params){ + public Response getSeedNodeInfo(Map params) { Result result = service.getSeedNodeInfo(params); - if(result.isFailed()){ + if (result.isFailed()) { return failed(result.getErrorCode()); } return success(result.getData()); diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/AgentService.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/AgentService.java index ecf46bb589..300d9aadd9 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/AgentService.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/AgentService.java @@ -98,4 +98,6 @@ public interface AgentService { * @return Result * */ Result getSeedNodeInfo(Map params); + + Result getStopAgentCoinData(Map params); } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java index c9c4f91541..f3aaa38951 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/AgentServiceImpl.java @@ -12,6 +12,7 @@ import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.exception.NulsRuntimeException; import io.nuls.core.log.Log; @@ -120,7 +121,7 @@ public Result createAgent(Map params) { Agent agent = TxUtil.createAgent(dto); tx.setTxData(agent.serialize()); //3.2.组装coinData - CoinData coinData = coinDataManager.getCoinData(agent.getAgentAddress(), chain, new BigInteger(dto.getDeposit()), ConsensusConstant.CONSENSUS_LOCK_TIME, tx.size() + P2PHKSignature.SERIALIZE_LENGTH,chain.getConfig().getAgentChainId(),chain.getConfig().getAgentAssetId()); + CoinData coinData = coinDataManager.getCoinData(agent.getAgentAddress(), chain, new BigInteger(dto.getDeposit()), ConsensusConstant.CONSENSUS_LOCK_TIME, tx.size() + P2PHKSignature.SERIALIZE_LENGTH, chain.getConfig().getAgentChainId(), chain.getConfig().getAgentAssetId()); tx.setCoinData(coinData.serialize()); //4.交易签名 String priKey = (String) callResult.get("priKey"); @@ -183,6 +184,44 @@ public Result createAgentValid(Map params) { } } + @Override + public Result getStopAgentCoinData(Map params) { + int chainId; + String agentHash; + long lockHeight; + try { + chainId = (int) params.get("chainId"); + agentHash = (String) params.get("agentHash"); + lockHeight = Long.parseLong("" + params.get("lockHeight")); + ObjectUtils.canNotEmpty(agentHash, "agentHash can not be null"); + } catch (Exception e) { + return Result.getFailed(ConsensusErrorCode.PARAM_ERROR); + } + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + return Result.getFailed(ConsensusErrorCode.CHAIN_NOT_EXIST); + } + List agentList = chain.getAgentList(); + Agent agent = null; + for (Agent a : agentList) { + if (a.getTxHash().toHex().equals(agentHash)) { + agent = a; + break; + } + } + try { + CoinData coinData = coinDataManager.getStopAgentCoinData(chain, agent, lockHeight); + if (null != coinData) { + Map result = new HashMap<>(); + result.put("value", HexUtil.encode(coinData.serialize())); + return Result.getSuccess(ConsensusErrorCode.SUCCESS).setData(result); + } + } catch (Exception e) { + chain.getLogger().error(e); + } + return Result.getFailed(ConsensusErrorCode.DATA_NOT_FOUND); + } + /** * 停止节点 */ @@ -593,12 +632,12 @@ public Result getPackerInfo(Map params) { resultMap.put("password", chain.getConfig().getPassword()); } List packAddressList = new ArrayList<>(); - if(round != null){ + if (round != null) { for (MeetingMember meetingMember : round.getMemberList()) { packAddressList.add(AddressTool.getStringAddressByBytes(meetingMember.getAgent().getPackingAddress())); } - }else { - if(chain.isCacheLoaded()) { + } else { + if (chain.isCacheLoaded()) { packAddressList = new ArrayList<>(Arrays.asList(chain.getConfig().getSeedNodes().split(","))); } } @@ -628,13 +667,13 @@ public Result getSeedNodeInfo(Map params) { List packAddressList = Arrays.asList(chain.getConfig().getSeedNodes().split(",")); MeetingRound round = roundManager.getCurrentRound(chain); MeetingMember member = null; - if(round != null){ + if (round != null) { member = round.getMyMember(); } Map resultMap = new HashMap<>(4); if (member != null) { String address = AddressTool.getStringAddressByBytes(member.getAgent().getPackingAddress()); - if(packAddressList.contains(address)){ + if (packAddressList.contains(address)) { resultMap.put("address", address); resultMap.put("password", chain.getConfig().getPassword()); } @@ -646,4 +685,5 @@ public Result getSeedNodeInfo(Map params) { return Result.getFailed(ConsensusErrorCode.DATA_ERROR); } } + } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java index f483ff4f4d..49057606c5 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java @@ -163,14 +163,9 @@ public Result validBlock(Map params) { block.parse(new NulsByteBuffer(RPCUtil.decode(blockHex))); blockValidator.validate(isDownload, chain, block); Response response = CallMethodUtils.verify(chainId, block.getTxs(), block.getHeader(), chain.getNewestHeader(), chain.getLogger()); - if ((block.getHeader().getHeight() > 8084000 && block.getHeader().getHeight() < 8084100) || response.isSuccess()) { + if ( response.isSuccess()) { Map responseData = (Map) response.getResponseData(); Map v = (Map) responseData.get("tx_batchVerify"); - if (v == null && block.getHeader().getHeight() > 8084000 && block.getHeader().getHeight() < 8084100) { - v = new HashMap(); - v.put("value", true); - v.put("contractList", new ArrayList<>()); - } return Result.getSuccess(ConsensusErrorCode.SUCCESS).setData(v); } else { chain.getLogger().info("Block transaction validation failed!"); @@ -183,4 +178,4 @@ public Result validBlock(Map params) { } return Result.getFailed(ConsensusErrorCode.FAILED).setData(validResult); } -} \ No newline at end of file +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/tx/v4/DelayStopAgentProcessor.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/tx/v4/DelayStopAgentProcessor.java new file mode 100644 index 0000000000..7ad1098232 --- /dev/null +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/tx/v4/DelayStopAgentProcessor.java @@ -0,0 +1,257 @@ +package io.nuls.poc.tx.v4; + +import io.nuls.base.data.*; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; +import io.nuls.core.model.ByteUtils; +import io.nuls.core.parse.SerializeUtils; +import io.nuls.poc.constant.ConsensusErrorCode; +import io.nuls.poc.model.bo.Chain; +import io.nuls.poc.model.bo.tx.txdata.DelayStopAgent; +import io.nuls.poc.model.bo.tx.txdata.Deposit; +import io.nuls.poc.model.po.AgentPo; +import io.nuls.poc.model.po.DepositPo; +import io.nuls.poc.model.po.PunishLogPo; +import io.nuls.poc.storage.AgentStorageService; +import io.nuls.poc.storage.DepositStorageService; +import io.nuls.poc.utils.LoggerUtil; +import io.nuls.poc.utils.enumeration.PunishType; +import io.nuls.poc.utils.manager.ChainManager; +import io.nuls.poc.utils.manager.DepositManager; +import io.nuls.poc.utils.validator.TxValidator; + +import java.io.IOException; +import java.util.*; + +@Component("DelayStopAgentProcessorV1") +public class DelayStopAgentProcessor implements TransactionProcessor { + + @Autowired + private ChainManager chainManager; + @Autowired + private AgentStorageService agentStorageService; + @Autowired + private DepositStorageService depositStorageService; + @Autowired + private TxValidator txValidator; + @Autowired + private DepositManager depositManager; + + @Override + public int getType() { + return TxType.DELAY_STOP_AGENT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + Map result = new HashMap<>(2); + if (chain == null) { + LoggerUtil.commonLog.error("Chains do not exist."); + result.put("txList", txs); + result.put("errorCode", ConsensusErrorCode.CHAIN_NOT_EXIST.getCode()); + return result; + } + List invalidTxList = new ArrayList<>(); + String errorCode = null; + for (Transaction tx : txs) { + try { + if (!txValidator.validateTx(chain, tx)) { + invalidTxList.add(tx); + chain.getLogger().info("Delay stop agent transaction verification failed"); + continue; + } + } catch (NulsException e) { + invalidTxList.add(tx); + chain.getLogger().error("Intelligent Delay stop agent Transaction Verification Failed"); + chain.getLogger().error(e); + errorCode = e.getErrorCode().getCode(); + } catch (IOException io) { + invalidTxList.add(tx); + chain.getLogger().error("Intelligent Delay stop agent Transaction Verification Failed"); + chain.getLogger().error(io); + errorCode = ConsensusErrorCode.SERIALIZE_ERROR.getCode(); + } + } + result.put("txList", invalidTxList); + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + LoggerUtil.commonLog.error("Chains do not exist."); + return false; + } + List commitSuccessList = new ArrayList<>(); + boolean commitResult = true; + for (Transaction tx : txs) { + try { + if (realCommit(tx, chain, blockHeader)) { + commitSuccessList.add(tx); + } else { + commitResult = false; + } + } catch (NulsException e) { + chain.getLogger().error("Failure to red punish transaction submission"); + chain.getLogger().error(e); + commitResult = false; + } + } + //回滚已提交成功的交易 + if (!commitResult) { + for (Transaction rollbackTx : commitSuccessList) { + try { + realRollback(rollbackTx, chain, blockHeader); + } catch (NulsException e) { + chain.getLogger().error("Failure to red punish transaction rollback"); + chain.getLogger().error(e); + } + } + } + return commitResult; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + Chain chain = chainManager.getChainMap().get(chainId); + if (chain == null) { + LoggerUtil.commonLog.error("Chains do not exist."); + return false; + } + List rollbackSuccessList = new ArrayList<>(); + boolean rollbackResult = true; + for (Transaction tx : txs) { + try { + if (realRollback(tx, chain, blockHeader)) { + rollbackSuccessList.add(tx); + } else { + rollbackResult = false; + } + } catch (NulsException e) { + chain.getLogger().error("Failure to red punish transaction rollback"); + chain.getLogger().error(e); + rollbackResult = false; + } + } + //保存已回滚成功的交易 + if (!rollbackResult) { + for (Transaction commitTx : rollbackSuccessList) { + try { + realCommit(commitTx, chain, blockHeader); + } catch (NulsException e) { + chain.getLogger().error("Failure to red punish transaction submission"); + chain.getLogger().error(e); + } + } + } + return rollbackResult; + } + + + public boolean realCommit(Transaction tx, Chain chain, BlockHeader blockHeader) throws NulsException { + long blockHeight = blockHeader.getHeight(); + int chainId = chain.getConfig().getChainId(); + DelayStopAgent txData = new DelayStopAgent(); + txData.parse(tx.getTxData(), 0); + + /* + 找到被惩罚的节点 + Find the punished node + */ + AgentPo agent = agentStorageService.get(txData.getAgentHash(), chainId); + + if (null == agent) { + throw new NulsException(ConsensusErrorCode.AGENT_NOT_EXIST); + } + + /* + 找到被惩罚节点的委托 + Delegation to Find Penalized Nodes + */ + List depositPoList = depositStorageService.getList(chainId); + List updatedList = new ArrayList<>(); + for (DepositPo po : depositPoList) { + if (po.getDelHeight() >= 0) { + continue; + } + if (!po.getAgentHash().equals(txData.getAgentHash())) { + continue; + } + po.setDelHeight(blockHeight); + boolean b = depositStorageService.save(po, chainId); + if (!b) { + for (DepositPo po2 : updatedList) { + po2.setDelHeight(-1); + this.depositStorageService.save(po2, chainId); + } + throw new NulsException(ConsensusErrorCode.SAVE_FAILED); + } + updatedList.add(po); + } + /* + * 更新缓存 + * */ + if (!updatedList.isEmpty()) { + for (DepositPo depositPo : updatedList) { + depositManager.updateDeposit(chain, depositManager.poToDeposit(depositPo)); + } + } + return true; + } + + public boolean realRollback(Transaction tx, Chain chain, BlockHeader blockHeader) throws NulsException { + long blockHeight = blockHeader.getHeight(); + int chainId = chain.getConfig().getChainId(); + DelayStopAgent txData = new DelayStopAgent(); + txData.parse(tx.getTxData(), 0); + /* + 找到被惩罚的节点 + Find the punished node + */ + AgentPo agent1 = agentStorageService.get(txData.getAgentHash(), chainId); + + if (null == agent1) { + throw new NulsException(ConsensusErrorCode.AGENT_NOT_EXIST); + } + + /* + 找到被惩罚节点的委托 + Delegation to Find Penalized Nodes + */ + List depositPoList = depositStorageService.getList(chainId); + List updatedList = new ArrayList<>(); + for (DepositPo po : depositPoList) { + if (!po.getAgentHash().equals(txData.getAgentHash())) { + continue; + } + if (po.getDelHeight() == blockHeight) { + po.setDelHeight(-1); + } + boolean success = this.depositStorageService.save(po, chainId); + if (!success) { + for (DepositPo po2 : updatedList) { + po2.setDelHeight(blockHeight); + this.depositStorageService.save(po2, chainId); + } + throw new NulsException(ConsensusErrorCode.ROLLBACK_FAILED); + } + updatedList.add(po); + } + + /* + * 修改缓存 + * */ + if (!updatedList.isEmpty()) { + for (DepositPo po2 : updatedList) { + depositManager.updateDeposit(chain, depositManager.poToDeposit(po2)); + } + } + return true; + } +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java new file mode 100644 index 0000000000..1b024a0256 --- /dev/null +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java @@ -0,0 +1,48 @@ +package io.nuls.poc.utils.manager; + +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.log.Log; +import io.nuls.poc.model.bo.tx.txdata.Agent; +import io.nuls.poc.model.po.AgentPo; +import io.nuls.poc.storage.AgentStorageService; + +@Component +public class FixRedPunishBugHelper { + + @Autowired + private AgentStorageService agentStorageService; + + /** + * This method is used to solve the problem of inconsistent node list caused by the massive node fork event that occurred on 2022-04-10. This method forces four nodes to stop at different heights, and then modifs the affected data through other transaction types to maintain the security and consistency of data on the main network. + * @param chainId + * @param agent + * @param startBlockHeight + */ + public void v13Filter(int chainId, Agent agent, long startBlockHeight) { + execute(chainId, "a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da", startBlockHeight, 8083986L, agent); + execute(chainId, "ad82dc5237378a39abb3bbd8174ac0f77c882573a02c8fac01b4c7a058a96d90", startBlockHeight, 8083892L, agent); + execute(chainId, "d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447", startBlockHeight, 8084009L, agent); + } + + private void execute(int chainId, String hash, long startBlockHeight, long deleteHeight, Agent agent) { + if (deleteHeight > startBlockHeight) { + return; + } + if (agent.getDelHeight() == deleteHeight) { + return; + } + if (!hash.equals(agent.getTxHash().toHex())) { + return; + } + agent.setDelHeight(deleteHeight); + agent.setStatus(0); + AgentPo po = this.agentStorageService.get(agent.getTxHash(), chainId); + if (null == po) { + return; + } + po.setDelHeight(deleteHeight); + this.agentStorageService.save(po, chainId); + Log.warn("update special agent:" + hash); + } +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java index 7ffc621816..b374ea11f9 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/PunishManager.java @@ -701,6 +701,9 @@ public boolean redPunishRollback(Transaction tx, Chain chain, BlockHeader blockH List depositPoList = depositStorageService.getList(chainId); List updatedList = new ArrayList<>(); for (DepositPo po : depositPoList) { + if(!po.getAgentHash().equals(agent.getHash())){ + continue; + } if (po.getDelHeight() == blockHeight) { po.setDelHeight(-1); } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/RoundManager.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/RoundManager.java index 2feeef0fb2..e6f406ab06 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/RoundManager.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/RoundManager.java @@ -4,6 +4,7 @@ import io.nuls.base.data.BlockExtendsData; import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; +import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; import io.nuls.core.log.Log; @@ -33,6 +34,10 @@ */ @Component public class RoundManager { + + @Autowired + private FixRedPunishBugHelper fixRedPunishBugHelper; + /** * 添加轮次信息到轮次列表中 * Add Round Information to Round List @@ -556,6 +561,7 @@ private List getAliveAgentList(Chain chain, long startBlockHeight) { List resultList = new ArrayList<>(); for (int i = agentList.size() - 1; i >= 0; i--) { Agent agent = agentList.get(i); + fixRedPunishBugHelper.v13Filter(chain.getConfig().getChainId(), agent,startBlockHeight); if (agent.getDelHeight() != -1L && agent.getDelHeight() <= startBlockHeight) { continue; } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java index 5588139746..6d6c1c8340 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java @@ -89,7 +89,7 @@ public void validate(boolean isDownload, Chain chain, Block block) throws NulsEx throw new NulsException(ConsensusErrorCode.BLOCK_PUNISH_VALID_ERROR); } validResult = coinBaseValidate(block, currentRound, member, chain, blockHeaderHash); - if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084100) && !validResult) { + if ( !validResult) { if (roundValidResult.isValidResult()) { roundManager.rollBackRound(chain, currentRound.getIndex()); } @@ -160,17 +160,17 @@ private RoundValidResult roundValidate(boolean isDownload, Chain chain, BlockHea chain.getLogger().error("block height " + blockHeader.getHeight() + " round startTime is error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } - if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && extendsData.getConsensusMemberCount() != currentRound.getMemberCount()) { + if (extendsData.getConsensusMemberCount() != currentRound.getMemberCount()) { chain.getLogger().error("block height " + blockHeader.getHeight() + " packager count is error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } // 验证打包人是否正确 MeetingMember member = currentRound.getMember(extendsData.getPackingIndexOfRound()); - if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && !Arrays.equals(member.getAgent().getPackingAddress(), blockHeader.getPackingAddress(chain.getConfig().getChainId()))) { + if ( !Arrays.equals(member.getAgent().getPackingAddress(), blockHeader.getPackingAddress(chain.getConfig().getChainId()))) { chain.getLogger().error("block height " + blockHeader.getHeight() + " packager error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } - if ((blockHeader.getHeight() < 8084000 || blockHeader.getHeight() > 8084500) && member.getPackEndTime() != blockHeader.getTime()) { + if ( member.getPackEndTime() != blockHeader.getTime()) { chain.getLogger().error("block height " + blockHeader.getHeight() + " time error! hash :" + blockHeaderHash); throw new NulsException(ConsensusErrorCode.BLOCK_ROUND_VALIDATE_ERROR); } @@ -434,4 +434,4 @@ private boolean coinDataValidate(Chain chain, Transaction tx) throws NulsExcepti } return true; } -} \ No newline at end of file +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java index c1d8198f35..bd2bc01bd6 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/TxValidator.java @@ -8,9 +8,11 @@ import io.nuls.base.data.Transaction; import io.nuls.base.signture.MultiSignTxSignature; import io.nuls.base.signture.P2PHKSignature; +import io.nuls.base.signture.TransactionSignature; import io.nuls.core.constant.TxType; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; import io.nuls.core.exception.NulsException; import io.nuls.core.model.ArraysTool; @@ -67,7 +69,7 @@ public class TxValidator { * @param tx 交易/transaction info * @return boolean */ - public boolean validateTx(Chain chain, Transaction tx) throws NulsException,IOException{ + public boolean validateTx(Chain chain, Transaction tx) throws NulsException, IOException { switch (tx.getType()) { case (TxType.REGISTER_AGENT): case (TxType.CONTRACT_CREATE_AGENT): @@ -81,11 +83,66 @@ public boolean validateTx(Chain chain, Transaction tx) throws NulsException,IOEx case (TxType.CANCEL_DEPOSIT): case (TxType.CONTRACT_CANCEL_DEPOSIT): return validateWithdraw(chain, tx); + case (TxType.DELAY_STOP_AGENT): + return validateDelayStopAgent(chain, tx); default: return false; } } + private boolean validateDelayStopAgent(Chain chain, Transaction tx) throws NulsException, IOException { + DelayStopAgent txData = new DelayStopAgent(); + txData.parse(tx.getTxData(), 0); + AgentPo agentPo = this.agentStorageService.get(txData.getAgentHash(), chain.getConfig().getChainId()); + if (null == agentPo || agentPo.getDelHeight() <= 1) { + chain.getLogger().warn("agent hash not right,{}", txData.getAgentHash().toHex()); + return false; + } + if (txData.getHeight() != agentPo.getDelHeight()) { + chain.getLogger().warn("agent delHeight not right,{}", txData.getAgentHash().toHex()); + return false; + } + Agent agent = null; + for (Agent a : chain.getAgentList()) { + if (a.getTxHash().equals(agentPo.getHash())) { + agent = a; + break; + } + } + + if (null == agent || agent.getDelHeight() <= 1) { + chain.getLogger().warn("Cache agent deleteHeight not right,{}", txData.getAgentHash().toHex()); + return false; + } + + //验证coindata共识相关性 + CoinData csCoinData = coinDataManager.getStopAgentCoinData(chain, agent, 1); + if (!ArraysTool.arrayEquals(csCoinData.serialize(), tx.getCoinData())) { + chain.getLogger().warn("Delay stop agent coindata not right,{}", txData.getAgentHash().toHex()); + return false; + } + //验证签名 + TransactionSignature signature = new TransactionSignature(); + signature.parse(tx.getTransactionSignature(), 0); + if (signature.getSignersCount() > 1) { + chain.getLogger().warn("Delay stop agent signature count not right,{}", txData.getAgentHash().toHex()); + return false; + } + P2PHKSignature sig = signature.getP2PHKSignatures().get(0); + if (!ECKey.verify(tx.getHash().getBytes(), sig.getSignData().getSignBytes(), sig.getPublicKey())) { + chain.getLogger().warn("Delay stop agent signature not right,{}", txData.getAgentHash().toHex()); + return false; + } + byte[] address = AddressTool.getAddress(sig.getPublicKey(), chain.getConfig().getChainId()); + String addr = AddressTool.getStringAddressByBytes(address); + List seedList = new ArrayList<>(Arrays.asList(chain.getConfig().getSeedNodes().split(","))); + if (!seedList.contains(addr)) { + chain.getLogger().warn("Delay stop agent tx must sended by a seed address,{}", txData.getAgentHash().toHex()); + return false; + } + return true; + } + /** * 创建节点交易验证 * Create node transaction validation @@ -117,7 +174,7 @@ private boolean validateCreateAgent(Chain chain, Transaction tx) throws NulsExce * @param tx 停止节点交易/stop agent transaction * @return boolean */ - private boolean validateStopAgent(Chain chain, Transaction tx) throws NulsException,IOException{ + private boolean validateStopAgent(Chain chain, Transaction tx) throws NulsException, IOException { if (tx.getTxData() == null) { throw new NulsException(ConsensusErrorCode.AGENT_NOT_EXIST); } @@ -167,19 +224,19 @@ private boolean validateDeposit(Chain chain, Transaction tx) throws NulsExceptio //验证手续费是否足够 try { int size = tx.serialize().length; - if(AddressTool.isMultiSignAddress(coinData.getFrom().get(0).getAddress())){ + if (AddressTool.isMultiSignAddress(coinData.getFrom().get(0).getAddress())) { MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); - transactionSignature.parse(tx.getTransactionSignature(),0); + transactionSignature.parse(tx.getTransactionSignature(), 0); size += transactionSignature.getM() * P2PHKSignature.SERIALIZE_LENGTH; size -= tx.getTransactionSignature().length; } BigInteger fee = TransactionFeeCalculator.getConsensusTxFee(size, chain.getConfig().getFeeUnit()); - if(fee.compareTo(consensusManager.getFee(coinData, chain.getConfig().getAgentChainId(), chain.getConfig().getAgentAssetId())) > 0){ + if (fee.compareTo(consensusManager.getFee(coinData, chain.getConfig().getAgentChainId(), chain.getConfig().getAgentAssetId())) > 0) { chain.getLogger().error("手续费不足!"); throw new NulsException(ConsensusErrorCode.FEE_NOT_ENOUGH); } - }catch (IOException e){ + } catch (IOException e) { chain.getLogger().error("数据序列化错误!"); throw new NulsException(ConsensusErrorCode.SERIALIZE_ERROR); } @@ -226,16 +283,16 @@ private boolean validateWithdraw(Chain chain, Transaction tx) throws NulsExcepti throw new NulsException(ConsensusErrorCode.DATA_ERROR); } //验证nonce值是否正确 - if(!ArraysTool.arrayEquals(CallMethodUtils.getNonce(cancelDeposit.getJoinTxHash().getBytes()), coinData.getFrom().get(0).getNonce())){ + if (!ArraysTool.arrayEquals(CallMethodUtils.getNonce(cancelDeposit.getJoinTxHash().getBytes()), coinData.getFrom().get(0).getNonce())) { throw new NulsException(ConsensusErrorCode.COIN_DATA_VALID_ERROR); } //退出委托金额是否正确 - if(depositPo.getDeposit().compareTo(coinData.getFrom().get(0).getAmount()) != 0 || coinData.getTo().get(0).getAmount().compareTo(BigInteger.ZERO) <= 0){ + if (depositPo.getDeposit().compareTo(coinData.getFrom().get(0).getAmount()) != 0 || coinData.getTo().get(0).getAmount().compareTo(BigInteger.ZERO) <= 0) { throw new NulsException(ConsensusErrorCode.DATA_ERROR); } - if(tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT && coinData.getTo().get(0).getAmount().compareTo(depositPo.getDeposit()) > 0){ + if (tx.getType() == TxType.CONTRACT_CANCEL_DEPOSIT && coinData.getTo().get(0).getAmount().compareTo(depositPo.getDeposit()) > 0) { throw new NulsException(ConsensusErrorCode.DATA_ERROR); - }else if(tx.getType() == TxType.CANCEL_DEPOSIT && coinData.getTo().get(0).getAmount().compareTo(depositPo.getDeposit()) >= 0){ + } else if (tx.getType() == TxType.CANCEL_DEPOSIT && coinData.getTo().get(0).getAmount().compareTo(depositPo.getDeposit()) >= 0) { throw new NulsException(ConsensusErrorCode.DATA_ERROR); } return true; @@ -281,18 +338,18 @@ private boolean createAgentBasicValid(Chain chain, Transaction tx, Agent agent) //验证手续费是否足够 try { int size = tx.serialize().length; - if(AddressTool.isMultiSignAddress(coinData.getFrom().get(0).getAddress())){ + if (AddressTool.isMultiSignAddress(coinData.getFrom().get(0).getAddress())) { MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); - transactionSignature.parse(tx.getTransactionSignature(),0); + transactionSignature.parse(tx.getTransactionSignature(), 0); size += transactionSignature.getM() * P2PHKSignature.SERIALIZE_LENGTH; size -= tx.getTransactionSignature().length; } BigInteger fee = TransactionFeeCalculator.getConsensusTxFee(size, chain.getConfig().getFeeUnit()); - if(fee.compareTo(consensusManager.getFee(coinData, chain.getConfig().getAgentChainId(), chain.getConfig().getAgentAssetId())) > 0){ + if (fee.compareTo(consensusManager.getFee(coinData, chain.getConfig().getAgentChainId(), chain.getConfig().getAgentAssetId())) > 0) { chain.getLogger().error("手续费不足!"); throw new NulsException(ConsensusErrorCode.FEE_NOT_ENOUGH); } - }catch (IOException e){ + } catch (IOException e) { chain.getLogger().error("数据序列化错误!"); throw new NulsException(ConsensusErrorCode.SERIALIZE_ERROR); } @@ -300,7 +357,7 @@ private boolean createAgentBasicValid(Chain chain, Transaction tx, Agent agent) Set addressSet = new HashSet<>(); int lockCount = 0; for (CoinTo coin : coinData.getTo()) { - if(coin.getAssetsChainId() != chain.getConfig().getAgentChainId() || coin.getAssetsId() != chain.getConfig().getAgentAssetId()){ + if (coin.getAssetsChainId() != chain.getConfig().getAgentChainId() || coin.getAssetsId() != chain.getConfig().getAgentAssetId()) { chain.getLogger().error("锁定资产不合法"); throw new NulsException(ConsensusErrorCode.TX_DATA_VALIDATION_ERROR); } @@ -379,7 +436,7 @@ private boolean createAgentAddrValid(Chain chain, Transaction tx, Agent agent) t * @param coinData 交易的CoinData/coinData * @return boolean */ - private boolean stopAgentCoinDataValid(Chain chain, Transaction tx, AgentPo agentPo, StopAgent stopAgent, CoinData coinData) throws NulsException,IOException{ + private boolean stopAgentCoinDataValid(Chain chain, Transaction tx, AgentPo agentPo, StopAgent stopAgent, CoinData coinData) throws NulsException, IOException { Agent agent = agentManager.poToAgent(agentPo); CoinData localCoinData = coinDataManager.getStopAgentCoinData(chain, agent, coinData.getTo().get(0).getLockTime()); //coinData和localCoinData排序 @@ -390,14 +447,14 @@ private boolean stopAgentCoinDataValid(Chain chain, Transaction tx, AgentPo agen localCoinData.getFrom().sort(fromComparator); localCoinData.getTo().sort(toComparator); CoinTo last = localCoinData.getTo().get(localCoinData.getTo().size() - 1); - if(tx.getType() == TxType.STOP_AGENT){ + if (tx.getType() == TxType.STOP_AGENT) { int size = tx.size(); - if(!AddressTool.isMultiSignAddress(agentPo.getAgentAddress())){ + if (!AddressTool.isMultiSignAddress(agentPo.getAgentAddress())) { size += P2PHKSignature.SERIALIZE_LENGTH; - }else{ + } else { MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); - transactionSignature.parse(tx.getTransactionSignature(),0); - size += transactionSignature.getM() * P2PHKSignature.SERIALIZE_LENGTH; + transactionSignature.parse(tx.getTransactionSignature(), 0); + size += transactionSignature.getM() * P2PHKSignature.SERIALIZE_LENGTH; } size -= tx.getTransactionSignature().length; BigInteger fee = TransactionFeeCalculator.getNormalTxFee(size); @@ -445,7 +502,7 @@ private boolean createDepositInfoValid(Chain chain, Deposit deposit) throws Nuls * @param coinData 交易的CoinData/CoinData * @return boolean */ - private boolean isDepositOk(BigInteger deposit, CoinData coinData) throws NulsException{ + private boolean isDepositOk(BigInteger deposit, CoinData coinData) throws NulsException { if (coinData == null || coinData.getTo().size() == 0) { throw new NulsException(ConsensusErrorCode.COIN_DATA_VALID_ERROR); } @@ -516,20 +573,20 @@ public List getDepositListByAgent(Chain chain, NulsHash agentHash) th * 获取区块交易列表中,红牌交易或停止节点交易对应的节点Hash列表 * Get the node Hash list corresponding to the block transaction list, the red card transaction or the stop node transaction * - * @param redPunishTxs 红牌交易/Red card penalty node address - * @param stopAgentTxs 停止节点交易列表/Stop Node Trading List - * @param chain chain info + * @param redPunishTxs 红牌交易/Red card penalty node address + * @param stopAgentTxs 停止节点交易列表/Stop Node Trading List + * @param chain chain info */ - public Set getInvalidAgentHash(List redPunishTxs, List contractStopAgentTxs, List stopAgentTxs, Chain chain){ + public Set getInvalidAgentHash(List redPunishTxs, List contractStopAgentTxs, List stopAgentTxs, Chain chain) { Set redPunishAddressSet = new HashSet<>(); - if(redPunishTxs != null && redPunishTxs.size() >0){ - for (Transaction redPunishTx:redPunishTxs) { + if (redPunishTxs != null && redPunishTxs.size() > 0) { + for (Transaction redPunishTx : redPunishTxs) { RedPunishData redPunishData = new RedPunishData(); try { redPunishData.parse(redPunishTx.getTxData(), 0); String addressHex = HexUtil.encode(redPunishData.getAddress()); redPunishAddressSet.add(addressHex); - }catch (NulsException e){ + } catch (NulsException e) { chain.getLogger().error(e); } } @@ -565,7 +622,7 @@ public Set getInvalidAgentHash(List redPunishTxs, List list = RocksDBService.valueList("consensus_agent1"); + Map map = new HashMap<>(); + for (byte[] arr : list) { + AgentPo po = new AgentPo(); + po.parse(arr, 0); + map.put(po.getHash().toHex(), po.getDelHeight()); + } + System.out.println(JSONUtils.obj2json(map)); + } + + public static void mai2n(String[] args) throws IOException, NulsException { + Map map = JSONUtils.json2map("{\"39a23232daf07c454b35334d780ea62e4921f913b5957b09ea9a0439c7afbeb4\":8084054,\"476fc57f878b87d46fad60ffbb0a65fb13fe5b8cffee552eafcd93f000598417\":4577154,\"0bc2090273f9afddcbe842c19ae33d94bfbae911801d7f6d6181bbf806eca895\":8083944,\"7756e4bdef3a6e8ba25b62ad89221f427e595bf8eaa487ca2239ea09aecede6f\":5201198,\"3a822becde6ce8717994f642a68ef7e8f8a03cd367388f1695974e596e50c731\":-1,\"5777788b23636972ff7a97ebe459203d793936f44a5e13b9ab875b61499e260b\":11415,\"b1716a2798e8386e3f0129b0dad13ce750cc3592fa499e2baa8832985d5b94c2\":3286416,\"27d38bfc8dcf334a0585954ff0c392f51aaa33c22fd406e87ec872783c04fa46\":242357,\"8a32c0680ca654fde91d6019c2b50e44d43ecee9cb695c7fb29dd226b1941069\":-1,\"7b31d8917ecacde46b9cf9240d2fd519e3ca32f6f6780893b5e360f2ddf3d006\":1124836,\"74fc0451b1acd01e1e659887f0c87bf710fce5ca48a757f26dc5acd5326df274\":3303203,\"2ded4339a4fe30fe850288c88b5513d22c20d39838c07b2ae4eaae30a78e5c48\":-1,\"de909bf3550982b5b2a38f1d53c672904f49f9c5fd062c73b3ff7fef566b9e1f\":4683765,\"7d4e00de34691967f86217949da8d32ef6df872894149b792d10df3b29121b03\":2740119,\"ef4ec040a5a8ee4cc7ccbd0fe74a06d037c0689f7899441835cd5d0e752b26c7\":2922041,\"651601e9afa22596c45d2d65da30c48978526b89c845951c8bfd14e9ac59bf16\":9635,\"ee11a0f2a2f79a798087272a55878bca28cefa590303ee56c62e59536ce14570\":3686256,\"65a645787cc9f9b1e3300701959456a3b698240c780cd4a15dd2f33f699b8787\":3286413,\"71da6961070df067726dccdc2673d5da95b550f3d220ba9da0fefb0d74d68cfb\":-1,\"c19867200e3c00bdcd915f61c95ca9189930858f0ee05ea619425bd2dd3fbdc8\":2758586,\"2b1751d56964794fc7585b598cc35eeb5c4a9dda17d0827e309f7d9b0afe9f46\":-1,\"dc3d3248fe8d5ddeadd145e1a71566be2d4da0f48168da5de4194abd2158e9f3\":3530151,\"182bb5675bc3aed268e99f81d7ede9323d2acce347137a5ba37ce0586abfca82\":5027461,\"697643b571bea4e51dd7fa562ce0d86121c7af4181501e961f0dbc7a97af6216\":8083963,\"85e30d81eab45f5cc382e7037c1d4eaa60d64ac228de752dd0ea8ec45443014e\":-1,\"2a46b67555c815307369416c8821f0359cfbb6aa255344ceac4eb072a1a2a12f\":-1,\"bafa1c2fb34f31edaed167a197057cd474d0831362680023d9cb8a2f126465e0\":6047420,\"0d9b4d21d6a2aa5dfb3695f71a275916be5674b1398a487f10fab0c976baf90d\":3751982,\"b96b689db12ae1976be4ed83f5e78fbb75bdbd5ccb1853c2baf31cf119228ac3\":5206441,\"737ff49165ed899693247fcd9a5d157073d7fb48fca27641eb01a60b17a680c2\":6833125,\"89f89723e9293e39a0b00f14e9fbe8059223b2553eba303ead67394dc5272dc7\":1751368,\"230cac7e0871c20b51f011e5a2b1ba96607d849c5395a7beb47f806b8c4f4f05\":8083949,\"5afde946b6977a4d9b168913530b48dd3df65b640f3441af6b1247b53fc43138\":2542550,\"dd2da63f45b1a4119e0eccac2d7e756e1dc86551b8238edc5069960bf682fc7c\":6906192,\"423735d1451bcab64122b3145d969c334f78ddec9be4db2e2e3abffb413f8c3e\":-1,\"1df5e3b966fc192613682cb493f5938d710dff9096df4e376f544723606d7782\":4031677,\"5820c4e21dcf018751e2b28b223a980a08906c1ead6edb9c02f003fbe3af4ae8\":2154418,\"aed3ab57cd571ecd93deece1fde39fef50bf37670e7e6b566846379ba25c075e\":-1,\"ab00e76ba14fdc1e14dc1a3c7d86e9751de81fa0dfa98c98b5f236f6638a3cc0\":-1,\"bf1d130b307f9fc1e50177f5111699bfbe5854a58980043502dd66872f1f5ad5\":3693340,\"f3eb83dcd184fe80c7e57adf63c329957f9289f90154df437c54ec2c99521305\":-1,\"389d4a4a9d16dfd3b8a4608f87a9db552da37c18def18b0353d3326f5fc222bb\":-1,\"4df16d1272ab18f3de446af40b6e0da862c608053aa2bcbd35833923645bde4d\":2307906,\"5c5e8a8b24f9ee90a6b9c74a7a64ce50c1f3813998fc474f6d908907b762662c\":358925,\"499d3e9eede759921e30ff4d74ae6ed72cbbb634180a3db7ca4e25eb2b554f9e\":5014272,\"4470d7793ae11dc58336ea5cc69fa2a28c26387b8d234d74a92c0ad81735cd96\":4277142,\"9b684aa73433c26fb9d374ecf1280b472e9b2a52ee34905d7a93965db7b0eb8c\":4251025,\"a92ac22f4e3686a594be6558f46400d889b3832fe776fbf5e705307005fa865a\":-1,\"ab312a0abb74def8cd15dd4409744a50be610fe294ca6a819aa200d577d9644b\":3726969,\"bb997bf54560bb384f2c25a48865ce3b88c8ad5b7f3775a2110cbefcec83e2a9\":2910708,\"e352b3cbdf4b94c34b3ef57a1ea8df14091f1756a23465527220aa6fc8ce96b6\":6019726,\"6460d634470a62b9b50f3d0e4c7df396c40de82a9fd4de94449101dff586bf39\":7079825,\"e3e98fd2691a70da3ee618d0e237f36311c38842c256584bd26bf667700f978b\":-1,\"e8e7d91dbd0b55c443c38daa7901c1669f1a5f062daabc9f50b9fc1ffb9e52ef\":-1,\"24b63ec9edfe2692bf7ef2751bd6254db63768bdca50d6ac45303db70617d5ba\":7607455,\"45f5c09a6996f7b023ade1068ee4738a6c65ea50465acb39269ef4cb0f775c09\":8083983,\"ddf286f84d4eb4f21371f22690cb75262a4dcc95e63b29da2a122a754e7418a1\":138153,\"e14c5e133d078ea1790ec34bd5e1e6f701fe8ffe63270b7c01a2f8e64e21a9ec\":2707844,\"f7c45a43e6072aa6ae6256d0af51b16ff4e9a4e55d697072acf176065ae2a9e3\":-1,\"e904d2358ad6fa4491ca8ed7931a359808c0502f2533bed7ccec21ac98e0cb37\":-1,\"6456420f69dc3c6a5eb793a7cf6caa6eea35b537e3be6db5bc562aa6d867eee7\":7382765,\"50de31126d3e977418fee36d9547444546fe2c4b6e2075544a71b5c2d8ff89f6\":-1,\"d28cd0b20444d405c5583314b3a9f46a94e93e0dcfaa7cabc603edca86daea0f\":232708,\"0ab7d185d9290eae37f463f20f759a0eb45424280ee6a292fd98d7101389ffa9\":2337899,\"45b15a29bb0fa049820326102f6563f9bf2f353c2b2b1253a4b14373acc95737\":-1,\"806536cc2e99b2bcaf47fe7cb812571bbbd47e8097af4f772a18abe1390babaa\":4030805,\"66745819ba3667e213e27443d1ae785d77d2f3c451f707bd0d10d827e7cf89af\":3750593,\"e2fac4d4ee30fde1facf9605dcf4d0072c5add8522da4519161d0637d65d3d36\":-1,\"84c4bcecf53c807e938b2b672e6b799796d6e3b017b4fcc06c37f7a1123fa5c1\":4921059,\"a7fffcc3c8412eff43082893122c2f7fb50b7d52e5f37b2497acf4a22bfab86f\":-1,\"3761abd4c897075f758a65da1248f549d84d7b0a158e4e4544b166c8f6af650c\":3000988,\"722bf755561d59cee0f074055b5ec3b155d14ce6e3a559aba3dd58a6943fb7cf\":3491726,\"5afbc8ef324d08f1ace180598b9195cddd8d8f21d8131cbd44b2d84d6b3f1719\":833850,\"a80711019c063fade7b34f350d807c9d2fe2a86b24b6d3804974634ad06f31a6\":4899375,\"c68abc1e32ac1b1ac8f2ac75d2885ea930facf0870308d8bf6929780b654f8ee\":5757861,\"f2d134a3d99055aec36f94d2bcc49b340404acf4c0c16e519f8744d27e842f5b\":3743417,\"0109715a4fd74645a871d3bcc79e4ee4070faca507959efd184c83c1c8190cd8\":8083980,\"80e7528eb225a100b02f567475f5db36cb50517cc9d24d1cfee2ced211ece406\":950554,\"8e90a51095abfb05e4f088b184c70691617f8c6bc8a852fe00d0101426f5ab4b\":4912010,\"cff90341d82543590ea6242034fe2c6421c2a4f550db58afc87b96759a1af1ee\":-1,\"12f538dc9085d2b0c179d981549a467a031c660a88d194a4e2c3a8f38a6ade63\":-1,\"37ec466bb50387af6ac6bd9b534885e3b6c660a85d89ff8c8e6ddf111cbaf1a2\":7828986,\"c14de594385985ecdaa8bf8da44f925dabc5de3274c5126a1e50ea3ec2c69e4a\":7829056,\"8416e19bc06192cd3863bd7650e77f623986aca8b054f325224a3874373734a0\":4656749,\"b4771439ab61be1db4d3f3d816cc4f9ac46f498488e3b74ada31f3ceefc12d92\":-1,\"7100b3693de66994278fd1b324fd09e8a513678019b9280c46a88b9a26c5f18b\":2037153,\"7e1af5f0843255cd23188bd005a9068355fd5f721bb498585b62c81b86090f3a\":9639,\"085403196c5d3fdf959ffb17d4042a7721e5c05ed957cff7163b26a7de7c2a97\":4632865,\"67d2acadc7173c9be0a9f80fc1226cc5611530a54191359c89b6fff67191d46e\":-1,\"2253df7489ce2ef90a9ab5f3e06e03775e0f88d6606d756ac8a9ab7133d27020\":2877511,\"64c27f054fc325cf6f3f23bc52d0a8e943823b32d1bf095d46d0946c42c754ac\":2975486,\"8e41e049421369f51e9c6333d044e9d5960db055b7d1798b793da1b55c29d908\":6769080,\"a3ff9ad35b8557d5f5fa4502ee86468c6d67bc62fbaf3a77b059689debe7a71a\":3695712,\"10cd696e61a31d46cbb6013f40f4bf4621ba44d11dc528df2e771ef13a151657\":5201206,\"fa00a2b3b6acec574960143347bf0cf4ab3b459ab64439ba8c765a1ced466c9b\":-1,\"83555a220da4eb3c6b16eb9c48f1947c53a1924026c10f334d291df645d78fae\":3433044,\"183ec98482b8bd9fe728d3bdbad3d3179d12cb75469b3468bad08779475fad6d\":4656757,\"4043ffbb81249888d4f4c9fab94a800790143b9637c9ef1ae9e13878751ca7df\":34861,\"c9f3151f1709a3470f0471906dfad096ccad10f40e19e144b8a5f0d9238bb621\":-1,\"069bfec5931d89a859747b53c6e8bc877f95b406f083921dc219ed6af2be25f2\":8086320,\"ec995ce3eba9fb40fafc7665e916cf2c56f5984aeff4fc2af60663a68f61c5e8\":5623181,\"350078169f08b3324f0e6c01ad2ed499b05d25924a5616790b811dd076566bf6\":3530156,\"88312d4978083d5649d9ed498d820d164ad51888148b9afe13b3eb7a17a70bff\":-1,\"528a630b43f5d1eeea5b4567e87c7f7f3d4b86046b8a3d079ef0b9a1aea64360\":7865610,\"e75b9bfe6f8e6e6d9eba53a35870d281e0c0ef305de5e20bd4b24da8a6960e03\":4837208,\"09d583ea6d26b8c41f0f023fbfdd3b438948f6db499fdd27edefc6db1b41f09c\":7847259,\"d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447\":8084009,\"00083bd80ba724fa48bf96a6a2f8ca9798a825d65fd5ee1e738915e5d4ec605d\":700634,\"54b0cf55b3094ebc9d657694b691c9fa3e40090e9c26c98df60bee3b3ff3e32f\":749996,\"ab5b6efb0828ca75fbf77401a42163385cbfff0a415bf914c02bb8b647f4fd08\":2898515,\"ba23747f7a7787946c072260abe0d67d0d4d8bdb357041f64134e16542968b5c\":6923768,\"13f47469cf168f2882460ad69bf200e3ec6bb559c0581a335c5dfd0479795330\":7341895,\"3d5e3c172a95af0afe8bea7b1073c7c0ba7a175b2ef27496e68bf7c9095230a9\":-1,\"650c4d1e71201de962a0d1a5ed970111e1aaca6799744f851f56abe9a2344795\":2623488,\"9a051b9780ee57a0e6895ea87adb4df3129c0542eb81e6a575659a061622fc68\":4177120,\"b3006daa6d1b3300efaf143ca6e9ce049b5ee29a63ba1b40071045b152164733\":5874048,\"3d12e3912d9a98dba007ba1c94b4e214db5598c0bc64ccfc72817c2674d13cec\":292904,\"04fd63142d06e479081b4a1ef52140a35b81e22ac7d9bf33c853917d1c39fc76\":3493325,\"9f6f046eb495ce65626f2ae6598e9b92db8d855bc59e09da384bac6571ca97ac\":13066,\"9f1dabb4d4364c74fc13ee2a6765c8d9de72610bee7b42cf57e619714fc0d420\":624734,\"0f93accc9467da57f95f306f40008900506bbe97776e20a181051b9f3f061f6b\":4685300,\"75b4c5f64e26a281b40cf03a8a20faa1d9fe49a08429c087e48fadd3907f77fc\":5337,\"8f5b371f0bd4b2bd362495d9e187578c13aaddf131348381a4653b7aff9c40ac\":-1,\"bbe0e239f698dbd7f310d5ed33701349220d8f1549316a1981436d19658c99ac\":1786654,\"93fd741cdf0d7467e225647e33a6eceb07cf1a533426c10569446d0ed1c4f27a\":7793857,\"e95847cddb7ece78cbd053104f54f01b369c0f1d6b9c68524a4ae09ae786e4e5\":3760733,\"bea91e9a3a9936935ffc30154c3f68da6f503ffa056e0c8f81d07fdaba9e0bb5\":3501596,\"58ee8a6af121f183d496b720812e116fae23856e942c48c1308d13302603b1f6\":541095,\"c2f46534b09b8ca5cb821d6fc67662f51eaecd3f697fea18ddb6f432bd64b368\":3721499,\"2eea13501505921c21e7080d4bc3a3edd818e2bda954c38321ba122c1a405681\":72767,\"cb2a1e44981be7aa5da8779429fdf3f9195919c8ecc429d3a21cdd76a9753748\":5072071,\"d327dd4196a7757b3cfa0d1572588f9ef78e5faa803e8d2e374d9e0b12292272\":4321174,\"9480f17720ecf3ca0297f8ce1da760248a9769e06de27862b7a7528aa9266001\":833852,\"abd09e8c695349a5fa900dd4b0b87bb7e0abee39f484583adabf441d875ea925\":-1,\"b5f5a672854adb8740410b8478ee49b0b0d163f10ecbccd5a38331a9c05be6c5\":3343275,\"b0b89c60d52fc60f28d15bd180d7f573c6127e52b3a7e71643b5723928e6b06d\":2351228,\"3cf82ba4edfba839006e7c126d1448ba6ddc422d623eb4f965b1b7e597f3ef52\":3241577,\"b9762a525810508af79c353dc8e98ea4f578fba03e560cf39280919f31b7f5b5\":3095744,\"6661f2852dcbf982180420bb5d5981f82d79f0c3f8bef3f4c08c526724aa6c29\":-1,\"5449783c44da63ec15158f855bded1b68de5685a7c0b8a3c664ac3701d2487f5\":7793880,\"704854d076decc8648b3842951761a1887ee87e28a21c42cc2f6589cce95aa86\":-1,\"b5d5c97138c3a7243f7f7a61b78d3a6efdd538f937ba499fe69cf16075fb91df\":749949,\"02c8cd22705ec00d18d563faaf389db174f93f72485af4f91a4227933161e3b3\":-1,\"f0a1918e40b85766da7a8685d6c943bbb70640161e860fef238d4353b1947c70\":833745,\"ff9b4f41c4f42585b4dbb356d411e460b47f2cd06694adf3e951ae1470df8aa7\":7865676,\"475cffbfdb7fe5a8f6ab210eec5af321a42c824541685cd2e37d8e8cecb3f067\":-1,\"48b165ea23f068e0768f77755db2a9923195007e45a9a52459a197d0be50cd35\":-1,\"6a76a09fc72afe55b17497bd10d62c848fcdd2e3de7e618ca8cde8cb1376d268\":4753269,\"bf1037df242bf024d84e85c5a5091583311ce4273d933226aa471bb1e46ded61\":4880516,\"9b02c1082270a74f8f45bd2a067ff584e4d65da6f13135b4190d6e9153c85727\":2707848,\"86ece135979040050022f64ceb7b8a1c81438828f8ce74432f3c597a3d93eedd\":-1,\"8a13314b1029147355517daf8a634010a8b1aac4f8deec095dc166674698b594\":833658,\"3ac8fefbe06e17c11109b13a7bba91b6f4baf9700343a56f7eeb9dcb76456c1e\":7793886,\"4d0c277bbc654d4f518f918678cdd7bd67538709236d45a913b36c1f79469578\":7192325,\"a392e9b7628d4d5368c2c8ec7db2243de7afbb4def2fdaea2bfaa2a8f056bcae\":-1,\"3b5057a020cfff8d4befbe3e7e285f64474ecc877076d0f84df9c30aa2ad8e39\":833785,\"5605cc6a4f0d9d967352da9a34cfc4c2f7e00f640d123bdc8f5ab37374db9ad2\":913939,\"693c2a5348380e164a0c7cc922e0355c688d649de73bd8f752a15efca564f29d\":5101962,\"cfd3a2ab55b9600228ec9e8da00dfbde47d683abf5cc150a930d868b10cf0935\":5425120,\"16b1492330cce90433014e2fb2c0f75d60032227d2184c040902ccd5b330603c\":4155658,\"7e334e32f3ec4a9e6aeb3811cc4ae0cfcdd40300063ef879a380656aff2b72d4\":3726054,\"9de5d3648192966df236a3f0ea71bd62a01e2be9f4b0763be4fbd47e9f4abb09\":2898512,\"9e2a731ed92c311b5252ee54fb080b4f71b23944a8579b62d7526791739e362b\":833804,\"523c0736e86f150f060453dd70bc110c6ddf7ac1624c422c0d6ea431d98fb7b2\":5072297,\"a6fa1113c2ca4165f2a7d91d7cf8c140fd461fb5ac74d1b07ea25f2d56661578\":2770664,\"b8c271c63485172a8133274a958e87dd348e5d7027041ec3db3cc1cf103e5c14\":-1,\"d17f77b737cb3ebfb9c50c97263cc2b6040cc94199d5a3269cb2b08a4f3e8ce7\":-1,\"8b5984fe53024872ba05403842da03b5c881c2ec401fd1b6a5309241a303b4be\":2895056,\"836d1b70be6d036bea93e213b6e101eeacde05560238720fb2826113119b4ee0\":5358094,\"cc1b60c282d297f4431c283bc88615f8d70f81e065405d0d8448190620032a91\":8084063,\"c97e8dec7cb4a3cca5268dae34b63007cfc918f80fa8ee4d8841ceaaf8eb61ac\":8083924,\"031e2aaf0fadf9e3ed9d207acc4181cd575f9be9d78c99ad65da15abc2ca1196\":3290738,\"bc46eee9ef2a29156d45da5f6d20afc6b4553f95364b8f45af97eab273c5a441\":1808690,\"46c5fe249c84f50286c6636b5bc089626eb9906e68ffc5c53ee2f168eea86b65\":-1,\"90dd89b68c85cffa62284277f1c76d64dc50301509a36be6fc103f3688d227e1\":3329414,\"953404b032e8940f7c0f50e4c5e459fe1bd9fc5d2d5c8e7dc49830c2ea38928c\":8083978,\"165ce741856789b91551a734efb687e48a6d796f98692bef78c7c9cfcdf42593\":2287167,\"429c66d36c448bcfb48fb37c5025879d2f221c34e9ad8396be3d389eac4e8bd5\":4336772,\"ad41a5c39e2b5d68e0fe6a4a94adae88d0dfc8100c91394fe4e67182a4664b44\":8084046,\"3e729a0c67cdca578a561f81f3bba9330e30164eac10a1e397839a370a2a2d73\":-1,\"fe0ef332bbdb4fc831d46d1c1b53b18803851d99c7d9af9206add5dcb34f9d33\":4598844,\"816c175d76ae953d1838ad108bded206381fae97818c8a0a26265f29e707e7e6\":5072077,\"540e58834a45c29d64762a381b25f8645755234084cf955f32aea820025eeea0\":-1,\"9dcf66d03b0d977b8f1675b148c198dcb95c11635aa62990ab49f770add990e8\":1991747,\"ea853402147ddb5ac81b83d30859ed651015681949a37784531526e377dcf802\":8083957,\"078a5ba8dcc87da4ef7fec7487be131e8804a9c05204d82d37c57458f13b3879\":3684095,\"6774b068fe17cf99fec1a027b97fa151b0a74b4254fb27701bdf158d7a890e9f\":7346300,\"b82b107e9220890e2338ec8565b12a422f8470fc38cbada8092fcee323ae85a7\":-1,\"75e5a689734cefc7ec9cbd41d9ee4bfe904565f1c697bb29157131fb746e4f6f\":14018,\"2206c926cf51f2f66bd5839a99288283582e6e7ea4b38d9af76be76e254fec38\":2922324,\"1f36c575a572373e87d0ace7e441423d92967336cf0e44b81e371672ba195f12\":5907,\"8153abd0f5a7057aebc71b7342acf0ba3b98f245a6e0a59eaca167c6c3282db8\":478792,\"3b0c266dced326279da4817c081e48b86257502a369851cfe305b862f2d798af\":8083923,\"80529a04fae3a91bdb45bd4a81af0991d7ac177c4ac41721ee57a6668ed6f2d8\":750030,\"9cd8230cced260bffe4753edfb0fc5752bc8d5258f1cc04885ce6bed8277af83\":288563,\"e46239361f3b4e95ee96b7990b0ed7be555aecb188ff1236d4262d60c8f85d81\":2040491,\"325ac3cd5c008dca3bd2c52652dfef56f7cf3c51c135b40642b9395bcc10923a\":3816442,\"937d72fa7adbfdc221de959b6037052b9515f53e5d7e8eb5d1784597f5cb5f61\":8083973,\"0a8d1ddf603156f31d47a32361e0eebb5b45f5a70b12676e5715e98555426a70\":-1,\"7e082ec143e76a0b3030e3a651a3fd9c37c86219e84d3c6b48c2edf6ca4e02ac\":1921943,\"1976212fa81e2c03a2931efbb8469dd34b1ee1a131ece59db7680dbf63d90a40\":-1,\"64e56f2df275dcde241d0fbe5fbb106ab31aeaf96a794298272e8987d12cab6c\":2604497,\"82ce0fa60a863dfe7a54fa6ac45a973e4a877a3ac511cfcb70c5f46c829e43a0\":3508276,\"0c626e71b323e7304aa53b8fe20a70eba715e4189b2ce14a7170fc3e0c896495\":7828978,\"01d11fd5da7e68ce8b6b67ea5b8076c1e45d9674f73e6fbe2f5efcef3b10ac94\":3252118,\"b9ae30b06d19d1740ac734c5284cb4a8eee6d2d0684684a0af234c03cff6e6bc\":3242524,\"7e0c09bb9f4d96d60cf57f8b341e4a7eed40ad58a301da050595e9ce40d7edf5\":5542111,\"f5f45c27d3a2a01e5cb13c3d1139229b370a5fc801c9dcf5fbbc683c8e4949cb\":7828988,\"4944f655255a3524cf9fc4c1171633ce00f0ca7e08fb50c2df5b92fecf744484\":-1,\"9823704c52511aa96bc73cf470c0e232521b3360f10edb4c504ca4ac59aff7b7\":339510,\"35070de808e9500a9f8c5b13dc1e390552f8ba70d17fc774b9836adaaab1363f\":4055460,\"d3a29a431fbfb348c006253651f403dbce53715a35422ed639ae6778ed5f1cf0\":1751107,\"c4b71f7b8f967c61382c042ee7fbfb7394ef1f1f23d5ee7982ba876306026e05\":8083940,\"360d72af0f8df855042b57ba3ce260cc5a81b73adc367b3dc51009f8841b8201\":3795189,\"82ae05d3ad400267ba3f3fb6c4ccc9a8c407a561cd641e7316ae5cd3fa2d3062\":4440196,\"c2b3a1e74741e3ca9d13c953d124758f567645ccc8513bd407aea4ecacfd3989\":5316396,\"2e5cb2b2fc3acce78f1d6d71ae1b18f4b58bf153bc3cc537b7fdd3667fd369be\":3688267,\"ad2ad7bc2f5f002bf58a607f1ba3cb4cbb951d1df9a882ad9b68d76618838e7d\":2676765,\"7ff79459681f2afee3b4ac7daf4c22874d9cc888a34d7017a4cc7a6e337c6e84\":3227624,\"9f4c39055039444e7f634e44499f970f320132cfe9605e09309988ac2fc28094\":2776670,\"63715c2f1a083de2525cfde965ed2fb29c4e7426420fb0bc0971a713f44249c6\":3109141,\"6f072b5be4ad3a48636d9c0fa9e2d7b1eedefc8db626abebd90fe2d0a26e7435\":22111,\"3148b573cfdc5e815b9d33932d362ace48367f7cd7195cd10f3c0ef7b77ffbcc\":1605455,\"6cb5d9f8b0c5026d6682a68c52fbb9fc32e548432afcc26239ac30cfe0e21b59\":-1,\"e206f77ef92a6e98f3a292206e5e4f94c45e13c8f5fb0576bbbd4d3f82fc2477\":3462654,\"a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da\":8083986,\"a88e9aed8df0b6dcf02ce1b5c1432ea516933adf4bc7e0ef83a8680e39543d6e\":-1,\"613585d1e41897e2c6b979b643cfdaccae88827c17ce50a45f74bcebef18924f\":3795206,\"e970696bbd7e5e8efa19d3740a2a3eece1e884eaaf7ac76140506d111283e41a\":2895957,\"62a2e1272ba756395d89a5d36eed66c2a0c32ed4a17a00819c73a02417a93b00\":3730061,\"ef0328719d32241fd94d4f2f0da9d3b15b03162127532262c1efd67282e60408\":2137965,\"fe882bab3ee2ab8a615cb83bf849d6c5f4417f12311d0929cb5e86b9c07c133d\":2899027,\"a664028121c815e04c8683f05453e623fae96027d202ff9d59a9cc16d6456faf\":4656752,\"aec481569c30c27158b4b7b26f3b66581ae176f1f31947048d27993a31ab29d1\":1808871,\"b86c3d5db9c89c3cd69ea6c033c60e09e6610a50612f8275d3e011c44865426b\":2683650,\"db09019795bf3303483a39fb3a2e096bc1da58e260dbef160377a4841386e548\":-1,\"04f0967af6f7b812e8a079120e68e7cb50437bb9bfdf82cdf25149ed13580a48\":441549,\"82f076999d44d564dcb2b1d401c4743c949d71d3bf13f0e316af52f2c1f990b2\":-1,\"4633c3d532678821d904b39c9273f723ce39593601c912fdca3e4e74f1bffe05\":3286410,\"9b00ce6acb8e3fc94857c3d99f9dc522d41014ab6c863fcd2b1c5bfea18cd4b7\":5072296,\"4545f4368678fd74f5ae0c9b994ba99a63cf75c5c2797131a54d422ea44a6e0e\":7573222,\"08c30061df62af735b4f0ff878dedc731bf14decff71849fa02ab70ce7595620\":-1,\"d525ba3f345f69bff3307e4ffae678c2e5d02793c87108c4336067f241256909\":700751,\"d8fa932d9b68e4ff75d340d5fc755314031f401b16d6f6bdece558fbc21ab6f4\":78457,\"9c112f4d8ccd5cb3b881e34f98b78a06026aef143f10b57c6884f0654cc08337\":3501606,\"bb04d4cf3c4d718587d65cb10396863a1d652b939b24ca0eea916d16054c55b0\":-1,\"42bc5c175add6ab7bd8e4466df540cfa91b6c4c971f4bdb47e2be600832d80b7\":978303,\"54d94802bc8c25ff881e89de9ef8e0b01cabdc48be66a1299a628b9693049797\":-1,\"3ec06de92c074e4bf59a852f93ccce65bee8e80ff4c17a09d083254c0067f38a\":1432663,\"a4854eb4c80f85c72bdc86ecf7e2d1696b43ad270e9fe4e839d3397674586c94\":8083932,\"f2b6ce1712a917778fb23cbc4a3cc1aafd047a1500f35c0c5ca5b5632e6ec1bb\":7828984,\"b4cc30c0684e546ad765c6dc52be978353b627842311b14f115aac0cecf92b20\":-1,\"71d2c5bc0e72ee79a6f0b8f398b593f33959a97f376a170c316235b50aaeda89\":7484497,\"d3b4db323aacf968a65c72edcb1453cdfb3044b645d953c6bfe2030d86c8b4a6\":4249597,\"a87c1d508f92e6eb6cf698392f75f24a34c70efd319fd09968f520e101af62ed\":3295789,\"eef27d0d22fd412a5057ec9d063020cd4b2a53f1d97285b358243fc07b398e6d\":833711,\"f65a244ae69ef8930e0cf0ce105a287da0b611a360247753c5154a92a4c00494\":1388210,\"72efeb310c0186f792c98a04d7f05856068a91f8c94e4949978d9059dab29b20\":49677,\"54b0d4b87f6150a221004d46becb2ffbdce26678848741c5e991efebbea575c1\":833846,\"2cd33e37c1ccceb7dfe1f9c420b6082292ad32fbc5e9b3a57bb4c8125330912c\":4851930,\"ab469f45ab7b05c608a00f5c267c5fed1d774a3af91408cf2679242d13cb9c04\":2355005,\"d65a408e3a822cfe1c6ec3738d51fe2c480d65c2e786f8de71b49c87e108e645\":5529473,\"68a22e0cd8b72dbfed95e5208d6c09f64e1a187504007ae5aaf16eb3bef377b9\":3245662,\"0a30002ca3f516bdad9063d9a6612ce96f545a0125fa925a1b0d1c43a5ef48ac\":-1,\"ac5ddd1f6d9277c6e3aa4eb7c43ba6e39758aea25b7e172816ea65fae1102559\":2896167,\"a17ecf014e43fd70a0be61f903f2d13178bc18e0f8f5f3aab89dc0e74527543b\":7484963,\"03cf80620300eb5942e2c8458f541bfb90ae383e2c180235249f88aa0165ca4f\":7865559,\"476d63ca6ab86e564e3ecc1187ecd22df3ef17ae64b84a59360e59421b9e756a\":1046344,\"49b2d771708c0f19896f3d99f8a5a813c711e3c72218129e066937c454c31e04\":-1,\"ea563fe0f82ca4eaf1b7b77b6500eb6339828249af3026095bd01e3ed8eef81e\":900053,\"d3663ac353e0b845c625284c86e294c5c7a56f0abfd85a67121ed65ae7f2b4a3\":3196013,\"17f71300f5f896ccdf3ad8b5d59e6984b2f7e4751e1a954a3c22b09d3f35a9fb\":-1,\"1a78650022f906efc151afc71902cb587b99455514a0802a49017eedcc64eecd\":7933240,\"26fc91c0b350cd5a708c3314157641b54c8621f31bb80cf008f563ad4e5febcc\":3685217,\"0da9e55f51a3af2872e79108a89edf897e40206eb5775a413c4bb04c49e2ff35\":833825,\"9a84bfaca5904ed5c3842ea1d62aaa795efa6059008b932b0485644e0378662e\":3245873,\"52ae608e4696d0ad11a42a89401f0e77c5302fcefd1f047d9bd358902e86971b\":8083948,\"6c5143d38d22313d3a586bb6a4228aa4547db5f75c2491ef6985b3a91a507cff\":8083925,\"f48eaf365c681cf0656f4ceeec65478cff6df6fb55fe009c6013219ec91c5da9\":-1,\"fa3fe8b4bd4f6825a287379ae147e62540ec9bb65ab46298e3ba937616afe85a\":8083971,\"6362e76636863df4f972a1a1d483740ed5c1872c3fa582b40c43bbcf6a99be2e\":8084031,\"078bb7f24e157f176fbeefee2023833e1127016b68282338c9a07dcd948afd43\":3443739,\"0d185a0a8aa0b051a8d04263f1123a2bc1121f328b775c3d1fcea7ec6dd4a6ce\":-1,\"d72a0e33f231255f64810efd4eee43922415c497d4261f2981f7e8ddf71d42a7\":87129,\"ad82dc5237378a39abb3bbd8174ac0f77c882573a02c8fac01b4c7a058a96d90\":8083892,\"f5f8456641df2863fb7850e1cd3a18aadadc761e236f00f24b860b21d15eb681\":1917674,\"3cd6673d45e3c45acdf668eb8f3db48d2e600e559d19e9dc4a76f91c2f59fe8b\":8084016,\"da21fcf1dcad0f54f7a141fb4559b5e684be4d683f37fa7efffee8a93fe5ae7e\":1070202,\"3a04a26751675c1ebf9d3a88bf9c39b8f2e304fe83a1519bd8fefaa3c94df828\":2896165,\"925c979a6ee26d6fa3be39319f2e8c7b26becedb89e50199182072a828444599\":4755925,\"87d336bcbba8af52ca239aa4d1a6cf280e23b1c5c3b861df08028a275ec3a218\":7921713,\"89e11132cf82fdee2700a3c8ea9dfcf6fc22dbdadee199adff19b110f67f0d98\":6985682,\"f08161e61c1174610f898f70dad9331f90d393c5657ceb6bd0a0e21e39c24225\":-1,\"f9ce0ddec53cc1ee7cb8d2b76b4525b8bff835dd32fb51e57d321d176827becb\":-1,\"2df34a41c3a5adf6215bcf87990549968e942904c24aff03d0517f43846c9d64\":5025631,\"660226cb99e9e96982fb1f529ba2e7b5da08e204b055bce1a816d65696f8732c\":2975557,\"b2913d1434ba2ca69eaf079c4a7e295c5a43e771f91f8b949027932c6aafdb27\":4278360,\"f72085fa1d746563135eb5aa3d9a8dc9829021c105c8d23f45c55cfc9c7b7c75\":1939024,\"1b5bb95f64c564cab772d43ee5ae2d57a0acecefa134b0adb21bd87ca8d1c9c3\":8083948,\"7df712d6c9dfc0ed42e74e3f8cd80755e46ae8db441557d5adf0bd2607d5ce56\":6449211,\"222298a9236b4e589b71ab3252bf1d371eb4a0b75bc1211775901c9919fe3103\":8083974,\"3c4efd9e65f2bcae52d8bb158d08d2af6113dca4725ed05225c4399fb41e9752\":4575663}"); + RocksDBService.init("/Users/niels/Downloads/testspace/cs81"); + List list2 = RocksDBService.valueList("consensus_agent1"); + for (byte[] arr : list2) { + AgentPo po = new AgentPo(); + po.parse(arr, 0); + Long deleteHeight = Long.parseLong("" + map.get(po.getHash().toHex())); + if (po.getDelHeight() != deleteHeight) { + System.out.println(po.getHash().toHex() + "---ln: " + po.getDelHeight() + " ---04: " + deleteHeight); + } + } + + + } +} diff --git a/module/nuls-consensus/nuls-consensus-poc/src/test/java/io/nuls/test/storage/DepositStorageTest.java b/module/nuls-consensus/nuls-consensus-poc/src/test/java/io/nuls/test/storage/DepositStorageTest.java index cb38042201..939d0536a3 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/test/java/io/nuls/test/storage/DepositStorageTest.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/test/java/io/nuls/test/storage/DepositStorageTest.java @@ -1,9 +1,11 @@ package io.nuls.test.storage; +import io.nuls.base.basic.AddressTool; import io.nuls.base.data.NulsHash; import io.nuls.core.rockdb.service.RocksDBService; import io.nuls.core.rpc.util.NulsDateUtils; import io.nuls.poc.constant.ConsensusConstant; +import io.nuls.poc.model.po.AgentPo; import io.nuls.poc.model.po.DepositPo; import io.nuls.poc.storage.DepositStorageService; import io.nuls.test.TestUtil; @@ -14,6 +16,7 @@ import org.junit.Test; import java.math.BigInteger; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -23,22 +26,44 @@ public class DepositStorageTest { private DepositStorageService depositStorageService; private NulsHash hash = NulsHash.calcHash(new byte[23]); - @Before - public void init(){ - try { - Properties properties = ConfigLoader.loadProperties(ConsensusConstant.DB_CONFIG_NAME); - String path = properties.getProperty(ConsensusConstant.DB_DATA_PATH, ConsensusConstant.DB_DATA_DEFAULT_PATH); - RocksDBService.init(path); - TestUtil.initTable(1); - }catch (Exception e){ - Log.error(e); + // @Before +// public void init() { +// try { +// Properties properties = ConfigLoader.loadProperties(ConsensusConstant.DB_CONFIG_NAME); +// String path = properties.getProperty(ConsensusConstant.DB_DATA_PATH, ConsensusConstant.DB_DATA_DEFAULT_PATH); +// RocksDBService.init(path); +// TestUtil.initTable(1); +// } catch (Exception e) { +// Log.error(e); +// } +// SpringLiteContext.init(ConsensusConstant.CONTEXT_PATH); +// depositStorageService = SpringLiteContext.getBean(DepositStorageService.class); +// } + @Test + public void getAgentList() throws Exception { + RocksDBService.init("/Users/niels/Downloads/nuls-data"); + List list = RocksDBService.valueList("consensus_deposit1"); + List agentPoList = new ArrayList<>(); + for (byte[] val : list) { + DepositPo po = new DepositPo(); + po.parse(val, 0); + agentPoList.add(po); + } + List agentList = new ArrayList<>(); + agentList.add("528a630b43f5d1eeea5b4567e87c7f7f3d4b86046b8a3d079ef0b9a1aea64360"); + agentList.add("a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da"); + agentList.add("ad82dc5237378a39abb3bbd8174ac0f77c882573a02c8fac01b4c7a058a96d90"); + agentList.add("d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447"); + for (DepositPo po : agentPoList) { + if (!agentList.contains(po.getAgentHash().toHex())) { + continue; + } + System.out.println(po.getAgentHash().toHex() + " , " + AddressTool.getStringAddressByBytes(po.getAddress()) + " , " + po.getDeposit().toString() + " , " + po.getDelHeight()); } - SpringLiteContext.init(ConsensusConstant.CONTEXT_PATH); - depositStorageService = SpringLiteContext.getBean(DepositStorageService.class); } @Test - public void saveDeposit()throws Exception{ + public void saveDeposit() throws Exception { DepositPo po = new DepositPo(); po.setAgentHash(hash); po.setTxHash(hash); @@ -47,24 +72,25 @@ public void saveDeposit()throws Exception{ po.setDeposit(BigInteger.valueOf(20000)); po.setTime(NulsDateUtils.getCurrentTimeSeconds()); po.setBlockHeight(100); - System.out.println(depositStorageService.save(po,1)); + System.out.println(depositStorageService.save(po, 1)); getDepositList(); } + @Test - public void getDeposit(){ - DepositPo po = depositStorageService.get(hash,1); + public void getDeposit() { + DepositPo po = depositStorageService.get(hash, 1); assertNotNull(po); } @Test - public void deleteDeposit(){ - System.out.println(depositStorageService.delete(hash,1)); + public void deleteDeposit() { + System.out.println(depositStorageService.delete(hash, 1)); getDeposit(); } @Test - public void getDepositList()throws Exception{ + public void getDepositList() throws Exception { List depositPos = depositStorageService.getList(1); System.out.println(depositPos.size()); } diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 1d75c7b6a8..09fb7820bc 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -58,5 +58,10 @@ "version": "12", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "13", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index ff87a47ad4..37fc3d412a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -70,4 +70,6 @@ public class ContractContext { public static short UPDATE_VERSION_CONTRACT_ASSET = 8; public static short UPDATE_VERSION_CONTRACT_BALANCE = 9; + + public static short UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL = 13; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java index c1b0a2e959..b42022fb4e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractTxHelper.java @@ -32,6 +32,7 @@ import io.nuls.contract.manager.ContractTxValidatorManager; import io.nuls.contract.model.bo.ContractBalance; import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.tx.CallContractTransaction; import io.nuls.contract.model.tx.CreateContractTransaction; @@ -131,7 +132,7 @@ public Result newCreateTx(int chainId, String sender, * 多扣除的费用会以ContractReturnGasTransaction交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData, null); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), createContractData, coinData, null, null); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -226,7 +227,7 @@ private int calcSize(NulsData nulsData) { return VarInt.sizeOf(size) + size - 1; } - public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData, List multyAssetValues) { + public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[] contractAddress, long gasLimit, long price, BigInteger value, int txSize, NulsData txData, CoinData coinData, List multyAssetValues, List nulsValueToOtherList) { long gasUsed = gasLimit; BigInteger imputedValue = BigInteger.valueOf(LongUtils.mul(gasUsed, price)); // 总花费 @@ -234,15 +235,19 @@ public Result makeCoinData(int chainId, String sender, byte[] senderBytes, byte[ int assetChainId = CHAIN_ID; int assetId = ASSET_ID; totalValue = totalValue.add(value); + if (value.compareTo(BigInteger.ZERO) > 0) { + coinData.addTo(new CoinTo(contractAddress, assetChainId, assetId, value)); + } + if (nulsValueToOtherList != null && !nulsValueToOtherList.isEmpty()) { + for (AccountAmountDto dto : nulsValueToOtherList) { + totalValue = totalValue.add(dto.getValue()); + coinData.addTo(new CoinTo(AddressTool.getAddress(dto.getTo()), assetChainId, assetId, dto.getValue())); + } + } ContractBalance senderBalance = contractHelper.getUnConfirmedBalanceAndNonce(chainId, assetChainId, assetId, sender); CoinFrom coinFrom = new CoinFrom(senderBytes, assetChainId, assetId, totalValue, RPCUtil.decode(senderBalance.getNonce()), UNLOCKED_TX); coinData.addFrom(coinFrom); - if (value.compareTo(BigInteger.ZERO) > 0) { - CoinTo coinTo = new CoinTo(contractAddress, assetChainId, assetId, value); - coinData.addTo(coinTo); - } - if (multyAssetValues != null && !multyAssetValues.isEmpty()) { BigInteger _value; for (ProgramMultyAssetValue multyAssetValue : multyAssetValues) { @@ -291,7 +296,7 @@ public CreateContractData getCreateContractData(byte[] senderBytes, byte[] contr public Result makeCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, String methodName, String methodDesc, String[][] args, - String password, String remark, List multyAssetValues) { + String password, String remark, List multyAssetValues, List nulsValueToOtherList) { if (value == null) { value = BigInteger.ZERO; @@ -310,12 +315,12 @@ public Result makeCallTx(int chainId, String sender, Bi return validateCall; } - Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, multyAssetValues); + Result result = this.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, multyAssetValues, nulsValueToOtherList); return result; } public Result newCallTx(int chainId, String sender, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, - String methodName, String methodDesc, String[][] args, String remark, List multyAssetValues) { + String methodName, String methodDesc, String[][] args, String remark, List multyAssetValues, List nulsValueToOtherList) { try { CallContractTransaction tx = new CallContractTransaction(); @@ -335,7 +340,7 @@ public Result newCallTx(int chainId, String sender, byt * 多扣除的费用会以CoinBase交易还给Sender */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData, multyAssetValues); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, gasLimit, price, value, tx.size(), callContractData, coinData, multyAssetValues, nulsValueToOtherList); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } @@ -568,7 +573,7 @@ public Result newDeleteTx(int chainId, String sender, * 没有Gas消耗,在终止智能合约里 */ CoinData coinData = new CoinData(); - Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData, null); + Result makeCoinDataResult = this.makeCoinData(chainId, sender, senderBytes, contractAddressBytes, 0L, 0L, BigInteger.ZERO, tx.size(), deleteContractData, coinData, null, null); if (makeCoinDataResult.isFailed()) { return makeCoinDataResult; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java index 35700f4f40..24c0ed7f52 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java @@ -55,6 +55,9 @@ public Result createValidator(int chainId, CreateContractTransaction tx) throws } public Result callValidator(int chainId, CallContractTransaction tx) throws NulsException { + if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL) { + return callContractTxValidator.validateV13(chainId, tx); + } if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { return callContractTxValidator.validateV8(chainId, tx); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/AccountAmountDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/AccountAmountDto.java new file mode 100644 index 0000000000..bcb17d9bfa --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/AccountAmountDto.java @@ -0,0 +1,65 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +import java.math.BigInteger; + +/** + * @author: PierreLuo + * @date: 2019-03-06 + */ +@ApiModel +public class AccountAmountDto { + @ApiModelProperty(description = "转入金额") + private BigInteger value; + @ApiModelProperty(description = "转入地址") + private String to; + + public AccountAmountDto(BigInteger value, String to) { + this.value = value; + this.to = to; + } + + public AccountAmountDto() { + } + + public BigInteger getValue() { + return value; + } + + public void setValue(BigInteger value) { + this.value = value; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/AccountCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/AccountCall.java index 5b60e2ad7b..e0da95c458 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/AccountCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/AccountCall.java @@ -84,6 +84,23 @@ public static Result validationPassword(int chainId, String address, String pass } } + public static boolean validationWhitelistForTransferOnContractCall(int chainId, String address) { + try { + if (StringUtils.isBlank(address)) { + return false; + } + Map params = new HashMap<>(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("address", address); + Map resultMap = (Map) CallHelper.request(ModuleE.AC.abbr, "ac_validationWhitelistForTransferOnContractCall", params); + boolean validate = (boolean) resultMap.get("value"); + return validate; + } catch (Exception e) { + Log.error(e); + return false; + } + } + public static void transactionSignature(int chainId, String address, String password, Transaction tx) throws NulsException { try { P2PHKSignature p2PHKSignature = new P2PHKSignature(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index ae49277676..25eaf1a5ca 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -286,7 +286,8 @@ public Response validateCreate(Map params) { @Parameter(parameterName = "methodName", parameterDes = "合约方法"), @Parameter(parameterName = "methodDesc", parameterDes = "合约方法描述,若合约内方法没有重载,则此参数可以为空", canNull = true), @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true), - @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true) + @Parameter(parameterName = "remark", parameterDes = "交易备注", canNull = true), + @Parameter(parameterName = "nulsValueToOthers", requestType = @TypeDescriptor(value = String[][].class), parameterDes = "调用者向其他账户地址转入的NULS资产金额,没有此业务时填空,规则: [[,

]]") }) @ResponseData(name = "返回值", description = "返回一个Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "txHash", description = "调用合约的交易hash") @@ -310,6 +311,8 @@ public Response call(Map params) { List multyAssetValuesList = (List) params.get("multyAssetValues"); Object[] multyAssetValues = multyAssetValuesList != null ? multyAssetValuesList.toArray() : null; + List nulsValueToOthersList = (List) params.get("nulsValueToOthers"); + Object[] nulsValueToOthers = nulsValueToOthersList != null ? nulsValueToOthersList.toArray() : null; String remark = (String) params.get("remark"); @@ -351,8 +354,16 @@ public Response call(Map params) { } multyAssetValueList = multyAssetValueListResult.getData(); } + List nulsValueToOtherList = null; + if (nulsValueToOthers != null) { + Result> nulsValueToOtherListResult = convertNulsValueToOthers(nulsValueToOthers); + if (nulsValueToOtherListResult.isFailed()) { + return failed(nulsValueToOtherListResult.getErrorCode()); + } + nulsValueToOtherList = nulsValueToOtherListResult.getData(); + } - Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark, multyAssetValueList); + Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, convertArgs, password, remark, multyAssetValueList, nulsValueToOtherList); if (result.isFailed()) { return wrapperFailed(result); @@ -371,16 +382,31 @@ private Result> convertMultyAssetValues(Object[] mu if (convertMultyAssetValues != null && convertMultyAssetValues.length > 0) { results = new ArrayList<>(); int assetChainId, assetId; - for (String[] value : convertMultyAssetValues) { - if (value == null || value.length != 3) { + for (String[] args : convertMultyAssetValues) { + if (args == null || args.length != 3) { return Result.getFailed(PARAMETER_ERROR); } - assetChainId = Integer.parseInt(value[1]); - assetId = Integer.parseInt(value[2]); + assetChainId = Integer.parseInt(args[1]); + assetId = Integer.parseInt(args[2]); if (assetChainId <= 0 || assetId <= 0) { return Result.getFailed(PARAMETER_ERROR); } - results.add(new ProgramMultyAssetValue(new BigInteger(value[0]), assetChainId, assetId)); + results.add(new ProgramMultyAssetValue(new BigInteger(args[0]), assetChainId, assetId)); + } + } + return Result.getSuccess(results); + } + + private Result> convertNulsValueToOthers(Object[] nulsValueToOthers) { + List results = null; + String[][] convertNulsValueToOthers = ContractUtil.twoDimensionalArray(nulsValueToOthers); + if (convertNulsValueToOthers != null && convertNulsValueToOthers.length > 0) { + results = new ArrayList<>(); + for (String[] args : convertNulsValueToOthers) { + if (args == null || args.length != 2) { + return Result.getFailed(PARAMETER_ERROR); + } + results.add(new AccountAmountDto(new BigInteger(args[0].trim()), args[1].trim())); } } return Result.getSuccess(results); @@ -779,7 +805,7 @@ public Response transfer(Map params) { Result result = contractTxService.contractCallTx(chainId, sender, value, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, BALANCE_TRIGGER_METHOD_NAME, VOID_METHOD_DESC, - null, password, remark, null); + null, password, remark, null, null); if (result.isFailed()) { return wrapperFailed(result); } @@ -862,7 +888,7 @@ public Response tokenTransfer(Map params) { Result result = contractTxService.contractCallTx(chainId, from, BigInteger.ZERO, gasLimit, CONTRACT_MINIMUM_PRICE, contractAddress, ContractConstant.NRC20_METHOD_TRANSFER, null, - ContractUtil.twoDimensionalArray(argsObj), password, remark, null); + ContractUtil.twoDimensionalArray(argsObj), password, remark, null, null); if (result.isFailed()) { return wrapperFailed(result); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java index 0fd0c92253..9ea27d63a7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractTxService.java @@ -25,6 +25,7 @@ import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; @@ -44,7 +45,7 @@ Result contractCreateTx(int chainId, String sender, String alias, Long gasLimit, Result validateContractCreateTx(int chainId, byte[] sender, Long gasLimit, Long price, byte[] contractCode, String[][] args); Result contractCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, - String methodName, String methodDesc, String[][] args, String password, String remark, List multyAssetValues); + String methodName, String methodDesc, String[][] args, String password, String remark, List multyAssetValues, List nulsValueToOtherList); Result validateContractCallTx(int chainId, byte[] senderBytes, BigInteger value, Long gasLimit, Long price, byte[] contractAddressBytes, String methodName, String methodDesc, String[][] args, List multyAssetValues); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java index d62fe92acf..81cb57426c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java @@ -32,6 +32,7 @@ import io.nuls.contract.helper.ContractTxHelper; import io.nuls.contract.manager.ContractTokenBalanceManager; import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.CallContractTransaction; @@ -122,9 +123,9 @@ public Result validateContractCreateTx(int chainId, byte[] sender, Long gasLimit @Override public Result contractCallTx(int chainId, String sender, BigInteger value, Long gasLimit, Long price, String contractAddress, String methodName, String methodDesc, String[][] args, - String password, String remark, List multyAssetValues) { + String password, String remark, List multyAssetValues, List nulsValueToOtherList) { try { - Result result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark, multyAssetValues); + Result result = contractTxHelper.makeCallTx(chainId, sender, value, gasLimit, price, contractAddress, methodName, methodDesc, args, password, remark, multyAssetValues, nulsValueToOtherList); if (result.isFailed()) { return result; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v13/CallContractProcessorV13.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v13/CallContractProcessorV13.java new file mode 100644 index 0000000000..f3d975c1eb --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v13/CallContractProcessorV13.java @@ -0,0 +1,130 @@ +package io.nuls.contract.tx.v13; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.processor.CallContractTxProcessor; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CallContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("CallContractProcessorV13") +public class CallContractProcessorV13 implements TransactionProcessor { + + @Autowired + private CallContractTxProcessor callContractTxProcessor; + @Autowired + private CallContractTxValidator callContractTxValidator; + @Autowired + private ContractHelper contractHelper; + @Autowired + private ChainManager chainManager; + + @Override + public int getType() { + return TxType.CALL_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CallContractTransaction callTx; + for(Transaction tx : txs) { + callTx = new CallContractTransaction(); + callTx.copyTx(tx); + try { + Result validate = callContractTxValidator.validateV13(chainId, callTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}, txType: {}", txHash, tx.getType()); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + callContractTxProcessor.onCommitV8(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CallContractData call; + for (Transaction tx : txs) { + if (tx.getType() == TxType.CROSS_CHAIN) { + // add by pierre at 2019-12-01 处理type10交易的业务回滚, 需要协议升级 done + if(ProtocolGroupManager.getCurrentVersion(chainId) < ContractContext.UPDATE_VERSION_V250) { + continue; + } + call = ContractUtil.parseCrossChainTx(tx, chainManager); + if (call == null) { + continue; + } + } else { + call = new CallContractData(); + call.parse(tx.getTxData(), 0); + } + callContractTxProcessor.onRollbackV8(chainId, new ContractWrapperTransaction(tx, call)); + } + return true; + } catch (NulsException e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index d88827489f..d8f32e1ddf 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -35,6 +35,7 @@ import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.model.bo.*; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.dto.ContractTokenTransferInfo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.*; @@ -862,6 +863,20 @@ public static String[][] multyAssetStringArray(ProgramMultyAssetValue[] multyAss return array; } + public static String[][] nulsValueToOthersStringArray(AccountAmountDto[] nulsValueToOthers) { + int length; + if (nulsValueToOthers == null || (length = nulsValueToOthers.length) == 0) { + return null; + } + String[][] array = new String[length][]; + AccountAmountDto dto; + for (int i = 0; i < length; i++) { + dto = nulsValueToOthers[i]; + array[i] = new String[]{dto.getValue().toString(), dto.getTo()}; + } + return array; + } + public static ProgramMultyAssetValue[] multyAssetObjectArray(String[][] multyAssetValues) { int length; if (multyAssetValues == null || (length = multyAssetValues.length) == 0) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 8e9d00ba14..97b4855ca6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -35,6 +35,7 @@ import io.nuls.contract.model.bo.Chain; import io.nuls.contract.model.tx.CallContractTransaction; import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.rpc.call.AccountCall; import io.nuls.contract.util.ContractLedgerUtil; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; @@ -267,4 +268,140 @@ public Result validateV8(int chainId, CallContractTransaction tx) throws NulsExc return Result.getFailed(FEE_NOT_RIGHT); } } + + /** + * 1. 新增功能,调用合约时可以转账给其他地址 + */ + public Result validateV13(int chainId, CallContractTransaction tx) throws NulsException { + + CoinData coinData = tx.getCoinDataInstance(); + List fromList = coinData.getFrom(); + List toList = coinData.getTo(); + CallContractData txData = tx.getTxDataObj(); + byte[] sender = txData.getSender(); + + Set signatureAddressSet = SignatureUtil.getAddressFromTX(tx, chainId); + if (!signatureAddressSet.contains(AddressTool.getStringAddressByBytes(sender))) { + Log.error("contract call error: The contract caller is not the transaction signer."); + return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); + } + if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { + Log.error("contract call error: The value of gas limit ranges from 0 to 10,000,000."); + return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); + } + + byte[] contractAddress = txData.getContractAddress(); + + if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddress)) { + Log.error("contract call error: The contract does not exist."); + return Result.getFailed(CONTRACT_ADDRESS_NOT_EXIST); + } + + Map multyAssetMap = new HashMap<>(); + Set multyAssetKeys = new HashSet<>(); + int assetChainId, assetId; + String assetKey; + BigInteger nulsValue = BigInteger.ZERO; + for(CoinFrom from : fromList) { + assetChainId = from.getAssetsChainId(); + assetId = from.getAssetsId(); + assetKey = assetChainId + "_" + assetId; + if (CHAIN_ID == assetChainId && ASSET_ID == assetId) { + nulsValue = nulsValue.add(from.getAmount()); + } else { + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "from", BigInteger.ZERO); + multyAssetMap.put(assetKey + "from", multyAssetValue.add(from.getAmount())); + } + } + + int toSize = toList.size(); + BigInteger transferNulsToContractValue = txData.getValue(); + BigInteger contractReceivedNulsValue = BigInteger.ZERO; + // 调用者在调用合约的同时,向其他账户转账 + BigInteger transferNulsToOtherAccountValue = BigInteger.ZERO; + if (toSize > 0) { + for (CoinTo coin : toList) { + if (coin.getLockTime() != 0) { + Log.error("contract call error: Transfer amount cannot be locked."); + return Result.getFailed(AMOUNT_LOCK_ERROR); + } + byte[] to = coin.getAddress(); + boolean isContractReceiver = Arrays.equals(to, contractAddress); + assetChainId = coin.getAssetsChainId(); + assetId = coin.getAssetsId(); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + if (coin.getAmount().compareTo(BigInteger.ZERO) == 0) { + Log.error("contract call error: Transfer amount cannot be zero."); + return Result.getFailed(TOO_SMALL_AMOUNT); + } + assetKey = assetChainId + "_" + assetId; + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "to", BigInteger.ZERO); + multyAssetMap.put(assetKey + "to", multyAssetValue.add(coin.getAmount())); + continue; + } + if (coin.getAmount().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { + Log.error("contract call error: The amount of the transfer is too small."); + return Result.getFailed(TOO_SMALL_AMOUNT); + } + if (isContractReceiver) { + contractReceivedNulsValue = contractReceivedNulsValue.add(coin.getAmount()); + } else { + // 检查to地址是否在账户白名单中 + String toStr = AddressTool.getStringAddressByBytes(to); + boolean whiteAddress = AccountCall.validationWhitelistForTransferOnContractCall(chainId, toStr); + if (!whiteAddress) { + Log.error("contract call error: The receiver is not a whitelisted address."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); + } + transferNulsToOtherAccountValue = transferNulsToOtherAccountValue.add(coin.getAmount()); + } + } + + } + + // 其他资产校验 + BigInteger assetKeyFrom, assetKeyTo; + for (String multyAssetKey : multyAssetKeys) { + assetKeyFrom = multyAssetMap.get(multyAssetKey + "from"); + assetKeyTo = multyAssetMap.get(multyAssetKey + "to"); + if(null == assetKeyFrom){ + Log.error("contract call error: Illegal coinFrom in the contract."); + return Result.getFailed(CONTRACT_COIN_FROM_ERROR); + } + if (null == assetKeyTo) { + Log.error("contract call error: Illegal coinTo in the contract."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); + } + if (!BigIntegerUtils.isEqual(assetKeyFrom, assetKeyTo)) { + Log.error("contract call error: The amount of coin data is error."); + return Result.getFailed(CONTRACT_COIN_ASSETS_ERROR); + } + } + + // 主资产校验 + if (contractReceivedNulsValue.compareTo(transferNulsToContractValue) < 0) { + Log.error("contract call error: Insufficient balance of nuls to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + + if (transferNulsToContractValue.compareTo(BigInteger.ZERO) > 0) { + // 手续费账户也能支出,向合约转资产 + if (nulsValue.compareTo(transferNulsToContractValue.add(transferNulsToOtherAccountValue)) < 0) { + Log.error("contract call error: Insufficient balance to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + } + + BigInteger realFee = coinData.getFeeByAsset(CHAIN_ID, ASSET_ID); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(tx.size()).add(BigInteger.valueOf(txData.getGasLimit()).multiply(BigInteger.valueOf(txData.getPrice()))); + if (realFee.compareTo(fee) >= 0) { + return getSuccess(); + } else { + Log.error("contract call error: The contract transaction fee is not right."); + return Result.getFailed(FEE_NOT_RIGHT); + } + } } diff --git a/module/nuls-smart-contract/src/main/resources/protocol-config.json b/module/nuls-smart-contract/src/main/resources/protocol-config.json index dbee5ea107..0748002671 100644 --- a/module/nuls-smart-contract/src/main/resources/protocol-config.json +++ b/module/nuls-smart-contract/src/main/resources/protocol-config.json @@ -1,4 +1,21 @@ [ + { + "version": "13", + "extend": "8", + "validTxs": [ + { + "type": "16", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "CallContractProcessorV13" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "8", "extend": "4", diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java index 42678d635f..a4b6241c08 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/base/Base.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.nuls.contract.model.bo.Chain; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.vm.program.ProgramMultyAssetValue; @@ -346,6 +347,10 @@ protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, Str } protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, Long gasPrice, String contractAddress, String methodName, String methodDesc, String remark, ProgramMultyAssetValue[] multyAssetValues, Object... args) { + return this.makeCallParams(sender, value, gasLimit, gasPrice, contractAddress, methodName, methodDesc, remark, multyAssetValues, null, args); + } + + protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, Long gasPrice, String contractAddress, String methodName, String methodDesc, String remark, ProgramMultyAssetValue[] multyAssetValues, AccountAmountDto[] nulsValueToOthers, Object... args) { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); params.put("sender", sender); @@ -359,6 +364,7 @@ protected Map makeCallParams(String sender, BigInteger value, Long gasLimit, Lon params.put("args", args); params.put("password", password); params.put("remark", remark); + params.put("nulsValueToOthers", ContractUtil.nulsValueToOthersStringArray(nulsValueToOthers)); return params; } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 43bb14cd71..0199779ac6 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -252,11 +252,15 @@ public void getAgentInfoForContractTest() throws Exception { @Test public void getBalance() throws Exception { + // tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7 + // tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN //this.getBalanceByAccount("tNULSeBaNBJT6JuznGqhKM5q6jXFkuSoMUNkHK"); System.out.println("---------------------------------------------------"); //this.getBalanceByAccount("tNULSeBaNAFAVPbGHAzCJ8YZhXLbxK44EujNKF"); System.out.println("---------------------------------------------------"); - this.getBalanceByAccount("tNULSeBaMu38g1vnJsSZUCwTDU9GsE5TVNUtpD"); + this.getBalanceByAccount("tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7"); + this.getBalanceByAccount("tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN"); + this.getBalanceByAccount("tNULSeBaNAEf7r7pk63xtGixpTJCPCPkm5DtZf"); } protected void getBalanceByAccount(String account) throws Exception { @@ -275,7 +279,7 @@ protected void getBalanceByAccount(String account) throws Exception { Map balance1 = LedgerCall.getBalanceAndNonce(chain, chainId, 2, account); System.out.println(String.format("MTA balance: %s", JSONUtils.obj2PrettyJson(balance1))); Map balance2 = LedgerCall.getBalanceAndNonce(chain, chainId, 3, account); - System.out.println(String.format("MTA balance: %s", JSONUtils.obj2PrettyJson(balance2))); + System.out.println(String.format("MTA3 balance: %s", JSONUtils.obj2PrettyJson(balance2))); } @Test diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java index a6b51d7606..2c2b9f95ba 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/customizetx/ContractMakeAndBroadcastBase.java @@ -203,7 +203,7 @@ protected Result makeCallTx(int chainId, String sender, } byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); byte[] senderBytes = AddressTool.getAddress(sender); - return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, null); + return contractTxHelper.newCallTx(chainId, sender, senderBytes, value, gasLimit, price, contractAddressBytes, methodName, methodDesc, args, remark, null, null); } protected Result broadcastCallTx(CallContractTransaction tx) { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java index e2d53c35b5..a8da8a6a5a 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multyasset/ContractMultyAssetTest.java @@ -31,6 +31,7 @@ import io.nuls.base.data.CoinTo; import io.nuls.contract.mock.basetest.ContractTest; import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.tx.CallContractTransaction; import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.rpc.call.LedgerCall; @@ -105,8 +106,8 @@ public void createContract() throws Exception { @Test public void assetRegisterTest() throws Exception { Map params = new HashMap<>(); - params.put("assetSymbol", "MTAX"); - params.put("assetName", "MTAX"); + params.put("assetSymbol", "MTAX3"); + params.put("assetName", "MTAX3"); params.put("initNumber", 100000000); params.put("decimalPlace", 8); params.put("txCreatorAddress", sender); @@ -209,6 +210,37 @@ public void innerCallWithReturnValueOfDesignatedAsset() throws Exception { this.innerCallOfDesignatedAssetByParams(methodName, otherContract, "transferDesignatedAssetLock", innerArgsLock, "0", 0, 0); } + /** + * 调用合约的同时,向另外一个账户转账 + */ + @Test + public void callContractWithNulsValueToOthers() throws Exception { + sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + contractAddress = "tNULSeBaNAEf7r7pk63xtGixpTJCPCPkm5DtZf"; + + //BigInteger value = new BigDecimal("6.6").movePointRight(8).toBigInteger(); + BigInteger value = new BigDecimal("0").movePointRight(8).toBigInteger(); + methodName = "_payableMultyAsset"; + // "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + // "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN" + AccountAmountDto[] amountDtos = new AccountAmountDto[]{ + new AccountAmountDto(BigInteger.valueOf(300000000L), "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7") + }; + ProgramMultyAssetValue[] multyAssetValues = new ProgramMultyAssetValue[]{ + new ProgramMultyAssetValue(BigInteger.valueOf(2_0000_0000L), 2, 2), + new ProgramMultyAssetValue(BigInteger.valueOf(3_0000_0000L), 2, 3) + }; + String methodDesc = ""; + String remark = "call contract test - 向合约转账的同时,向另外一个账户转账"; + Map params = this.makeCallParams( + sender, value, 2000000L, 25L, contractAddress, methodName, methodDesc, remark, multyAssetValues, amountDtos, new Object[]{}); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + /** * 根据注册资产的交易hash查询资产信息 */ diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index f309ba72ae..b3a4201f77 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -26,8 +26,10 @@ import io.nuls.contract.mock.basetest.ContractTest; +import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; +import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.crypto.HexUtil; import io.nuls.core.model.StringUtils; import io.nuls.core.parse.JSONUtils; @@ -67,7 +69,7 @@ public void createContract() throws Exception { String symbol = "LOCK_KongQiBi"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; - Map params = this.makeCreateParams("tNULSeBaMoG1oaW1JZnh6Ly65Ttp6raeTFBfCG", contractCode, "kqb", remark, name, symbol, amount, decimals); + Map params = this.makeCreateParams("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", contractCode, "kqb", remark, name, symbol, amount, decimals); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); @@ -131,6 +133,34 @@ public void tokenTransfer() throws Exception { Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); } + /** + * 调用合约的同时,向另外一个账户转账 + */ + @Test + public void callContractWithNulsValueToOthers() throws Exception { + sender = "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"; + tokenReceiver = "tNULSeBaMrbMRiFAUeeAt6swb4xVBNyi81YL24"; + contractAddress_nrc20 = "tNULSeBaN8UY4k5qD9SG8GjMJNKhERBN7cgtEG"; + + BigInteger value = BigInteger.ZERO; + methodName = "transfer"; + // "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7", + // "tNULSeBaMfXDQeT4MJZim1RusCJRPx5j9bMKQN" + AccountAmountDto[] amountDtos = new AccountAmountDto[]{ + new AccountAmountDto(BigInteger.valueOf(300000000L), "tNULSeBaMkzsRE6qc9RVoeY6gHq8k1xSMcdrc7") + }; + String methodDesc = ""; + String remark = "call contract test - 空气币转账的同时,向另外一个账户转账"; + String token = BigInteger.valueOf(800L).toString(); + Map params = this.makeCallParams( + sender, value, 2000000L, 25L, contractAddress_nrc20, methodName, methodDesc, remark, null, amountDtos, new Object[]{tokenReceiver, token}); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + /** * 删除合约 */ diff --git a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java index 536ae9c993..f10d0bc36b 100644 --- a/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java +++ b/module/nuls-transaction/src/main/java/io/nuls/transaction/service/impl/TxServiceImpl.java @@ -392,7 +392,7 @@ private void validateTxSignature(Transaction tx, TxRegister txRegister, Chain ch } } for (CoinFrom coinFrom : coinData.getFrom()) { - if (tx.getType() == TxType.STOP_AGENT) { + if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.DELAY_STOP_AGENT) { //停止节点from中第一笔为签名地址, 只验证from中第一个 break; } @@ -476,7 +476,7 @@ private void validateTxSignatureProtocol12(Transaction tx, TxRegister txRegister } } for (CoinFrom coinFrom : coinData.getFrom()) { - if (tx.getType() == TxType.STOP_AGENT) { + if (tx.getType() == TxType.STOP_AGENT || tx.getType() == TxType.DELAY_STOP_AGENT) { //停止节点from中第一笔为签名地址, 只验证from中第一个 break; } @@ -491,7 +491,7 @@ private void validateTxSignatureProtocol12(Transaction tx, TxRegister txRegister do { int txType = tx.getType(); // 质押和退出质押不验证锁定地址 - if (txType == TxType.DEPOSIT || txType == TxType.CANCEL_DEPOSIT || txType == TxType.STOP_AGENT) { + if (txType == TxType.DEPOSIT || txType == TxType.CANCEL_DEPOSIT || txType == TxType.STOP_AGENT || txType == TxType.DELAY_STOP_AGENT) { break; } boolean needAccountManagerSign = false; @@ -641,7 +641,7 @@ private void validateCoinFromBase(Chain chain, TxRegister txRegister, List Date: Fri, 22 Apr 2022 16:39:02 +0800 Subject: [PATCH 296/304] Release/pre prod (#662) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * 2.13.0 * modify nulstar oss url Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- package | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package b/package index da25a905aa..677d58fce9 100755 --- a/package +++ b/package @@ -36,7 +36,7 @@ BUILD_NULSTAR="1" NULSTAR_FILE_NAME="nulstar_190909.tar.gz" #TARGET_OS=linux #NULSTAR download url -NULSTAR_URL="http://nuls-cn.oss-cn-hangzhou.aliyuncs.com/nulstar/" +NULSTAR_URL="https://nulscn.oss-cn-beijing.aliyuncs.com/nulstar/" #获取参数 #输出目录 NULS_WALLET_TAR_NAME="./NULS_Wallet" From 954618232219eb7bb97b93ba94a636381168a27c Mon Sep 17 00:00:00 2001 From: lijunzhou Date: Mon, 9 May 2022 14:27:45 +0800 Subject: [PATCH 297/304] cmd client add command (#664) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * 增加查看跨链交易签名信息功能 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels Co-authored-by: NaboxAdmin --- .../crosschain/CrossChainProvider.java | 9 +++++ .../crosschain/CrossChainProviderForRpc.java | 28 +++++++++++++ .../main/java/io/nuls/cmd/client/Tools.java | 3 ++ .../crosschain/GetCrossTxStateProcessor.java | 39 ++++++++++++++++++- .../java/io/nuls/poc/ConsensusBootStrap.java | 24 +++++++++++- .../poc/service/impl/BlockServiceImpl.java | 2 +- .../poc/utils/validator/BlockValidator.java | 2 +- .../nuls/rpc/cmd/CrossChainTxCmd.java | 1 + .../impl/ResetLocalVerifierServiceImpl.java | 2 +- pom.xml | 4 +- 10 files changed, 107 insertions(+), 7 deletions(-) diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java index 3c1bbb43ce..fc1c16128e 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProvider.java @@ -2,6 +2,7 @@ import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.crosschain.facade.*; +import io.nuls.base.data.Transaction; /** * @Author: zhoulijun @@ -25,6 +26,14 @@ public interface CrossChainProvider { */ Result getCrossTxState(GetCrossTxStateReq req); + + /** + * 查询跨链交易在其他链的处理状态 + * @param req + * @return + */ + Result getCrossTx(GetCrossTxStateReq req); + /** * 给全网发信号,对指定跨链交易重新进行拜赞庭验证 * @param req diff --git a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java index 21dac493cc..ec19b70036 100644 --- a/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java +++ b/common/nuls-base-api-provider/src/main/java/io/nuls/base/api/provider/crosschain/CrossChainProviderForRpc.java @@ -1,9 +1,17 @@ package io.nuls.base.api.provider.crosschain; +import io.nuls.base.RPCUtil; import io.nuls.base.api.provider.BaseRpcService; import io.nuls.base.api.provider.Provider; import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.crosschain.facade.*; +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.Transaction; +import io.nuls.core.constant.CommonCodeConstanst; +import io.nuls.core.constant.TxStatusEnum; +import io.nuls.core.exception.NulsException; +import io.nuls.core.log.Log; +import io.nuls.core.model.StringUtils; import io.nuls.core.parse.MapUtils; import io.nuls.core.rpc.model.ModuleE; @@ -41,6 +49,11 @@ public Result getCrossTxState(GetCrossTxStateReq req) { }); } + @Override + public Result getCrossTx(GetCrossTxStateReq req) { + return call("getCrossChainTxInfoForCtxStatusPO",req,(Function)this::tranderTransaction); + } + @Override public Result rehandleCtx(RehandleCtxReq req) { return callReturnString("ctxRehandle",req,"msg"); @@ -56,4 +69,19 @@ private Result _call(String method, Object req, Function cal return call(method,req,callback); } + private Result tranderTransaction(String hexString){ + try { + if(StringUtils.isNull(hexString)){ + return fail(CommonCodeConstanst.DATA_NOT_FOUND,"not found tx"); + } + Transaction transaction = new Transaction(); + transaction.parse(new NulsByteBuffer(RPCUtil.decode(hexString))); + return success(transaction); + } catch (NulsException e) { + Log.error("反序列化transaction发生异常",e); + return fail(CommonCodeConstanst.DESERIALIZE_ERROR); + } + } + + } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/Tools.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/Tools.java index 52145eadea..cd467623b2 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/Tools.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/Tools.java @@ -6,6 +6,7 @@ import io.nuls.core.constant.BaseConstant; import io.nuls.core.core.ioc.SpringLiteContext; import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.parse.SerializeUtils; /** @@ -58,4 +59,6 @@ public static void main(String[] args) { } } + + } diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java index 1d6d2bfc83..5c99be4aa6 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java @@ -2,9 +2,20 @@ import io.nuls.base.api.provider.Result; import io.nuls.base.api.provider.crosschain.facade.GetCrossTxStateReq; +import io.nuls.base.data.Address; +import io.nuls.base.data.Transaction; +import io.nuls.base.signture.TransactionSignature; import io.nuls.cmd.client.CommandBuilder; import io.nuls.cmd.client.CommandResult; +import io.nuls.core.constant.BaseConstant; import io.nuls.core.core.annotation.Component; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.log.Log; +import io.nuls.core.parse.SerializeUtils; +import io.nuls.core.rockdb.service.RocksDBService; + +import java.util.HashSet; +import java.util.Set; /** * @Author: zhoulijun @@ -14,6 +25,8 @@ @Component public class GetCrossTxStateProcessor extends CrossChainBaseProcessor { + + @Override public String getCommand() { return "getcrosstxstate"; @@ -42,11 +55,35 @@ public boolean argsValidate(String[] args) { public CommandResult execute(String[] args) { Integer chainId = config.getChainId(); String txHash = args[1]; - Result result = crossChainProvider.getCrossTxState(new GetCrossTxStateReq(chainId,txHash)); + GetCrossTxStateReq req = new GetCrossTxStateReq(chainId,txHash); + Result result = crossChainProvider.getCrossTxState(req); + Result resultTxInfo = crossChainProvider.getCrossTx(req); + signList(resultTxInfo.getData()); if (result.isFailed()) { return CommandResult.getFailed(result); } String state = result.getData() + "(0:Unconfirmed 1:MainNetConfirmed 2:Confirmed)"; return CommandResult.getSuccess(state); } + + public void signList(Transaction tx) { + try{ + TransactionSignature signature = new TransactionSignature(); + signature.parse(tx.getTransactionSignature(), 0); + Log.debug("txHex:{}", HexUtil.encode(tx.serialize())); + Log.debug("txType:{}",tx.getType()); + Log.debug("txSignCount:{}", signature.getSignersCount()); + Set addressSets = new HashSet<>(); + Log.debug("signer:"); + signature.getP2PHKSignatures().forEach(sign -> { + Address address = new Address(config.getChainId(), config.getAddressPrefix(), BaseConstant.DEFAULT_ADDRESS_TYPE, SerializeUtils.sha256hash160(sign.getPublicKey())); + addressSets.add(address.getBase58()); + }); + addressSets.forEach((addr)->Log.debug("{}",addr)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java index 7f7196ac23..efde0d5dfc 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/ConsensusBootStrap.java @@ -18,12 +18,14 @@ import io.nuls.poc.constant.ConsensusConfig; import io.nuls.poc.constant.ConsensusConstant; import io.nuls.poc.model.bo.Chain; +import io.nuls.poc.model.po.AgentPo; import io.nuls.poc.rpc.call.CallMethodUtils; import io.nuls.poc.utils.enumeration.ConsensusStatus; import io.nuls.poc.utils.manager.ChainManager; import java.lang.reflect.Field; import java.nio.charset.Charset; +import java.util.List; import java.util.Set; import static java.nio.charset.StandardCharsets.UTF_8; @@ -172,5 +174,25 @@ private void initSys() throws Exception { private void initDB() throws Exception { RocksDBService.init(consensusConfig.getDataFolder()); RocksDBService.createTable(ConsensusConstant.DB_NAME_CONSUME_CONGIF); + if (consensusConfig.getMainChainId() != 1) { + return; + } + +// List list2 = RocksDBService.valueList("consensus_agent1"); +// for (byte[] arr : list2) { +// AgentPo po = new AgentPo(); +// po.parse(arr, 0); +// boolean up = false; +// if (po.getHash().toHex().equals("44fd2f9ab6d0833024a4f77d601ff34c19b7a01490dcf01659034f7013c980f1") && po.getDelHeight() < 7865610L) { +// po.setDelHeight(30L); +// up = true; +// } +// if (up) { +// byte[] key = po.getHash().getBytes(); +// byte[] value = po.serialize(); +// RocksDBService.put("consensus_agent1", key, value); +// } +// } + } -} +} \ No newline at end of file diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java index 49057606c5..604bd448c8 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/service/impl/BlockServiceImpl.java @@ -178,4 +178,4 @@ public Result validBlock(Map params) { } return Result.getFailed(ConsensusErrorCode.FAILED).setData(validResult); } -} +} \ No newline at end of file diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java index 6d6c1c8340..f872dd6394 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/validator/BlockValidator.java @@ -434,4 +434,4 @@ private boolean coinDataValidate(Chain chain, Transaction tx) throws NulsExcepti } return true; } -} +} \ No newline at end of file diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java index 8dd86bab35..85e8daaa1b 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/rpc/cmd/CrossChainTxCmd.java @@ -106,6 +106,7 @@ public Response crossTxRehandle(Map params) throws IOException { crossTxRehandleMessage.setBlockHeight(height); crossTxRehandleMsgHandler.process(chainId,crossTxRehandleMessage); boolean res = NetWorkCall.broadcast(chainId,crossTxRehandleMessage,CommandConstant.CROSS_TX_REHANDLE_MESSAGE,false); + if(res){ return success(Map.of("msg","broadcast success")); }else{ diff --git a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java index 60db0b5767..98646350a3 100644 --- a/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java +++ b/module/nuls-cross-chain/cross-chain/src/main/java/io/nuls/crosschain/nuls/servive/impl/ResetLocalVerifierServiceImpl.java @@ -244,7 +244,7 @@ public boolean commitTx(int chainId, List txs, BlockHeader blockHea } chain.getLogger().info("重置本链验证人列表完成:{}",chain.getVerifierList()); int syncStatus = BlockCall.getBlockStatus(chain); - List otherChainInfoList = chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() != chainId).collect(Collectors.toList()); ; + List otherChainInfoList = chainManager.getRegisteredCrossChainList().stream().filter(d->d.getChainId() != chainId).collect(Collectors.toList()); List newTxList = Lists.newArrayList(); otherChainInfoList.forEach(chainInfo -> { try { diff --git a/pom.xml b/pom.xml index 9987a2fe09..cbef15ed40 100644 --- a/pom.xml +++ b/pom.xml @@ -139,11 +139,11 @@ maven-releases - http://nexus.nuls.center/nexus/content/repositories/releases/ + http://nexus.nuls.io/repository/nuls-release/ maven-snapshots - http://nexus.nuls.center/nexus/content/repositories/snapshots/ + http://nexus.nuls.io/repository/nuls-snapshot/ From b1eb867e69bec464387ad8a6b9ddf8a6b20f8f8d Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 25 May 2022 09:44:38 +0800 Subject: [PATCH 298/304] remove dependency-fastjson --- v2.13.1 (#671) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../crosschain/GetCrossTxStateProcessor.java | 2 +- module/nuls-cross-chain/base-lib/pom.xml | 2 +- module/nuls-smart-contract/pom.xml | 10 ++-------- .../main/java/io/nuls/contract/util/Log.java | 6 +++--- .../io/nuls/contract/util/BeanUtilTest.java | 18 ++++++++---------- .../nuls/contract/util/ContractDBUtilTest.java | 11 +++++++++-- module/nuls-transaction/pom.xml | 2 +- test/nuls-test/pom.xml | 2 +- version | 2 +- 9 files changed, 27 insertions(+), 28 deletions(-) diff --git a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java index 5c99be4aa6..6d940a1efa 100644 --- a/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java +++ b/module/nuls-cmd-client/src/main/java/io/nuls/cmd/client/processor/crosschain/GetCrossTxStateProcessor.java @@ -71,7 +71,7 @@ public void signList(Transaction tx) { TransactionSignature signature = new TransactionSignature(); signature.parse(tx.getTransactionSignature(), 0); Log.debug("txHex:{}", HexUtil.encode(tx.serialize())); - Log.debug("txType:{}",tx.getType()); + Log.debug("txType:{}",tx.getType()); Log.debug("txSignCount:{}", signature.getSignersCount()); Set addressSets = new HashSet<>(); Log.debug("signer:"); diff --git a/module/nuls-cross-chain/base-lib/pom.xml b/module/nuls-cross-chain/base-lib/pom.xml index 9b1d34d24c..90a4b47b22 100644 --- a/module/nuls-cross-chain/base-lib/pom.xml +++ b/module/nuls-cross-chain/base-lib/pom.xml @@ -22,7 +22,7 @@ junit junit - 4.12 + 4.13.1 test diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 267dd79740..4696f0b18c 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -37,7 +37,7 @@ commons-io commons-io - 2.6 + 2.7 org.apache.commons @@ -98,16 +98,10 @@ 2.1.0.RELEASE - - com.alibaba - fastjson - 1.2.76 - - junit junit - 4.12 + 4.13.1 diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/Log.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/Log.java index b5d1b2fea5..1652aec3a4 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/Log.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/Log.java @@ -1,10 +1,10 @@ package io.nuls.contract.util; import ch.qos.logback.classic.Level; -import com.alibaba.fastjson.JSONObject; import io.nuls.contract.constant.ContractConstant; import io.nuls.core.io.IoUtils; import io.nuls.core.log.logback.NulsLogger; +import io.nuls.core.parse.JSONUtils; import java.io.InputStream; import java.util.HashMap; @@ -191,9 +191,9 @@ private static NulsLogger getDefaultBasicLogger() { if(DEFAULT_BASIC_LOGGER == null) { try (InputStream configInput = Log.class.getClassLoader().getResourceAsStream(MODULE_CONFIG_FILE)) { String str = IoUtils.readBytesToString(configInput); - JSONObject json = JSONObject.parseObject(str); + Map json = JSONUtils.json2map(str); LogUtil.configDefaultLog(ContractConstant.LOG_FILE_NAME, - json.getString("packageLogPackages"), json.getString("packageLogLevels")); + (String) json.get("packageLogPackages"), (String) json.get("packageLogLevels")); } catch (Exception e) { LogUtil.configDefaultLog(ContractConstant.LOG_FILE_NAME); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/BeanUtilTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/BeanUtilTest.java index 6ec49c7bef..00987f94a9 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/BeanUtilTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/BeanUtilTest.java @@ -23,8 +23,6 @@ */ package io.nuls.contract.util; -import com.alibaba.fastjson.JSONObject; -import io.nuls.core.basic.Result; import io.nuls.core.constant.ErrorCode; import io.nuls.core.parse.JSONUtils; import org.junit.Test; @@ -87,14 +85,14 @@ public static void setBean(Object src, String beanName, Object bean) { } } - @Test - public void test() throws IOException { - String json = "{\"jsonrpc\":\"2.0\",\"id\":2103470749,\"result\":{\"address\":\"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD\",\"alias\":null,\"type\":1,\"txCount\":27,\"totalOut\":70800000,\"totalIn\":1000000060219650,\"consensusLock\":0,\"timeLock\":0,\"balance\":999999989419650,\"totalBalance\":999999989419650,\"totalReward\":1000000060219650,\"tokens\":[\"tNULSeBaNCHAhqG84z2kdeHx6AuFH6Zk6TmDDG,POCMTEST\"]}}"; - RpcResult rpcResult = JSONObject.parseObject(json, RpcResult.class); - System.out.println(rpcResult); - RpcResult rpcResult1 = JSONUtils.json2pojo(json, RpcResult.class); - System.out.println(rpcResult1); - } +// @Test +// public void test() throws IOException { +// String json = "{\"jsonrpc\":\"2.0\",\"id\":2103470749,\"result\":{\"address\":\"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD\",\"alias\":null,\"type\":1,\"txCount\":27,\"totalOut\":70800000,\"totalIn\":1000000060219650,\"consensusLock\":0,\"timeLock\":0,\"balance\":999999989419650,\"totalBalance\":999999989419650,\"totalReward\":1000000060219650,\"tokens\":[\"tNULSeBaNCHAhqG84z2kdeHx6AuFH6Zk6TmDDG,POCMTEST\"]}}"; +// RpcResult rpcResult = JSONObject.parseObject(json, RpcResult.class); +// System.out.println(rpcResult); +// RpcResult rpcResult1 = JSONUtils.json2pojo(json, RpcResult.class); +// System.out.println(rpcResult1); +// } class RpcResult { diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/ContractDBUtilTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/ContractDBUtilTest.java index 80c3123ccc..de5ee4269c 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/ContractDBUtilTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/ContractDBUtilTest.java @@ -1,12 +1,13 @@ package io.nuls.contract.util; -import com.alibaba.fastjson.JSONObject; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.model.bo.ContractResult; +import io.nuls.core.parse.JSONUtils; import io.nuls.core.rockdb.service.RocksDBService; import org.junit.Before; import org.junit.Test; +import java.io.IOException; import java.lang.reflect.Field; import java.nio.charset.Charset; @@ -35,7 +36,13 @@ public void setUp() throws Exception { @Test public void newInstance() { String json = "{\"acceptDirectTransfer\":false,\"balance\":0,\"contractAddress\":\"OTACBl9m97GO964IHLFSyjPj9EtnTd4=\",\"error\":false,\"events\":[\"{\\\"contractAddress\\\":\\\"5MR_3PyDN5hzZVEw8Jv21TNFZ5P5fNuvETj\\\",\\\"blockNumber\\\":29,\\\"event\\\":\\\"TransferEvent\\\",\\\"payload\\\":{\\\"from\\\":null,\\\"to\\\":\\\"5MR_2CjZkQsN7EnEPcaLgNrMrp6wpPGN6xo\\\",\\\"value\\\":\\\"1000000000000\\\"}}\"],\"gasUsed\":15794,\"hash\":\"0020342527f7320dedcb47c1efd7a86d0573d0669cd77077aa25879f74e79ff74106\",\"mergedTransferList\":[],\"nonce\":1,\"nrc20\":true,\"price\":25,\"remark\":\"create\",\"revert\":false,\"sender\":\"OTAB7k8OT0MWMF0uePRSkJQlgkRNnA8=\",\"stateRoot\":\"nIeL/Gtr7oZPMGlI6UdeM5q12F8XSKmn5yYCofXfHbQ=\",\"success\":true,\"terminated\":false,\"tokenDecimals\":2,\"tokenName\":\"KQB\",\"tokenSymbol\":\"KongQiBi\",\"tokenTotalSupply\":1000000000000,\"transfers\":[],\"txTime\":1553099238363,\"value\":0}"; - ContractResult result = JSONObject.parseObject(json, ContractResult.class); + ContractResult result = null; + try { + result = JSONUtils.json2pojo(json, ContractResult.class); + } catch (IOException e) { + e.printStackTrace(); + return; + } System.out.println(result.toString()); } diff --git a/module/nuls-transaction/pom.xml b/module/nuls-transaction/pom.xml index 72c3b9e522..33f73027bd 100644 --- a/module/nuls-transaction/pom.xml +++ b/module/nuls-transaction/pom.xml @@ -14,7 +14,7 @@ com.google.code.gson gson - 2.8.5 + 2.8.9 test diff --git a/test/nuls-test/pom.xml b/test/nuls-test/pom.xml index 461146b38d..4bb3225b8f 100644 --- a/test/nuls-test/pom.xml +++ b/test/nuls-test/pom.xml @@ -73,7 +73,7 @@ junit junit - 4.12 + 4.13.1 test diff --git a/version b/version index a3ebb9f516..53fdb123b9 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.13.0 \ No newline at end of file +2.13.1 \ No newline at end of file From 9990eab990255c9363c61ce795921d734a436030 Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 1 Jul 2022 10:03:52 +0800 Subject: [PATCH 299/304] 2.14.0 (#674) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * v2.14.0 Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../io/nuls/core/constant/TxStatusEnum.java | 4 +- module.ncf | 86 +++--- .../api/constant/CommandConstant.java | 1 + .../controller/ContractController.java | 24 ++ .../api/resources/ContractResource.java | 19 ++ .../model/dto/ContractInternalCreateDto.java | 75 +++++ .../provider/model/dto/ContractResultDto.java | 10 + .../model/form/contract/ContractCodeHash.java | 49 +++ .../nuls/provider/rpctools/ContractTools.java | 16 + .../utils/manager/FixRedPunishBugHelper.java | 1 + .../src/main/resources/versions.json | 5 + module/nuls-smart-contract/pom.xml | 10 +- .../callable/ContractTxCallableV14.java | 291 ++++++++++++++++++ .../callable/ContractTxCallableV8.java | 2 - .../nuls/contract/config/ContractContext.java | 1 + .../constant/ContractCmdConstant.java | 1 + .../contract/constant/ContractConstant.java | 1 + .../nuls/contract/helper/ContractHelper.java | 222 +++++++++++-- .../manager/ContractTxValidatorManager.java | 3 + .../java/io/nuls/contract/model/bo/Chain.java | 6 + .../contract/model/bo/ContractCreate.java | 86 ++++++ .../model/bo/ContractInternalCreate.java | 65 ++++ .../contract/model/bo/ContractResult.java | 23 +- .../model/dto/ContractInternalCreateDto.java | 89 ++++++ .../contract/model/dto/ContractResultDto.java | 23 ++ .../processor/CallContractTxProcessor.java | 84 +++++ .../processor/CreateContractTxProcessor.java | 75 ++++- .../io/nuls/contract/rpc/cmd/ContractCmd.java | 16 +- .../rpc/resource/ContractResource.java | 39 +++ .../contract/service/ContractService.java | 3 + .../service/impl/ContractCallerImpl.java | 8 +- .../service/impl/ContractExecutorImpl.java | 6 +- .../service/impl/ContractServiceImpl.java | 60 ++++ .../service/impl/ContractTxServiceImpl.java | 5 +- .../tx/SmartContractVersionChangeInvoker.java | 15 +- .../tx/v14/CallContractProcessorV14.java | 127 ++++++++ .../tx/v14/CreateContractProcessorV14.java | 115 +++++++ .../io/nuls/contract/util/ContractUtil.java | 24 +- .../validator/CallContractTxValidator.java | 145 +++++++++ .../java/io/nuls/contract/vm/GasCost.java | 2 + .../src/main/java/io/nuls/contract/vm/VM.java | 7 + .../java/io/nuls/contract/vm/VMFactory.java | 72 ++++- .../contract/vm/code/ClassCodeLoader.java | 56 +++- .../io/nuls/contract/sdk/NativeAddress.java | 13 +- .../io/nuls/contract/sdk/NativeBlock.java | 7 +- .../io/nuls/contract/sdk/NativeMsg.java | 16 +- .../io/nuls/contract/sdk/NativeUtils.java | 206 ++++++++++++- .../contract/vm/program/ProgramCreate.java | 10 + .../vm/program/ProgramCreateData.java | 171 ++++++++++ .../vm/program/ProgramEncodePacked.java | 93 ++++++ .../contract/vm/program/ProgramExecutor.java | 5 + .../vm/program/ProgramInternalCreate.java | 94 ++++++ .../contract/vm/program/ProgramResult.java | 10 + .../vm/program/impl/ProgramConstants.java | 99 +++--- .../vm/program/impl/ProgramExecutorImpl.java | 81 ++++- .../vm/program/impl/ProgramInvoke.java | 9 + .../java/io/nuls/contract/vm/util/Utils.java | 34 ++ .../src/main/resources/protocol-config.json | 25 ++ .../src/main/resources/used_classes_sdk_v14 | Bin 0 -> 14610 bytes .../io/nuls/contract/tx/base/BaseQuery.java | 18 +- .../ContractCreateSendTxTest.java | 122 ++++++++ .../tx/multiSign/MultiSignTxTest.java | 131 +++++++- .../tx/nrc20/ContractNRC20TokenQueryTest.java | 5 +- .../nrc20/ContractNRC20TokenSendTxTest.java | 6 +- .../tx/pocm/ContractPOCMSendTxTest.java | 25 +- .../tx/randomseed/RandomSeedSendTxTest.java | 3 - .../io/nuls/contract/util/LedgerTestUtil.java | 52 ++++ version | 2 +- 68 files changed, 2961 insertions(+), 248 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInternalCreateDto.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCodeHash.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV14.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractInternalCreate.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInternalCreateDto.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CallContractProcessorV14.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CreateContractProcessorV14.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreateData.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramEncodePacked.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCreate.java create mode 100644 module/nuls-smart-contract/src/main/resources/used_classes_sdk_v14 create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java create mode 100644 module/nuls-smart-contract/src/test/java/io/nuls/contract/util/LedgerTestUtil.java diff --git a/common/nuls-core/src/main/java/io/nuls/core/constant/TxStatusEnum.java b/common/nuls-core/src/main/java/io/nuls/core/constant/TxStatusEnum.java index c16f7be6e6..c0acc56fdd 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/constant/TxStatusEnum.java +++ b/common/nuls-core/src/main/java/io/nuls/core/constant/TxStatusEnum.java @@ -27,7 +27,9 @@ /** * 交易状态枚举 * Enumeration of transaction status - * + * 0: not packaged + * 1: packaged and saved + * 2: packaged and saved * @author Niels */ public enum TxStatusEnum { diff --git a/module.ncf b/module.ncf index 7f89ca8a2c..bc0c1f9d8a 100644 --- a/module.ncf +++ b/module.ncf @@ -1,47 +1,45 @@ [global] encoding=UTF-8 language=en -logPath=/Users/niels/workspace/nuls-v2/logs -logLevel=INFO -dataPath=/Users/niels/workspace/nuls-v2/data +logPath=../../../../Logs +logLevel=DEBUG +dataPath=../../../../data #默认本链ID -chainId=1 +chainId=2 #地址前缀 -addressPrefix=NULS +addressPrefix=tNULS #默认本链主资产ID assetId=1 #默认资产小数位数 decimals=8 #默认链名称 -chainName=nuls +chainName=nuls2 #本链默认资产符号 symbol=NULS #主网链id -mainChainId=1 +mainChainId=2 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 -packageVersion=%PACKAGE_VERSION% - [network] -port=8001 -crossPort=8002 +port=18001 +crossPort=18002 #魔法参数 -packetMagic=20191222 +packetMagic=202001177 #种子节点 -selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 +selfSeedIps=192.168.5.104:18001,192.168.5.10:18001,192.168.5.40:18001 #主网的跨链种子连接节点 -moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +moonSeedIps=192.168.5.104:18002,192.168.5.10:18002,192.168.5.40:18002 #最大入网连接数 maxInCount=300 #最大出网连接数 maxOutCount=20 [account] -blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx +blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt keystoreFolder=/keystore/backup dependent=protocol-update @@ -61,19 +59,18 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block.json +genesisBlockPath=genesis-block_dev.json dependent=cross-chain,protocol-update,smart-contract - [consensus] #种子节点列表 -seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=1 +agentChainId=2 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -90,15 +87,21 @@ initTime=1594483200 deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain +[transaction] +dependent=protocol-update,smart-contract + [ledger] dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS +systemLogLevel=WARN +crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd dependent=protocol-update [chain-manager] @@ -106,9 +109,9 @@ dependent=smart-contract,protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=8003 +rpcPort=18003 #数据库url地址 -databaseUrl=127.0.0.1 +databaseUrl=192.168.1.39 #数据库端口号 databasePort=27017 #连接池最大数 @@ -119,19 +122,8 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 -developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF -ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj -mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB -businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w -teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn -communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg -syncCoinBase=false -syncAddress= dependent=smart-contract,cross-chain,chain-manager -[transaction] -dependent=protocol-update,smart-contract - [cross-chain] #跨链节点链接的最小值 minNodeAmount=3 @@ -140,35 +132,29 @@ sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 +crossSeedIps=192.168.5.104:18002,192.168.5.10:18002,192.168.5.40:18002 #主网验证人列表 -verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 +verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 +dataPath=../../../../../data +logPath=../../../../../Logs dependent=protocol-update,smart-contract -[protocol-update] -#每隔多少个区块统计一次协议占比 -interval=1000 -dependent=smart-contract,cross-chain - [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=8004 +serverPort=18004 dependent=smart-contract,cross-chain,chain-manager -[nuls-module-web-wallet] -apiModuleApi=http://127.0.0.1:8003/ -webWalletPort=8006 -webWalletHost=0.0.0.0 +[protocol-update] +continuousIntervalCountMinimum=2 +#每隔多少个区块统计一次协议占比 +interval=2 dependent=smart-contract,cross-chain -[nuls-module-explorer] -apiModuleApi=http://127.0.0.1:8003/ -explorerPort=1999 -explorerHost=0.0.0.0 - +[cmd-client] +clientVersion=2.7.0 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java index 2773a60520..6ee8950cf0 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java @@ -80,4 +80,5 @@ public interface CommandConstant { String TOKEN_BALANCE = "sc_token_balance"; //查询已注册的跨链信息 String GET_REGISTERED_CHAIN = "getRegisteredChainInfoList"; + String CODE_HASH = "sc_code_hash"; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index 8cccc1a4a3..7b0d1d4b98 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -938,6 +938,30 @@ public RpcResult invokeView(List params) { return ResultUtil.getJsonRpcResult(mapResult); } + @RpcMethod("codeHash") + @ApiOperation(description = "获取合约的codeHash", order = 419) + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "contractAddress", parameterDes = "合约地址") + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "合约的codeHash") + })) + public RpcResult codeHash(List params) { + VerifyUtils.verifyParams(params, 2); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + Result mapResult = contractTools.codeHash(chainId, params.get(1)); + return ResultUtil.getJsonRpcResult(mapResult); + } + @RpcMethod("contractCreateOffline") @ApiOperation(description = "离线 - 发布合约交易", order = 450) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index e7ed6e54e9..16e4051dd1 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -584,6 +584,25 @@ public RpcClientResult invokeView(ContractViewCall form) { return ResultUtil.getRpcClientResult(mapResult); } + @POST + @Path("/codeHash") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "获取合约的codeHash", order = 419) + @Parameters(value = { + @Parameter(parameterName = "获取合约的codeHash", parameterDes = "获取合约的codeHash", requestType = @TypeDescriptor(value = ContractCodeHash.class)) + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "合约的codeHash") + })) + public RpcClientResult codeHash(ContractCodeHash form) { + if (form == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form data is empty")); + } + Result mapResult = contractTools.codeHash(config.getChainId(), + form.getContractAddress()); + return ResultUtil.getRpcClientResult(mapResult); + } + @POST @Path("/create/offline") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInternalCreateDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInternalCreateDto.java new file mode 100644 index 0000000000..a0e13c4a19 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractInternalCreateDto.java @@ -0,0 +1,75 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.provider.model.dto; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractInternalCreateDto { + @ApiModelProperty(description = "交易创建者地址") + private String sender; + @ApiModelProperty(description = "创建的合约地址") + private String contractAddress; + @ApiModelProperty(description = "内部创建所依据的合约") + private String codeCopyBy; + @ApiModelProperty(description = "参数列表") + private String args; + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public String getCodeCopyBy() { + return codeCopyBy; + } + + public void setCodeCopyBy(String codeCopyBy) { + this.codeCopyBy = codeCopyBy; + } + + public String getArgs() { + return args; + } + + public void setArgs(String args) { + this.args = args; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java index 4adc28f112..70c871df3f 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractResultDto.java @@ -80,6 +80,8 @@ public class ContractResultDto { private List contractTxList; @ApiModelProperty(description = "备注") private String remark; + @ApiModelProperty(description = "内部创建的合约列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractInternalCreateDto.class)) + private List internalCreates; public List getMultyAssetTransfers() { return multyAssetTransfers; @@ -256,4 +258,12 @@ public String getRemark() { public void setRemark(String remark) { this.remark = remark; } + + public List getInternalCreates() { + return internalCreates; + } + + public void setInternalCreates(List internalCreates) { + this.internalCreates = internalCreates; + } } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCodeHash.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCodeHash.java new file mode 100644 index 0000000000..7a394ddbba --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractCodeHash.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.provider.model.form.contract; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.provider.model.form.Base; + +/** + * @author: PierreLuo + * @date: 2022/6/17 + */ +@ApiModel(description = "获取合约的codeHash表单数据") +public class ContractCodeHash extends Base { + + @ApiModelProperty(description = "合约地址", required = true) + private String contractAddress; + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java index e17fc5bf96..bdcd26ce7b 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java @@ -259,4 +259,20 @@ public Result invokeView(int chainId, Object contractAddress, Object method } } + public Result codeHash(int chainId, Object contractAddress) { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + params.put("contractAddress", contractAddress); + try { + return callRpc(ModuleE.SC.abbr, CODE_HASH, params,(Function, Result>) res->{ + if(res == null){ + return null; + } + return new Result(res); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + } diff --git a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java index 1b024a0256..07af9f7cf3 100644 --- a/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java +++ b/module/nuls-consensus/nuls-consensus-poc/src/main/java/io/nuls/poc/utils/manager/FixRedPunishBugHelper.java @@ -20,6 +20,7 @@ public class FixRedPunishBugHelper { * @param startBlockHeight */ public void v13Filter(int chainId, Agent agent, long startBlockHeight) { + execute(chainId, "15673a9ab94fd5737ec541e3d6b289ea119268b361f0bfbe86b69a95f83c196f", startBlockHeight, 3718800L, agent); execute(chainId, "a27170a4ad246758cc7fb45ded14b065f6a1919836a2bba34e6dcd9335a054da", startBlockHeight, 8083986L, agent); execute(chainId, "ad82dc5237378a39abb3bbd8174ac0f77c882573a02c8fac01b4c7a058a96d90", startBlockHeight, 8083892L, agent); execute(chainId, "d11d29e38b3db75aec0ebb69dc66eb4f6276d0a1d9c7faa6a4fa33b699637447", startBlockHeight, 8084009L, agent); diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 09fb7820bc..362b9b4dc5 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -63,5 +63,10 @@ "version": "13", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "14", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 4696f0b18c..2428fbf6ca 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -92,11 +92,11 @@ ${asm.version} - - io.nuls.sdk - sdk-contract-vm - 2.1.0.RELEASE - + + + + + junit diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV14.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV14.java new file mode 100644 index 0000000000..7d258916fb --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV14.java @@ -0,0 +1,291 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.callable; + +import io.nuls.base.RPCUtil; +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.NulsHash; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.helper.ContractNewTxHandler; +import io.nuls.contract.helper.ContractTransferHandler; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.manager.ContractTempBalanceManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.tx.ContractTransferTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.model.txdata.ContractData; +import io.nuls.contract.model.txdata.ContractTransferData; +import io.nuls.contract.service.ContractExecutor; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.vm.program.ProgramExecutor; +import io.nuls.contract.vm.program.ProgramInternalCreate; +import io.nuls.core.basic.Result; +import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.exception.NulsException; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; + +import static io.nuls.contract.config.ContractContext.ASSET_ID; +import static io.nuls.contract.config.ContractContext.CHAIN_ID; +import static io.nuls.contract.util.ContractUtil.extractPublicKey; +import static io.nuls.contract.util.ContractUtil.makeContractResult; +import static io.nuls.core.constant.TxType.*; + +// add by pierre at 2022/6/2 p14 +public class ContractTxCallableV14 { + + private ContractExecutor contractExecutor; + private ContractHelper contractHelper; + private ContractNewTxHandler contractNewTxHandler; + private ContractTransferHandler contractTransferHandler; + private ContractTempBalanceManager tempBalanceManager; + private ProgramExecutor executor; + private String contract; + private ContractWrapperTransaction tx; + private long number; + private String preStateRoot; + private int chainId; + private int blockType; + private long blockTime; + private BatchInfoV8 batchInfo; + + + public ContractTxCallableV14(int chainId, int blockType, long blockTime, ProgramExecutor executor, String contract, ContractWrapperTransaction tx, long number, String preStateRoot) { + this.chainId = chainId; + this.blockType = blockType; + this.blockTime = blockTime; + this.contractExecutor = SpringLiteContext.getBean(ContractExecutor.class); + this.contractHelper = SpringLiteContext.getBean(ContractHelper.class); + this.contractNewTxHandler = SpringLiteContext.getBean(ContractNewTxHandler.class); + this.contractTransferHandler = SpringLiteContext.getBean(ContractTransferHandler.class); + this.tempBalanceManager = contractHelper.getBatchInfoTempBalanceManagerV8(chainId); + this.executor = executor; + this.contract = contract; + this.tx = tx; + this.number = number; + this.preStateRoot = preStateRoot; + } + + public ContractResult call() throws Exception { + ChainManager.chainHandle(chainId, blockType); + this.batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + String hash = tx.getHash().toHex(); + long start = System.currentTimeMillis(); + ContractData contractData; + ContractResult contractResult = null; + contractData = tx.getContractData(); + int type = tx.getType(); + do { + if (type != DELETE_CONTRACT && !ContractUtil.checkPrice(contractData.getPrice())) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "The gas price is error."); + break; + } + + switch (type) { + case CREATE_CONTRACT: + contractResult = contractExecutor.create(executor, contractData, number, preStateRoot, extractPublicKey(tx)); + checkCreateResult(tx, contractResult); + break; + case CROSS_CHAIN: + case CALL_CONTRACT: + // 创建合约无论成功与否,后续的其他的跳过执行,视作失败 -> 合约锁定中或者合约不存在 + if (batchInfo.getCreateSet().contains(contract)) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "contract lock or not exist."); + break; + } + // 删除合约成功后,后续的其他的跳过执行,视作失败 -> 合约已删除 + if (batchInfo.getDeleteSet().contains(contract)) { + contractResult = contractHelper.makeFailedContractResult(chainId, tx, null, "contract has been terminated."); + break; + } + contractHelper.extractAssetInfoFromCallTransaction((CallContractData) contractData, tx); + contractResult = contractExecutor.call(executor, contractData, number, preStateRoot, extractPublicKey(tx)); + checkCallResult(tx, contractResult); + break; + case DELETE_CONTRACT: + contractResult = contractExecutor.delete(executor, contractData, number, preStateRoot); + checkDeleteResult(tx, contractResult); + break; + default: + break; + } + } while (false); + if (contractResult != null) { + if(!contractResult.isSuccess()) { + Log.error("Failed TxType [{}] Execute ContractResult is {}", tx.getType(), contractResult.toString()); + } + } + Log.info("[Per Contract Execution Cost Time] TxType is {}, TxHash is {}, Cost Time is {}", tx.getType(), hash, System.currentTimeMillis() - start); + return contractResult; + } + + private void checkCreateResult(ContractWrapperTransaction tx, ContractResult contractResult) { + makeContractResult(tx, contractResult); + batchInfo.getCreateSet().add(contract); + if (contractResult.isSuccess()) { + Result checkResult = contractHelper.validateNrc20Contract(chainId, (ProgramExecutor) contractResult.getTxTrack(), tx, contractResult); + if (checkResult.isFailed()) { + Log.error("check validateNrc20Contract Result is {}", checkResult.toString()); + } + if (checkResult.isSuccess()) { + commitContract(contractResult); + } + } + } + + + private void checkCallResult(ContractWrapperTransaction tx, ContractResult contractResult) throws IOException, NulsException { + makeContractResult(tx, contractResult); + // 处理合约结果 + dealCallResult(tx, contractResult, chainId); + } + + private void dealCallResult(ContractWrapperTransaction tx, ContractResult contractResult, int chainId) throws IOException, NulsException { + if (contractResult.isSuccess()) { + // 处理合约生成的其他交易、临时余额、合约内部转账 + boolean isSuccess = contractNewTxHandler.handleContractNewTx(chainId, blockTime, tx, contractResult, tempBalanceManager); + if (isSuccess) { + // add by pierre at 2022/6/2 p14 + // 处理内部创建 + List internalCreates = contractResult.getProgramInternalCreates(); + if (internalCreates != null && !internalCreates.isEmpty()) { + for (ProgramInternalCreate internalCreate : internalCreates) { + // 处理内部创建的合约,装到执行结果的`internalCreates`中 + Result checkResult = contractHelper.validateNrc20ContractByInternalCreate(chainId, (ProgramExecutor) contractResult.getTxTrack(), internalCreate, contractResult); + if (checkResult.isFailed()) { + Log.error("ProgramInternalCreate check validateNrc20Contract Result is {}", checkResult.toString()); + isSuccess = false; + break; + } + //TODO pierre 测试内部创建合约后,同一个区块中,发出调用此合约的交易 + batchInfo.getCreateSet().add(AddressTool.getStringAddressByBytes(internalCreate.getContractAddress())); + } + } + } + if (!isSuccess) { + // 处理调用失败的合约,把需要退还的NULS 生成一笔合约内部转账交易,退还给调用者 + this.handleFailedContract(contractResult); + } + } else { + // 处理调用失败的合约,把需要退还的NULS 生成一笔合约内部转账交易,退还给调用者 + this.handleFailedContract(contractResult); + } + // 处理合约内部转账成功后,提交合约 + if (contractResult.isSuccess()) { + commitContract(contractResult); + } + } + + private void handleFailedContract(ContractResult contractResult) throws IOException, NulsException { + ContractWrapperTransaction orginTx = contractResult.getTx(); + ContractData contractData = orginTx.getContractData(); + NulsHash orginTxHash = orginTx.getHash(); + BigInteger value = contractData.getValue(); + byte[] contractAddress = contractData.getContractAddress(); + + int assetChainId, assetId; + CoinData orginTxCoinData = orginTx.getCoinDataInstance(); + List fromList = orginTxCoinData.getFrom(); + for(CoinFrom from : fromList) { + assetChainId = from.getAssetsChainId(); + assetId = from.getAssetsId(); + if (CHAIN_ID != assetChainId || ASSET_ID != assetId) { + // 多个账户向合约转入多个资产,合约执行失败后,退还转入的资产金额 + ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, from.getAddress(), from.getAmount(), assetChainId, assetId); + contractResult.getContractTransferList().add(tx); + } else if (from.getAmount().compareTo(value) >= 0){ + orginTx.setValueSender(from.getAddress()); + } + } + + if (value.compareTo(BigInteger.ZERO) > 0) { + byte[] sender = orginTx.getValueSender(); + if (sender == null) { + sender = contractData.getSender(); + } + ContractTransferTransaction tx = this.generateContractTransferTransaction(orginTxHash, contractAddress, sender, value, CHAIN_ID, ASSET_ID); + contractResult.getContractTransferList().add(tx); + } + contractResult.setMergedTransferList(contractTransferHandler.contractTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); + contractResult.setMergerdMultyAssetTransferList(contractTransferHandler.contractMultyAssetTransfer2mergedTransfer(orginTx, contractResult.getContractTransferList())); + } + + private ContractTransferTransaction generateContractTransferTransaction(NulsHash orginTxHash, byte[] contractAddress, byte[] recipient, BigInteger value, int assetChainId, int assetId) throws IOException { + ContractTransferData txData = new ContractTransferData(orginTxHash, contractAddress); + + CoinData coinData = new CoinData(); + ContractBalance balance = tempBalanceManager.getBalance(contractAddress, assetChainId, assetId).getData(); + byte[] nonceBytes = RPCUtil.decode(balance.getNonce()); + + CoinFrom coinFrom = new CoinFrom(contractAddress, assetChainId, assetId, value, nonceBytes, (byte) 0); + coinData.getFrom().add(coinFrom); + CoinTo coinTo = new CoinTo(recipient, assetChainId, assetId, value, 0L); + coinData.getTo().add(coinTo); + + ContractTransferTransaction tx = new ContractTransferTransaction(); + tx.setCoinDataObj(coinData); + tx.setTxDataObj(txData); + tx.setTime(blockTime); + + tx.serializeData(); + NulsHash hash = NulsHash.calcHash(tx.serializeForHash()); + byte[] hashBytes = hash.getBytes(); + byte[] currentNonceBytes = Arrays.copyOfRange(hashBytes, hashBytes.length - 8, hashBytes.length); + balance.setNonce(RPCUtil.encode(currentNonceBytes)); + tx.setHash(hash); + return tx; + } + + private void commitContract(ContractResult contractResult) { + if (!contractResult.isSuccess()) { + return; + } + Object txTrackObj = contractResult.getTxTrack(); + if (txTrackObj != null && txTrackObj instanceof ProgramExecutor) { + ProgramExecutor txTrack = (ProgramExecutor) txTrackObj; + txTrack.commit(); + } + } + + private boolean checkDeleteResult(ContractWrapperTransaction tx, ContractResult contractResult) { + batchInfo.getDeleteSet().add(contract); + makeContractResult(tx, contractResult); + boolean result = false; + if (contractResult.isSuccess()) { + result = true; + commitContract(contractResult); + } + return result; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java index e9d78d0772..db567dbb1c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/callable/ContractTxCallableV8.java @@ -54,9 +54,7 @@ import java.io.IOException; import java.math.BigInteger; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index 37fc3d412a..6d6736c77e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -72,4 +72,5 @@ public class ContractContext { public static short UPDATE_VERSION_CONTRACT_BALANCE = 9; public static short UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL = 13; + public static short PROTOCOL_14 = 14; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java index 3c09846a5d..902d346f39 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java @@ -73,4 +73,5 @@ public interface ContractCmdConstant { String TOKEN_TRANSFER_LIST = "sc_token_transfer_list"; String ACCOUNT_CONTRACTS = "sc_account_contracts"; String GET_CROSS_TOKEN_SYSTEM_CONTRACT = "sc_get_cross_token_system_contract"; + String CODE_HASH = "sc_code_hash"; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index 8fc39fa84b..b5d3d0f5c0 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -145,4 +145,5 @@ public interface ContractConstant { String RPC_RESULT_KEY = "value"; String RPC_COLLECTION_RESULT_KEY = "list"; String LINE = "_"; + String NULS = "NULS"; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 2bf087dc35..7dba6f6e49 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -44,7 +44,9 @@ import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.rpc.call.BlockCall; import io.nuls.contract.rpc.call.LedgerCall; +import io.nuls.contract.service.ContractService; import io.nuls.contract.storage.ContractAddressStorageService; +import io.nuls.contract.storage.ContractTokenAddressStorageService; import io.nuls.contract.storage.ContractTokenTransferStorageService; import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; @@ -56,12 +58,14 @@ import io.nuls.core.core.annotation.Component; import io.nuls.core.exception.NulsException; import io.nuls.core.model.ByteArrayWrapper; +import io.nuls.core.model.FormatValidUtils; import io.nuls.core.model.LongUtils; import io.nuls.core.model.StringUtils; import org.bouncycastle.util.Arrays; import java.io.IOException; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.*; import static io.nuls.contract.config.ContractContext.ASSET_ID; @@ -71,7 +75,6 @@ import static io.nuls.contract.util.ContractUtil.*; import static io.nuls.core.constant.TxType.CROSS_CHAIN; import static io.nuls.core.constant.TxType.DELETE_CONTRACT; -import static io.nuls.core.model.FormatValidUtils.validTokenNameOrSymbol; @Component public class ContractHelper { @@ -84,6 +87,10 @@ public class ContractHelper { private ContractAddressStorageService contractAddressStorageService; @Autowired private ContractTokenTransferStorageService contractTokenTransferStorageService; + @Autowired + private ContractTokenAddressStorageService contractTokenAddressStorageService; + @Autowired + private ContractService contractService; private static final BigInteger MAXIMUM_DECIMALS = BigInteger.valueOf(18L); private static final BigInteger MAXIMUM_TOTAL_SUPPLY = BigInteger.valueOf(2L).pow(256).subtract(BigInteger.ONE); @@ -134,6 +141,16 @@ public List getAllMethods(int chainId, byte[] contractCode) { return getProgramExecutor(chainId).jarMethod(contractCode); } + public byte[] getContractCode(int chainId, byte[] currentStateRoot, byte[] codeAddress) { + ProgramExecutor track = getProgramExecutor(chainId).begin(currentStateRoot); + return track.contractCode(codeAddress); + } + + public byte[] getContractCodeHash(int chainId, byte[] currentStateRoot, byte[] codeAddress) { + ProgramExecutor track = getProgramExecutor(chainId).begin(currentStateRoot); + return track.contractCodeHash(codeAddress); + } + private ProgramMethod getMethodInfo(String methodName, String methodDesc, List methods) { if (methods != null && methods.size() > 0) { boolean emptyDesc = StringUtils.isBlank(methodDesc); @@ -325,13 +342,66 @@ public ProgramResult invokeViewMethod(int chainId, ProgramExecutor executor, boo } public Result validateNrc20Contract(int chainId, ProgramExecutor track, ContractWrapperTransaction tx, ContractResult contractResult) { + ContractData createContractData = tx.getContractData(); + byte[] contractCode = createContractData.getCode(); + return this.validateNrc20Contract(chainId, track, contractResult.getContractAddress(), contractCode, contractResult); + } + + public Result validateNrc20ContractByInternalCreate(int chainId, ProgramExecutor track, ProgramInternalCreate internalCreate, ContractResult contractResult) { + Result result = this.validateNrc20Contract(chainId, track, internalCreate.getContractAddress(), internalCreate.getContractCode(), contractResult); + if (result.isSuccess()) { + ContractInternalCreate create = new ContractInternalCreate(); + create.setSender(internalCreate.getSender()); + create.setContractAddress(internalCreate.getContractAddress()); + create.setCodeCopyBy(internalCreate.getCodeCopyBy()); + create.setArgs(internalCreate.getArgs()); + create.setAcceptDirectTransfer(contractResult.isAcceptDirectTransfer()); + create.setTokenType(contractResult.getTokenType()); + create.setTokenName(contractResult.getTokenName()); + create.setTokenSymbol(contractResult.getTokenSymbol()); + create.setTokenDecimals(contractResult.getTokenDecimals()); + create.setTokenTotalSupply(contractResult.getTokenTotalSupply()); + contractResult.getInternalCreates().add(create); + } else { + contractResult.getInternalCreates().clear(); + } + // 清空本次验证得到的数据 + contractResult.setAcceptDirectTransfer(false); + contractResult.setTokenType(TokenTypeStatus.NOT_TOKEN.status()); + contractResult.setTokenName(null); + contractResult.setTokenSymbol(null); + contractResult.setTokenDecimals(0); + contractResult.setTokenTotalSupply(null); + return result; + } + + private boolean validTokenNameOrSymbol(int chainId, String name) { + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_14 ) { + if (StringUtils.isBlank(name)) { + return false; + } + + String upperCaseName = name.toUpperCase(); + if(upperCaseName.equals(ContractConstant.NULS)) { + return false; + } + + byte[] aliasBytes = name.getBytes(StandardCharsets.UTF_8); + if (aliasBytes.length < 1 || aliasBytes.length > 20) { + return false; + } + return name.matches("^([a-zA-Z0-9]+[a-zA-Z0-9_]*[a-zA-Z0-9]+)|[a-zA-Z0-9]+${1,20}"); + } else { + return FormatValidUtils.validTokenNameOrSymbol(name); + } + } + + public Result validateNrc20Contract(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { if (contractResult == null) { return Result.getFailed(ContractErrorCode.NULL_PARAMETER); } - ContractData createContractData = tx.getContractData(); - byte[] contractAddress = contractResult.getContractAddress(); long bestBlockHeight = vmContext.getBestHeight(chainId); - List methods = this.getAllMethods(chainId, createContractData.getCode()); + List methods = this.getAllMethods(chainId, contractCode); Map contractMethodsMap = new HashMap<>(); boolean isNrc20 = this.checkNrc20Contract(methods, contractMethodsMap); boolean isNrc721 = false; @@ -352,7 +422,7 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract if (programResult.isSuccess()) { String tokenName = programResult.getResult(); if (StringUtils.isNotBlank(tokenName)) { - if (!validTokenNameOrSymbol(tokenName)) { + if (!validTokenNameOrSymbol(chainId, tokenName)) { contractResult.setError(true); contractResult.setErrorMessage("The format of the name is incorrect."); return getFailed(); @@ -365,7 +435,7 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, Contract if (programResult.isSuccess()) { String symbol = programResult.getResult(); if (StringUtils.isNotBlank(symbol)) { - if (!validTokenNameOrSymbol(symbol)) { + if (!validTokenNameOrSymbol(chainId, symbol)) { contractResult.setError(true); contractResult.setErrorMessage("The format of the symbol is incorrect."); return getFailed(); @@ -577,8 +647,13 @@ public void dealNrc20Events(int chainId, byte[] newestStateRoot, Transaction tx, if (po == null) { return; } + Map infoPoMap = new HashMap<>(); + infoPoMap.put(AddressTool.getStringAddressByBytes(po.getContractAddress()), po); + this.dealNrc20Events(chainId, newestStateRoot, tx.getBlockHeight(), tx.getHash(), tx.getTime(), contractResult.getEvents(), contractResult.isSuccess(), infoPoMap); + } + + public void dealNrc20Events(int chainId, byte[] newestStateRoot, long blockHeight, NulsHash txHash, long txTime, List events, boolean execSuccess, Map infoPoMap) { try { - List events = contractResult.getEvents(); int size = events.size(); // 目前只处理Transfer事件, 为了刷新账户的token余额 String event; @@ -598,13 +673,18 @@ public void dealNrc20Events(int chainId, byte[] newestStateRoot, Transaction tx, if (!AddressTool.validAddress(chainId, contractAddress)) { continue; } - byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); - if (Arrays.areEqual(po.getContractAddress(), contractAddressBytes)) { - contractAddressInfo = po; - } else { + contractAddressInfo = infoPoMap.get(contractAddress); + if (contractAddressInfo == null) { + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); Result contractAddressInfoResult = this.getContractAddressInfo(chainId, contractAddressBytes); contractAddressInfo = contractAddressInfoResult.getData(); } + //if (Arrays.areEqual(po.getContractAddress(), contractAddressBytes)) { + // contractAddressInfo = po; + //} else { + // Result contractAddressInfoResult = this.getContractAddressInfo(chainId, contractAddressBytes); + // contractAddressInfo = contractAddressInfoResult.getData(); + //} if (contractAddressInfo == null) { continue; @@ -619,18 +699,18 @@ public void dealNrc20Events(int chainId, byte[] newestStateRoot, Transaction tx, tokenTransferInfoPo.setName(contractAddressInfo.getNrc20TokenName()); tokenTransferInfoPo.setSymbol(contractAddressInfo.getNrc20TokenSymbol()); tokenTransferInfoPo.setDecimals(contractAddressInfo.getDecimals()); - tokenTransferInfoPo.setTime(tx.getTime()); - tokenTransferInfoPo.setBlockHeight(tx.getBlockHeight()); - txHashBytes = tx.getHash().getBytes(); + tokenTransferInfoPo.setTime(txTime); + tokenTransferInfoPo.setBlockHeight(blockHeight); + txHashBytes = txHash.getBytes(); tokenTransferInfoPo.setTxHash(txHashBytes); - tokenTransferInfoPo.setStatus((byte) (contractResult.isSuccess() ? 1 : 2)); + tokenTransferInfoPo.setStatus((byte) (execSuccess ? 1 : 2)); if (from != null) { - this.refreshTokenBalance(chainId, newestStateRoot, tx.getBlockHeight(), contractAddressInfo, AddressTool.getStringAddressByBytes(from), contractAddress); + this.refreshTokenBalance(chainId, newestStateRoot, blockHeight, contractAddressInfo, AddressTool.getStringAddressByBytes(from), contractAddress); this.saveTokenTransferInfo(chainId, from, txHashBytes, new VarInt(i).encode(), tokenTransferInfoPo); } if (to != null) { - this.refreshTokenBalance(chainId, newestStateRoot, tx.getBlockHeight(), contractAddressInfo, AddressTool.getStringAddressByBytes(to), contractAddress); + this.refreshTokenBalance(chainId, newestStateRoot, blockHeight, contractAddressInfo, AddressTool.getStringAddressByBytes(to), contractAddress); this.saveTokenTransferInfo(chainId, to, txHashBytes, new VarInt(i).encode(), tokenTransferInfoPo); } } @@ -642,11 +722,12 @@ public void dealNrc20Events(int chainId, byte[] newestStateRoot, Transaction tx, } public void rollbackNrc20Events(int chainId, Transaction tx, ContractResult contractResult) { - try { - byte[] txHashBytes = null; - txHashBytes = tx.getHash().getBytes(); + this.rollbackNrc20Events(chainId, tx.getHash(), contractResult.getEvents()); + } - List events = contractResult.getEvents(); + public void rollbackNrc20Events(int chainId, NulsHash txHasah, List events) { + try { + byte[] txHashBytes = txHasah.getBytes(); int size = events.size(); // 目前只处理Transfer事件, 为了刷新账户的token余额 String event; @@ -747,6 +828,10 @@ public ProgramStatus getContractStatus(int chainId, byte[] stateRoot, byte[] con public ContractResult makeFailedContractResult(int chainId, ContractWrapperTransaction tx, CallableResult callableResult, String errorMsg) { ContractResult contractResult = ContractResult.genFailed(tx.getContractData(), errorMsg); + // add by pierre at 2022/6/17 p14 没有经过虚拟机的交易,不再扣除Gas费用 + if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_14) { + contractResult.setGasUsed(0); + } makeContractResult(tx, contractResult); if (callableResult != null) { callableResult.putFailed(chainId, contractResult); @@ -819,4 +904,99 @@ public ContractReturnGasTransaction makeReturnGasTx(List resultL } return null; } + + public Result onCommitForCreateV14(int chainId, BlockHeader blockHeader, ContractCreate contractCreate, + NulsHash hash, long txTime, byte[] contractAddress, byte[] sender, byte[] contractCode, String alias, Map infoPoMap) throws Exception { + long blockHeight = blockHeader.getHeight(); + + + String contractAddressStr = AddressTool.getStringAddressByBytes(contractAddress); + + ContractAddressInfoPo info = new ContractAddressInfoPo(); + info.setContractAddress(contractAddress); + info.setSender(sender); + info.setCreateTxHash(hash.getBytes()); + info.setAlias(alias); + info.setCreateTime(txTime); + info.setBlockHeight(blockHeight); + + boolean isNrc20Contract = TOKEN_TYPE_NRC20 == contractCreate.getTokenType(); + boolean isNrc721Contract = TOKEN_TYPE_NRC721 == contractCreate.getTokenType(); + boolean acceptDirectTransfer = contractCreate.isAcceptDirectTransfer(); + info.setAcceptDirectTransfer(acceptDirectTransfer); + info.setNrc20(isNrc20Contract); + info.setTokenType(contractCreate.getTokenType()); + do { + if (!isNrc20Contract && !isNrc721Contract) { + break; + } + // 获取 token tracker + // 处理NRC20/NRC721 token数据 + String tokenName = contractCreate.getTokenName(); + String tokenSymbol = contractCreate.getTokenSymbol(); + int tokenDecimals = contractCreate.getTokenDecimals(); + BigInteger tokenTotalSupply = contractCreate.getTokenTotalSupply(); + info.setNrc20TokenName(tokenName); + info.setNrc20TokenSymbol(tokenSymbol); + if (!isNrc20Contract) { + break; + } + // 处理NRC20 token数据 + info.setDecimals(tokenDecimals); + info.setTotalSupply(tokenTotalSupply); + + // 保存NRC20-token地址 + Result result = contractTokenAddressStorageService.saveTokenAddress(chainId, contractAddress); + if (result.isFailed()) { + return result; + } + // 调用账本模块,登记资产id,当NRC20合约存在[transferCrossChain]方法时,才登记资产id + List methods = this.getAllMethods(chainId, contractCode); + boolean isNewNrc20 = false; + for(ProgramMethod method : methods) { + if(ContractConstant.CROSS_CHAIN_NRC20_CONTRACT_TRANSFER_OUT_METHOD_NAME.equals(method.getName()) && + ContractConstant.CROSS_CHAIN_NRC20_CONTRACT_TRANSFER_OUT_METHOD_DESC.equals(method.getDesc())) { + isNewNrc20 = true; + break; + } + } + if(isNewNrc20) { + Log.info("CROSS-NRC20-TOKEN contract [{}] 向账本注册合约资产", contractAddressStr); + Map resultMap = LedgerCall.commitNRC20Assets(chainId, tokenName, tokenSymbol, (short) tokenDecimals, tokenTotalSupply, contractAddressStr); + if(resultMap != null) { + // 缓存合约地址和合约资产ID + int assetId = Integer.parseInt(resultMap.get("assetId").toString()); + Chain chain = this.getChain(chainId); + Map tokenAssetsInfoMap = chain.getTokenAssetsInfoMap(); + Map tokenAssetsContractAddressInfoMap = chain.getTokenAssetsContractAddressInfoMap(); + tokenAssetsInfoMap.put(contractAddressStr, new ContractTokenAssetsInfo(chainId, assetId)); + tokenAssetsContractAddressInfoMap.put(chainId + "-" + assetId, contractAddressStr); + } + } + } while (false); + infoPoMap.put(contractAddressStr, info); + return contractAddressStorageService.saveContractAddress(chainId, contractAddress, info); + } + + public Result onRollbackForCreateV14(int chainId, byte[] contractAddress, boolean isNrc20) throws Exception { + String contractAddressStr = AddressTool.getStringAddressByBytes(contractAddress); + // 调用账本模块,回滚已登记的资产id + if(isNrc20) { + LedgerCall.rollBackNRC20Assets(chainId, AddressTool.getStringAddressByBytes(contractAddress)); + // 清理缓存 + Chain chain = this.getChain(chainId); + Map tokenAssetsInfoMap = chain.getTokenAssetsInfoMap(); + ContractTokenAssetsInfo tokenAssetsInfo = tokenAssetsInfoMap.remove(contractAddressStr); + if(tokenAssetsInfo != null) { + Map tokenAssetsContractAddressInfoMap = chain.getTokenAssetsContractAddressInfoMap(); + tokenAssetsContractAddressInfoMap.remove(chainId + "-" + tokenAssetsInfo.getAssetId()); + } + } + //this.rollbackNrc20Events(chainId, tx, contractResult); + Result result = contractAddressStorageService.deleteContractAddress(chainId, contractAddress); + if (result.isFailed()) { + return result; + } + return contractTokenAddressStorageService.deleteTokenAddress(chainId, contractAddress); + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java index 24c0ed7f52..5d25c13d82 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/manager/ContractTxValidatorManager.java @@ -55,6 +55,9 @@ public Result createValidator(int chainId, CreateContractTransaction tx) throws } public Result callValidator(int chainId, CallContractTransaction tx) throws NulsException { + if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_14) { + return callContractTxValidator.validateV14(chainId, tx); + } if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL) { return callContractTxValidator.validateV13(chainId, tx); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java index 5d8d973914..66dc9a4929 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/Chain.java @@ -189,6 +189,12 @@ public void clearOldBatchInfo() { this.verifyBatchInfo = null; } + public void clearBatchInfo() { + Log.info("clear BatchInfo."); + this.batchInfoV8 = null; + this.verifyBatchInfoV8 = null; + } + public BatchInfoV8 getBatchInfoV8() { Integer blockType = currentThreadBlockType.get(); if(blockType == null) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java new file mode 100644 index 0000000000..b761fce6cf --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java @@ -0,0 +1,86 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.contract.model.bo; + +import java.math.BigInteger; + +// add by pierre at 2022/6/1 p14 +public class ContractCreate { + private boolean acceptDirectTransfer; + // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 + private int tokenType; + private String tokenName; + private String tokenSymbol; + private int tokenDecimals; + private BigInteger tokenTotalSupply; + + public boolean isAcceptDirectTransfer() { + return acceptDirectTransfer; + } + + public void setAcceptDirectTransfer(boolean acceptDirectTransfer) { + this.acceptDirectTransfer = acceptDirectTransfer; + } + + public int getTokenType() { + return tokenType; + } + + public void setTokenType(int tokenType) { + this.tokenType = tokenType; + } + + public String getTokenName() { + return tokenName; + } + + public void setTokenName(String tokenName) { + this.tokenName = tokenName; + } + + public String getTokenSymbol() { + return tokenSymbol; + } + + public void setTokenSymbol(String tokenSymbol) { + this.tokenSymbol = tokenSymbol; + } + + public int getTokenDecimals() { + return tokenDecimals; + } + + public void setTokenDecimals(int tokenDecimals) { + this.tokenDecimals = tokenDecimals; + } + + public BigInteger getTokenTotalSupply() { + return tokenTotalSupply; + } + + public void setTokenTotalSupply(BigInteger tokenTotalSupply) { + this.tokenTotalSupply = tokenTotalSupply; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractInternalCreate.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractInternalCreate.java new file mode 100644 index 0000000000..b931ad7b0e --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractInternalCreate.java @@ -0,0 +1,65 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.contract.model.bo; + +// add by pierre at 2022/6/1 p14 +public class ContractInternalCreate extends ContractCreate{ + private byte[] sender;// 创建者 + private byte[] contractAddress;// 合约地址 + private byte[] codeCopyBy;// 内部创建所依据的合约 + private String[][] args;// 参数列表 + + public byte[] getSender() { + return sender; + } + + public void setSender(byte[] sender) { + this.sender = sender; + } + + public byte[] getContractAddress() { + return contractAddress; + } + + public void setContractAddress(byte[] contractAddress) { + this.contractAddress = contractAddress; + } + + public byte[] getCodeCopyBy() { + return codeCopyBy; + } + + public void setCodeCopyBy(byte[] codeCopyBy) { + this.codeCopyBy = codeCopyBy; + } + + public String[][] getArgs() { + return args; + } + + public void setArgs(String[][] args) { + this.args = args; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java index 76b86d3763..d220aba159 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java @@ -30,9 +30,9 @@ import io.nuls.contract.model.tx.ContractTransferTransaction; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.vm.program.ProgramAccount; +import io.nuls.contract.vm.program.ProgramInternalCreate; import io.nuls.contract.vm.program.ProgramInvokeRegisterCmd; import io.nuls.contract.vm.program.ProgramTransfer; -import org.ethereum.db.ByteArrayWrapper; import java.math.BigInteger; import java.util.ArrayList; @@ -99,11 +99,30 @@ public class ContractResult { private boolean isTerminated; private Set contractAddressInnerCallSet; private List mergerdMultyAssetTransferList = new ArrayList<>(); + // add by pierre at 2022/6/2 p14 + private List internalCreates = new ArrayList<>(); + private transient List programInternalCreates = new ArrayList<>(); private transient Object txTrack; private transient Map accounts; private transient List orderedInnerTxs = new ArrayList<>(); + public List getInternalCreates() { + return internalCreates; + } + + public void setInternalCreates(List internalCreates) { + this.internalCreates = internalCreates; + } + + public List getProgramInternalCreates() { + return programInternalCreates; + } + + public void setProgramInternalCreates(List programInternalCreates) { + this.programInternalCreates = programInternalCreates; + } + public Map getAccounts() { return accounts; } @@ -139,7 +158,7 @@ public int hashCode() { return result; } - public static ContractResult genFailed(ContractData contractData) { + private static ContractResult genFailed(ContractData contractData) { ContractResult contractResult = new ContractResult(); contractResult.setContractAddress(contractData.getContractAddress()); contractResult.setGasUsed(contractData.getGasLimit()); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInternalCreateDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInternalCreateDto.java new file mode 100644 index 0000000000..72add315f4 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInternalCreateDto.java @@ -0,0 +1,89 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + + +import io.nuls.base.basic.AddressTool; +import io.nuls.contract.model.bo.ContractInternalCreate; +import io.nuls.contract.model.txdata.ContractData; +import io.nuls.contract.model.txdata.CreateContractData; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +import java.util.Arrays; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractInternalCreateDto { + @ApiModelProperty(description = "交易创建者地址") + private String sender; + @ApiModelProperty(description = "创建的合约地址") + private String contractAddress; + @ApiModelProperty(description = "内部创建所依据的合约") + private String codeCopyBy; + @ApiModelProperty(description = "参数列表") + private String args; + + public ContractInternalCreateDto(ContractInternalCreate internalCreate) { + this.sender = AddressTool.getStringAddressByBytes(internalCreate.getSender()); + this.contractAddress = AddressTool.getStringAddressByBytes(internalCreate.getContractAddress()); + this.codeCopyBy = AddressTool.getStringAddressByBytes(internalCreate.getCodeCopyBy()); + this.args = internalCreate.getArgs() == null ? null : Arrays.deepToString(internalCreate.getArgs()); + } + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public String getCodeCopyBy() { + return codeCopyBy; + } + + public void setCodeCopyBy(String codeCopyBy) { + this.codeCopyBy = codeCopyBy; + } + + public String getArgs() { + return args; + } + + public void setArgs(String args) { + this.args = args; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 00625a05b7..81a442bddb 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -25,6 +25,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.contract.enums.CmdRegisterMode; +import io.nuls.contract.model.bo.ContractInternalCreate; import io.nuls.contract.model.bo.ContractMergedTransfer; import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; import io.nuls.contract.model.bo.ContractResult; @@ -41,8 +42,10 @@ import java.math.BigInteger; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC20; import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC721; @@ -97,6 +100,8 @@ public class ContractResultDto { private List contractTxList; @ApiModelProperty(description = "备注") private String remark; + @ApiModelProperty(description = "内部创建的合约列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractInternalCreateDto.class)) + private List internalCreates; public ContractResultDto() { } @@ -136,6 +141,7 @@ public ContractResultDto(int chainId, ContractResult result, ContractBaseTransac if (result.isSuccess()) { this.makeTokenTransfers(chainId, result.getEvents()); this.makeInvokeRegisterCmds(result.getInvokeRegisterCmds()); + this.makeInternalCreates(result.getInternalCreates()); } } @@ -164,6 +170,7 @@ public ContractResultDto(int chainId, ContractResult result, long gasLimit) thro if (result.isSuccess()) { this.makeTokenTransfers(chainId, result.getEvents()); this.makeInvokeRegisterCmds(result.getInvokeRegisterCmds()); + this.makeInternalCreates(result.getInternalCreates()); } } @@ -183,6 +190,14 @@ private void makeInvokeRegisterCmds(List invokeRegiste } } + private void makeInternalCreates(List internalCreates) { + if (internalCreates != null && internalCreates.size() > 0) { + this.internalCreates = internalCreates.stream().map(ic -> new ContractInternalCreateDto(ic)).collect(Collectors.toList()); + } else { + this.internalCreates = Collections.EMPTY_LIST; + } + } + public List getTokenTransfers() { return tokenTransfers == null ? new ArrayList<>() : tokenTransfers; } @@ -397,4 +412,12 @@ public List getContractTxList() { public void setContractTxList(List contractTxList) { this.contractTxList = contractTxList; } + + public List getInternalCreates() { + return internalCreates == null ? Collections.EMPTY_LIST : internalCreates; + } + + public void setInternalCreates(List internalCreates) { + this.internalCreates = internalCreates; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java index aebc7d6108..0db551b8ca 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java @@ -26,8 +26,10 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.BlockHeader; +import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.model.bo.ContractInternalCreate; import io.nuls.contract.model.bo.ContractResult; import io.nuls.contract.model.bo.ContractWrapperTransaction; import io.nuls.contract.model.dto.CallContractDataDto; @@ -49,6 +51,10 @@ import io.nuls.core.parse.JSONUtils; import org.bouncycastle.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import static io.nuls.contract.util.ContractUtil.getFailed; /** @@ -244,5 +250,83 @@ public Result onRollbackV8(int chainId, ContractWrapperTransaction tx) { } } + // add by pierre at 2022/6/6 p14 + public Result onCommitV14(int chainId, ContractWrapperTransaction tx) { + try { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + byte[] stateRoot = blockHeader.getStateRoot(); + long blockHeight = blockHeader.getHeight(); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + + // 保存代币交易 + ContractData callContractData = tx.getContractData(); + byte[] contractAddress = callContractData.getContractAddress(); + String contractAddressStr = AddressTool.getStringAddressByBytes(contractAddress); + + Result contractAddressInfoPoResult = contractHelper.getContractAddressInfo(chainId, contractAddress); + ContractAddressInfoPo contractAddressInfoPo = contractAddressInfoPoResult.getData(); + contractResult.setNrc20(contractAddressInfoPo.isNrc20()); + tx.setBlockHeight(blockHeight); + + Map infoPoMap = new HashMap<>(); + infoPoMap.put(contractAddressStr, contractAddressInfoPo); + // 处理内部创建合约 + List internalCreates = contractResult.getInternalCreates(); + if (internalCreates != null && !internalCreates.isEmpty()) { + for (ContractInternalCreate internalCreate : internalCreates) { + Result result = contractHelper.onCommitForCreateV14(chainId, blockHeader, internalCreate, tx.getHash(), tx.getTime(), internalCreate.getContractAddress(), + internalCreate.getSender(), contractHelper.getContractCode(chainId, stateRoot, internalCreate.getCodeCopyBy()), "internal_create", infoPoMap); + if (result.isFailed()) { + return result; + } + } + } + // 处理合约事件 + contractHelper.dealNrc20Events(chainId, stateRoot, blockHeight, tx.getHash(), tx.getTime(), contractResult.getEvents(), contractResult.isSuccess(), infoPoMap); + + // 保存合约执行结果 + return contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + } catch (Exception e) { + Log.error("save call contract tx error.", e); + return getFailed(); + } + } + + public Result onRollbackV14(int chainId, ContractWrapperTransaction tx) { + try { + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return ContractUtil.getSuccess(); + } + try { + CallContractData contractData = (CallContractData) tx.getContractData(); + Log.info("rollback call tx, contract data is {}, result is {}", JSONUtils.obj2json(new CallContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace call rollback log, error is {}", e.getMessage()); + } + contractHelper.rollbackNrc20Events(chainId, tx.getHash(), contractResult.getEvents()); + // 处理内部创建合约 + List internalCreates = contractResult.getInternalCreates(); + if (internalCreates != null && !internalCreates.isEmpty()) { + for (ContractInternalCreate internalCreate : internalCreates) { + Result result = contractHelper.onRollbackForCreateV14(chainId, internalCreate.getContractAddress(), internalCreate.getTokenType() == ContractConstant.TOKEN_TYPE_NRC20); + if (result.isFailed()) { + return result; + } + } + } + // 删除合约执行结果 + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } catch (Exception e) { + Log.error("rollback call contract tx error.", e); + return getFailed(); + } + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java index c55eef8f5f..2a9c5ceb76 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java @@ -31,15 +31,10 @@ import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.helper.ContractHelper; -import io.nuls.contract.model.bo.Chain; -import io.nuls.contract.model.bo.ContractResult; -import io.nuls.contract.model.bo.ContractTokenAssetsInfo; -import io.nuls.contract.model.bo.ContractWrapperTransaction; -import io.nuls.contract.model.dto.CallContractDataDto; +import io.nuls.contract.model.bo.*; import io.nuls.contract.model.dto.ContractResultDto; import io.nuls.contract.model.dto.CreateContractDataDto; import io.nuls.contract.model.po.ContractAddressInfoPo; -import io.nuls.contract.model.txdata.CallContractData; import io.nuls.contract.model.txdata.ContractData; import io.nuls.contract.model.txdata.CreateContractData; import io.nuls.contract.rpc.call.LedgerCall; @@ -53,11 +48,9 @@ import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.parse.JSONUtils; -import java.math.BigInteger; -import java.util.List; -import java.util.Map; import java.math.BigInteger; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -350,5 +343,69 @@ public Result onRollbackV8(int chainId, ContractWrapperTransaction tx) throws Ex return contractService.deleteContractExecuteResult(chainId, tx.getHash()); } + // add by pierre at 2022/6/6 p14 + public Result onCommitV14(int chainId, ContractWrapperTransaction tx) throws Exception { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + long blockHeight = blockHeader.getHeight(); + tx.setBlockHeight(blockHeight); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + Result saveContractExecuteResult = contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + if (saveContractExecuteResult.isFailed()) { + return saveContractExecuteResult; + } + // 执行失败的合约直接返回 + if (!contractResult.isSuccess()) { + return getSuccess(); + } + CreateContractData txData = (CreateContractData) tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + byte[] sender = txData.getSender(); + String alias = txData.getAlias(); + byte[] code = txData.getCode(); + byte[] newestStateRoot = blockHeader.getStateRoot(); + + ContractCreate create = new ContractCreate(); + create.setTokenType(contractResult.getTokenType()); + create.setTokenName(contractResult.getTokenName()); + create.setTokenSymbol(contractResult.getTokenSymbol()); + create.setTokenDecimals(contractResult.getTokenDecimals()); + create.setTokenTotalSupply(contractResult.getTokenTotalSupply()); + create.setAcceptDirectTransfer(contractResult.isAcceptDirectTransfer()); + Map infoPoMap = new HashMap<>(); + Result result = contractHelper.onCommitForCreateV14(chainId, blockHeader, create, tx.getHash(), tx.getTime(), contractAddress, sender, code, alias, infoPoMap); + if (result.isFailed()) { + return result; + } + //处理NRC20合约事件 + contractHelper.dealNrc20Events(chainId, newestStateRoot, blockHeight, tx.getHash(), tx.getTime(), contractResult.getEvents(), contractResult.isSuccess(), infoPoMap); + return result; + } + + public Result onRollbackV14(int chainId, ContractWrapperTransaction tx) throws Exception { + ContractData txData = tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return Result.getSuccess(null); + } + try { + CreateContractData contractData = (CreateContractData) tx.getContractData(); + Log.info("rollback create tx, contract data is {}, result is {}", JSONUtils.obj2json(new CreateContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace create rollback log, error is {}", e.getMessage()); + } + contractHelper.rollbackNrc20Events(chainId, tx.getHash(), contractResult.getEvents()); + Result result = contractHelper.onRollbackForCreateV14(chainId, contractAddress, contractResult.isNrc20()); + if (result.isFailed()) { + return result; + } + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java index 1cb1c51a05..bb10c0bc45 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/cmd/ContractCmd.java @@ -139,7 +139,21 @@ public Response invokeContractOneByOne(Map params) { tx.parse(RPCUtil.decode(txData), 0); String hash = tx.getHash().toHex(); Map dealResult = new HashMap<>(2); - if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_14 ) { + // add by pierre at 2022/6/2 p14 + Result result = contractService.invokeContractOneByOneV14(chainId, tx); + if (result.isFailed()) { + return wrapperFailed(result); + } + if (result.getData() == null) { + Map resultData = new HashMap<>(); + resultData.put("success", true); + resultData.put("gasUsed", 0); + resultData.put("txList", List.of()); + return success(resultData); + } + return success(result.getData()); + } else if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET ) { Result result = contractService.invokeContractOneByOneV8(chainId, tx); if (result.isFailed()) { return wrapperFailed(result); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 25eaf1a5ca..4aa311d2f6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -1009,6 +1009,45 @@ public Response invokeView(Map params) { } } + @CmdAnnotation(cmd = CODE_HASH, version = 1.0, description = "get code hash of contract") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "code hash(Keccak256)") + })) + public Response codeHash(Map params) { + try { + Integer chainId = (Integer) params.get("chainId"); + ChainManager.chainHandle(chainId); + String contractAddress = (String) params.get("contractAddress"); + + if (!AddressTool.validAddress(chainId, contractAddress)) { + return failed(ADDRESS_ERROR); + } + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddressBytes)) { + return failed(CONTRACT_ADDRESS_NOT_EXIST); + } + BlockHeader blockHeader = BlockCall.getLatestBlockHeader(chainId); + // 当前区块状态根 + byte[] prevStateRoot = ContractUtil.getStateRoot(blockHeader); + byte[] codeHash = contractHelper.getContractCodeHash(chainId, prevStateRoot, contractAddressBytes); + if (codeHash == null) { + Result result = Result.getFailed(ContractErrorCode.DATA_NOT_FOUND); + return wrapperFailed(result); + } else { + Map resultMap = MapUtil.createLinkedHashMap(2); + resultMap.put("result", HexUtil.encode(codeHash)); + return success(resultMap); + } + } catch (Exception e) { + Log.error(e); + return failed(e.getMessage()); + } + } + @CmdAnnotation(cmd = CONSTRUCTOR, version = 1.0, description = "contract code constructor") @Parameters(description = "参数", value = { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java index a8bd00795e..41c75a1713 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/ContractService.java @@ -55,6 +55,9 @@ public interface ContractService { Result invokeContractOneByOneV8(int chainId, ContractTempTransaction tx); + // add by pierre at 2022/6/2 p14 + Result invokeContractOneByOneV14(int chainId, ContractTempTransaction tx); + Result saveContractExecuteResult(int chainId, NulsHash hash, ContractResult contractResult); Result deleteContractExecuteResult(int chainId, NulsHash hash); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java index c86df55c17..c0028619b7 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractCallerImpl.java @@ -64,10 +64,10 @@ public class ContractCallerImpl implements ContractCaller { static { int threadCount = 4; // 线程数最大4个,线程核心小于4时,使用线程核心数 - int availableProcessors = Runtime.getRuntime().availableProcessors(); - if(availableProcessors < threadCount) { - threadCount = availableProcessors; - } + //int availableProcessors = Runtime.getRuntime().availableProcessors(); + //if(availableProcessors < threadCount) { + // threadCount = availableProcessors; + //} TX_EXECUTOR_SERVICE = new ThreadPoolExecutor( threadCount, diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java index a2156b1289..ad1af3211d 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractExecutorImpl.java @@ -23,7 +23,6 @@ */ package io.nuls.contract.service.impl; -import io.nuls.base.basic.AddressTool; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.helper.ContractTxHelper; @@ -39,9 +38,6 @@ import io.nuls.core.crypto.HexUtil; import java.math.BigInteger; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; /** * @author: PierreLuo @@ -154,6 +150,8 @@ public ContractResult call(ProgramExecutor executor, ContractData call, long num contractResult.setInvokeRegisterCmds(programResult.getInvokeRegisterCmds()); contractResult.setOrderedInnerTxs(programResult.getOrderedInnerTxs()); contractResult.setContractAddressInnerCallSet(contractTxHelper.generateInnerCallSet(programResult.getInternalCalls())); + // add by pierre at 2022/6/2 p14 + contractResult.setProgramInternalCreates(programResult.getInternalCreates()); contractResult.setAccounts(programResult.getAccounts()); return contractResult; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java index 201b434b60..6eb012af57 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractServiceImpl.java @@ -28,6 +28,7 @@ import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; +import io.nuls.contract.callable.ContractTxCallableV14; import io.nuls.contract.callable.ContractTxCallableV8; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.CmdRegisterMode; @@ -262,6 +263,43 @@ public Result invokeContractOneByOneV8(int chainId, ContractTempTransaction tx) } } + @Override + public Result invokeContractOneByOneV14(int chainId, ContractTempTransaction tx) { + // add by pierre at 2022/6/2 p14 + try { + Log.info("[Invoke Contract] TxType is [{}], hash is [{}]", tx.getType(), tx.getHash().toString()); + tx.setChainId(chainId); + ContractWrapperTransaction wrapperTx = ContractUtil.parseContractTransaction(tx, chainManager); + if (wrapperTx == null) { + return getSuccess(); + } + Chain chain = contractHelper.getChain(chainId); + BatchInfoV8 batchInfo = chain.getBatchInfoV8(); + wrapperTx.setOrder(batchInfo.getAndIncreaseTxCounter()); + // 验证合约交易 + Result validResult = this.validContractTx(chainId, tx); + if (validResult.isFailed()) { + return validResult; + } + String preStateRoot = batchInfo.getPreStateRoot(); + ProgramExecutor batchExecutor = batchInfo.getBatchExecutor(); + // 执行合约 + Result result = callTxV14(chainId, batchExecutor, wrapperTx, preStateRoot, batchInfo); + if (result.isSuccess()) { + Map _result = new HashMap<>(); + Map map = (Map) result.getData(); + _result.put("success", map.get("success")); + _result.put("gasUsed", map.get("gasUsed")); + _result.put("txList", map.get("txList")); + return result.setData(_result); + } + return result; + } catch (NulsException e) { + Log.error(e); + return Result.getFailed(e.getErrorCode() == null ? FAILED : e.getErrorCode()); + } + } + protected Result callTx(int chainId, ProgramExecutor batchExecutor, ContractWrapperTransaction tx, String preStateRoot, BatchInfoV8 batchInfo) { try { ContractData contractData = tx.getContractData(); @@ -284,6 +322,28 @@ protected Result callTx(int chainId, ProgramExecutor batchExecutor, ContractWrap } } + protected Result callTxV14(int chainId, ProgramExecutor batchExecutor, ContractWrapperTransaction tx, String preStateRoot, BatchInfoV8 batchInfo) { + try { + ContractData contractData = tx.getContractData(); + Integer blockType = Chain.currentThreadBlockType(); + byte[] contractAddressBytes = contractData.getContractAddress(); + String contract = AddressTool.getStringAddressByBytes(contractAddressBytes); + BlockHeader currentBlockHeader = batchInfo.getCurrentBlockHeader(); + long blockTime = currentBlockHeader.getTime(); + long lastestHeight = currentBlockHeader.getHeight() - 1; + ContractTxCallableV14 txCallable = new ContractTxCallableV14(chainId, blockType, blockTime, batchExecutor, contract, tx, lastestHeight, preStateRoot); + ContractResult contractResult = txCallable.call(); + batchInfo.getContractResultMap().put(tx.getHash().toString(), contractResult); + // 提取需要返回的结果数据 + Map result = this.extractDataFromContractResult(contractResult); + batchInfo.getOfflineTxHashList().addAll((List)result.get("txHashList")); + return getSuccess().setData(result); + } catch (Exception e) { + Log.error(e); + return getFailed(); + } + } + protected Map extractDataFromContractResult(ContractResult contractResult) throws IOException { List offlineTxHashList = new ArrayList<>(); List resultTxList = new ArrayList<>(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java index 81cb57426c..54abef56dd 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/service/impl/ContractTxServiceImpl.java @@ -139,12 +139,12 @@ public Result contractCallTx(int chainId, String sender, BigInteger value, Long return signAndBroadcastTxResult; } - // 保存未确认Token转账 + /*// 保存未确认Token转账 Result unConfirmedTokenTransferResult = this.saveUnConfirmedTokenTransfer(chainId, tx, sender, contractAddress, methodName, args); if (unConfirmedTokenTransferResult.isFailed()) { return unConfirmedTokenTransferResult; } - byte[] infoKey = unConfirmedTokenTransferResult.getData(); + byte[] infoKey = unConfirmedTokenTransferResult.getData();*/ Map resultMap = new HashMap<>(2); resultMap.put("txHash", tx.getHash().toHex()); @@ -169,6 +169,7 @@ public Result previewContractCallTx(int chainId, byte[] senderBy return contractTxHelper.previewCall(chainId, senderBytes, contractAddressBytes, value, gasLimit, price, methodName, methodDesc, args, multyAssetValues); } + @Deprecated private Result saveUnConfirmedTokenTransfer(int chainId, CallContractTransaction tx, String sender, String contractAddress, String methodName, String[][] args) { try { ContractTokenBalanceManager tokenBalanceManager = contractHelper.getChain(chainId).getContractTokenBalanceManager(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index 409786553c..8c6cf8779b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -33,6 +33,7 @@ public static SmartContractVersionChangeInvoker instance() { } private boolean isloadV8 = false; + private boolean isloadV14 = false; /** * @@ -46,7 +47,9 @@ public void process(int currentChainId) { Short currentVersion = ProtocolGroupManager.getCurrentVersion(currentChainId); Log.info("触发协议升级,chainId: [{}], 版本为: [{}]", currentChainId, currentVersion); ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); - if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { + if (currentVersion >= ContractContext.PROTOCOL_14) { + this.loadV14(chainManager.getChainMap().get(currentChainId), currentVersion); + } else if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { this.loadV8(chainManager.getChainMap().get(currentChainId), currentVersion); } // 向交易模块设置智能合约生成交易类型 @@ -107,4 +110,14 @@ private void loadV8(Chain chain, int currentVersion) { VMFactory.reInitVM_v8(); isloadV8 = true; } + + private void loadV14(Chain chain, int currentVersion) { + if (isloadV14) { + return; + } + chain.clearBatchInfo(); + Log.info("版本[{}]协议升级成功,重新初始化智能合约VM", currentVersion); + VMFactory.reInitVM_v14(); + isloadV14 = true; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CallContractProcessorV14.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CallContractProcessorV14.java new file mode 100644 index 0000000000..3df99e2629 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CallContractProcessorV14.java @@ -0,0 +1,127 @@ +package io.nuls.contract.tx.v14; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.config.ContractContext; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.processor.CallContractTxProcessor; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CallContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +// add by pierre at 2022/6/2 p14 +@Component("CallContractProcessorV14") +public class CallContractProcessorV14 implements TransactionProcessor { + + @Autowired + private CallContractTxProcessor callContractTxProcessor; + @Autowired + private CallContractTxValidator callContractTxValidator; + @Autowired + private ContractHelper contractHelper; + @Autowired + private ChainManager chainManager; + + @Override + public int getType() { + return TxType.CALL_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CallContractTransaction callTx; + for(Transaction tx : txs) { + callTx = new CallContractTransaction(); + callTx.copyTx(tx); + try { + Result validate = callContractTxValidator.validateV14(chainId, callTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}, txType: {}", txHash, tx.getType()); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + callContractTxProcessor.onCommitV14(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CallContractData call; + for (Transaction tx : txs) { + if (tx.getType() == TxType.CROSS_CHAIN) { + call = ContractUtil.parseCrossChainTx(tx, chainManager); + if (call == null) { + continue; + } + } else { + call = new CallContractData(); + call.parse(tx.getTxData(), 0); + } + callContractTxProcessor.onRollbackV14(chainId, new ContractWrapperTransaction(tx, call)); + } + return true; + } catch (NulsException e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CreateContractProcessorV14.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CreateContractProcessorV14.java new file mode 100644 index 0000000000..1a22990828 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v14/CreateContractProcessorV14.java @@ -0,0 +1,115 @@ +package io.nuls.contract.tx.v14; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.tx.CreateContractTransaction; +import io.nuls.contract.model.txdata.CreateContractData; +import io.nuls.contract.processor.CreateContractTxProcessor; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CreateContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +// add by pierre at 2022/6/6 p14 +@Component("CreateContractProcessorV14") +public class CreateContractProcessorV14 implements TransactionProcessor { + + @Autowired + private CreateContractTxProcessor createContractTxProcessor; + @Autowired + private CreateContractTxValidator createContractTxValidator; + @Autowired + private ContractHelper contractHelper; + + @Override + public int getType() { + return TxType.CREATE_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CreateContractTransaction createTx; + for(Transaction tx : txs) { + createTx = new CreateContractTransaction(); + createTx.copyTx(tx); + try { + Result validate = createContractTxValidator.validate(chainId, createTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}", txHash); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + createContractTxProcessor.onCommitV14(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CreateContractData create; + for (Transaction tx : txs) { + create = new CreateContractData(); + create.parse(tx.getTxData(), 0); + createContractTxProcessor.onRollbackV14(chainId, new ContractWrapperTransaction(tx, create)); + } + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index d8f32e1ddf..d1a7c37d66 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -28,6 +28,7 @@ import io.nuls.base.basic.NulsByteBuffer; import io.nuls.base.data.*; import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.base.signture.MultiSignTxSignature; import io.nuls.base.signture.P2PHKSignature; import io.nuls.base.signture.TransactionSignature; import io.nuls.contract.config.ContractContext; @@ -749,18 +750,25 @@ public static int extractTxTypeFromTx(String txString) throws NulsException { return byteBuffer.readUint16(); } - public static byte[] extractPublicKey(Transaction tx) { + public static byte[] extractPublicKey(Transaction tx) throws NulsException { if (tx.getTransactionSignature() == null) { return null; } - TransactionSignature signature = new TransactionSignature(); - try { - signature.parse(tx.getTransactionSignature(), 0); - } catch (NulsException e) { - Log.error(e); - return null; + List p2PHKSignatures; + if (tx.isMultiSignTx()) { + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.parse(tx.getTransactionSignature(), 0); + p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + } else { + TransactionSignature signature = new TransactionSignature(); + try { + signature.parse(tx.getTransactionSignature(), 0); + } catch (NulsException e) { + Log.error(e); + return null; + } + p2PHKSignatures = signature.getP2PHKSignatures(); } - List p2PHKSignatures = signature.getP2PHKSignatures(); P2PHKSignature p2PHKSignature = p2PHKSignatures.get(0); byte[] publicKey = p2PHKSignature.getPublicKey(); return publicKey; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java index 97b4855ca6..b03afc7bf6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/validator/CallContractTxValidator.java @@ -395,6 +395,151 @@ public Result validateV13(int chainId, CallContractTransaction tx) throws NulsEx } } + BigInteger realFee = coinData.getFeeByAsset(CHAIN_ID, ASSET_ID); + BigInteger fee = TransactionFeeCalculator.getNormalTxFee(tx.size()).add(BigInteger.valueOf(txData.getGasLimit()).multiply(BigInteger.valueOf(txData.getPrice()))); + if (realFee.compareTo(fee) >= 0) { + return getSuccess(); + } else { + Log.error("contract call error: The contract transaction fee is not right."); + return Result.getFailed(FEE_NOT_RIGHT); + } + } + /** + * 1. 新增功能,调用合约时支持多签地址 + */ + public Result validateV14(int chainId, CallContractTransaction tx) throws NulsException { + + CoinData coinData = tx.getCoinDataInstance(); + List fromList = coinData.getFrom(); + List toList = coinData.getTo(); + CallContractData txData = tx.getTxDataObj(); + byte[] sender = txData.getSender(); + + if (fromList == null || fromList.isEmpty()) { + Log.error("contract call error: The contract caller is not the transaction signer.[0]"); + return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); + } + boolean existSender = false; + for (CoinFrom from : fromList) { + if (Arrays.equals(from.getAddress(), sender)) { + existSender = true; + break; + } + } + if (!existSender) { + Log.error("contract call error: The contract caller is not the transaction signer.[1]"); + return Result.getFailed(CONTRACT_CALLER_SIGN_ERROR); + } + if (!ContractUtil.checkGasLimit(txData.getGasLimit())) { + Log.error("contract call error: The value of gas limit ranges from 0 to 10,000,000."); + return Result.getFailed(CONTRACT_GAS_LIMIT_ERROR); + } + + byte[] contractAddress = txData.getContractAddress(); + + if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddress)) { + Log.error("contract call error: The contract does not exist."); + return Result.getFailed(CONTRACT_ADDRESS_NOT_EXIST); + } + + Map multyAssetMap = new HashMap<>(); + Set multyAssetKeys = new HashSet<>(); + int assetChainId, assetId; + String assetKey; + BigInteger nulsValue = BigInteger.ZERO; + for(CoinFrom from : fromList) { + assetChainId = from.getAssetsChainId(); + assetId = from.getAssetsId(); + assetKey = assetChainId + "_" + assetId; + if (CHAIN_ID == assetChainId && ASSET_ID == assetId) { + nulsValue = nulsValue.add(from.getAmount()); + } else { + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "from", BigInteger.ZERO); + multyAssetMap.put(assetKey + "from", multyAssetValue.add(from.getAmount())); + } + } + + int toSize = toList.size(); + BigInteger transferNulsToContractValue = txData.getValue(); + BigInteger contractReceivedNulsValue = BigInteger.ZERO; + // 调用者在调用合约的同时,向其他账户转账 + BigInteger transferNulsToOtherAccountValue = BigInteger.ZERO; + if (toSize > 0) { + for (CoinTo coin : toList) { + if (coin.getLockTime() != 0) { + Log.error("contract call error: Transfer amount cannot be locked."); + return Result.getFailed(AMOUNT_LOCK_ERROR); + } + byte[] to = coin.getAddress(); + boolean isContractReceiver = Arrays.equals(to, contractAddress); + assetChainId = coin.getAssetsChainId(); + assetId = coin.getAssetsId(); + boolean mainAsset = assetChainId == CHAIN_ID && assetId == ASSET_ID; + if (!mainAsset) { + if (coin.getAmount().compareTo(BigInteger.ZERO) == 0) { + Log.error("contract call error: Transfer amount cannot be zero."); + return Result.getFailed(TOO_SMALL_AMOUNT); + } + assetKey = assetChainId + "_" + assetId; + multyAssetKeys.add(assetKey); + BigInteger multyAssetValue = multyAssetMap.getOrDefault(assetKey + "to", BigInteger.ZERO); + multyAssetMap.put(assetKey + "to", multyAssetValue.add(coin.getAmount())); + continue; + } + if (coin.getAmount().compareTo(MININUM_TRANSFER_AMOUNT) < 0) { + Log.error("contract call error: The amount of the transfer is too small."); + return Result.getFailed(TOO_SMALL_AMOUNT); + } + if (isContractReceiver) { + contractReceivedNulsValue = contractReceivedNulsValue.add(coin.getAmount()); + } else { + // 检查to地址是否在账户白名单中 + String toStr = AddressTool.getStringAddressByBytes(to); + boolean whiteAddress = AccountCall.validationWhitelistForTransferOnContractCall(chainId, toStr); + if (!whiteAddress) { + Log.error("contract call error: The receiver is not a whitelisted address."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); + } + transferNulsToOtherAccountValue = transferNulsToOtherAccountValue.add(coin.getAmount()); + } + } + + } + + // 其他资产校验 + BigInteger assetKeyFrom, assetKeyTo; + for (String multyAssetKey : multyAssetKeys) { + assetKeyFrom = multyAssetMap.get(multyAssetKey + "from"); + assetKeyTo = multyAssetMap.get(multyAssetKey + "to"); + if(null == assetKeyFrom){ + Log.error("contract call error: Illegal coinFrom in the contract."); + return Result.getFailed(CONTRACT_COIN_FROM_ERROR); + } + if (null == assetKeyTo) { + Log.error("contract call error: Illegal coinTo in the contract."); + return Result.getFailed(CONTRACT_COIN_TO_ERROR); + } + if (!BigIntegerUtils.isEqual(assetKeyFrom, assetKeyTo)) { + Log.error("contract call error: The amount of coin data is error."); + return Result.getFailed(CONTRACT_COIN_ASSETS_ERROR); + } + } + + // 主资产校验 + if (contractReceivedNulsValue.compareTo(transferNulsToContractValue) < 0) { + Log.error("contract call error: Insufficient balance of nuls to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + + if (transferNulsToContractValue.compareTo(BigInteger.ZERO) > 0) { + // 手续费账户也能支出,向合约转资产 + if (nulsValue.compareTo(transferNulsToContractValue.add(transferNulsToOtherAccountValue)) < 0) { + Log.error("contract call error: Insufficient balance to transfer to the contract address."); + return Result.getFailed(INSUFFICIENT_BALANCE_TO_CONTRACT); + } + } + BigInteger realFee = coinData.getFeeByAsset(CHAIN_ID, ASSET_ID); BigInteger fee = TransactionFeeCalculator.getNormalTxFee(tx.size()).add(BigInteger.valueOf(txData.getGasLimit()).multiply(BigInteger.valueOf(txData.getPrice()))); if (realFee.compareTo(fee) >= 0) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/GasCost.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/GasCost.java index 41486b6986..cb0079f2b9 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/GasCost.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/GasCost.java @@ -54,5 +54,7 @@ public class GasCost { * 调用虚拟机外部方法(其他模块注册的方法) */ public static final int INVOKE_EXTERNAL_METHOD = 5000; + public static final int CREATE_PER_BYTE = 7; + public static final int OBJ_TO_JSON_PER_CHAR = 4; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index 0ffc7f1cfb..c1cadff76e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -123,6 +123,13 @@ public class VM { // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 private LinkedList stackTraces = new LinkedList<>(); + // add by pierre at 2022/6/1 p14 + private List internalCreates = new ArrayList<>(); + + public List getInternalCreates() { + return internalCreates; + } + public LinkedList getStackTraces() { return stackTraces; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index c6f39c1547..367d04b0be 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -27,11 +27,9 @@ import io.nuls.contract.vm.code.ClassCode; import io.nuls.contract.vm.code.ClassCodeLoader; import io.nuls.contract.vm.program.impl.ProgramConstants; +import org.apache.commons.lang3.ArrayUtils; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CountDownLatch; public class VMFactory { @@ -290,12 +288,12 @@ public class VMFactory { Heap.INIT_ARRAYS.putAll(VM.heap.arrays); } - private static volatile CountDownLatch waitV8; + private static volatile CountDownLatch waitCreate; public static VM createVM() { - if (waitV8 != null) { + if (waitCreate != null) { try { - waitV8.await(); + waitCreate.await(); } catch (InterruptedException e) { //nothing } @@ -315,7 +313,7 @@ private static VM initVM() { } public static void reInitVM_v8() { - waitV8 = new CountDownLatch(1); + waitCreate = new CountDownLatch(1); MethodArea.INIT_CLASS_CODES.clear(); MethodArea.INIT_METHOD_CODES.clear(); Heap.INIT_OBJECTS.clear(); @@ -327,7 +325,23 @@ public static void reInitVM_v8() { MethodArea.INIT_METHOD_CODES.putAll(VM.methodArea.getMethodCodes()); Heap.INIT_OBJECTS.putAll(VM.heap.objects); Heap.INIT_ARRAYS.putAll(VM.heap.arrays); - waitV8.countDown(); + waitCreate.countDown(); + } + + public static void reInitVM_v14() { + waitCreate = new CountDownLatch(1); + MethodArea.INIT_CLASS_CODES.clear(); + MethodArea.INIT_METHOD_CODES.clear(); + Heap.INIT_OBJECTS.clear(); + Heap.INIT_ARRAYS.clear(); + + VM = loadVM_v14(); + + MethodArea.INIT_CLASS_CODES.putAll(VM.methodArea.getClassCodes()); + MethodArea.INIT_METHOD_CODES.putAll(VM.methodArea.getMethodCodes()); + Heap.INIT_OBJECTS.putAll(VM.heap.objects); + Heap.INIT_ARRAYS.putAll(VM.heap.arrays); + waitCreate.countDown(); } private static VM loadVM_v8() { @@ -338,19 +352,45 @@ private static VM loadVM_v8() { classCodes.put(classCode.name, classCode); } // v8 add - List list = new ArrayList<>(); - list.add("io/nuls/contract/sdk/annotation/PayableMultyAsset"); - list.add("io/nuls/contract/sdk/MultyAssetValue"); - for (String className : list) { + //List list = new ArrayList<>(); + //list.add("io/nuls/contract/sdk/annotation/PayableMultyAsset"); + //list.add("io/nuls/contract/sdk/MultyAssetValue"); + for (String className : ProgramConstants.SDK_CLASS_NAMES_V8_ADD) { ClassCode classCode = ClassCodeLoader.loadFromResource_v8(className); classCodes.put(classCode.name, classCode); } vm.methodArea.loadClassCodes(classCodes); + ProgramConstants.SDK_CLASS_NAMES = ArrayUtils.addAll(ProgramConstants.SDK_CLASS_NAMES, ProgramConstants.SDK_CLASS_NAMES_V8_ADD); + return vm; + } - ProgramConstants.SDK_CLASS_NAMES = new String[ProgramConstants.SDK_CLASSES_V8.length]; - for (int i = 0; i < ProgramConstants.SDK_CLASSES_V8.length; i++) { - ProgramConstants.SDK_CLASS_NAMES[i] = ProgramConstants.classNameReplace(ProgramConstants.SDK_CLASSES_V8[i].getName()); + private static VM loadVM_v14() { + VM vm = new VM(); + Map classCodes = new LinkedHashMap<>(1024); + for (String className : CLINIT_CLASSES) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v14(className); + classCodes.put(classCode.name, classCode); + } + // v8 add + //List list = new ArrayList<>(); + //list.add("io/nuls/contract/sdk/annotation/PayableMultyAsset"); + //list.add("io/nuls/contract/sdk/MultyAssetValue"); + //// v14 add + //list.add("io/nuls/contract/sdk/token/AssetWrapper"); + //list.add("io/nuls/contract/sdk/token/NRC20Wrapper"); + //list.add("io/nuls/contract/sdk/token/Token"); + for (String className : ProgramConstants.SDK_CLASS_NAMES_V8_ADD) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v14(className); + classCodes.put(classCode.name, classCode); + } + for (String className : ProgramConstants.SDK_CLASS_NAMES_V14_ADD) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v14(className); + classCodes.put(classCode.name, classCode); } + vm.methodArea.loadClassCodes(classCodes); + + ProgramConstants.SDK_CLASS_NAMES = ArrayUtils.addAll(ProgramConstants.SDK_CLASS_NAMES, ProgramConstants.SDK_CLASS_NAMES_V8_ADD); + ProgramConstants.SDK_CLASS_NAMES = ArrayUtils.addAll(ProgramConstants.SDK_CLASS_NAMES, ProgramConstants.SDK_CLASS_NAMES_V14_ADD); return vm; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java index 7d8109476f..0313d68ba8 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java @@ -51,9 +51,10 @@ import java.util.jar.JarInputStream; public class ClassCodeLoader { - + private static final Map BASE_USED_CLASSES; private static final Map RESOURCE_CLASS_CODES; private static final Map RESOURCE_CLASS_CODES_V8; + private static final Map RESOURCE_CLASS_CODES_V14; private static final LoadingCache> CACHE; @@ -68,8 +69,10 @@ public Map load(@Nonnull final ClassCodeCacheKey cacheKey) { return ClassCodeLoader.loadJar(cacheKey.getBytes()); } }); + BASE_USED_CLASSES = loadBaseFromResource(); RESOURCE_CLASS_CODES = loadFromResource(); RESOURCE_CLASS_CODES_V8 = loadFromResource_v8(); + RESOURCE_CLASS_CODES_V14 = loadFromResource_v14(); } public static ClassCode load(String className) { @@ -99,7 +102,19 @@ public static ClassCode loadFromResource_v8(String className) { } } + public static ClassCode loadFromResource_v14(String className) { + ClassCode classCode = RESOURCE_CLASS_CODES_V14.get(className); + if (classCode == null) { + throw new RuntimeException("can't load class " + className); + } else { + return classCode; + } + } + public static ClassCode getFromResource(String className) { + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.PROTOCOL_14) { + return RESOURCE_CLASS_CODES_V14.get(className); + } if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { return RESOURCE_CLASS_CODES_V8.get(className); } @@ -183,6 +198,19 @@ private static ClassCode load(ClassReader classReader) { return classCode; } + private static Map loadBaseFromResource() { + try (InputStream baseInputStream = ClassCodeLoader.class.getResourceAsStream("/used_classes_base")) { + if (baseInputStream == null) { + return new HashMap<>(0); + } else { + Map usedClasses = loadJar(baseInputStream); + return usedClasses; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + private static Map loadFromResource() { return loadFromResourceWithResourceName("/used_classes_sdk"); } @@ -191,24 +219,22 @@ private static Map loadFromResource_v8() { return loadFromResourceWithResourceName("/used_classes_sdk_v8"); } + private static Map loadFromResource_v14() { + return loadFromResourceWithResourceName("/used_classes_sdk_v14"); + } + private static Map loadFromResourceWithResourceName(String usedClassesName) { - try (InputStream baseInputStream = ClassCodeLoader.class.getResourceAsStream("/used_classes_base"); - InputStream sdkInputStream = ClassCodeLoader.class.getResourceAsStream(usedClassesName); - ) { - if (baseInputStream == null) { - return new HashMap<>(0); + try (InputStream sdkInputStream = ClassCodeLoader.class.getResourceAsStream(usedClassesName)) { + if (sdkInputStream == null) { + return BASE_USED_CLASSES; } else { - Map usedClasses = loadJar(baseInputStream); - if (sdkInputStream == null) { - return usedClasses; - } else { - Map sdkClasses = loadJar(sdkInputStream); - if (sdkClasses != null && usedClasses != null) { - usedClasses.putAll(sdkClasses); - } - return usedClasses; + Map sdkClasses = loadJar(sdkInputStream); + if (sdkClasses != null) { + sdkClasses.putAll(BASE_USED_CLASSES); } + return sdkClasses; } + } catch (Exception e) { throw new RuntimeException(e); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index 46ed3b8259..ab2510bea3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -25,9 +25,6 @@ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; import io.nuls.base.basic.AddressTool; -import io.nuls.base.protocol.ProtocolGroupManager; -import io.nuls.contract.config.ContractContext; -import io.nuls.contract.sdk.Address; import io.nuls.contract.vm.*; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.exception.ErrorException; @@ -147,7 +144,7 @@ private static BigInteger totalBalance(byte[] address, Frame frame) { /** * native * - * @see Address#balance() + * see Address#balance() */ private static Result balance(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef objectRef = methodArgs.objectRef; @@ -175,7 +172,7 @@ private static Result balanceOfDesignatedAsset(MethodCode methodCode, MethodArgs /** * native * - * @see Address#totalBalance() + * see Address#totalBalance() */ private static Result totalBalance(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef objectRef = methodArgs.objectRef; @@ -204,7 +201,7 @@ private static Result totalBalanceOfDesignatedAsset(MethodCode methodCode, Metho /** * native * - * @see Address#transfer(BigInteger) + * see Address#transfer(BigInteger) */ private static Result transfer(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { return transferBase(methodCode, methodArgs, frame, CHAIN_ID, ASSET_ID, 0); @@ -274,7 +271,7 @@ private static Result transferBase(MethodCode methodCode, MethodArgs methodArgs, /** * native * - * @see Address#call(String, String, String[][], BigInteger) + * see Address#call(String, String, String[][], BigInteger) */ private static Result call(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { return call(methodCode, methodArgs, frame, false, null); @@ -459,7 +456,7 @@ private static void checkBalance(byte[] address, int assetChainId, int assetId, /** * native * - * @see Address#valid(String) + * see Address#valid(String) */ private static Result valid(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef objectRef = (ObjectRef) methodArgs.invokeArgs[0]; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeBlock.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeBlock.java index 14599d2554..3c61a80acd 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeBlock.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeBlock.java @@ -25,7 +25,6 @@ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; import io.nuls.contract.model.dto.BlockHeaderDto; -import io.nuls.contract.sdk.Block; import io.nuls.contract.vm.Frame; import io.nuls.contract.vm.MethodArgs; import io.nuls.contract.vm.ObjectRef; @@ -77,7 +76,7 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra /** * native * - * @see Block#getBlockHeader(long) + * see Block#getBlockHeader(long) */ private static Result getBlockHeader(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { long blockNumber = (long) methodArgs.invokeArgs[0]; @@ -91,7 +90,7 @@ private static Result getBlockHeader(MethodCode methodCode, MethodArgs methodArg /** * native * - * @see Block#currentBlockHeader() + * see Block#currentBlockHeader() */ private static Result currentBlockHeader(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { long blockNumber = frame.vm.getProgramInvoke().getNumber(); @@ -105,7 +104,7 @@ private static Result currentBlockHeader(MethodCode methodCode, MethodArgs metho /** * native * - * @see Block#newestBlockHeader() + * see Block#newestBlockHeader() */ private static Result newestBlockHeader(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { long blockNumber = frame.vm.getProgramInvoke().getNumber(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java index d911edfc7a..a813615728 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeMsg.java @@ -24,16 +24,12 @@ */ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; -import io.nuls.contract.sdk.Msg; import io.nuls.contract.vm.Frame; import io.nuls.contract.vm.MethodArgs; -import io.nuls.contract.vm.ObjectRef; import io.nuls.contract.vm.Result; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.natives.NativeMethod; -import static io.nuls.contract.config.ContractContext.ASSET_ID; -import static io.nuls.contract.config.ContractContext.CHAIN_ID; import static io.nuls.contract.vm.natives.NativeMethod.NOT_SUPPORT_NATIVE; import static io.nuls.contract.vm.natives.NativeMethod.SUPPORT_NATIVE; @@ -100,7 +96,7 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra /** * native * - * @see Msg#gasleft() + * see Msg#gasleft() */ private static Result gasleft(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getGasLeft(), frame); @@ -112,7 +108,7 @@ private static Result gasleft(MethodCode methodCode, MethodArgs methodArgs, Fram /** * native * - * @see Msg#sender() + * see Msg#sender() */ private static Result sender(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getSender(), frame); @@ -124,7 +120,7 @@ private static Result sender(MethodCode methodCode, MethodArgs methodArgs, Frame /** * native * - * @see Msg#senderPublicKey() + * see Msg#senderPublicKey() */ private static Result senderPublicKey(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getSenderPublicKey(), frame); @@ -136,7 +132,7 @@ private static Result senderPublicKey(MethodCode methodCode, MethodArgs methodAr /** * native * - * @see Msg#value() + * see Msg#value() */ private static Result value(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getValue(), frame); @@ -155,7 +151,7 @@ private static Result multyAssetValues(MethodCode methodCode, MethodArgs methodA /** * native * - * @see Msg#gasprice() + * see Msg#gasprice() */ private static Result gasprice(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getGasPrice(), frame); @@ -167,7 +163,7 @@ private static Result gasprice(MethodCode methodCode, MethodArgs methodArgs, Fra /** * native * - * @see Msg#address() + * see Msg#address() */ private static Result address(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { Result result = NativeMethod.result(methodCode, frame.vm.getProgramContext().getAddress(), frame); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java index f5c0b72fa3..08d1314a7e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java @@ -25,6 +25,7 @@ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.Address; import io.nuls.base.data.CoinData; import io.nuls.base.data.CoinFrom; import io.nuls.base.data.Transaction; @@ -41,7 +42,7 @@ import io.nuls.contract.model.bo.ContractTokenAssetsInfo; import io.nuls.contract.model.dto.BlockHeaderDto; import io.nuls.contract.rpc.call.ChainManagerCall; -import io.nuls.contract.sdk.Event; +import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.vm.*; import io.nuls.contract.vm.code.ClassCode; @@ -50,26 +51,24 @@ import io.nuls.contract.vm.code.VariableType; import io.nuls.contract.vm.exception.ErrorException; import io.nuls.contract.vm.natives.NativeMethod; -import io.nuls.contract.vm.program.ProgramAccount; -import io.nuls.contract.vm.program.ProgramInvokeRegisterCmd; -import io.nuls.contract.vm.program.ProgramNewTx; -import io.nuls.contract.vm.program.ProgramResult; +import io.nuls.contract.vm.program.*; import io.nuls.contract.vm.program.impl.ProgramInvoke; import io.nuls.contract.vm.util.Constants; import io.nuls.contract.vm.util.JsonUtils; import io.nuls.contract.vm.util.Utils; +import io.nuls.core.constant.BaseConstant; import io.nuls.core.core.ioc.SpringLiteContext; +import io.nuls.core.crypto.HexUtil; +import io.nuls.core.crypto.KeccakHash; import io.nuls.core.crypto.Sha3Hash; import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; import io.nuls.core.rpc.model.message.Response; import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.math.BigInteger; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static io.nuls.contract.config.ContractContext.ASSET_ID; import static io.nuls.contract.config.ContractContext.CHAIN_ID; @@ -166,7 +165,7 @@ public static Result nativeRun(MethodCode methodCode, MethodArgs methodArgs, Fra /** * native * - * @see Utils#revert(String) + * see Utils#revert(String) */ private static Result revert(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef objectRef = (ObjectRef) methodArgs.invokeArgs[0]; @@ -182,7 +181,7 @@ private static Result revert(MethodCode methodCode, MethodArgs methodArgs, Frame /** * native * - * @see Utils#emit(Event) + * see Utils#emit(Event) */ private static Result emit(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { ObjectRef objectRef = (ObjectRef) methodArgs.invokeArgs[0]; @@ -384,7 +383,7 @@ public void setPayload(Map payload) { /** * native * - * @see Utils#sha3(String) + * see Utils#sha3(String) */ private static Result sha3(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { frame.vm.addGasUsed(GasCost.SHA3); @@ -404,7 +403,7 @@ private static Result sha3(MethodCode methodCode, MethodArgs methodArgs, Frame f /** * native * - * @see Utils#sha3(byte[]) + * see Utils#sha3(byte[]) */ private static Result sha3Bytes(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { frame.vm.addGasUsed(GasCost.SHA3); @@ -554,6 +553,29 @@ private static Result invokeExternalCmd(MethodCode methodCode, MethodArgs method ObjectRef objectRef = frame.heap.newString(crossTokenSystemContract); Result result = NativeMethod.result(methodCode, objectRef, frame); return result; + } else if ("createContract".equals(cmdName)) { + // add by pierre at 2022/6/1 p14 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_14 ) { + return createContract(methodCode, methodArgs, frame); + } + } else if ("encodePacked".equals(cmdName)) { + // add by pierre at 2022/6/1 p14 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_14 ) { + String[] args = (String[]) frame.heap.getObject(argsRef); + return encodePacked(args, methodCode, frame); + } + } else if ("computeAddress".equals(cmdName)) { + // add by pierre at 2022/6/1 p14 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_14 ) { + String[] args = (String[]) frame.heap.getObject(argsRef); + return computeAddress(args, methodCode, frame); + } + } else if ("getCodeHash".equals(cmdName)) { + // add by pierre at 2022/6/16 p14 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_14 ) { + String[] args = (String[]) frame.heap.getObject(argsRef); + return getCodeHash(args, methodCode, frame); + } } String[] args = (String[]) frame.heap.getObject(argsRef); @@ -630,6 +652,157 @@ private static Result invokeExternalCmd(MethodCode methodCode, MethodArgs method return result; } + private static Result getCodeHash(String[] args, MethodCode methodCode, Frame frame) { + try { + String codeAddress = args[0]; + + // 查找contractCode + byte[] codeAddressBytes = AddressTool.getAddress(codeAddress); + // 验证codeAddress是合约地址 + if (!NativeAddress.isContract(codeAddressBytes, frame)) { + throw new Exception("Not contract address"); + } + byte[] codeHash = frame.vm.getRepository().getCodeHash(codeAddressBytes); + Object resultValue = frame.heap.newString(HexUtil.encode(codeHash)); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } catch (Exception e) { + throw new ErrorException("Invoke external cmd failed. When getCodeHash.", frame.vm.getGasUsed(), e.getMessage()); + } + } + + private static Result computeAddress(String[] args, MethodCode methodCode, Frame frame) { + try { + int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); + String salt = args[0]; + String codeHash = args[1]; + String sender = args[2]; + + // 根据规则生成合约地址 + ProgramCreateData createData = new ProgramCreateData( + AddressTool.getAddress(sender), + Utils.dataToBytes(salt), + HexUtil.decode(codeHash)); + Address newAddress = new Address(currentChainId, BaseConstant.CONTRACT_ADDRESS_TYPE, SerializeUtils.sha256hash160(KeccakHash.keccakBytes(createData.serialize(), 256))); + + Object resultValue = frame.heap.newString(newAddress.toString()); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } catch (IOException e) { + throw new ErrorException("Invoke external cmd failed. When computeAddress.", frame.vm.getGasUsed(), e.getMessage()); + } + } + + private static Result encodePacked(String[] args, MethodCode methodCode, Frame frame) { + try { + ProgramEncodePacked encodePacked; + if (args == null) { + encodePacked = new ProgramEncodePacked((short) 0, args); + } else { + encodePacked = new ProgramEncodePacked((short) args.length, args); + } + Object resultValue = frame.heap.newString(HexUtil.encode(encodePacked.serialize())); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } catch (IOException e) { + throw new ErrorException("Invoke external cmd failed. When encodePacked.", frame.vm.getGasUsed(), e.getMessage()); + } + } + + private static Result createContract(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { + ProgramInvoke programInvoke = frame.vm.getProgramInvoke(); + if (programInvoke.isCreate()) { + throw new ErrorException("Invoke external cmd failed. This method cannot be called when creating a contract.", frame.vm.getGasUsed(), null); + } + int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); + + ObjectRef argsRef = (ObjectRef) methodArgs.invokeArgs[1]; + String[] _args = (String[]) frame.heap.getObject(argsRef); + int length = _args.length; + // 验证codeAddress是合约地址 + String codeAddress = _args[0]; + byte[] codeAddressBytes = AddressTool.getAddress(codeAddress); + if (!NativeAddress.isContract(codeAddressBytes, frame)) { + throw new ErrorException("Invoke external cmd failed. When creating a contract. [codeCopy] is not a contract address.", frame.vm.getGasUsed(), null); + } + String salt = _args[1]; + String[][] args; + if (length == 2) { + args = null; + } else { + String[] subArgs = new String[length - 2]; + System.arraycopy(_args, 2, subArgs, 0, length - 2); + args = ContractUtil.twoDimensionalArray(subArgs); + } + ProgramResult programResult; + try { + programResult = createContract(currentChainId, salt, codeAddressBytes, args, frame); + } catch (IOException e) { + throw new ErrorException("Invoke external cmd failed. When creating a contract.", frame.vm.getGasUsed(), e.getMessage()); + } + + if (!programResult.isSuccess()) { + return new Result(); + } + List internalCreates = frame.vm.getInternalCreates(); + ProgramInternalCreate create = frame.vm.getInternalCreates().get(internalCreates.size() - 1); + Object resultValue = frame.heap.newString(AddressTool.getStringAddressByBytes(create.getContractAddress())); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } + + private static ProgramResult createContract(int chainId, String salt, byte[] codeAddressBytes, String[][] args, Frame frame) throws IOException { + ProgramInvoke programInvoke = frame.vm.getProgramInvoke(); + // 查找contractCode + byte[] codes = frame.vm.getRepository().getCode(codeAddressBytes); + byte[] codeHash = frame.vm.getRepository().getCodeHash(codeAddressBytes); + + // 根据规则生成合约地址 + ProgramCreateData createData = new ProgramCreateData( + programInvoke.getContractAddress(), + Utils.dataToBytes(salt), + codeHash); + Address newAddress = new Address(chainId, BaseConstant.CONTRACT_ADDRESS_TYPE, SerializeUtils.sha256hash160(KeccakHash.keccakBytes(createData.serialize(), 256))); + + ProgramCreate programCreate = new ProgramCreate(); + programCreate.setContractAddress(newAddress.getAddressBytes()); + programCreate.setSender(programInvoke.getContractAddress()); + programCreate.setValue(BigInteger.ZERO); + programCreate.setPrice(programInvoke.getPrice()); + programCreate.setGasLimit(frame.vm.getGasLeft()); + programCreate.setNumber(programInvoke.getNumber()); + programCreate.setContractCode(codes); + programCreate.setArgs(args); + programCreate.setSenderPublicKey(programInvoke.getSenderPublicKey()); + programCreate.setInternalCreate(true); + programCreate.setEstimateGas(programInvoke.isEstimateGas()); + + ProgramInternalCreate programInternalCreate = new ProgramInternalCreate(); + programInternalCreate.setSender(programCreate.getSender()); + programInternalCreate.setContractAddress(programCreate.getContractAddress()); + programInternalCreate.setContractCode(programCreate.getContractCode()); + programInternalCreate.setCodeCopyBy(codeAddressBytes); + programInternalCreate.setArgs(programCreate.getArgs()); + + frame.vm.getInternalCreates().add(programInternalCreate); + + ProgramResult programResult = frame.vm.getProgramExecutor().callProgramExecutor().create(programCreate); + + frame.vm.addGasUsed(programResult.getGasUsed()); + frame.vm.getDebugEvents().addAll(programResult.getDebugEvents()); + if (programResult.isSuccess()) { + frame.vm.getEvents().addAll(programResult.getEvents()); + return programResult; + } else { + Iterator descendingIterator = programResult.getStackTraces().descendingIterator(); + while (descendingIterator.hasNext()) { + frame.vm.getStackTraces().addFirst(descendingIterator.next()); + } + frame.throwRuntimeException(programResult.getErrorMessage()); + return programResult; + } + } + private static ObjectRef tokenOutCrossChainCmdProcessor(int currentChainId, byte[] senderBytes, String contractSender, String[] args, String contractAddress, byte[] contractAddressBytes, CmdRegisterManager cmdRegisterManager, String moduleCode, String cmdName, Map argsMap, ProgramInvokeRegisterCmd invokeRegisterCmd, Frame frame) { @@ -862,7 +1035,7 @@ private static ObjectRef listToObjectRef(List resultList, Frame frame) { /** * native *s - * @see io.nuls.contract.sdk.Utils#obj2Json(Object) + * see io.nuls.contract.sdk.Utils#obj2Json(Object) */ private static Result obj2Json(MethodCode methodCode, MethodArgs methodArgs, Frame frame) { frame.vm.addGasUsed(GasCost.OBJ_TO_JSON); @@ -870,6 +1043,11 @@ private static Result obj2Json(MethodCode methodCode, MethodArgs methodArgs, Fra ObjectRef ref = null; if (objectRef != null) { String json = objectRef2Json(objectRef, frame.heap, frame.methodArea); + // add by pierre at 2022/6/16 p14 + int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_14 ) { + frame.vm.addGasUsed(GasCost.OBJ_TO_JSON_PER_CHAR * json.length()); + } ref = frame.heap.newString(json); } Result result = NativeMethod.result(methodCode, ref, frame); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreate.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreate.java index 9fef01d5cd..a1180c6f1e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreate.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreate.java @@ -80,6 +80,16 @@ public class ProgramCreate { * 是否估计Gas */ private boolean estimateGas; + // add by pierre at 2022/6/1 p14 + private boolean internalCreate; + + public boolean isInternalCreate() { + return internalCreate; + } + + public void setInternalCreate(boolean internalCreate) { + this.internalCreate = internalCreate; + } public void args(String... args) { setArgs(args); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreateData.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreateData.java new file mode 100644 index 0000000000..7acc4533fd --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramCreateData.java @@ -0,0 +1,171 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.vm.program; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.Address; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @Author: PierreLuo + */ +public class ProgramCreateData extends BaseNulsData { + + private final byte hard = (byte) 255; + private byte[] sender; + private byte[] salt; + private byte[] codeHash; + //private short argsCount; + //private String[][] args; + + + public ProgramCreateData(byte[] sender, byte[] salt, byte[] codeHash) { + this.sender = sender; + this.salt = salt; + this.codeHash = codeHash; + } + + //public ProgramCreateData(byte[] sender, byte[] salt, byte[] code, short argsCount, String[][] args) { + // this.sender = sender; + // this.salt = salt; + // this.code = code; + // this.argsCount = argsCount; + // this.args = args; + //} + + @Override + public int size() { + int size = 1; + size += Address.ADDRESS_LENGTH; + size += SerializeUtils.sizeOfBytes(salt); + size += SerializeUtils.sizeOfBytes(codeHash); + //size += 1; + //if (args != null) { + // for (String[] arg : args) { + // if (arg == null) { + // size += 1; + // } else { + // size += 1; + // for (String str : arg) { + // size += SerializeUtils.sizeOfString(str); + // } + // } + // } + //} + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.write(hard); + stream.write(sender); + stream.writeBytesWithLength(salt); + stream.writeBytesWithLength(codeHash); + //stream.writeUint8(argsCount); + //if (args != null) { + // for (String[] arg : args) { + // if (arg == null) { + // stream.writeUint8((short) 0); + // } else { + // stream.writeUint8((short) arg.length); + // for (String str : arg) { + // stream.writeString(str); + // } + // } + // } + //} + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + byteBuffer.readByte(); + this.sender = byteBuffer.readBytes(Address.ADDRESS_LENGTH); + this.salt = byteBuffer.readByLengthByte(); + this.codeHash = byteBuffer.readByLengthByte(); + //this.argsCount = byteBuffer.readUint8(); + //short length = this.argsCount; + //this.args = new String[length][]; + //for (short i = 0; i < length; i++) { + // short argCount = byteBuffer.readUint8(); + // if (argCount == 0) { + // args[i] = new String[0]; + // } else { + // String[] arg = new String[argCount]; + // for (short k = 0; k < argCount; k++) { + // arg[k] = byteBuffer.readString(); + // } + // args[i] = arg; + // } + //} + } + + public byte getHard() { + return hard; + } + + public byte[] getSender() { + return sender; + } + + public void setSender(byte[] sender) { + this.sender = sender; + } + + public byte[] getSalt() { + return salt; + } + + public void setSalt(byte[] salt) { + this.salt = salt; + } + + public byte[] getCodeHash() { + return codeHash; + } + + public void setCodeHash(byte[] codeHash) { + this.codeHash = codeHash; + } + + //public short getArgsCount() { + // return argsCount; + //} + // + //public void setArgsCount(short argsCount) { + // this.argsCount = argsCount; + //} + // + //public String[][] getArgs() { + // return args; + //} + // + //public void setArgs(String[][] args) { + // this.args = args; + //} +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramEncodePacked.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramEncodePacked.java new file mode 100644 index 0000000000..281c68d2d3 --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramEncodePacked.java @@ -0,0 +1,93 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.vm.program; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.basic.NulsOutputStreamBuffer; +import io.nuls.base.data.BaseNulsData; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.SerializeUtils; + +import java.io.IOException; + +/** + * @Author: PierreLuo + */ +public class ProgramEncodePacked extends BaseNulsData { + + private short argsCount; + private String[] args; + + public ProgramEncodePacked(short argsCount, String[] args) { + this.argsCount = argsCount; + this.args = args; + } + + @Override + public int size() { + int size = 1; + if (args != null) { + for (String str : args) { + size += SerializeUtils.sizeOfString(str); + } + } + return size; + } + + @Override + protected void serializeToStream(NulsOutputStreamBuffer stream) throws IOException { + stream.writeUint8(argsCount); + if (args != null) { + for (String str : args) { + stream.writeString(str); + } + } + } + + @Override + public void parse(NulsByteBuffer byteBuffer) throws NulsException { + this.argsCount = byteBuffer.readUint8(); + short length = this.argsCount; + this.args = new String[length]; + for (short k = 0; k < length; k++) { + args[k] = byteBuffer.readString(); + } + } + + public short getArgsCount() { + return argsCount; + } + + public void setArgsCount(short argsCount) { + this.argsCount = argsCount; + } + + public String[] getArgs() { + return args; + } + + public void setArgs(String[] args) { + this.args = args; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramExecutor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramExecutor.java index f9d680d102..714c7974d9 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramExecutor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramExecutor.java @@ -44,6 +44,11 @@ public interface ProgramExecutor { List method(byte[] address); + byte[] contractCode(byte[] address); + + // add by pierre at 2022/6/17 p14 + byte[] contractCodeHash(byte[] address); + List jarMethod(byte[] jarData); ProgramStatus status(byte[] address); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCreate.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCreate.java new file mode 100644 index 0000000000..a5e3838b1c --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramInternalCreate.java @@ -0,0 +1,94 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.contract.vm.program; + +// add by pierre at 2022/6/1 p14 +public class ProgramInternalCreate { + + /** + * 创建者 + */ + private byte[] sender; + + /** + * 合约地址 + */ + private byte[] contractAddress; + + /** + * 合约代码 + */ + private byte[] contractCode; + + /** + * 内部创建合约,所依据的合约 + */ + private byte[] codeCopyBy; + + /** + * 参数列表 + */ + private String[][] args; + + public byte[] getCodeCopyBy() { + return codeCopyBy; + } + + public void setCodeCopyBy(byte[] codeCopyBy) { + this.codeCopyBy = codeCopyBy; + } + + public byte[] getSender() { + return sender; + } + + public void setSender(byte[] sender) { + this.sender = sender; + } + + public byte[] getContractAddress() { + return contractAddress; + } + + public void setContractAddress(byte[] contractAddress) { + this.contractAddress = contractAddress; + } + + public byte[] getContractCode() { + return contractCode; + } + + public void setContractCode(byte[] contractCode) { + this.contractCode = contractCode; + } + + public String[][] getArgs() { + return args; + } + + public void setArgs(String[][] args) { + this.args = args; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java index 1fd667a015..4221b12e73 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramResult.java @@ -62,6 +62,16 @@ public class ProgramResult { // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 private LinkedList stackTraces = new LinkedList<>(); + // add by pierre at 2022/6/1 p14 + private List internalCreates = new ArrayList<>(); + + public List getInternalCreates() { + return internalCreates; + } + + public void setInternalCreates(List internalCreates) { + this.internalCreates = internalCreates; + } public LinkedList getStackTraces() { return stackTraces; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java index f66deb0a81..19984d617c 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramConstants.java @@ -24,12 +24,6 @@ */ package io.nuls.contract.vm.program.impl; -import io.nuls.contract.sdk.*; -import io.nuls.contract.sdk.annotation.Payable; -import io.nuls.contract.sdk.annotation.PayableMultyAsset; -import io.nuls.contract.sdk.annotation.Required; -import io.nuls.contract.sdk.annotation.View; -import io.nuls.contract.sdk.event.DebugEvent; import java.math.BigDecimal; import java.math.BigInteger; @@ -37,40 +31,64 @@ public class ProgramConstants { - public static final String CONTRACT_INTERFACE_NAME = classNameReplace(Contract.class.getName()); - - public static final String EVENT_INTERFACE_NAME = classNameReplace(Event.class.getName()); - - public static final Class[] SDK_CLASSES = new Class[]{ - Address.class, - Block.class, - BlockHeader.class, - Contract.class, - Event.class, - Msg.class, - Utils.class, - View.class, - Required.class, - Payable.class, - DebugEvent.class + public static final String CONTRACT_INTERFACE_NAME = "io/nuls/contract/sdk/Contract"; + + public static final String EVENT_INTERFACE_NAME = "io/nuls/contract/sdk/Event"; + + public static String[] SDK_CLASS_NAMES = new String[] { + "io/nuls/contract/sdk/Address", + "io/nuls/contract/sdk/Block", + "io/nuls/contract/sdk/BlockHeader", + "io/nuls/contract/sdk/Contract", + "io/nuls/contract/sdk/Event", + "io/nuls/contract/sdk/Msg", + "io/nuls/contract/sdk/Utils", + "io/nuls/contract/sdk/annotation/View", + "io/nuls/contract/sdk/annotation/Required", + "io/nuls/contract/sdk/annotation/Payable", + "io/nuls/contract/sdk/event/DebugEvent" }; - public static final Class[] SDK_CLASSES_V8 = new Class[]{ - Address.class, - Block.class, - BlockHeader.class, - Contract.class, - Event.class, - Msg.class, - Utils.class, - View.class, - Required.class, - Payable.class, - DebugEvent.class, - PayableMultyAsset.class, - MultyAssetValue.class + public static String[] SDK_CLASS_NAMES_V8_ADD = new String[] { + "io/nuls/contract/sdk/annotation/PayableMultyAsset", + "io/nuls/contract/sdk/MultyAssetValue" }; + public static String[] SDK_CLASS_NAMES_V14_ADD = new String[] { + "io/nuls/contract/sdk/token/AssetWrapper", + "io/nuls/contract/sdk/token/NRC20Wrapper", + "io/nuls/contract/sdk/token/Token" + }; + //public static final Class[] SDK_CLASSES = new Class[]{ + // Address.class, + // Block.class, + // BlockHeader.class, + // Contract.class, + // Event.class, + // Msg.class, + // Utils.class, + // View.class, + // Required.class, + // Payable.class, + // DebugEvent.class + //}; + + //public static final Class[] SDK_CLASSES_V8 = new Class[]{ + // Address.class, + // Block.class, + // BlockHeader.class, + // Contract.class, + // Event.class, + // Msg.class, + // Utils.class, + // View.class, + // Required.class, + // Payable.class, + // DebugEvent.class, + // PayableMultyAsset.class, + // MultyAssetValue.class + //}; + public static final Class[] CONTRACT_USED_CLASSES = new Class[]{ Boolean.class, Byte.class, @@ -109,7 +127,7 @@ public class ProgramConstants { StackOverflowError.class, }; - public static String[] SDK_CLASS_NAMES = new String[SDK_CLASSES.length]; + //public static String[] SDK_CLASS_NAMES = new String[SDK_CLASSES.length]; public static final String[] CONTRACT_USED_CLASS_NAMES = new String[CONTRACT_USED_CLASSES.length]; @@ -118,9 +136,10 @@ public class ProgramConstants { public static final String[] VM_INIT_CLASS_NAMES = new String[VM_INIT_CLASSES.length]; static { - for (int i = 0; i < SDK_CLASSES.length; i++) { - SDK_CLASS_NAMES[i] = classNameReplace(SDK_CLASSES[i].getName()); - } + //for (int i = 0; i < SDK_CLASSES.length; i++) { + // SDK_CLASS_NAMES[i] = classNameReplace(SDK_CLASSES[i].getName()); + //} + for (int i = 0; i < CONTRACT_USED_CLASSES.length; i++) { CONTRACT_USED_CLASS_NAMES[i] = classNameReplace(CONTRACT_USED_CLASSES[i].getName()); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java index d24324c632..1de28fadad 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramExecutorImpl.java @@ -267,6 +267,47 @@ public ProgramResult call(ProgramCall programCall) { private Map> contractArrays; private Map contractObjectRefCount; + private ProgramResult checkExecute(ProgramInvoke programInvoke, MethodCode methodCode) { + String methodName = programInvoke.getMethodName(); + String methodDescBase = programInvoke.getMethodDesc(); + BigInteger transferValue = programInvoke.getValue(); + String contractAddress = programInvoke.getAddress(); + byte[] sender = programInvoke.getSender(); + if (methodCode == null) { + return revert(String.format("can't find method %s%s", methodName, methodDescBase == null ? "" : methodDescBase)); + } + if (!methodCode.isPublic) { + return revert("can only invoke public method"); + } + if (transferValue.compareTo(BigInteger.ZERO) > 0) { + if (!methodCode.hasPayableAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payable method", contractAddress, methodCode.name)); + } + List multyAssetValues = programInvoke.getMultyAssetValues(); + if (multyAssetValues != null && !multyAssetValues.isEmpty()) { + if (!methodCode.hasPayableMultyAssetAnnotation()) + return revert(String.format("contract[%s]'s method[%s] is not a payableMultyAsset method", contractAddress, methodCode.name)); + } + // 不允许非系统调用此方法 + boolean isBalanceTriggerForConsensusContractMethod = BALANCE_TRIGGER_METHOD_NAME.equals(methodName) && + BALANCE_TRIGGER_FOR_CONSENSUS_CONTRACT_METHOD_DESC.equals(methodDescBase); + if (isBalanceTriggerForConsensusContractMethod) { + if (sender != null) { + return revert("can't invoke _payable(String[][] args) method"); + } + } + if (methodCode.argsVariableType.size() != programInvoke.getArgs().length) { + do { + if (isBalanceTriggerForConsensusContractMethod && programInvoke.getArgs().length > 0) { + break; + } + return revert(String.format("require %s parameters in method [%s%s]", + methodCode.argsVariableType.size(), methodCode.name, methodCode.normalDesc)); + } while (false); + } + return null; + } + private ProgramResult execute(ProgramInvoke programInvoke) { if (programInvoke.getPrice() < 1) { return revert("gas price must be greater than zero"); @@ -299,6 +340,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { String methodDescBase = programInvoke.getMethodDesc(); byte[] contractCodeData = programInvoke.getData(); BigInteger transferValue = programInvoke.getValue(); + List multyAssetValues = programInvoke.getMultyAssetValues(); Map classCodes; if (programInvoke.isCreate()) { if (contractCodeData == null) { @@ -336,6 +378,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { vm = VMFactory.createVM(); logTime("load vm"); + // add by pierre at 2022/6/16 p14 + if (ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) >= ContractContext.PROTOCOL_14) { + vm.addGasUsed(contractCodeData == null ? 0 : contractCodeData.length * GasCost.CREATE_PER_BYTE); + } vm.setProgramExecutor(this); vm.heap.loadClassCodes(classCodes); // add by pierre at 2019-11-21 标记 当存在合约内部调用合约,共享同一个合约的内存数据 需要协议升级 done @@ -398,7 +444,15 @@ private ProgramResult execute(ProgramInvoke programInvoke) { String methodDesc = ProgramDescriptors.parseDesc(methodDescBase); MethodCode methodCode = vm.methodArea.loadMethod(contractClassCode.name, methodName, methodDesc); - if (methodCode == null) { + ProgramResult checkExecute = this.checkExecute(programInvoke, methodCode); + if (checkExecute != null) { + // add by pierre at 2022/6/17 p14 + if (ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) >= ContractContext.PROTOCOL_14 && programInvoke.isCreate()) { + checkExecute.setGasUsed(vm.getGasUsed()); + } + return checkExecute; + } + /*if (methodCode == null) { return revert(String.format("can't find method %s%s", methodName, methodDescBase == null ? "" : methodDescBase)); } if (!methodCode.isPublic) { @@ -429,7 +483,7 @@ private ProgramResult execute(ProgramInvoke programInvoke) { return revert(String.format("require %s parameters in method [%s%s]", methodCode.argsVariableType.size(), methodCode.name, methodCode.normalDesc)); } while (false); - } + }*/ logTime("load method"); ObjectRef objectRef; @@ -481,7 +535,10 @@ private ProgramResult execute(ProgramInvoke programInvoke) { } vm.setRepository(repository); vm.setGas(programInvoke.getGasLimit()); - vm.addGasUsed(contractCodeData == null ? 0 : contractCodeData.length); + // add by pierre at 2022/6/16 p14 + if (ProtocolGroupManager.getCurrentVersion(getCurrentChainId()) < ContractContext.PROTOCOL_14) { + vm.addGasUsed(contractCodeData == null ? 0 : contractCodeData.length); + } logTime("load end"); @@ -527,6 +584,8 @@ private ProgramResult execute(ProgramInvoke programInvoke) { programResult.setEvents(vm.getEvents()); programResult.setInvokeRegisterCmds(vm.getInvokeRegisterCmds()); programResult.setOrderedInnerTxs(vm.getOrderedInnerTxs()); + // add by pierre at 2022/6/2 p14 + programResult.setInternalCreates(vm.getInternalCreates()); if (resultValue != null) { if (resultValue instanceof ObjectRef) { @@ -690,6 +749,22 @@ public List method(byte[] address) { return jarMethod(codes); } + @Override + public byte[] contractCode(byte[] address) { + checkThread(); + this.revert = true; + byte[] codes = repository.getCode(address); + return codes; + } + + @Override + public byte[] contractCodeHash(byte[] address) { + checkThread(); + this.revert = true; + byte[] codes = repository.getCodeHash(address); + return codes; + } + @Override public List jarMethod(byte[] jarData) { this.revert = true; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java index 8c18ea45ef..ed051ba9ef 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/impl/ProgramInvoke.java @@ -100,6 +100,15 @@ public class ProgramInvoke { private boolean create; private boolean internalCall; + private boolean internalCreate; + + public boolean isInternalCreate() { + return internalCreate; + } + + public void setInternalCreate(boolean internalCreate) { + this.internalCreate = internalCreate; + } public byte[] getContractAddress() { return contractAddress; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java index cda4a879cb..11abc669f6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java @@ -26,6 +26,9 @@ import io.nuls.core.crypto.ECKey; import io.nuls.core.crypto.HexUtil; +import io.nuls.core.model.StringUtils; + +import java.nio.charset.StandardCharsets; public class Utils { @@ -47,4 +50,35 @@ public static boolean verify(String data, String signature, String pub) { return ECKey.verify(dataBytes, signatureBytes, pubBytes); } + public static byte[] dataToBytes(String data) { + if (StringUtils.isBlank(data)) { + return null; + } + try { + boolean isHex = true; + String validData = cleanHexPrefix(data); + char[] chars = validData.toCharArray(); + for (char c : chars) { + int digit = Character.digit(c, 16); + if (digit == -1) { + isHex = false; + break; + } + } + if (isHex) { + return HexUtil.decode(validData); + } + return data.getBytes(StandardCharsets.UTF_8); + } catch (Exception e) { + return data.getBytes(StandardCharsets.UTF_8); + } + } + + private static String cleanHexPrefix(String input) { + return containsHexPrefix(input) ? input.substring(2) : input; + } + + private static boolean containsHexPrefix(String input) { + return !StringUtils.isBlank(input) && input.length() > 1 && input.charAt(0) == '0' && input.charAt(1) == 'x'; + } } diff --git a/module/nuls-smart-contract/src/main/resources/protocol-config.json b/module/nuls-smart-contract/src/main/resources/protocol-config.json index 0748002671..009dc4df4b 100644 --- a/module/nuls-smart-contract/src/main/resources/protocol-config.json +++ b/module/nuls-smart-contract/src/main/resources/protocol-config.json @@ -1,4 +1,29 @@ [ + { + "version": "14", + "extend": "13", + "validTxs": [ + { + "type": "15", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "CreateContractProcessorV14" + }, + { + "type": "16", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "CallContractProcessorV14" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "13", "extend": "8", diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v14 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v14 new file mode 100644 index 0000000000000000000000000000000000000000..7e07e9eb95fe662d4402c9c17b2e20b45932b59c GIT binary patch literal 14610 zcmbWe19Y9+);}EEwr#7ijmAb}+i23bv8{%U)!24p+ia}1$v-(g_bc9e+H=3T#~$O^ zV?1llwSQ}^xhCbMfI*-D03ZMWOkzGN0sKG^03ZObEcG26j2!461_1!%|M5-er&0fT z)69ncpI=1y`9*6dONZaQjrm{Rer03rXs`du@i)V8e>cp*(BiM5C;$);5CG!8{AId7 z4HdMsd1WDPq;F_sPxse94p5P@!B$3j=#9i&oC`T7k&(i4k~G6vEOLtzlXw|}vB1J1 zV zhf7*n1X>txM`ZJ>t7IjF530;7WhLY99F$_UwBokZk8}sTEYfF5h3dVCcmFW+o~^pa zeZ+E4gn5z1$|T+C1l=;F(QK)3HbljQx;E5J!k3-1w&R`s6;kBEn5ubi?M%AgxY{hV zvJjmL{lPSBi$Zh*@@4Wi6g>B)_nJYi&XNw(Wz6_m_CkU_ojMM9tfDmyss1w2U~!bW zJOJEcR0%FZgq?j$kb|EGufJ1LMXgYG_>HD}{KxFA?8Oo^Yitn*;{&wqGMB_I^(wW) zC4$b8&_(L|2vV>`0RjF{Q)+QIRX2z+Yvtq;TO@`R$c2Hn$B-`fRD2F0q8jW0)|`Ee5`3m2Rj9=b`# zdX~3Og#-*LJ5e6;s}`$uB-0K1X1(h}&2;+c;v9x$!;{Xv;4aoQ9_=p{PUg@@Pmf>6 zeLSP_m^uapem4YEcq)Fj@0R;8lVsZqX<|sMwy91{4RU?g<4*PCZSEbY)-|f68R!gK(2IbY4oN6p6_8uH_y;uaRULPHuOc=eGv1r^ zo0B{rAzP8D;nTZ&Y{(Gqv^y?lK9h&h;p#{MOpMDK#Kxcp?ba-nC0Y4nka))0a4{~( z0|CDekx4LNW=s0$UpKzOjnqMBx{R3(Q9Q~f;;QFg5Vj)Ck;AtnY@dwpBm|LDBD#AOF$WsKfTE9dIPifv-6Xog_g;2Ier z1jMLwb&6W~(1{5_dHqz&)Q=<9bC&!{2p_TA`Y^?M$}vARuL0qLii-7}`9a%!A^t*- zW9K<~5>rD6+VR$UjMHQEGk4of^RDIR&wP9jKzhV0!TP8fk?RbitYJO2Ae$q5-Tr}b zf$yk3u)bo92)Rkd(6H0$Qp95GJq6O4s*vcBVr=Eh-pGX#8cvz25b1Je9Na0xsOqOw z@;mE`f6JJZgruL(3S){f!B9d}o|Cl^=bv&Q^a>ngy7o=R0uPUJ}z^Vk;CMR!F`&q@a|-lB%RE|o@WcynxC2G@f_rMl}p=|Asgv# z-I0N&W0q^+CRo<7n4mD$KZ?U5*~)#<54!EpBheR=wLNT^ZK_s-ynlcfQ_=3g-Gx;e zCpp6jIdrmz3QM1PLN5(JpTT+j!aRe8B9;|iMqXW*;^n z3wFYG8ma+O?+Ni$l<1WGK#fCZXs@!fnfT|MeiX=NZ6IG|Prb?%<7~HlwynHhx(&jYSIKMd!qjT!%h(vs z2psOE6pUJk(Xt&VEtNEs6TtPw%*VIM?j5)SF;mgtiZJM<9=qbY5IJE8prA%XAjuxO z;#iRI2fc0K8a#DWI;{z1<{I5FDzg?QLQy*|g)O$R`|xjn<}qBUlxIT-Rx2 zGTx6`vXVj>?A~V&8{;$yOs1Tc5?f+O||?E|3mLB^E&-Fw~Ix3IMPq_ zkp)#pm_0FVxZG*)eOQBwt6MC5fVI2{U)(LnRiyCA4HdH%Jdt<+*w%z&&rTiVFyw8zI}(77Il8F=rGZVb&sFt&F^`1Q%n{YuD4zw= zlUe(I*Ms8BR4d*);2JljoR}@G88kfwy45eHnM`}Lq@SkcD(r?t#Q>P=7M)+lM!9e{ zR7Bh%p4N)$b&_EaWCQwxapzndo10SJRL8EtTIv? zgZ1hDX)fTeadSez9t|F!jWN{}SrN+FE4UacAX9~acLjkZR@-yjflGY>zmn7NCN%q! z&fdP~g$Ji#k;VpBX9_Z&7gw>ODXyzztEdd%gt7E|Q;1(I_kel!rUmiAoChu2b#bro zQwdMmHP{Eymo@S4=OveoEI8i)z9M-ccxGp8;pu1Tt*LTEc7Lw636ZVQlpb7SmIVyL0gS3_cGF5Ax@oupk2I0o}ZbBi*jFTX}8lN9EZ zT4NKl`lj`KC72xOzyxoLkBQyEzt0!KX}0zfU>y zBD!0p&c=++j!Nr(*Qe7VHr;?R)%6R)W>eS=^gQYN_q{7QC{EQ8xes03d@h!G*k=S}~)oUlkw zs#yKpTLolUcY=;6TLAi%L2GsNM%sNenDU(t@YC$DrtofPe-MwoL^I=7v(&r$hg%Ta zx76^7cq#tP8a_m5oUf9FrKDcRW5WEdb5d7n4eu>fXZMm$&&y40 z+N%0?9o{AG_ay|m>wAue8={3>N*AV0a5e8YtU+hm2 zz~^#*F#^nZg-F`RL=~Zo!#QJnq}CU*NjZvxJ@01DD|drK=l$gWfkQZ=A2o0S0sxEy z{cchIrDY-TI=S>jd403td0O(urR;>Kxb5-of*yeV zOa^VYB8T{`GUpOr*RHy!FDve0eQb}mCuLCimi$CTw!UK5EDYF<7osJe{SYNPrdqOq zqUJeWwKb=TZ6aYheIm36Op#0-B?cLF0{cf=!{%%1 zvTrktznC01S}=#PigcMfr0xxP`r7lN*8|oSFU$6M_u5wCuk3VWH|W<6$`WWu@|Qap zuyvmRc1iN`R==#?hg{XghLmWM!(C_8;(d`ZRd3ZKmxm{G%xZ3v{C3C1e==@9Od)O) zzkmDSu*N_?z$;LAZQ>@~wn>U|EDR}qPfB4i5|nfMS`*S*s;8tBgH?(x!zz~a^C|6^ z6*KpPt`qjxydvO$*?#v74Z^r1$O1SL)PvD(o!$)xw_fBKwq2_OpHE% zUkT|bQkNw?9j=KhAXrVXlTF{iDqkxU7H$^#4r1WhidR{|+JQan+@vrK9piJQ_#vY0 z3_hZ^G7$$^A0b;&K5uNc$CyxVh9Ivao(MinZ<4<&*nBUMx72on>(#NOo}MKcBo-MH z)fTI;k}}fAxBu05N0fJ&?noc-oL(GF(2wo_^eYx}6)sEUq&M8ISz1mLc}-@nTh;9g zHM?t2q@D(J@rU<7E7^8XlvvO#XxXnq5QdWS)9-XJ==8wksVTdrB%w%6ztYhKGS!(T zjMWrP;fq)65_u*VuOa8!3F(KgSP&+xx3G(pAQ-Ts*+EuU25*fOARPMFBfm}R`b=oR zD!d1EhRsxPF-Oq9gCHD9ka#8lL8)-O)wC(qv#WHvE8gnQ24JML1`L|K-+~eEmIl?9 zWnb?HFSI0-5^J)38En6Rd60s)eu+S?s%l2sDrqhjW0yngJm=culv`jHEU&X3pRCr?tPq2ZH)oK@KCz4$ z$#4|)hp}ev##|1gH(tBLY2J@_chIk2)fWo&QQ~6Bnhc~NRwL?*_VlX5?mC9)Yb8O# z#=>CHCjyhhV15{0+J`X)pTme4Jd_+Q8^Lg zDRQX!FpyU_6{a&BsX_Vdsbu+OMU~#xvo{wuxO66qq!hF%(7`vxN1b62KM2l<3ICZW^J?@dte?A-1K16yvY$m&KYHD=+)>R zXmW&U#Fj163pDgTWn&Gv$Qo_26;jlqU2&2e54P2-y*keQus2g=jcsh2{?^sZE@3sX zR3KcUNf}RN)0-&AuRga{4Zdr}Qz-sks}wIT%}muXF&oQNoCC|WC(f7K9*nJnp#oRC z^AeLI657%3aoP_nA6AXSbPXbc$#Nwr6osO(P;hp3bK_>bQZ`EqM;#s0qL=O-bN{kD z2MSV~#iGEC+TL(+?~n@V62NMQoMH0b-`~tj_?(B9v?BQkEw|rz;J}bwAxi*(-vmeW zGw$m&NY~y%=Q&Z&sc!RJNpZmCJ%!v?{$x3Yxkd{5CJ+;>CBuKKq&K)+X8zjfO(JRNf z(Qm_o|CoeeLf-}ssVn{tSb0JR+2G}tm4;1}EUh|qfAUbj+GVRKSA(Hf0Gow3zdh)& z0f+b}CXJOGnc-FesTL8c24Mt=WO?{)C~i?Kxk55Ii3Mh=bBFf>(8+83(sc=I7;yT* z-IoebY^9{ONh%KgrkvNn%UFR|b_c|EU*oo<^r{GOE8nXqQVo_RMn}`pljb2dQA+}5 zisoqN;C0yrm{U*Hy!NPb=4Bi$=ChrE3R?HSKwem(4sEUzMC}(r+j(WcN~OWdrL{r&X73uVjZVyA8l0QatpqDOdRT4Mub5 z4!x}zjMi5UK<~k|T1q_&B+qucWtyflctxHt$c48_*q4W%!1jAHrbTBFYb>3w&9x)L5K^85fG(fs)nK93k=zu z<6oR>qo^e~B%ltjV#v8>6}xyW(i3%Fq$10Hk|YkRaUk?TCW@a=`wE-g8j}xkMfYCY z(sf{_;7}E=o-uTCyn^&v6TYnu%+eV^(Sb=X_ZOj%yVG*_vZ&kSu4tEe z&Yfsv=!5E+65ArY9(Tn}O+G+Ev9f9|Fq2vx{J7yiIAjPC*I^22l*}3^4Cu9MwDd70+K}gk5X!;%PhOOQg z9iE=8Ex;Uo-hRs<8oo~Xrzdcac{d|BkY1g2=WT|%FC-b|J82zSc~FXS_Q zY|TWxjR_VGtiq1X#88t{lI=}f;`3-_Da;c*PO`(6*$#p0SgGvcZ*^G#>txZ-rJ_MIDKF4j=(KGEffjXky;?A zic&&*c+jJm0!PX!W5}*K_ibBmlz>y$ukjl*U3_K2+}XT1#%(8sBRUe<6P`mi<+~-C zbhM&@#EDQYB1;GifHmS9qf8r{ehG;~8USr9AVGQd!?YR zOKq*@VW9mm2g@&CS{H*}Ti>Cm1v+^`U}rLM^)izb(ow}qESA%Z&dI_@!>Wv&;Nx0# z;2@UTqe=eo=q}M za(f)Z6#x%vok8B8NPi&n=3>4va;(k;V0R9>0yzs=FY%+SRkBp;%M{4Zb!ObsoT`Gw zPq=z=p*jd~h)Zrxh2bk_f7#DtoPjJTp@ax>iHEFZh?V~W(kZ=#?2PWeqqR4&%Uk3U zy@QFJNUJlqIYTg5w#mC*s6&3leNAoS@fhV%9IxeyK?2`(WQ>3qaaev?N>eO%I(Nuy zB&2vi6gN|^C611^xx0FA6AqDXG~>!*v=6bo5R?#bhzJ3@sw!U#rqb3&rr~{ZKiS?l zlffV6R8y&NjFCFm$#x3*j5?_sH1{*=1HVQ6kMWEjwD#Yd{THy?pslh{C@i0_mS=0O zU{p3o5RX$KtYBz3DYCb-isOhsH;3T{fDfoA5XOAMTGxdyv*h!wrw6!gNEgIs#70Co zkOlbGeim(PDWLQas_ChT9>LPMc7>PqdI^_?_Fdz?4!nhW%|oCOpQwmS?H!7|k(rd| z(>mk%9r7$YNXHJeEzKn8a<{1&t;07ijk!@cie@1}dp!*nAA_WuSsM*8NF#6dk15bN zN`06v8w+^_m}ho-rBvs%%s&a{J4W3dZI?foh4Z^;TXJhh!2z`_+#h;hfr4Ohv&)Br zv9-;TX*Az(VA)w8V)|8tvpK)V&VHkP1gQIrv5%W(Am9_eb-%@!>`yye#=+zps7?yc zw;@K_;22O2K@O4oM{HMH`V|&3Q-hohIluLdqNAC-`lFN&Qk}2dn9lyX56hu@lf>cE zuMee7TCXn-zXG=-I!pEIEecF_zzIDFi%z658EPE!3SDzwg9_zQ6WgVRfeZ4S3W&#R zuwT2*?Mg0uZBAkpD#A?B#%xkRGM{}*{I1?a>zJ>Jor}ZR7N|_<%--KSUqiWUn-qrzCzZt^8qHdU@T;{=8r!GZj7BPm4wI+aMqHpB7B$ z?^2DwkAiIFv)=Kt7JMlwC8gW}WI!v}2`!y2Pnr)Pq>u>LFHyRNgtWyW{*^`rjQ4e< zU|PBo4XRq>MT^JH$;#|aANgx37$F!z9EKWv-5!nZWW&>569+IK4I0Qx;`pJa1JZ>1 z?ED~w=wM5_nyPxU`yGjRn1X03R~;i#xzHukXbc^?%)1&ueLN9n8@Mp2jtUlOYa-j*=c?i>`sAC54VeHgUBd7quEHVqwUAH1sjP&^1S@GBE-I z3qfDIDY>0eenQ|X&|_PntVNKA(|Q*aWnV`&-dpzh#Ur$sW&qwb)_Q#EDiODHXIF}) z|A&JZbPJ!=ksF`CLJrg(A7-GRFkbuZq4=ZGsqAQG`FFq}UPav&TN#bVs%Sc9!e6*D zEd2~iFbWqO(L~?QQalYqvl5w~gK!kUOlr)&?`7SdwHwk00K)d8uGW!3m@fRDFRn_8 zBBApb{U|=3!1(R(U(Upo0~>CNXkX-8@hiLE(B7mstA=lB+Ak-3MndmB+$G2Ig(Woe>~dEDC5Pc1h1qRDpe|ML5hLv+wi1G* z6TSihUe$$Q$M&myQaEKv#mlPY<8`3@hp zIYmdMn(pQ={Y}u8y+KomPfC;EE(*xh#kJC?UUWLiEWXT=rmCko#B7+idv~e|4A}qB{qS|Na8wNzxVD9~Ng{)DGlVRtS$omW4%#+i7SpyTQW$I6(7>*xE z#j6Q4Q(pGnfZ|yaAdl=%s#oh_>hvIfh8>f)6#_VMncv^RK=D_tW}!Yllra)jovJc) zW#0EP)}J~T7U0PJC~Ba4#z0o`C71!4dFvXZ$)>+dEh8@a&YOve8n4Wbr|S$Yx1_B* zg>f>krB?)%IxfX*#c2CLwgj^!%}B1IyTdyq36lQ^c1{P>sKsn#zIvmbQjQ}*0f%b) z4Y8Z&RW2vD)5|S2Tq`9!;hdO8V~OhSfCA~yxPg#y&2WGDn=Eeekdx3UeJ$znPo z#s+{eq5uP-cHEcTVk0K~bg@{+#cxRnx+vujLu697s!Bk@FJ_V|pzvl>*EyzcSe8b# zy9~B8i~4Mhb#V<1vU)8XoQt&1{OMIX#`!;a%K3nX#(aqES3$HZ(()Igl#$?8T0POs z)-8o<3e-P5=&N?_83@sjO|{gz-nF=mi72iRDY%h@Yhw8#*{A5L(Z$S_(c^%XF?;q@ z7jTB8Gjj&zUAoTB<^6Wo5ykBm*SmZjo=c|(-$^SHn}T~jy5)sqm|k3v9j;HOg%W+j zu@fD|s@c@k#Q57|E+_)*Sz31AS8EVm?`jH{C+tAPicm|wY-stt9J-6Yy+J)*qTwNK z2;G#QOdLYg7vHs!bprqF0g298f3fIl-V*E(Ib0-`<3M`Z17o9ooQBj}jjlD71Qq5r zTq@nbE5*c$mFE0~YkI}gJ$nz+0xpj01S!y%ra!{XSVF#yHh!Dc9dee=Aab5YK9xBX z)y_4=oF`tLDkW0FcF7T4kcyFPTx69zb(?$?)pX4tB%Z3&8A17$x^TB#{y{JnEVmt> z7nVg7Q50sGWzs@=uR|q=QS!YNZ+jFx!tyN>kunQ|sJKB1DO3r07zhgsT}Q|UR&Iz6 zwHvAoko659JfhJ$Bhb_b6-14QInm%_|8YvhRP$k8qOtp21zzVkHs_hr`Tr z-1Uzqwx|~GKknLL9v`VJYL2B_y>MZ}%x`l)IdY257bl)c30E^=A+p=azjhjd=e={y z8Fzno;_G})QW4b5^%@Q)#+qFp!^19agCYFu1o4~Tiimo|uM>|q2#)~jbH0mvman7A z5^uozQ}jdkMpzUfvjc4J_fKjk4g%lKz%_2;W#12 zdr$n{e;_zLY_1vStVjw0eijik714$ip0ZwhWpMBc_v#9yw1`tu^Q4=R(haH4A_kJ1 zhM2k136C};T=`2@LFkMS%K3^*)>Q_%yAID8+Jd!`<`e>>NENNQt0r5`iAM)|XEQ4Ee&>LOxja8J!M?K_~ zJiS&iBU@jj>o$}?=&ggByaD1|E&P--A$wf%K9G~n<%wHJ$w=f0PGknta$j4U4wQKL z;Ey-NgUl0zo<@{hqEpxf^iR`u6%p{b$uplN3HkUlngqy;ZSJri?0dj+|o2wbSS5THJf z;i^KCiXB`%UB@B{M5}u#uwYX5AtOMZj4dGVHY2{rTM!|WuCfT0Eo7~mLTc3G5&qdu zff>cWJ$cFy*TVfSaP!AHDWm6%!*A-OnEzzxd}APNWZ-1-L-ry(dPuU1A0_ZnVxhO! zv}MY@%{P%v5?t6ZyZ)?-s!<+_Zql)EJcU2zUJEL8t@A0>+|3+2=O-FP$ZRs2_Q7bdDa%Q_zqYU}w7O%|C1~xs>=RkDZ zw%PD{>|49NddA2F7cFiGz8&(M>BF?asP?dk;4xH}28|&i_MA_CMKHz^6tuEaSB6$d z$%z8=jy=ib*^+M}oc8rPx~o8eh0sDV4AdUcX}jjK9z_mS>f=&|;_|QDYiGKtcogw2 zKV^?+MvrFZ;bmT?H6X zn&&dBw=X17_R19u6&_21%y|Tv9{?#be6zBgLS*E*}~ z)9M9Y5ggCp9(C*+rnxk1|L$x~3*kb4sTYX-t-z8#1kRyKmtHVB+~q6n7Zd5B&Z{)L z#Ssc@2gNX<){BAF3gaW@-kHAJn0`dvJe(#fGA7|2nUd(3x#0`E)1hd??<=P{7MKrS z+-HbH`wEukYKpX2+poe(%J$S?=0h9H6tmH2Qcu5^)u!i6Y4ItvVx!p|;j&TM@)wQ~ zcQPK{b^9bgKVpa>o7W_RT(zi9tUY*Upg{HEVQh(oKnAb2#g3A+F-Q~KmBv!n)^O8F zsLphhur4!Cb!efw1^C@oNxp7W4r|$1UZy{9W7o%~dW;*5yiZ3 z?jLzESFz{B0Q2F5pCp(d9OW>VV>)i%4#@kK1NYbyN4^BHGO&Y#d*1sT&D5v{Y^q!@ zQ+VOE_<3}?zdtrcZu*3@AdFDWIgnl5YmsE6QbryAk+jZ&h>Xtih;%`&a`b}gcA3F6 zvSv&{35DgF!cw-errNuRH_Vlrd%TsKr{1ADJr#@U7Vms~KfP*-r}3MQm?N&=!P9wX zsiTJ0ztXY0H{4u^U}IdnZipW7Ac%1cu)%lsn#LIfQ|KH?+|TgBk7hDCo{m5Zd&RYx zICu+mzzHOI4~EE1;AA}cijDvg-G8N8^N@M_)@-CW86HBMJUKJC&;-J8&m;2nBgqBu zIawmL)anbo_5Lk!+CH&}PcR*IOXyvG#@eo5N?PULfQ!go@9di;;br=EttTNVCU>~piick+FD{B`sX ztqcFm=DB&{JJmlu{v(@jtqg!bC;;D;){mvb&&>?q>Eh|}x2*n8Ys2rbdcIV@Qzqyi zc>kvq`RB?0SmE^?V*5^O|Bm7RElqx&^N)D^Sg-Um9(geTYR*3tj{VB}$AX8Sr_c3d zko*?wZ+QIQ`lnw-{8*Uq91HkP%1D0@@q;DuE7u>hrO)T%J0T$df$L8t4!`pKF_HH3 zY{$|5!1ssD>oeDX(h5Iwg?l=4zlHh7ukfl>P^<-&1tIV)0`ZF<9rT1eAbjTfPY3H~ectz^6@JV0o5%C(G=H?EpPi=f1n~sNzhL;Q3-zmj lAB~5f4=pt99|ZhY16^JU^vMhX0Kk0u_(A{xcrZNw`hOqbCC>l= literal 0 HcmV?d00001 diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java index 0199779ac6..0f9fd82a04 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/base/BaseQuery.java @@ -83,9 +83,9 @@ public static void initClass() { @Test public void importPriKeyTest() { - importPriKey("b54db432bba7e13a6c4a28f65b925b18e63bcb79143f7b894fa735d5d3d09db5", password);//打包地址 tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp + //importPriKey("b54db432bba7e13a6c4a28f65b925b18e63bcb79143f7b894fa735d5d3d09db5", password);//打包地址 tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp //importPriKey("188b255c5a6d58d1eed6f57272a22420447c3d922d5765ebb547bc6624787d9f", password);//打包地址 tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe - //importPriKey("fbcae491407b54aa3904ff295f2d644080901fda0d417b2b427f5c1487b2b499", password);//打包地址 tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF + importPriKey("fbcae491407b54aa3904ff295f2d644080901fda0d417b2b427f5c1487b2b499", password);//打包地址 tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF importPriKey("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b", password);//25 tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG importPriKey("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75", password);//26 tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD @@ -169,7 +169,7 @@ public void transfer() { @Test public void transferOne() { String from = "tNULSeBaMtkzQ1tH8JWBGZDCmRHCmySevE4frM"; - String to = "tNULSeBaNNgHMQAwzaJU4rtXD4WEhiRrnrnZWo"; + String to = "tNULSeBaNRJrWyAfNtA6aiAozaJdemWA5WbBFU"; TransferReq.TransferReqBuilder builder = new TransferReq.TransferReqBuilder(chain.getChainId(), chain.getConfig().getAssetId()) .addForm(from, password, new BigDecimal("100.001").movePointRight(8).toBigInteger()) .addTo(to, new BigDecimal("100").movePointRight(8).toBigInteger()); @@ -220,14 +220,20 @@ public void transferMultyAsset() { System.out.println(transferService.transfer(builder.build(new TransferReq())).getData()); } + protected boolean syncKernel = true; @Before public void before() throws Exception { - NoUse.mockModule(); - ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); + updateSyncKernel(); + if (syncKernel) { + NoUse.mockModule(); + ResponseMessageProcessor.syncKernel("ws://" + HostInfo.getLocalIP() + ":7771"); + } chain = new Chain(); chain.setConfig(new ConfigBean(assetId, chainId, 100000000L)); } + protected void updateSyncKernel() {} + protected TransferService transferService = ServiceManager.get(TransferService.class); @@ -335,7 +341,7 @@ private Map makeContractInfoParams(String contractAddress) { */ @Test public void contractResult() throws Exception { - Object[] objects = getContractResult("177c05a636ca62aeb41564f413b4672f7e3d692e04481271d9d36dc95791edde"); + Object[] objects = getContractResult("a92f2928b6c3ee3944a8e0c7e895f4185fb1b9991f82ca5dac1efe82a6adadec"); Log.info("contractResult-result:{}", JSONUtils.obj2PrettyJson(objects[0])); Assert.assertTrue(null != objects[1]); } diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java new file mode 100644 index 0000000000..1d647d457f --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java @@ -0,0 +1,122 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.tx.contractCreate; + +import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.Log; +import io.nuls.core.parse.JSONUtils; +import io.nuls.core.rpc.model.ModuleE; +import io.nuls.core.rpc.model.message.Response; +import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static io.nuls.contract.constant.ContractCmdConstant.TOKEN_TRANSFER; + +/** + * @author: PierreLuo + * @date: 2019-12-06 + */ +public class ContractCreateSendTxTest extends BaseQuery { + + String contractA = "tNULSeBaMwJNC9FUQbiTk2mnCLqYSnF1Ub7nt5"; + + @Test + public void createAndInit() throws Exception { + this.contractA = createContractA(); + System.out.println(contractA); + } + + @Test + public void testCreate() throws Exception { + Map resultA = this.invokeCall(sender, null, contractA, "createContract", null, null, + new String[]{"tNULSeBaMy3Tw7pHNDYwSMaewDypQMdNywXXUJ", "tccc5", "777"}); + resultCheck(resultA); + } + + @Test + public void testCreate2() throws Exception { + Map resultA = this.invokeCall(sender, null, contractA, "createContract2", null, null, + new Object[]{"tNULSeBaN8KDbAPBme3tPNUd69pWSZsqYPz3ym", "pocm0", new Object[]{"tNULSeBaMy4cmp1uhrDPDLBGhXSixFQ8e32JJp", 0, 0, 20000000, 200000000000000L, 1, 10000000000L, true, false, "a"}}); + resultCheck(resultA); + } + + @Test + public void testASD() throws Exception { + Map resultA = this.invokeCall(sender, null, "tNULSeBaMxq6jYc7TeRfeMb8EHHHaiXqC1A6TQ", "submit", null, null, + new String[]{"aaa", "111"}); + resultCheck(resultA); + } + + @Test + public void invokeViewTest() throws Exception { + String view = this.invokeView(contractA, "codeHash", List.of("tNULSeBaN1yJ1rZmwCwGjoRs86cajmbBWZ6he5")); + System.out.println(view); + } + + /** + * token转账 + */ + @Test + public void tokenTransfer() throws Exception { + String token = "tNULSeBaN1t29KzTAVQMKaYup5uyK7raQUGoNY"; + String to = "tNULSeBaNRJrWyAfNtA6aiAozaJdemWA5WbBFU"; + BigInteger value = new BigDecimal("10").movePointRight(8).toBigInteger(); + String remark = "token transfer to " + to; + Map params = this.makeTokenTransferParams(sender, to, token, value, remark); + Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, TOKEN_TRANSFER, params); + Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(TOKEN_TRANSFER)); + assertTrue(cmdResp2, result); + String hash = (String) result.get("txHash"); + Log.info("contractResult:{}", JSONUtils.obj2PrettyJson(waitGetContractTx(hash))); + } + + private void resultCheck(Map resultA) { + Map contractResult = (Map) resultA.get("contractResult"); + if (contractResult.get("flag") != null) { + contractResult = (Map) contractResult.get("data"); + } + boolean success = Boolean.parseBoolean(contractResult.get("success").toString()); + Assert.assertTrue("expect success, " + contractResult.get("errorMessage") + ", " + contractResult.get("stackTrace"), success); + } + + + private String createContractA() throws Exception { + Log.info("开始创建虚拟机测试合约A"); + InputStream in = new FileInputStream("/Users/pierreluo/IdeaProjects/contract-vm-testA/target/contract-vm-testA-testA.jar"); + byte[] contractCode = IOUtils.toByteArray(in); + String remark = "create test A"; + return this.invokeCreate(sender, contractCode, "test_a", remark); + } +} diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multiSign/MultiSignTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multiSign/MultiSignTxTest.java index 8f55973a2f..4164ca1ec1 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multiSign/MultiSignTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/multiSign/MultiSignTxTest.java @@ -24,20 +24,38 @@ package io.nuls.contract.tx.multiSign; import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.CoinData; +import io.nuls.base.data.CoinFrom; +import io.nuls.base.data.CoinTo; +import io.nuls.base.data.Transaction; +import io.nuls.base.signture.MultiSignTxSignature; +import io.nuls.base.signture.P2PHKSignature; +import io.nuls.base.signture.SignatureUtil; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.rpc.call.TransactionCall; import io.nuls.contract.tx.base.BaseQuery; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.LedgerTestUtil; import io.nuls.contract.vm.util.JsonUtils; +import io.nuls.core.constant.TxType; +import io.nuls.core.crypto.ECKey; +import io.nuls.core.crypto.HexUtil; import io.nuls.core.log.Log; import io.nuls.core.parse.JSONUtils; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; import io.nuls.core.rpc.model.message.Response; import io.nuls.core.rpc.netty.processor.ResponseMessageProcessor; +import io.nuls.v2.model.dto.RpcResult; +import io.nuls.v2.util.JsonRpcUtil; import org.junit.Test; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -48,6 +66,36 @@ */ public class MultiSignTxTest extends BaseQuery { + static int chainId = 2; + static int assetChainId = 2; + static int assetId = 1; + static String rpcAddress; + + private void setDev() { + chainId = 2; + assetChainId = 2; + assetId = 1; + } + + private void setTest() { + chainId = 2; + assetChainId = 2; + assetId = 1; + rpcAddress = "http://beta.api.nuls.io/jsonrpc"; + } + + private void setMain() { + chainId = 1; + assetChainId = 1; + assetId = 1; + rpcAddress = "https://api.nuls.io/jsonrpc"; + } + + @Override + protected void updateSyncKernel() { + this.syncKernel = false; + } + @Test public void createMultiSigAccountTest() throws Exception { //create 3 account @@ -66,6 +114,81 @@ public void createMultiSigAccountTest() throws Exception { Log.info(JSONUtils.obj2PrettyJson(cmdResp)); } + @Test + public void callContractByMultiAddress() throws Exception { + setTest(); + String multiAddress = "tNULSeBaNRJrWyAfNtA6aiAozaJdemWA5WbBFU"; + String contractAddress = "tNULSeBaMxCJQwsXpY3xfo6nwY3k8tRacs9pBH"; + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + byte[] multiAddressBytes = AddressTool.getAddress(multiAddress); + Transaction tx = new Transaction(); + tx.setType(TxType.CALL_CONTRACT); + tx.setTime(System.currentTimeMillis() / 1000); + tx.setRemark("multi address call test".getBytes(StandardCharsets.UTF_8)); + CoinData coinData = new CoinData(); + //byte[] nonce = HexUtil.decode(LedgerTestUtil.getUnConfirmedBalanceAndNonce(chain, chainId, assetId, multiAddress).getNonce()); + //if (null == nonce) { + // nonce = HexUtil.decode("0000000000000000"); + //} + byte[] nonce; + RpcResult request = JsonRpcUtil.request(rpcAddress, "getAccountBalance", List.of(chainId, assetChainId, assetId, multiAddress)); + Map result = (Map) request.getResult(); + String nonceStr = (String) result.get("nonce"); + if (null == nonceStr) { + nonce = HexUtil.decode("0000000000000000"); + } else { + nonce = HexUtil.decode(nonceStr); + } + + long gasLimit = 200000L; + long gasPrice = 25; + coinData.addFrom(new CoinFrom(multiAddressBytes, chainId, assetId, new BigDecimal("0.001").movePointRight(8).toBigInteger().add(BigInteger.valueOf(gasLimit * gasPrice)), nonce, (byte) 0)); + //coinData.addTo(new CoinTo(multiAddressBytes, chainId, assetId, BigInteger.ZERO, (byte) 0)); + tx.setCoinData(coinData.serialize()); + CallContractData callContractData = new CallContractData(); + callContractData.setContractAddress(contractAddressBytes); + callContractData.setSender(multiAddressBytes); + callContractData.setValue(BigInteger.ZERO); + callContractData.setPrice(gasPrice); + callContractData.setGasLimit(gasLimit); + callContractData.setMethodName("transfer"); + String[][] args = ContractUtil.twoDimensionalArray(new String[]{"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG", new BigDecimal("3").movePointRight(6).toPlainString()}); + if (args != null) { + callContractData.setArgsCount((short) args.length); + callContractData.setArgs(args); + } + tx.setTxData(callContractData.serialize()); + String[] pubkeys = new String[]{ + "03958b790c331954ed367d37bac901de5c2f06ac8368b37d7bd6cd5ae143c1d7e3", + "0318f683066b45e7a5225779061512e270044cc40a45c924afcf78bb7587758ca0", + "02c2b4e37fa297879c3ed824d021c0ee4692c6f87fcaf1681d712ccd485784b9bd"}; + List pubkeyList = Arrays.asList(pubkeys); + List collect = pubkeyList.stream().map(p -> HexUtil.decode(p)).collect(Collectors.toList()); + MultiSignTxSignature transactionSignature = new MultiSignTxSignature(); + transactionSignature.setM((byte) 2); + transactionSignature.setPubKeyList(collect); + tx.setTransactionSignature(transactionSignature.serialize()); + + List p2PHKSignatures = new ArrayList<>(); + List priKeyList = new ArrayList<>(); + priKeyList.add("9ce21dad67e0f0af2599b41b515a7f7018059418bab892a7b68f283d489abc4b"); + priKeyList.add("477059f40708313626cccd26f276646e4466032cabceccbf571a7c46f954eb75"); + priKeyList.add("8212e7ba23c8b52790c45b0514490356cd819db15d364cbe08659b5888339e78"); + for (String pri : priKeyList) { + ECKey eckey = ECKey.fromPrivate(new BigInteger(1, HexUtil.decode(pri))); + P2PHKSignature p2PHKSignature = SignatureUtil.createSignatureByEckey(tx, eckey); + p2PHKSignatures.add(p2PHKSignature); + transactionSignature.setP2PHKSignatures(p2PHKSignatures); + } + tx.setTransactionSignature(transactionSignature.serialize()); + String txHex = HexUtil.encode(tx.serialize()); + System.out.println(String.format("txHash: %s", tx.getHash().toString())); + System.out.println(String.format("txHex: %s", txHex)); + //TransactionCall.newTx(chainId, txHex); + RpcResult newTx = JsonRpcUtil.request(rpcAddress, "broadcastTx", List.of(chainId, txHex)); + System.out.println(JSONUtils.obj2PrettyJson(newTx)); + } + public SimpleAccountDTO getAccountByAddress(int chainId, String address) throws Exception { Map params = new HashMap<>(); params.put(Constants.CHAIN_ID, chainId); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenQueryTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenQueryTest.java index a47e02fe64..a630688b08 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenQueryTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenQueryTest.java @@ -214,7 +214,8 @@ private Map makeTransferFeeParams(String address, String toAddress, BigInteger a @Test public void tokenBalance() throws Exception { // tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG - Map params = this.makeTokenBalanceParams(contractAddress_nrc20, "tNULSeBaMp9wC9PcWEcfesY7YmWrPfeQzkN1xL"); + contractAddress_nrc20 = "tNULSeBaNBjScvcfjniHFcJ2iyzndUYL3snwQy"; + Map params = this.makeTokenBalanceParams(contractAddress_nrc20, "tNULSeBaN6RsxRsLph4wqmB21jtLZsR2qFct7g"); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, TOKEN_BALANCE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(TOKEN_BALANCE)); Assert.assertTrue(JSONUtils.obj2PrettyJson(cmdResp2), null != result); @@ -277,6 +278,8 @@ private Map makeTokenTransferListParams(String address, int pageNumber, int page */ @Test public void invokeView() throws Exception { + contractAddress0 = "tNULSeBaN5wa9Eo82aVyn43k3F4UGZYdEvBCsQ"; + toAddress0 = "tNULSeBaN6RsxRsLph4wqmB21jtLZsR2qFct7g"; String methodName = "balanceOf"; String methodDesc = ""; Map params = this.makeInvokeViewParams(contractAddress0, methodName, methodDesc, toAddress0); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java index b3a4201f77..cd39d03fd0 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/nrc20/ContractNRC20TokenSendTxTest.java @@ -65,8 +65,8 @@ public void createContract() throws Exception { InputStream in = new FileInputStream(ContractTest.class.getResource("/nrc20-locked-token").getFile()); byte[] contractCode = IOUtils.toByteArray(in); String remark = "create contract test - 空气币"; - String name = "LOCK_KQB"; - String symbol = "LOCK_KongQiBi"; + String name = "NulsSwap"; + String symbol = "NulsSwap"; String amount = BigDecimal.TEN.pow(10).toPlainString(); String decimals = "2"; Map params = this.makeCreateParams("tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD", contractCode, "kqb", remark, name, symbol, amount, decimals); @@ -95,7 +95,7 @@ public void callContract() throws Exception { String methodDesc = ""; String remark = "call contract test - 空气币转账"; String token = BigInteger.valueOf(800L).toString(); - Map params = this.makeCallParams(sender, value, contractAddress_nrc20, methodName, methodDesc, remark, tokenReceiver, token); + Map params = this.makeCallParams(sender, value, "tNULSeBaMy3Tw7pHNDYwSMaewDypQMdNywXXUJ", methodName, methodDesc, remark, tokenReceiver, token); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CALL, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CALL)); assertTrue(cmdResp2, result); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java index 440926ba96..960bfa24cc 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/pocm/ContractPOCMSendTxTest.java @@ -26,7 +26,6 @@ import io.nuls.contract.mock.basetest.ContractTest; -import io.nuls.contract.sdk.annotation.View; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; import io.nuls.core.parse.JSONUtils; @@ -60,15 +59,22 @@ public class ContractPOCMSendTxTest extends BaseQuery { */ @Test public void createConsensusEnhancementContract() throws Exception { - String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3").getFile(); - InputStream in = new FileInputStream(filePath); + //String filePath = ContractPOCMSendTxTest.class.getResource("/pocmContract-v3").getFile(); + InputStream in = new FileInputStream("/Users/pierreluo/IdeaProjects/pocmContract-new/target/pocmContract-new-1.0-SNAPSHOT.jar"); byte[] contractCode = IOUtils.toByteArray(in); - String remark = "POCM - consensus enhancement contract test - POCM_共识加强合约"; - // String tokenAddress, BigInteger cycleRewardTokenAmount, int awardingCycle, - // BigInteger minimumDepositNULS, int minimumLocked, boolean openConsensus, - // int lockedTokenDay, String authorizationCode, String rewardHalvingCycle, String maximumDepositAddressCount - Object[] args = new Object[]{"tNULSeBaN152GXtPK5MZX57zeFR7QKvjNKkVA5", 5000, 2, 200, 2, false, 1, null, null, null}; - Map params = this.makeCreateParams(sender, contractCode, "pocm_enhancement", remark, args); + String remark = "POCM new"; + //Address candyToken, + //int candyAssetChainId, + //int candyAssetId, + //BigInteger candyPerBlock, + //BigInteger candySupply, + //int lockedTokenDay, + //BigInteger minimumStaking, + //boolean openConsensus, + //boolean openAwardConsensusNodeProvider, + //String authorizationCode + Object[] args = new Object[]{"tNULSeBaMy3Tw7pHNDYwSMaewDypQMdNywXXUJ", 0, 0, 20000000, 200000000000000L, 1, 10000000000L, true, false, "qwerqwerasd"}; + Map params = this.makeCreateParams(sender, contractCode, "pocm_new", remark, args); Response cmdResp2 = ResponseMessageProcessor.requestAndResponse(ModuleE.SC.abbr, CREATE, params); Map result = (HashMap) (((HashMap) cmdResp2.getResponseData()).get(CREATE)); assertTrue(cmdResp2, result); @@ -518,7 +524,6 @@ public void transfer2Contract() throws Exception { /** * 调用视图方法 - 合约整体信息 */ - @View @Test public void getContractWholeInfo() throws Exception { String methodName = "wholeConsensusInfo"; diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/randomseed/RandomSeedSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/randomseed/RandomSeedSendTxTest.java index e2e6348293..d97894e27f 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/randomseed/RandomSeedSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/randomseed/RandomSeedSendTxTest.java @@ -25,7 +25,6 @@ package io.nuls.contract.tx.randomseed; -import io.nuls.contract.sdk.annotation.View; import io.nuls.contract.tx.base.BaseQuery; import io.nuls.contract.util.Log; import io.nuls.core.parse.JSONUtils; @@ -42,7 +41,6 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import static io.nuls.contract.constant.ContractCmdConstant.CALL; import static io.nuls.contract.constant.ContractCmdConstant.CREATE; /** @@ -153,7 +151,6 @@ public void getRandomSeedListByHeight() throws Exception { /** * 调用视图方法 - 合约整体信息 */ - @View @Test public void getContractWholeInfo() throws Exception { Log.info("viewRandomSeedByCountAndAlg is {}", invokeView(contractAddress, "viewRandomSeedByCountAndAlg", 10, 5, "sha3")); diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/LedgerTestUtil.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/LedgerTestUtil.java new file mode 100644 index 0000000000..a855962b60 --- /dev/null +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/util/LedgerTestUtil.java @@ -0,0 +1,52 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2018 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.util; + +import io.nuls.contract.model.bo.Chain; +import io.nuls.contract.model.bo.ContractBalance; +import io.nuls.contract.rpc.call.LedgerCall; +import io.nuls.core.exception.NulsException; + +import java.math.BigInteger; +import java.util.Map; + +/** + * @author: PierreLuo + * @date: 2022/6/23 + */ +public class LedgerTestUtil { + public static ContractBalance getUnConfirmedBalanceAndNonce(Chain chain, int assetChainId, int assetId, String address) { + try { + Map balance = LedgerCall.getBalanceAndNonce(chain, assetChainId, assetId, address); + ContractBalance contractBalance = ContractBalance.newInstance(); + contractBalance.setBalance(new BigInteger(balance.get("available").toString())); + contractBalance.setFreeze(new BigInteger(balance.get("freeze").toString())); + contractBalance.setNonce((String) balance.get("nonce")); + return contractBalance; + } catch (NulsException e) { + Log.error(e); + return ContractBalance.newInstance(); + } + } +} diff --git a/version b/version index 53fdb123b9..575a07b9f9 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.13.1 \ No newline at end of file +2.14.0 \ No newline at end of file From e370cdbb04d8e89153a2cea4adea2f5d0a609969 Mon Sep 17 00:00:00 2001 From: Niels Date: Thu, 25 Aug 2022 16:50:08 +0800 Subject: [PATCH 300/304] 2.15.0 (#677) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * upgrade jar * upgrade jar * update internal create * update nrc20 initial totalsupply * v2.15.0-beta: Modify asset name restriction. The restriction name cannot contain NULS to be NULS. * v2.15.0-beta: add getAddressesAndVerifySignature method * v2.15.0-beta: add getAddressesAndVerifySignature method * add address by key in contract vm sdk * v2.15.0 Signed-off-by: dependabot[bot] Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../io/nuls/base/signture/SignatureUtil.java | 78 +++++++++- common/nuls-core-rpc/pom.xml | 6 +- common/nuls-core/pom.xml | 97 ++++++++++++- .../main/java/io/nuls/core/crypto/ECKey.java | 129 ++--------------- .../java/io/nuls/core/crypto/LazyECPoint.java | 9 +- .../io/nuls/core/model/FormatValidUtils.java | 15 ++ .../java/io/nuls/core/parse/JSONUtils.java | 4 +- module/nuls-account/pom.xml | 2 +- module/nuls-api/pom.xml | 2 +- .../java/io/nuls/chain/rpc/cmd/AssetCmd.java | 8 +- .../java/io/nuls/chain/rpc/cmd/ChainCmd.java | 8 +- .../nuls/chain/service/ValidateService.java | 3 + .../service/impl/ValidateServiceImpl.java | 49 ++++++- .../tx/v15/AddAssetTransferProcessor.java | 109 ++++++++++++++ .../tx/v15/RegChainTransferProcessor.java | 135 ++++++++++++++++++ .../src/main/resources/protocol-config.json | 25 ++++ .../ledger/service/AssetRegMngService.java | 1 + .../service/impl/AssetRegMngServiceImpl.java | 37 +++++ .../v15/AssetRegTransferProcessor.java | 132 +++++++++++++++++ .../src/main/resources/protocol-config.json | 24 +++- module/nuls-network/pom.xml | 4 +- .../src/main/resources/versions.json | 5 + module/nuls-smart-contract/pom.xml | 8 +- .../nuls/contract/config/ContractContext.java | 1 + .../nuls/contract/helper/ContractHelper.java | 99 +++++++++++++ .../contract/rpc/call/ChainManagerCall.java | 23 ++- .../tx/SmartContractVersionChangeInvoker.java | 15 +- .../java/io/nuls/contract/util/VMContext.java | 18 +++ .../src/main/java/io/nuls/contract/vm/VM.java | 9 ++ .../java/io/nuls/contract/vm/VMFactory.java | 39 +++++ .../contract/vm/code/ClassCodeLoader.java | 18 +++ .../io/nuls/contract/sdk/NativeAddress.java | 8 ++ .../io/nuls/contract/sdk/NativeUtils.java | 51 +++++++ .../java/io/nuls/contract/vm/util/Utils.java | 18 +++ .../src/main/resources/used_classes_sdk_v15 | Bin 0 -> 14885 bytes .../ContractCreateSendTxTest.java | 18 ++- version | 2 +- 37 files changed, 1045 insertions(+), 164 deletions(-) create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/AddAssetTransferProcessor.java create mode 100644 module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/RegChainTransferProcessor.java create mode 100644 module/nuls-ledger/src/main/java/io/nuls/ledger/service/v15/AssetRegTransferProcessor.java create mode 100644 module/nuls-smart-contract/src/main/resources/used_classes_sdk_v15 diff --git a/common/nuls-base/src/main/java/io/nuls/base/signture/SignatureUtil.java b/common/nuls-base/src/main/java/io/nuls/base/signture/SignatureUtil.java index d36246ac2d..45119469ad 100644 --- a/common/nuls-base/src/main/java/io/nuls/base/signture/SignatureUtil.java +++ b/common/nuls-base/src/main/java/io/nuls/base/signture/SignatureUtil.java @@ -56,17 +56,18 @@ public class SignatureUtil { private static final int MAIN_CHAIN_ID = 1; + /** * 验证交易中所有签名正确性 * * @param chainId 当前链ID - * @param tx 交易 + * @param tx 交易 */ public static boolean validateTransactionSignture(int chainId, Transaction tx) throws NulsException { // 判断硬分叉,需要一个高度 long hardForkingHeight = 878000; boolean forked = tx.getBlockHeight() <= 0 || tx.getBlockHeight() > hardForkingHeight; - if(chainId != MAIN_CHAIN_ID) { + if (chainId != MAIN_CHAIN_ID) { forked = true; } try { @@ -132,7 +133,7 @@ public static boolean validateTransactionSignture(int chainId, Transaction tx) t * * @param tx 交易 */ - public static boolean ctxSignatureValid(int chainId,Transaction tx)throws NulsException{ + public static boolean ctxSignatureValid(int chainId, Transaction tx) throws NulsException { if (tx.getTransactionSignature() == null || tx.getTransactionSignature().length == 0) { throw new NulsException(new Exception()); } @@ -150,7 +151,7 @@ public static boolean ctxSignatureValid(int chainId,Transaction tx)throws NulsEx throw new NulsException(new Exception("Transaction signature error !")); } signAddress = AddressTool.getStringAddressByBytes(AddressTool.getAddress(signature.getPublicKey(), chainId)); - if(!fromAddressSet.contains(signAddress)){ + if (!fromAddressSet.contains(signAddress)) { continue; } fromAddressSet.remove(signAddress); @@ -159,7 +160,7 @@ public static boolean ctxSignatureValid(int chainId,Transaction tx)throws NulsEx break; } } - if(passCount < signCount || !fromAddressSet.isEmpty()){ + if (passCount < signCount || !fromAddressSet.isEmpty()) { throw new NulsException(new Exception("Transaction signature error !")); } return true; @@ -255,6 +256,73 @@ public static Set getAddressFromTX(Transaction tx, int chainId) throws N return addressSet; } + /** + * 验证签名(不包含多签),如果签名验证通过则返回签名中的地址 + * @param chainId + * @param data + * @param signatureBytes + * @return + */ + public static Set getAddressesAndVerifySignature(int chainId, byte[] data, byte[] signatureBytes) { + if (signatureBytes == null || signatureBytes.length == 0) { + return null; + } + List p2PHKSignatures; + Set addressSet = new HashSet<>(); + try { + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(signatureBytes, 0); + p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + } catch (Exception e) { + return null; + } + if ((p2PHKSignatures == null || p2PHKSignatures.size() == 0)) { + return null; + } + for (P2PHKSignature signature : p2PHKSignatures) { + try { + if(!validateSignture(data,signature)){ + return null; + } + } catch (NulsException e) { + return null; + } + if (signature.getPublicKey() != null && signature.getPublicKey().length != 0) { + addressSet.add(AddressTool.getStringAddressByBytes(AddressTool.getAddress(signature.getPublicKey(), chainId))); + } + } + return addressSet; + } + + /** + * 从签名中提取地址列表(不验证签名) + * @param chainId + * @param signatureBytes + * @return + */ + public static Set getAddressesFromSignature(int chainId, byte[] signatureBytes) { + if (signatureBytes == null || signatureBytes.length == 0) { + return null; + } + List p2PHKSignatures; + Set addressSet = new HashSet<>(); + try { + TransactionSignature transactionSignature = new TransactionSignature(); + transactionSignature.parse(signatureBytes, 0); + p2PHKSignatures = transactionSignature.getP2PHKSignatures(); + } catch (Exception e) { + return null; + } + if ((p2PHKSignatures == null || p2PHKSignatures.size() == 0)) { + return null; + } + for (P2PHKSignature signature : p2PHKSignatures) { + if (signature.getPublicKey() != null && signature.getPublicKey().length != 0) { + addressSet.add(AddressTool.getStringAddressByBytes(AddressTool.getAddress(signature.getPublicKey(), chainId))); + } + } + return addressSet; + } /** * 生成交易TransactionSignture * diff --git a/common/nuls-core-rpc/pom.xml b/common/nuls-core-rpc/pom.xml index c95e74f825..d9a721a424 100644 --- a/common/nuls-core-rpc/pom.xml +++ b/common/nuls-core-rpc/pom.xml @@ -52,14 +52,14 @@ commons-logging commons-logging - 1.1.1 + 1.2 javax.xml.bind jaxb-api - 2.3.0 + 2.3.1 @@ -72,7 +72,7 @@ io.netty netty-all - 4.1.42.Final + 4.1.72.Final com.google.protobuf diff --git a/common/nuls-core/pom.xml b/common/nuls-core/pom.xml index b29eba9aaf..ebec42455a 100644 --- a/common/nuls-core/pom.xml +++ b/common/nuls-core/pom.xml @@ -23,6 +23,12 @@ ch.qos.logback logback-access ${logback.version} + + + logback-core + ch.qos.logback + + ch.qos.logback @@ -33,37 +39,118 @@ ch.qos.logback logback-classic ${logback.version} + + + logback-core + ch.qos.logback + + + slf4j-api + org.slf4j + + com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider - 2.9.9 + 2.13.3 com.fasterxml.jackson.core jackson-annotations + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-base + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-base + 2.13.3 + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + 2.13.3 + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + jakarta.activation + jakarta.activation-api + + + + + jakarta.activation-api + jakarta.activation + 1.2.2 + + + com.fasterxml.jackson.core + jackson-core + 2.13.3 + + + com.fasterxml.jackson.core + jackson-databind + 2.13.3 + + + jackson-annotations + com.fasterxml.jackson.core + + + jackson-core + com.fasterxml.jackson.core + com.fasterxml.jackson.core jackson-annotations - 2.9.9 + 2.13.3 com.fasterxml.jackson.module jackson-module-afterburner - 2.9.9 + 2.13.3 org.bouncycastle bcprov-jdk15on - 1.62 + 1.67 @@ -79,7 +166,7 @@ com.google.guava guava - 29.0-jre + 31.0.1-jre compile diff --git a/common/nuls-core/src/main/java/io/nuls/core/crypto/ECKey.java b/common/nuls-core/src/main/java/io/nuls/core/crypto/ECKey.java index e60a786f1f..279ae570e4 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/crypto/ECKey.java +++ b/common/nuls-core/src/main/java/io/nuls/core/crypto/ECKey.java @@ -43,6 +43,7 @@ import org.bouncycastle.math.ec.FixedPointUtil; import org.bouncycastle.math.ec.custom.sec.SecP256K1Curve; import org.bouncycastle.util.Properties; +import org.bouncycastle.util.encoders.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -197,40 +198,6 @@ protected ECKey(@Nullable BigInteger priv, LazyECPoint pub) { this.pub = checkNotNull(pub); } - /** - * Utility for compressing an elliptic curve point. Returns the same point if it's already compressed. - * See the ECKey class docs for a discussion of point compression. - */ - public static ECPoint compressPoint(ECPoint point) { - return getPointWithCompression(point, true); - } - - public static LazyECPoint compressPoint(LazyECPoint point) { - return point.isCompressed() ? point : new LazyECPoint(compressPoint(point.get())); - } - - /** - * Utility for decompressing an elliptic curve point. Returns the same point if it's already compressed. - * See the ECKey class docs for a discussion of point compression. - */ - public static ECPoint decompressPoint(ECPoint point) { - return getPointWithCompression(point, false); - } - - public static LazyECPoint decompressPoint(LazyECPoint point) { - return !point.isCompressed() ? point : new LazyECPoint(decompressPoint(point.get())); - } - - private static ECPoint getPointWithCompression(ECPoint point, boolean compressed) { - if (point.isCompressed() == compressed) { - return point; - } - point = point.normalize(); - BigInteger x = point.getAffineXCoord().toBigInteger(); - BigInteger y = point.getAffineYCoord().toBigInteger(); - return CURVE.getCurve().createPoint(x, y, compressed); - } - /** * Construct an ECKey from an ASN.1 encoded private key. These are produced by OpenSSL and stored by Bitcoin * Core in its wallet. Note that this is slow because it requires an EC point multiply. @@ -244,16 +211,8 @@ public static ECKey fromASN1(byte[] asn1privkey) { * public key is compressed. */ public static ECKey fromPrivate(BigInteger privKey) { - return fromPrivate(privKey, true); - } - - /** - * Creates an ECKey given the private key only. The public key is calculated from it (this is slow), either - * compressed or not. - */ - public static ECKey fromPrivate(BigInteger privKey, boolean compressed) { ECPoint point = publicPointFromPrivate(privKey); - return new ECKey(privKey, getPointWithCompression(point, compressed)); + return new ECKey(privKey, point); } /** @@ -264,14 +223,6 @@ public static ECKey fromPrivate(byte[] privKeyBytes) { return fromPrivate(new BigInteger(1, privKeyBytes)); } - /** - * Creates an ECKey given the private key only. The public key is calculated from it (this is slow), either - * compressed or not. - */ - public static ECKey fromPrivate(byte[] privKeyBytes, boolean compressed) { - return fromPrivate(new BigInteger(1, privKeyBytes), compressed); - } - /** * Creates an ECKey that simply trusts the caller to ensure that point is really the result of multiplying the * generator point by the private key. This is used to speed things up when you know you have the right values @@ -322,67 +273,6 @@ public static ECKey fromPublicOnly(byte[] pub) { return new ECKey(null, CURVE.getCurve().decodePoint(pub)); } - /** - * Returns a copy of this key, but with the public point represented in uncompressed form. Normally you would - * never need this: it's for specialised scenarios or when backwards compatibility in encoded form is necessary. - */ - public ECKey decompress() { - if (!pub.isCompressed()) { - return this; - } else { - return new ECKey(priv, decompressPoint(pub.get())); - } - } - - /** - * Creates an ECKey given only the private key bytes. This is the same as using the BigInteger constructor, but - * is more convenient if you are importing a key from elsewhere. The public key will be automatically derived - * from the private key. - */ - @Deprecated - public ECKey(@Nullable byte[] privKeyBytes, @Nullable byte[] pubKey) { - this(privKeyBytes == null ? null : new BigInteger(1, privKeyBytes), pubKey); - } - - - /** - * Creates an ECKey given either the private key only, the public key only, or both. If only the private key - * is supplied, the public key will be calculated from it (this is slow). If both are supplied, it's assumed - * the public key already correctly matches the private key. If only the public key is supplied, this ECKey cannot - * be used for signing. - * - * @param compressed If set to true and pubKey is null, the derived public key will be in compressed form. - */ - @Deprecated - public ECKey(@Nullable BigInteger privKey, @Nullable byte[] pubKey, boolean compressed) { - if (privKey == null && pubKey == null) { - throw new IllegalArgumentException("ECKey requires at least private or public key"); - } - this.priv = privKey; - if (pubKey == null) { - // Derive public from private. - ECPoint point = publicPointFromPrivate(privKey); - point = getPointWithCompression(point, compressed); - this.pub = new LazyECPoint(point); - } else { - // We expect the pubkey to be in regular encoded form, just as a BigInteger. Therefore the first byte is - // a special marker byte. - // TODO: This is probably not a useful API and may be confusing. - this.pub = new LazyECPoint(CURVE.getCurve(), pubKey); - } - } - - /** - * Creates an ECKey given either the private key only, the public key only, or both. If only the private key - * is supplied, the public key will be calculated from it (this is slow). If both are supplied, it's assumed - * the public key already correctly matches the public key. If only the public key is supplied, this ECKey cannot - * be used for signing. - */ - @Deprecated - private ECKey(@Nullable BigInteger privKey, @Nullable byte[] pubKey) { - this(privKey, pubKey, false); - } - /** * Returns true if this key doesn't have unencrypted access to private key bytes. This may be because it was never * given any private key bytes to begin with (a watching key), or because the key is encrypted. You can use @@ -414,7 +304,7 @@ public static byte[] publicKeyFromPrivate(BigInteger privKey, boolean compressed */ public static ECPoint publicPointFromPrivate(BigInteger privKey) { /* - * TODO: FixedPointCombMultiplier currently doesn't support scalars longer than the group order, + * FixedPointCombMultiplier currently doesn't support scalars longer than the group order, * but that could change in future versions. */ if (privKey.bitLength() > CURVE.getN().bitLength()) { @@ -649,6 +539,14 @@ protected byte[] doSign(byte[] input, BigInteger privateKeyForSigning) { return new ECDSASignature(components[0], components[1]).toCanonicalised().encodeToDER(); } + protected ECDSASignature sign(byte[] input, BigInteger privateKeyForSigning) { + HexUtil.checkNotNull(privateKeyForSigning); + ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); + ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(privateKeyForSigning, CURVE); + signer.init(true, privKey); + BigInteger[] components = signer.generateSignature(input); + return new ECDSASignature(components[0], components[1]); + } /** *

Verifies the given ECDSA signature against the message bytes using the public key bytes.

@@ -687,7 +585,7 @@ public static boolean verify(byte[] data, byte[] signature, byte[] pub) { /** * 用私钥对数据进行签名 * - * @param hash 需签名数据 + * @param hash 需签名数据 * @return byte[] 签名 */ public byte[] sign(Sha256Hash hash) { @@ -784,8 +682,7 @@ private static ECKey extractKeyFromASN1(byte[] asn1privkey) { checkArgument(encoding >= 2 && encoding <= 4, "Input has 'publicKey' with invalid encoding"); // Now sanity check to ensure the pubkey bytes match the privkey. - boolean compressed = (pubbits.length == 33); - ECKey key = new ECKey(privkey, null, compressed); + ECKey key = ECKey.fromPrivate(privkey); if (!Arrays.equals(key.getPubKey(), pubbits)) { throw new IllegalArgumentException("Public key in ASN.1 structure does not match private key."); } diff --git a/common/nuls-core/src/main/java/io/nuls/core/crypto/LazyECPoint.java b/common/nuls-core/src/main/java/io/nuls/core/crypto/LazyECPoint.java index 22318941e2..f9d73f61a5 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/crypto/LazyECPoint.java +++ b/common/nuls-core/src/main/java/io/nuls/core/crypto/LazyECPoint.java @@ -71,7 +71,7 @@ public byte[] getEncoded() { if (bits != null) { return Arrays.copyOf(bits, bits.length); } else { - return get().getEncoded(); + return get().getEncoded(true); } } @@ -96,11 +96,10 @@ public boolean isNormalized() { } public boolean isCompressed() { - if (bits != null) { - return bits[0] == 2 || bits[0] == 3; - } else { - return get().isCompressed(); + if (bits == null) { + return false; } + return bits[0] == 2 || bits[0] == 3; } public ECPoint multiply(BigInteger k) { diff --git a/common/nuls-core/src/main/java/io/nuls/core/model/FormatValidUtils.java b/common/nuls-core/src/main/java/io/nuls/core/model/FormatValidUtils.java index 356a98c13c..e18912c245 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/model/FormatValidUtils.java +++ b/common/nuls-core/src/main/java/io/nuls/core/model/FormatValidUtils.java @@ -70,7 +70,22 @@ public static boolean validTokenNameOrSymbol(String name) { } return name.matches("^([a-zA-Z0-9]+[a-zA-Z0-9_]*[a-zA-Z0-9]+)|[a-zA-Z0-9]+${1,20}"); } + public static boolean validTokenNameOrSymbolV15(String name) { + if (StringUtils.isBlank(name)) { + return false; + } + + String upperCaseName = name.toUpperCase(); + if(upperCaseName.equals(NULS)) { + return false; + } + byte[] aliasBytes = name.getBytes(StandardCharsets.UTF_8); + if (aliasBytes.length < 1 || aliasBytes.length > 20) { + return false; + } + return name.matches("^([a-zA-Z0-9]+[a-zA-Z0-9_]*[a-zA-Z0-9]+)|[a-zA-Z0-9]+${1,20}"); + } /** * 备注规则: 可以为空,或者不大于60字节 * @param remark 备注 diff --git a/common/nuls-core/src/main/java/io/nuls/core/parse/JSONUtils.java b/common/nuls-core/src/main/java/io/nuls/core/parse/JSONUtils.java index 4769cc3fcf..6f79381f52 100644 --- a/common/nuls-core/src/main/java/io/nuls/core/parse/JSONUtils.java +++ b/common/nuls-core/src/main/java/io/nuls/core/parse/JSONUtils.java @@ -145,7 +145,7 @@ public static Map jsonToMap(String jsonStr) * @return 转换得到的MAP */ public static Map json2map(String jsonStr, Class clazz) throws IOException { - Map> map = OBJECT_MAPPER.readValue(jsonStr, new TypeReference>() { + Map> map = OBJECT_MAPPER.readValue(jsonStr, new TypeReference>>() { }); Map result = new HashMap<>(); for (Map.Entry> entry : map.entrySet()) { @@ -162,7 +162,7 @@ public static Map json2map(String jsonStr, Class clazz) throws * @return 转换后得到的List */ public static List json2list(String jsonArrayStr, Class clazz) throws IOException { - List> list = OBJECT_MAPPER.readValue(jsonArrayStr, new TypeReference>() { + List> list = OBJECT_MAPPER.readValue(jsonArrayStr, new TypeReference>>() { }); List result = new ArrayList(); for (Map map : list) { diff --git a/module/nuls-account/pom.xml b/module/nuls-account/pom.xml index ca25e652f7..60e05e6cc7 100644 --- a/module/nuls-account/pom.xml +++ b/module/nuls-account/pom.xml @@ -24,7 +24,7 @@ io.nuls.v2 sdk4j - 1.1.6.RELEASE + 1.1.7.RELEASE test diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 7ebae20a72..372d8ae9ac 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -36,7 +36,7 @@ io.nuls.v2 sdk4j - 1.1.6.RELEASE + 1.1.7.RELEASE io.nuls.v2 diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java index af0356f5c1..6ce2f52d50 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/AssetCmd.java @@ -85,10 +85,10 @@ public Response assetReg(Map params) { if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { return failed(CmErrorCode.ERROR_ASSET_DECIMALPLACES); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { return failed(CmErrorCode.ERROR_ASSET_SYMBOL); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } @@ -178,10 +178,10 @@ public Response mainNetAssetReg(Map params) { if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { return failed(CmErrorCode.ERROR_ASSET_DECIMALPLACES); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { return failed(CmErrorCode.ERROR_ASSET_SYMBOL); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } int version = ProtocolGroupManager.getCurrentVersion(Integer.valueOf(nulsChainConfig.getMainChainId())); diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java index 44741c389b..185324c74f 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/rpc/cmd/ChainCmd.java @@ -167,10 +167,10 @@ public Response chainReg(Map params) { if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { return failed(CmErrorCode.ERROR_ASSET_DECIMALPLACES); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { return failed(CmErrorCode.ERROR_ASSET_SYMBOL); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } @@ -307,10 +307,10 @@ public Response chainActive(Map params) { if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { return failed(CmErrorCode.ERROR_ASSET_DECIMALPLACES); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getSymbol())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { return failed(CmErrorCode.ERROR_ASSET_SYMBOL); } - if (!FormatValidUtils.validTokenNameOrSymbol(asset.getAssetName())) { + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { return failed(CmErrorCode.ERROR_ASSET_NAME); } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java index 823054994b..95fb0902d0 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/ValidateService.java @@ -56,6 +56,9 @@ public interface ValidateService { ChainEventResult batchChainRegValidatorV7(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; + ChainEventResult batchChainRegValidatorV15(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception; + ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception; ChainEventResult batchAssetRegValidatorV12(Asset asset, Map tempAssets) throws Exception; + ChainEventResult batchAssetRegValidatorV15(Asset asset, Map tempAssets) throws Exception; } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java index d4e67d55b6..820f83d681 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/ValidateServiceImpl.java @@ -316,7 +316,30 @@ public ChainEventResult batchChainRegValidatorV7(BlockChain blockChain, Asset as // } return ChainEventResult.getResultSuccess(); } - + @Override + public ChainEventResult batchChainRegValidatorV15(BlockChain blockChain, Asset asset, Map tempChains, Map tempAssets) throws Exception { + ChainEventResult chainEventResult = batchChainRegBaseValidator(blockChain, asset, tempChains, tempAssets); + if (!chainEventResult.isSuccess()) { + return chainEventResult; + } + if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DECIMALPLACES); + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_SYMBOL); + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); + } +// //判断黑洞资产与锁定资产 +// if(!BigIntegerUtils.isEqual(asset.getDepositNuls(),nulsChainConfig.getAssetDepositNuls())){ +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } +// if(!BigIntegerUtils.isEqual(asset.getDestroyNuls(),nulsChainConfig.getAssetDestroyNuls())){ +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } + return ChainEventResult.getResultSuccess(); + } @Override public ChainEventResult batchAssetRegValidatorV7(Asset asset, Map tempAssets) throws Exception { if (assetService.assetExist(asset, tempAssets)) { @@ -361,6 +384,30 @@ public ChainEventResult batchAssetRegValidatorV12(Asset asset, Map tempAssets) throws Exception { + if (assetService.regChainAssetExist(asset, tempAssets)) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_ID_EXIST); + } + if (asset.getDecimalPlaces() < Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMin()) || asset.getDecimalPlaces() > Integer.valueOf(nulsChainConfig.getAssetDecimalPlacesMax())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DECIMALPLACES); + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_SYMBOL); + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getAssetName())) { + return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_NAME); + } + //判断黑洞资产与锁定资产 +// if (!BigIntegerUtils.isEqual(asset.getDepositNuls(), nulsChainConfig.getAssetDepositNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); +// } +// if (!BigIntegerUtils.isEqual(asset.getDestroyNuls(), nulsChainConfig.getAssetDestroyNuls())) { +// return ChainEventResult.getResultFail(CmErrorCode.ERROR_ASSET_DEPOSITNULS); // } return ChainEventResult.getResultSuccess(); } diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/AddAssetTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/AddAssetTransferProcessor.java new file mode 100644 index 0000000000..3209f03110 --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/AddAssetTransferProcessor.java @@ -0,0 +1,109 @@ +package io.nuls.chain.service.tx.v15; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.*; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("AddAssetTxProcessorV15") +public class AddAssetTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private AssetService assetService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.ADD_ASSET_TO_CHAIN; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map assetMap = new HashMap<>(); + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + asset = TxUtil.buildAssetWithTxAssetV5(tx); + String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); + chainEventResult = validateService.batchAssetRegValidatorV15(asset, assetMap); + if (chainEventResult.isSuccess()) { + assetMap.put(assetKey, 1); + LoggerUtil.logger().debug("txHash = {},assetKey={} reg batchValidate success!", txHash, assetKey); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},assetKey={} reg batchValidate fail!", txHash, assetKey); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + long commitHeight = blockHeader.getHeight(); + List assets = new ArrayList<>(); + Asset asset = null; + try { + for (Transaction tx : txs) { + asset = TxUtil.buildAssetWithTxAssetV5(tx); + assetService.registerAsset(asset); + assets.add(asset); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.registerCrossAsset(assets, blockHeader.getTime()); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/RegChainTransferProcessor.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/RegChainTransferProcessor.java new file mode 100644 index 0000000000..dba0182eec --- /dev/null +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/tx/v15/RegChainTransferProcessor.java @@ -0,0 +1,135 @@ +package io.nuls.chain.service.tx.v15; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.chain.info.CmRuntimeInfo; +import io.nuls.chain.model.dto.ChainEventResult; +import io.nuls.chain.model.po.Asset; +import io.nuls.chain.model.po.BlockChain; +import io.nuls.chain.rpc.call.RpcService; +import io.nuls.chain.service.CacheDataService; +import io.nuls.chain.service.ChainService; +import io.nuls.chain.service.CmTransferService; +import io.nuls.chain.service.ValidateService; +import io.nuls.chain.util.ChainManagerUtil; +import io.nuls.chain.util.LoggerUtil; +import io.nuls.chain.util.TxUtil; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("RegChainTxProcessorV15") +public class RegChainTransferProcessor implements TransactionProcessor { + @Autowired + private ValidateService validateService; + @Autowired + private CacheDataService cacheDataService; + @Autowired + private ChainService chainService; + @Autowired + private RpcService rpcService; + @Autowired + CmTransferService cmTransferService; + + @Override + public int getType() { + return TxType.REGISTER_CHAIN_AND_ASSET; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map chainMap = new HashMap<>(); + Map assetMap = new HashMap<>(); + BlockChain blockChain = null; + Asset asset = null; + ChainEventResult chainEventResult = ChainEventResult.getResultSuccess(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + blockChain = TxUtil.buildChainWithTxDataV4(tx, false); + asset = TxUtil.buildAssetWithTxChainV4(tx); + String assetKey = CmRuntimeInfo.getAssetKey(asset.getChainId(), asset.getAssetId()); + chainEventResult = validateService.batchChainRegValidatorV15(blockChain, asset, chainMap, assetMap); + if (chainEventResult.isSuccess()) { + ChainManagerUtil.putChainMap(blockChain, chainMap); + assetMap.put(assetKey, 1); + LoggerUtil.logger().debug("txHash = {},chainId={} reg batchValidate success!", txHash, blockChain.getChainId()); + } else { + rtData.put("errorCode", chainEventResult.getErrorCode().getCode()); + LoggerUtil.logger().error("txHash = {},chainId={},magicNumber={} reg batchValidate fail!", txHash, blockChain.getChainId(), blockChain.getMagicNumber()); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + LoggerUtil.logger().debug("reg chain tx count = {}", txs.size()); + long commitHeight = blockHeader.getHeight(); + BlockChain blockChain = null; + Asset asset = null; + List blockChains = new ArrayList<>(); + List> prefixList = new ArrayList<>(); + try { + for (Transaction tx : txs) { + blockChain = TxUtil.buildChainWithTxDataV4(tx, false); + asset = TxUtil.buildAssetWithTxChainV4(tx); + BlockChain dbChain = chainService.getChain(blockChain.getChainId()); + //继承数据 + if (null != dbChain) { + blockChain.setSelfAssetKeyList(TxUtil.moveRepeatInfo(dbChain.getSelfAssetKeyList())); + blockChain.setTotalAssetKeyList(TxUtil.moveRepeatInfo(dbChain.getTotalAssetKeyList())); + } else { + blockChain.addCreateAssetId(CmRuntimeInfo.getAssetKey(blockChain.getChainId(), asset.getAssetId())); + blockChain.addCirculateAssetId(CmRuntimeInfo.getAssetKey(blockChain.getChainId(), asset.getAssetId())); + } + + chainService.registerBlockChain(blockChain, asset); + blockChains.add(blockChain); + Map prefix = new HashMap<>(2); + prefix.put("chainId", blockChain.getChainId()); + prefix.put("addressPrefix", blockChain.getAddressPrefix()); + prefixList.add(prefix); + } + } catch (Exception e) { + LoggerUtil.logger().error(e); + //通知远程调用回滚 + try { + chainService.rpcBlockChainRollback(txs, blockHeader.getTime()); + //进行回滚 + cacheDataService.rollBlockTxs(chainId, commitHeight); + } catch (Exception e1) { + LoggerUtil.logger().error(e); + throw new RuntimeException(e); + } + return false; + } + rpcService.registerCrossChain(blockChains); + rpcService.addAcAddressPrefix(prefixList); + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + return cmTransferService.rollbackV3(chainId, txs, blockHeader); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/module/nuls-chain-manager/src/main/resources/protocol-config.json b/module/nuls-chain-manager/src/main/resources/protocol-config.json index faa6d7d0f0..dca6503477 100644 --- a/module/nuls-chain-manager/src/main/resources/protocol-config.json +++ b/module/nuls-chain-manager/src/main/resources/protocol-config.json @@ -1,4 +1,29 @@ [ + { + "version": "15", + "extend": "12", + "validTxs": [ + { + "type": "11", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "RegChainTxProcessorV15" + }, + { + "type": "13", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AddAssetTxProcessorV15" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" + }, { "version": "12", "extend": "7", diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/service/AssetRegMngService.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/AssetRegMngService.java index 42e1aa78cb..926daecaf9 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/service/AssetRegMngService.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/AssetRegMngService.java @@ -45,6 +45,7 @@ public interface AssetRegMngService { int getAndSetAssetIdByTemp(int chainId, int assetSize); ErrorCode batchAssetRegValidator(TxLedgerAsset txLedgerAsset, byte[] address, BigInteger destroyAsset, int chainId); + ErrorCode batchAssetRegValidatorV15(TxLedgerAsset txLedgerAsset, byte[] address, BigInteger destroyAsset, int chainId); ErrorCode commonRegValidator(TxLedgerAsset asset); diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/service/impl/AssetRegMngServiceImpl.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/impl/AssetRegMngServiceImpl.java index 5a104e9219..389d1a12e0 100644 --- a/module/nuls-ledger/src/main/java/io/nuls/ledger/service/impl/AssetRegMngServiceImpl.java +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/impl/AssetRegMngServiceImpl.java @@ -150,6 +150,30 @@ public ErrorCode batchAssetRegValidator(TxLedgerAsset txLedgerAsset, byte[] addr return null; } + @Override + public ErrorCode batchAssetRegValidatorV15(TxLedgerAsset txLedgerAsset, byte[] address, BigInteger destroyAsset, int chainId) { + ErrorCode errorCode = commonRegValidatorV15(txLedgerAsset); + if (null != errorCode) { + return errorCode; + } + //判断地址是否为本地chainId地址 + boolean isAddressValidate = (AddressTool.getChainIdByAddress(txLedgerAsset.getAddress()) == chainId); + if (!isAddressValidate) { + return LedgerErrorCode.ERROR_ADDRESS_ERROR; + } + //判断黑洞地址 + if (!Arrays.equals(address, AddressTool.getAddressByPubKeyStr(ledgerConfig.getBlackHolePublicKey(), chainId))) { + LoggerUtil.COMMON_LOG.error("toAddress is not blackHole"); + return LedgerErrorCode.TX_IS_WRONG; + } + long decimal = (long) Math.pow(10, Integer.valueOf(ledgerConfig.getDecimals())); + BigInteger destroyAssetTx = BigInteger.valueOf(ledgerConfig.getAssetRegDestroyAmount()).multiply(BigInteger.valueOf(decimal)); + if (!BigIntegerUtils.isEqual(destroyAsset, destroyAssetTx)) { + LoggerUtil.COMMON_LOG.error("destroyNuls={} is error", destroyAsset); + return LedgerErrorCode.TX_IS_WRONG; + } + return null; + } @Override public ErrorCode commonRegValidator(TxLedgerAsset asset) { if (asset.getDecimalPlace() < LedgerConstant.DECIMAL_PLACES_MIN || asset.getDecimalPlace() > LedgerConstant.DECIMAL_PLACES_MAX) { @@ -164,6 +188,19 @@ public ErrorCode commonRegValidator(TxLedgerAsset asset) { return null; } + public ErrorCode commonRegValidatorV15(TxLedgerAsset asset) { + if (asset.getDecimalPlace() < LedgerConstant.DECIMAL_PLACES_MIN || asset.getDecimalPlace() > LedgerConstant.DECIMAL_PLACES_MAX) { + return LedgerErrorCode.ERROR_ASSET_DECIMALPLACES; + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getSymbol())) { + return LedgerErrorCode.ERROR_ASSET_SYMBOL; + } + if (!FormatValidUtils.validTokenNameOrSymbolV15(asset.getName())) { + return LedgerErrorCode.ERROR_ASSET_NAME; + } + return null; + } + @Override public void registerTxAssets(int chainId, List ledgerAssets) throws Exception { Map assets = new HashMap<>(ledgerAssets.size()); diff --git a/module/nuls-ledger/src/main/java/io/nuls/ledger/service/v15/AssetRegTransferProcessor.java b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/v15/AssetRegTransferProcessor.java new file mode 100644 index 0000000000..7587a2a3a3 --- /dev/null +++ b/module/nuls-ledger/src/main/java/io/nuls/ledger/service/v15/AssetRegTransferProcessor.java @@ -0,0 +1,132 @@ +package io.nuls.ledger.service.v15; + +import io.nuls.base.basic.NulsByteBuffer; +import io.nuls.base.data.*; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.core.constant.ErrorCode; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; +import io.nuls.ledger.constant.LedgerConstant; +import io.nuls.ledger.constant.LedgerErrorCode; +import io.nuls.ledger.model.po.LedgerAsset; +import io.nuls.ledger.model.tx.txdata.TxLedgerAsset; +import io.nuls.ledger.service.AssetRegMngService; +import io.nuls.ledger.utils.LoggerUtil; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component("AssetRegTransferProcessorV15") +public class AssetRegTransferProcessor implements TransactionProcessor { + @Autowired + private AssetRegMngService assetRegMngService; + @Override + public int getType() { + return TxType.LEDGER_ASSET_REG_TRANSFER; + } + + private LedgerAsset buildLedgerAssetByTx(Transaction tx, int chainId) throws NulsException { + String txHash = tx.getHash().toHex(); + TxLedgerAsset txLedgerAsset = new TxLedgerAsset(); + txLedgerAsset.parse(tx.getTxData(), 0); + byte[] stream = tx.getCoinData(); + CoinData coinData = new CoinData(); + coinData.parse(new NulsByteBuffer(stream)); + List coinTos = coinData.getTo(); + List coinFroms = coinData.getFrom(); + byte[] fromAddress = null; + BigInteger destroyAsset = coinTos.get(0).getAmount(); + fromAddress = coinFroms.get(0).getAddress(); + LedgerAsset asset = new LedgerAsset(txLedgerAsset, chainId, destroyAsset, txHash, tx.getTime(), fromAddress,LedgerConstant.COMMON_ASSET_TYPE); + return asset; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + List errorList = new ArrayList<>(); + Map rtData = new HashMap<>(2); + rtData.put("errorCode", ""); + rtData.put("txList", errorList); + try { + Map assetMap = new HashMap<>(); + for (Transaction tx : txs) { + String txHash = tx.getHash().toHex(); + TxLedgerAsset txLedgerAsset = new TxLedgerAsset(); + txLedgerAsset.parse(tx.getTxData(), 0); + byte[] stream = tx.getCoinData(); + CoinData coinData = new CoinData(); + coinData.parse(new NulsByteBuffer(stream)); + List coinTos = coinData.getTo(); + List coinFroms = coinData.getFrom(); + BigInteger destroyAsset = BigInteger.ZERO; + byte[] toAddress = null; + byte[] fromAddress = null; + if (coinTos.size() == 1) { + destroyAsset = coinTos.get(0).getAmount(); + toAddress = coinTos.get(0).getAddress(); + } else { + rtData.put("errorCode", LedgerErrorCode.TX_IS_WRONG); + errorList.add(tx); + continue; + } + if (coinFroms.size() == 1) { + fromAddress = coinFroms.get(0).getAddress(); + } else { + rtData.put("errorCode", LedgerErrorCode.TX_IS_WRONG); + errorList.add(tx); + continue; + } + ErrorCode errorCode = assetRegMngService.batchAssetRegValidatorV15(txLedgerAsset, toAddress, destroyAsset, chainId); + if (null == errorCode) { + LoggerUtil.COMMON_LOG.debug("txHash = {},reg batchValidate success!", txHash); + } else { + rtData.put("errorCode", errorCode.getCode()); + LoggerUtil.COMMON_LOG.error("txHash = {},reg batchValidate fail!", txHash); + errorList.add(tx); + } + } + } catch (Exception e) { + LoggerUtil.COMMON_LOG.error(e); + throw new RuntimeException(e); + } + return rtData; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader blockHeader) { + List assets = new ArrayList<>(); + try { + for (Transaction tx : txs) { + LedgerAsset asset = buildLedgerAssetByTx(tx, chainId); + assets.add(asset); + } + assetRegMngService.registerTxAssets(chainId, assets); + } catch (Exception e) { + LoggerUtil.COMMON_LOG.error(e); + //通知远程调用回滚 + return false; + } + return true; + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + List list = new ArrayList<>(); + for (Transaction tx : txs) { + LedgerAsset ledgerAsset = buildLedgerAssetByTx(tx,chainId); + list.add(ledgerAsset); + } + assetRegMngService.rollBackTxAssets(chainId, list); + return true; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/module/nuls-ledger/src/main/resources/protocol-config.json b/module/nuls-ledger/src/main/resources/protocol-config.json index 3b2c052389..3243a7b821 100644 --- a/module/nuls-ledger/src/main/resources/protocol-config.json +++ b/module/nuls-ledger/src/main/resources/protocol-config.json @@ -1,7 +1,7 @@ [ { - "version": "6", - "extend": "1", + "version": "15", + "extend": "6", "validTxs": [ { "type": "27", @@ -9,13 +9,29 @@ "unlockTx": false, "verifySignature": true, "verifyFee": true, - "handler": "AssetRegTransferProcessorV5" + "handler": "AssetRegTransferProcessorV15" } ], "validMsgs": [], "invalidTxs": "", "invalidMsgs": "" - }, + },{ + "version": "6", + "extend": "1", + "validTxs": [ + { + "type": "27", + "systemTx": false, + "unlockTx": false, + "verifySignature": true, + "verifyFee": true, + "handler": "AssetRegTransferProcessorV5" + } + ], + "validMsgs": [], + "invalidTxs": "", + "invalidMsgs": "" +}, { "version": "1", "extend": "", diff --git a/module/nuls-network/pom.xml b/module/nuls-network/pom.xml index 6adf9c02e0..d1aa46d9ba 100644 --- a/module/nuls-network/pom.xml +++ b/module/nuls-network/pom.xml @@ -20,7 +20,7 @@ io.netty netty-all - 4.1.42.Final + 4.1.72.Final com.google.protobuf @@ -31,7 +31,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.9.9 + 2.13.3 diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index 362b9b4dc5..e54c420906 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -68,5 +68,10 @@ "version": "14", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "15", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index 2428fbf6ca..b5766d121c 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -31,7 +31,7 @@ com.google.guava guava - 27.0.1-jre + 31.0.1-jre @@ -60,7 +60,7 @@ com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider - 2.9.9 + 2.13.3 com.fasterxml.jackson.core @@ -71,7 +71,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.9.9 + 2.13.3 @@ -130,7 +130,7 @@ io.nuls.v2 sdk4j - 1.1.6.RELEASE + 1.1.7.RELEASE test diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index 6d6736c77e..510de68110 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -73,4 +73,5 @@ public class ContractContext { public static short UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL = 13; public static short PROTOCOL_14 = 14; + public static short PROTOCOL_15 = 15; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 7dba6f6e49..44104fd1f4 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -397,6 +397,14 @@ private boolean validTokenNameOrSymbol(int chainId, String name) { } public Result validateNrc20Contract(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_15) { + return validateNrc20ContractP16(chainId, track, contractAddress, contractCode, contractResult); + } else { + return validateNrc20ContractP0(chainId, track, contractAddress, contractCode, contractResult); + } + } + + private Result validateNrc20ContractP0(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { if (contractResult == null) { return Result.getFailed(ContractErrorCode.NULL_PARAMETER); } @@ -487,6 +495,97 @@ public Result validateNrc20Contract(int chainId, ProgramExecutor track, byte[] c return getSuccess(); } + private Result validateNrc20ContractP16(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { + if (contractResult == null) { + return Result.getFailed(ContractErrorCode.NULL_PARAMETER); + } + long bestBlockHeight = vmContext.getBestHeight(chainId); + List methods = this.getAllMethods(chainId, contractCode); + Map contractMethodsMap = new HashMap<>(); + boolean isNrc20 = this.checkNrc20Contract(methods, contractMethodsMap); + boolean isNrc721 = false; + if (!isNrc20) { + isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); + } + if (isNrc20) { + contractResult.setTokenType(TokenTypeStatus.NRC20.status()); + } else if (isNrc721) { + contractResult.setTokenType(TokenTypeStatus.NRC721.status()); + } + boolean isAcceptDirectTransfer = this.checkAcceptDirectTransfer(methods); + contractResult.setNrc20(isNrc20); + contractResult.setAcceptDirectTransfer(isAcceptDirectTransfer); + if (isNrc20 || isNrc721) { + // NRC20 tokenName 验证代币名称格式 + ProgramResult programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_NAME, null, null); + if (programResult.isSuccess()) { + String tokenName = programResult.getResult(); + if (StringUtils.isNotBlank(tokenName)) { + if (!validTokenNameOrSymbol(chainId, tokenName)) { + contractResult.setError(true); + contractResult.setErrorMessage("The format of the name is incorrect."); + return getFailed(); + } + contractResult.setTokenName(tokenName); + } + } + // NRC20 tokenSymbol 验证代币符号的格式 + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_SYMBOL, null, null); + if (programResult.isSuccess()) { + String symbol = programResult.getResult(); + if (StringUtils.isNotBlank(symbol)) { + if (!validTokenNameOrSymbol(chainId, symbol)) { + contractResult.setError(true); + contractResult.setErrorMessage("The format of the symbol is incorrect."); + return getFailed(); + } + contractResult.setTokenSymbol(symbol); + } + } + + if (isNrc20) { + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_DECIMALS, null, null); + BigInteger decimalsBig = BigInteger.ZERO; + if (programResult.isSuccess()) { + String decimals = programResult.getResult(); + if (StringUtils.isNotBlank(decimals)) { + try { + decimalsBig = new BigInteger(decimals); + if (decimalsBig.compareTo(BigInteger.ZERO) < 0 || decimalsBig.compareTo(MAXIMUM_DECIMALS) > 0) { + contractResult.setError(true); + contractResult.setErrorMessage("The value of decimals ranges from 0 to 18."); + return getFailed(); + } + contractResult.setTokenDecimals(decimalsBig.intValue()); + } catch (Exception e) { + Log.error("Get nrc20 decimals error.", e); + // skip it + } + } + } + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_TOTAL_SUPPLY, null, null); + if (programResult.isSuccess()) { + String totalSupply = programResult.getResult(); + if (StringUtils.isNotBlank(totalSupply)) { + try { + BigInteger totalSupplyBig = new BigInteger(totalSupply); + if (totalSupplyBig.compareTo(BigInteger.ZERO) < 0 || totalSupplyBig.compareTo(MAXIMUM_TOTAL_SUPPLY.multiply(BigInteger.TEN.pow(decimalsBig.intValue()))) > 0) { + contractResult.setErrorMessage("The value of totalSupply ranges from 0 to 2^256 - 1."); + contractResult.setError(true); + return getFailed(); + } + contractResult.setTokenTotalSupply(totalSupplyBig); + } catch (Exception e) { + Log.error("Get nrc20 totalSupply error.", e); + // skip it + } + } + } + } + } + return getSuccess(); + } + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { ContractTempBalanceManager tempBalanceManager; if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/ChainManagerCall.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/ChainManagerCall.java index d891e90591..428faab1fe 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/ChainManagerCall.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/call/ChainManagerCall.java @@ -23,7 +23,7 @@ */ package io.nuls.contract.rpc.call; -import io.nuls.contract.model.bo.Chain; +import io.nuls.contract.rpc.CallHelper; import io.nuls.core.exception.NulsException; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.ModuleE; @@ -53,4 +53,25 @@ public static boolean isCrossAssets(int chainId, int assetId) throws NulsExcepti throw new NulsException(e); } } + + public static int getCrossAssetsDecimals(int chainId, int assetId) { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("assetId", assetId); + try { + Response callResp = ResponseMessageProcessor.requestAndResponse(ModuleE.CM.abbr, "cm_asset", params); + if (!callResp.isSuccess()) { + return 0; + } + Map resData = (Map) callResp.getResponseData(); + Map resultMap = (Map) resData.get("cm_asset"); + Object decimalPlaces = resultMap.get("decimalPlaces"); + if (decimalPlaces == null) { + return 0; + } + return Integer.parseInt(decimalPlaces.toString()); + } catch (Exception e) { + return 0; + } + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java index 8c6cf8779b..97d9d57d7e 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/SmartContractVersionChangeInvoker.java @@ -34,6 +34,7 @@ public static SmartContractVersionChangeInvoker instance() { private boolean isloadV8 = false; private boolean isloadV14 = false; + private boolean isloadV15 = false; /** * @@ -47,7 +48,9 @@ public void process(int currentChainId) { Short currentVersion = ProtocolGroupManager.getCurrentVersion(currentChainId); Log.info("触发协议升级,chainId: [{}], 版本为: [{}]", currentChainId, currentVersion); ChainManager chainManager = SpringLiteContext.getBean(ChainManager.class); - if (currentVersion >= ContractContext.PROTOCOL_14) { + if (currentVersion >= ContractContext.PROTOCOL_15) { + this.loadV15(chainManager.getChainMap().get(currentChainId), currentVersion); + } else if (currentVersion >= ContractContext.PROTOCOL_14) { this.loadV14(chainManager.getChainMap().get(currentChainId), currentVersion); } else if (currentVersion >= ContractContext.UPDATE_VERSION_CONTRACT_ASSET) { this.loadV8(chainManager.getChainMap().get(currentChainId), currentVersion); @@ -120,4 +123,14 @@ private void loadV14(Chain chain, int currentVersion) { VMFactory.reInitVM_v14(); isloadV14 = true; } + + private void loadV15(Chain chain, int currentVersion) { + if (isloadV15) { + return; + } + chain.clearBatchInfo(); + Log.info("版本[{}]协议升级成功,重新初始化智能合约VM", currentVersion); + VMFactory.reInitVM_v15(); + isloadV15 = true; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java index 866ca9638f..a8e9894568 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/VMContext.java @@ -29,10 +29,12 @@ import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractConfig; import io.nuls.contract.config.ContractContext; +import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.model.bo.ContractBalance; import io.nuls.contract.model.dto.BlockHeaderDto; import io.nuls.contract.rpc.call.BlockCall; +import io.nuls.contract.rpc.call.ChainManagerCall; import io.nuls.contract.rpc.call.ConsensusCall; import io.nuls.contract.vm.program.ProgramMethod; import io.nuls.core.core.annotation.Autowired; @@ -44,8 +46,10 @@ import java.io.IOException; import java.math.BigInteger; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import static io.nuls.contract.constant.ContractConstant.INITIAL_STATE_ROOT; @@ -60,6 +64,7 @@ public class VMContext { private ContractHelper contractHelper; @Autowired private ContractConfig contractConfig; + private Map assetDecimalsCache = new ConcurrentHashMap<>(); private static Map NRC20_METHODS = null; private static Map NRC721_METHODS = null; @@ -186,6 +191,19 @@ public BigInteger getTotalBalance(int chainId, int assetChainId, int assetId, by return BigInteger.ZERO; } + public int getCrossAssetsDecimals(int assetChainId, int assetId) { + String key = assetChainId + ContractConstant.LINE + assetId; + Integer decimals = assetDecimalsCache.get(key); + if (decimals == null || decimals.intValue() == 0) { + int callResult = ChainManagerCall.getCrossAssetsDecimals(assetChainId, assetId); + if (callResult > 0) { + assetDecimalsCache.put(key, callResult); + } + return callResult; + } + return decimals; + } + public static Map getNrc20Methods() { return NRC20_METHODS; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java index c1cadff76e..6ea2869435 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VM.java @@ -1144,6 +1144,15 @@ public BlockHeaderDto getBlockHeader(long number) { } } + // add by pierre at 2022/7/18 p15 + public int getCrossAssetsDecimals(int assetChainId, int assetId) { + if (this.vmContext != null) { + return this.vmContext.getCrossAssetsDecimals(assetChainId, assetId); + } else { + throw new RuntimeException(String.format("vmContext is null, parms: %s, %s", assetChainId, assetId)); + } + } + public String getRandomSeed(long endHeight, int count, String algorithm) { if (this.vmContext != null) { String seed; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java index 367d04b0be..96caee1f53 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/VMFactory.java @@ -344,6 +344,22 @@ public static void reInitVM_v14() { waitCreate.countDown(); } + public static void reInitVM_v15() { + waitCreate = new CountDownLatch(1); + MethodArea.INIT_CLASS_CODES.clear(); + MethodArea.INIT_METHOD_CODES.clear(); + Heap.INIT_OBJECTS.clear(); + Heap.INIT_ARRAYS.clear(); + + VM = loadVM_v15(); + + MethodArea.INIT_CLASS_CODES.putAll(VM.methodArea.getClassCodes()); + MethodArea.INIT_METHOD_CODES.putAll(VM.methodArea.getMethodCodes()); + Heap.INIT_OBJECTS.putAll(VM.heap.objects); + Heap.INIT_ARRAYS.putAll(VM.heap.arrays); + waitCreate.countDown(); + } + private static VM loadVM_v8() { VM vm = new VM(); Map classCodes = new LinkedHashMap<>(1024); @@ -395,4 +411,27 @@ private static VM loadVM_v14() { return vm; } + private static VM loadVM_v15() { + VM vm = new VM(); + Map classCodes = new LinkedHashMap<>(1024); + for (String className : CLINIT_CLASSES) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v15(className); + classCodes.put(classCode.name, classCode); + } + for (String className : ProgramConstants.SDK_CLASS_NAMES_V8_ADD) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v15(className); + classCodes.put(classCode.name, classCode); + } + for (String className : ProgramConstants.SDK_CLASS_NAMES_V14_ADD) { + ClassCode classCode = ClassCodeLoader.loadFromResource_v15(className); + classCodes.put(classCode.name, classCode); + } + vm.methodArea.loadClassCodes(classCodes); + + ProgramConstants.SDK_CLASS_NAMES = ArrayUtils.addAll(ProgramConstants.SDK_CLASS_NAMES, ProgramConstants.SDK_CLASS_NAMES_V8_ADD); + ProgramConstants.SDK_CLASS_NAMES = ArrayUtils.addAll(ProgramConstants.SDK_CLASS_NAMES, ProgramConstants.SDK_CLASS_NAMES_V14_ADD); + + return vm; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java index 0313d68ba8..2ff9491212 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/code/ClassCodeLoader.java @@ -55,6 +55,7 @@ public class ClassCodeLoader { private static final Map RESOURCE_CLASS_CODES; private static final Map RESOURCE_CLASS_CODES_V8; private static final Map RESOURCE_CLASS_CODES_V14; + private static final Map RESOURCE_CLASS_CODES_V15; private static final LoadingCache> CACHE; @@ -73,6 +74,7 @@ public Map load(@Nonnull final ClassCodeCacheKey cacheKey) { RESOURCE_CLASS_CODES = loadFromResource(); RESOURCE_CLASS_CODES_V8 = loadFromResource_v8(); RESOURCE_CLASS_CODES_V14 = loadFromResource_v14(); + RESOURCE_CLASS_CODES_V15 = loadFromResource_v15(); } public static ClassCode load(String className) { @@ -111,7 +113,19 @@ public static ClassCode loadFromResource_v14(String className) { } } + public static ClassCode loadFromResource_v15(String className) { + ClassCode classCode = RESOURCE_CLASS_CODES_V15.get(className); + if (classCode == null) { + throw new RuntimeException("can't load class " + className); + } else { + return classCode; + } + } + public static ClassCode getFromResource(String className) { + if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.PROTOCOL_15) { + return RESOURCE_CLASS_CODES_V15.get(className); + } if (ProtocolGroupManager.getCurrentVersion(ContractContext.CHAIN_ID) >= ContractContext.PROTOCOL_14) { return RESOURCE_CLASS_CODES_V14.get(className); } @@ -223,6 +237,10 @@ private static Map loadFromResource_v14() { return loadFromResourceWithResourceName("/used_classes_sdk_v14"); } + private static Map loadFromResource_v15() { + return loadFromResourceWithResourceName("/used_classes_sdk_v15"); + } + private static Map loadFromResourceWithResourceName(String usedClassesName) { try (InputStream sdkInputStream = ClassCodeLoader.class.getResourceAsStream(usedClassesName)) { if (sdkInputStream == null) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java index ab2510bea3..7e69ec07e6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeAddress.java @@ -25,6 +25,8 @@ package io.nuls.contract.vm.natives.io.nuls.contract.sdk; import io.nuls.base.basic.AddressTool; +import io.nuls.base.protocol.ProtocolGroupManager; +import io.nuls.contract.config.ContractContext; import io.nuls.contract.vm.*; import io.nuls.contract.vm.code.MethodCode; import io.nuls.contract.vm.exception.ErrorException; @@ -424,6 +426,12 @@ public static ProgramResult call(String address, String methodName, String metho frame.vm.getEvents().addAll(programResult.getEvents()); frame.vm.getInvokeRegisterCmds().addAll(programResult.getInvokeRegisterCmds()); frame.vm.getOrderedInnerTxs().addAll(programResult.getOrderedInnerTxs()); + // add by pierre at 2022/7/18 p14 + int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_15 ) { + frame.vm.getInternalCreates().addAll(programResult.getInternalCreates()); + } + // end code by pierre return programResult; } else { // add by pierre at 2020-11-03 可能影响兼容性,考虑协议升级 diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java index 08d1314a7e..fb1bfce306 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/natives/io/nuls/contract/sdk/NativeUtils.java @@ -576,6 +576,25 @@ private static Result invokeExternalCmd(MethodCode methodCode, MethodArgs method String[] args = (String[]) frame.heap.getObject(argsRef); return getCodeHash(args, methodCode, frame); } + } else if ("assetDecimals".equals(cmdName)) { + // add by pierre at 2022/7/18 p15 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_15 ) { + String[] args = (String[]) frame.heap.getObject(argsRef); + return assetDecimals(args, methodCode, frame); + } + } else if ("currentChainId".equals(cmdName)) { + // add by pierre at 2022/7/18 p15 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_15 ) { + ObjectRef objectRef = frame.heap.newString(frame.vm.getProgramExecutor().getCurrentChainId() + ""); + Result result = NativeMethod.result(methodCode, objectRef, frame); + return result; + } + } else if ("getAddressByPublicKey".equals(cmdName)) { + // add by pierre at 2022/8/25 p15 + if(ProtocolGroupManager.getCurrentVersion(currentChainId) >= ContractContext.PROTOCOL_15 ) { + String[] args = (String[]) frame.heap.getObject(argsRef); + return getAddressByPublicKey(args, methodCode, frame); + } } String[] args = (String[]) frame.heap.getObject(argsRef); @@ -671,6 +690,38 @@ private static Result getCodeHash(String[] args, MethodCode methodCode, Frame fr } } + private static Result getAddressByPublicKey(String[] args, MethodCode methodCode, Frame frame) { + try { + int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); + String pubkey = args[0]; + String resultStr = ""; + if (Utils.isHexString(pubkey)) { + byte[] publicKey = HexUtil.decode(pubkey); + if (publicKey != null && publicKey.length == 33) { + resultStr = AddressTool.getAddressString(publicKey, currentChainId); + } + } + Object resultValue = frame.heap.newString(resultStr); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } catch (Exception e) { + throw new ErrorException("Invoke external cmd failed. When getAddressByPublicKey.", frame.vm.getGasUsed(), e.getMessage()); + } + } + + private static Result assetDecimals(String[] args, MethodCode methodCode, Frame frame) { + try { + int assetChainId = Integer.parseInt(args[0]); + int assetId = Integer.parseInt(args[1]); + int decimals = frame.vm.getCrossAssetsDecimals(assetChainId, assetId); + Object resultValue = frame.heap.newString(decimals + ""); + Result result = NativeMethod.result(methodCode, resultValue, frame); + return result; + } catch (Exception e) { + throw new ErrorException("Invoke external cmd failed. When getAssetDecimals.", frame.vm.getGasUsed(), e.getMessage()); + } + } + private static Result computeAddress(String[] args, MethodCode methodCode, Frame frame) { try { int currentChainId = frame.vm.getProgramExecutor().getCurrentChainId(); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java index 11abc669f6..a7dd2f6291 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/util/Utils.java @@ -74,6 +74,24 @@ public static byte[] dataToBytes(String data) { } } + public static boolean isHexString(String data) { + if (StringUtils.isBlank(data)) { + return false; + } + try { + char[] chars = data.toCharArray(); + for (char c : chars) { + int digit = Character.digit(c, 16); + if (digit == -1) { + return false; + } + } + return true; + } catch (Exception e) { + return false; + } + } + private static String cleanHexPrefix(String input) { return containsHexPrefix(input) ? input.substring(2) : input; } diff --git a/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v15 b/module/nuls-smart-contract/src/main/resources/used_classes_sdk_v15 new file mode 100644 index 0000000000000000000000000000000000000000..d2d6aa5e158f7735b063fd7712d8f1ff880c49e9 GIT binary patch literal 14885 zcmbWe1yG&I(m#xQaCdii2=4Cg5Zv7*xVyUqcMa|qAV6?;*WeIH;19cdzhv{?P4<3$ z>Qp_a>Y467znSUjX_1oz27v+qfB*oX*Tql<_<N_|XInX^00|3bVL7p^^+4G3gPg~uB=>8fItYJ^ODT)1E#F9lzfgnRNK4^T z>DQdG0AK}j<$lX%=*;w1ld+>@g9fytc9ohcWY6XZZ-1dw zXKA=HHB!RLBFMscCn}duT_q5rF3a z!(}n%asaSPG37Y$QFiw2!47^NJONHA)eVAuk++)eiJx+}bC=3dt+9k1j1N(FDqWI$ z)oay`mhpQ=!Q;jh|y^9QUE73V$ zs+1~T8*GaQ8Q(la?}*%ote!0;aBnM9NRmVrU+od=5!7U;8XT`iIc>TtDpYiC zc;qG(?^)F~9U3^S>_lR6{tnT5`>1-%Tc@0Nh#Q31K5O?*W4Uej^M^D1El zGUK`3xIHcK5wsPa{&@D~9t$#*E8`0%6R*kR*vGnPehl=hdW4qXN9~Rrm1P;Z6OcrP zhDcFP$U}a=_t7aZ5oXK!Xx}!!!HzaUXS6XvEEtodpe#SV)j;t;hnYaS3bH1|}J zE2fXDt<$NI#S-W%IvK)$=HQYg7&t>=FoU`Ude^%@cb~wEFh`FR3R4Ev>7VO{kjkqU zweO=&2YD7M%^p|#A!x_DZeohaNM0(-bn~<*+Xgql^TIK>-1`8wlNl<>i6GYw}h z!-3UA^fBHbgYc~~4t{|Hu~Td|*Fgfkf3%xTu1`-#ji3*}Qd0ohkf@lfVB{#((-~es zaQ#ps5BAzSa;z0azunj0Zb_=}Pn7RKz1Z+_cyX;Xci!RF>>Fa8-@U~-d(VK5SL>C1 zM`pQ3_gH-re>HSRu`~zE8nRkowl%T3tHVCM94O;Jr=}kM1SBU34pE#@CM5>~0H6T* zE2B&FJ6q*wV_{_d3uDLf?-SDOB(FFiDWeZ$TRGP)Rqqg4#nOk+ zgw#t5!Xw07sFOFyg-uQh$myqBrhgi>p10&vg8zioIfx)R77;}+z;C3 zE74avY&*}f)3|y9(C%>SaSo5M2d>WBwmr*-2VUMsAU&eh5Pg)a=nZ-imWX~^kgd`E zzJQ>Fpm&t-S>7;2h2Ey3YuIV^Dq^w@oB`=fSBv*cGIa3fZstP?eoULL7VdRs7~ZW! zul+!wtA~!An>ejXtWOxwtdkzH(nY7as1~WTi zo@2vT7R$EKd3dnHIvsLJpH|o_$zTdaVLvZad-t$NkW3X|EwF}ZEzHhvdk(X|$*1Yf zl8JV=?#@EhG0Qh_6R7N7N|GP{Fow-6(ZO~30d&WqUwkkwXXm43uBlo*(!n8aTy>WN zS1)Eog2XHb7F~N4*XUEE0!EG3>s#Z>W52iu0 zP};_Dmj7r!t!T_bl!o4OKN0?qO{lpc=h0qC|9~mVo z3Q^|B72ATCFF3rNbNI|r>8w7CiF0hzsM1=95LxY{;#HZA-M5q|)oPjkGESXdHxx9- zwy1DU+Kt+PhNp9}aYzr-i-gpjgOjGgP5N}M{5ETqWvbkdCb?~7o*Px`tTZ-Fn<1+3 zWV%kHQ;B|55)D)iE>K^gX_;*A;FAXS$a}9&c%ALCKcKIl_ za~F&8S7Jj)reUJi0;l4S06UtnY`N*CbK`-SZ$nH`Pk?4!prht0H2}XamhmgYNK)Ya`X(D*r&;ejRa3tYQGnd56X) zZKGT~7bYy`kkqIC7VN;ru{eWfqr`3c8eGmN=)6&(J^FA7Pt1!b3wCBC_a0NXy+FrH zKBtnz#$aRS!we_zw}g2?V2@^x2V)F1MHcufwrWoLYRGg!;5`9g@wKizci;+Nz;9&K zJV|Z7By)GAJaFLT%u-n3>Wsn03t}o()Mbq|tkpGv959xi{>6A@vX2<&{_O~l=G>^c zu1ovHpUb%`Z@}J*DAXsGE=a5xS#bCRz9D`saBgR8;T3*au`q^87IieDdN=5rmM->dzk!2-s^~*A1 zY;w5?9?)rkhzOvg)P>(8Qf8Bp+r}Y-jUN#2)Xj%t2hs1uTf%IY5rYdLPAm?oAgz7A zOeNGxKTF-loRUj4Lvs$6>I{_fzcqFzHq=lVtS2@!m-)aJo1$F@I1b~lxlIu_SXeKZ zO#*X9rLl!kegRWE0G!3Ia<7wJ)Hyt*GtMNpgMshdb%|yaXxmZuYJ~S5Xf%_pre{Ao z&blm4Zug8Nf#WTtFl39?h3SV@#!Auzc=ogqsC82a>#5MHORx}t9a3z_^p4oJ7aQw?v?n1}J^Y{=i{TpXZZoy= zy6tjpC-MQ;WykB$uYu3 z^7-4quMGY^Jpzvjfu4br*)=h|MU8ZO6x*3_svp1^5HIq-jg#g;w9b|4t`_s&HB^;? zBMB&nHrAwEFL%D2g4Y&t>IPr{0K{;Ao`U~BJ@!9OL8X_o@K2AuAZ}a+hygy>$N$5H ztdMYjx@gmUxIB`KJAQYJEdbr>u(di`3(Wy4Ox12T_*rg5Yh)jE0EowavYBy*S^Agz z$2$<)a4NWD+_ZqU%^G}Wjg!X&I*xd)Kuc5U{2ticnDWhXwI%8bOVOXVqdS?AN2 zOF96yb7|DQ>O7)wWsYUs-aU0sUlyFBrucqsPm18GZMn(nTz$pfIT)~8F9b_m`wJ^I%^IU+hl@Fx@2e%m=ftm3UpGcBqHaQla@2{HtVS|rG6`0k7$piHaIrL z?%W+FWXdE9PVFT&tV$%;HiQ)K%XygPHybG=CD-kPuW>diFL2v0#c|5$-j2NZ%jw^tIZPsrXmciGM z;Hz>lVC_2v?3Li*sZ*#sfLznXf)sC+#o1uc;(47l-DK4&TYxKg!eVZd8ouiiFqNH`Np||AYbfL z4D`VOUva4z5|?E?9nQ&XpjVn;r(3>3wZ2x!%v{WJ-9*51)o*e_w1fKDxJY1{yC>!= z@Ipnp=zT~Yy+A0+5P|OO&cBLJ^1FkE5frvd#n$5K_`YP;75B1`VAAQ7Kb@{${TjiEF-U#tUf#6 zt@iGq*t%r83Vw0dB2R203_5>Ow4*1w zWk7Z2*f;sX2`&q!#hdJ0h1f4*9H!xJT)~s6s+y6sI={jTT(>DXDjks=@fR9YC^}Lp zC^sjPszKi*izP!6_l%XA?tS9ZO)KPJ>!NE5c!YX_Trkr;4H|Le$`Bk(|lYvzrKB-N5*(=t$ z?KS!DE*-+oM%IphTI$!=Hgh~+U|>jK&dy*e&S0z}V3q4%C-b(I8b4+z;SV-Yvs4Mu zQPoh##`04#>GD=F7pd`b@K)uMGc*fzvXf}ymHWl=1LTYFk}=R}uklh)u{492A`<~4 z0fW#p(gTZ=f}#Fl)qwVIRg9h$vwi-)1h4+P>Xg4zo!`*V-pIk>Pvt9=G-apxkROe0 zj4afJkO2YDJL)C+Tm9@69bcIu_X}kiyBt{;I5(W6-2pRWdY$+Cel(<*L;iJ0`vFs$HG z#L;Wj!`m zRhSj&uK}9(1hHu38M{FBF~Ei}%raD!x+m3Jz2@w?0M#{{WS@;&X%Mbh&Y z-C^c1GltiwprJ?GFbkFma%`IAuUn92fPHvq`ObZqSX!*cADM;(wmeuhZ}UWv^2QjO z2Q>PIS{-3puw+W~f(*USSXlxubH>_j1r@buR-Gg!LTvRKu21sc@6VQ4V;P%fhP#^C zC9Ne_@JEWbD&wkbc@yUOHRU&`!S&913MSrbRp2IMn5jA@=VF?Qv16L{C-`#NgRyqg zSL0~+Tw$4wI_P2*pN&F7g1JV!7fAXl#Oo+jDKRz0oqDMBNc|m4GO&D?Bnh^+`5#Rhhskhn z^{TLM^*b@)KBd5$&~<`C>WaMsR-V*BGEmsI(y)n+ zZO z56mCn{az8{%?{%=olkf7uey-9?DgJE@xOAxw$#^DecjSh z*2|5<1x*9p8gS@AW_8Jl(2=k<=%tN3 z6WdO{p*7-;z%jN;GytzS3D1&HAK;Ajdu-eaFQ3a^DD~s)j$(ckO{;HS}-D+~D9Q%<#??*6Dhf8>TK-6~gXH3$+y zU8NRRA|pZnWZDXCkm}_+@SWU1CHQ%DsPv-Q>rR=pFJIlC0Bj?-Ac7GV5uzX}L{$yL zz!&LrIVQe3H^fkhvx`F=UB{7e&MEeCTVy8dyiP}w`7A*cQSU(DgG89Pkn!zRZbw`p z#5HZHwx#RPY|)V_Y!gG+)JBsmd)X}H!`oik`BUEQZj6dqK#`#-FZb7Bkb5(-_cACu zWUi=J14Ar4CoYLT-Lx=qYJnM;bU@S1@876smrA zmtlwZWw)niM>{b4pts)&$TtuVm=zB+31QVmctP1u7N1B^OqiNuV8990s`jpmskj*u zG>+P?78k-c&I*m2Vx5O~Z2b0WGvYe+OzH9=YxcyMk}=ZaufJRb5-wvD5#kuRk)lVX zL4$nxAWF5_>l0JMq(MWJ5)!=h)jfd$n=M(36XlS*IOM9tc^OR6Zl|2C;G&H(>k0Ob z15VIq=ERzjXa@r<5?F-|i;=!QuRPbArrhVr%2J3sWP*5?HM{Tt9{klTI*B-CvIjSj@#3jK`L2rwYBYexZJ{SJnu2XG7z3&$b7 z1g_Ph#$L7c`p2QJqdZK%LMdHzI&FQ2l6L6SN&elbDL9}TNY zGW<{LbwR_JYEL)P_3X~gm^JUuVfg2Tur!rL<_BP%eV=3W;1FGxg-B4(kdOQlcAozM zb_qpU8AT&|Gkr@l_ZR&CV@uj)dg)(m3Cbeh7fLZ0nBuNavGmmp1S}BnR&t1HDO$Hm z%}uNl84^1a=&k^`P#g4e0fhQP*|(PqEz#qRE&zM;(A7veNP5YiWUNvpI~39&9~#ZL zq&QRs%ARrcHSpK;A|FOgj0Qu{0Vycd=Kjx=nLv3ZqQsWs1N-T_20%bez4kqE%u+l?u53=K_<6+ z##)ZGt(rmE99}Fzg`k?g`Lx8|&MJXD@xmO23ji*#310}~8Eah^-t6*+J5LXA+t6N! z2ZR;`Sdc}yjt|V*Sdu`Qp_DVzll=k}30?9EO?pXJhW5P^z79OadTk@1QJ*P^D(oFf zypb4{7czPh`5X!?yGh0mwJpuWY4dle7_1{VuZ+2n*-PdiK?ghymY#y8+E`i)(Mh6j z4^GHY*(-b)uUd+E_?c$+1|(JIwah;Y6gtLyIo_#yG>hbO(YEB$j)4VgU%Wr^z6J%s z9J_gi%!Pv)5GYIe*-^O2JO!~W(E$v|P zC#X*HFQ*}T#_%{$9)2F7`zI_{Te?+dQd5JxOV_436cU-tU^LV?;Ss#yx&aj|pdzwMj{q0o zKI0cl)L^@Do!^sK{MMGjB3Ocvrj5}mk7zy@PV}zHMC*jNm5r0#*cPZ#@Z3-#n2K?l z@FLJ)-lE}Y&dF03vO-)l)$VgVKY640D>vjO?stZU()LKWq{zkR4qUs& z`&mQljEscvVdOJ*h-qe`7W(%|Qq4;hH(P%DKF!2*a#(Z{?uMIZ>U=>8bTSEKwE12U zK-V6oqaz;(Mb%Ncp^Uy*ZCKMIW_9xzg6cRbz5u>h@f{l1G|w3Ct+vaGZ7{P z-ucoJg4h+NRv6ZgQeLRW&(hB_t)L~!-5<$eGj*{aRdIDQ!1gj>!n4)=+Ru|k{>vaA z)$b-u@UK#hzqW!*&5PafvKCN~kd##J1~Q-#=z*5Xlp`qw5R^}b{UBbkj)=I;F7}OD z1&rryv_M9t5;cli%VoRA?dj^=?I77(Nf<#G0c`quJl%eczEs1r0TTx>9}Q~AE26}a z)?2t64|h2(^zyJ+Uzg&fJh29r^_m->bl7V z%rK%`{e&8!Y~4(;MV`j>!&9LS1db9OqD!tpW97w;gfbG0t-UlxGA}vQGAByEYf3LrD%YcgVlN$9An=|Ix$fB@cIc_R5K9w26H1ZeT|UI zxu-YHGT{AT9GZpC+UTv%A0Y=SkN30C&ls=&a#Q@)=~Q+!v-~UIkf>tjh^311I525S zY=mggZ*MtgA%?VIXKIv0tn` zK8$nG-8K55+Jx)c9%FY^%LbpLWOWYr&Y^!f(&y?;H*vcQ^0Ns#r_u3#9igbtuFnNO z;1AV-)bFlh!`*>3;K1b*4L*7FaL13%3$vBs7Y^l3Ou(#{67-s!AZDM7nt_X>DFA4Bd>3uqCV+$`2yHyZi7#mtk{sFTR}5#P#t7s7a6rRC0n^=j0;VA zSnOpwLHcK9QC_8gK@wFLQ{vUGb{b@$R`hdJ>KRTbD=@h+1BGkkv2*;I&sui9&CIkE zZ*SH6@#a!mxzTE5Rn(=ST<#D@%P_WL{O~;$LDm^K(6&zEI6PyPX9_?;rY&JyBS%Dt?D`t^ntaoO+CX!y8 z^D&>hF&QV=?MRIbrAKKN?`cP8h?fuiA9TnwvHiak;4%1l=9h-cXf60C0l zMF~$x2LDg%r39uW8oB{ zH$JZJo8(mulufF1$T>R6mIn}Zth!}CUZ9Xz;vrNJZp$_AvlcLuoZAL2w+eM?pgM#0 zs!Z#aa73M+PELvFj7;dr5XWauw<_`DWzE7ciNh-NsgzG%G9T*pp_4^&)#oyShbwXr zaTh8!2?TCV!_ehXl$jP?bAvUW7rO$!uhyV+KO;c#-_Z~D!z;Uk^e$a@L*eZu0p(S- z!=Nj^1NAQ1RAnz)pQGHh74N5pQbJYFu{gje9gmOt0jDhOky zY4lpB?3qW4`_>-8CL{r&KGCWb8vE5{W)U`fYipr)*di4-b@Mn8!_Nl%>GHys<(a8~h<=(v($HE+hAQYg+?gWbDHMlC{5Ky`W3#T^^48g|jF9*pIfdG$QW(sBw zNdyM!q|B~wIhe`3M&e2$3~=M|_QA|}0|7{hH4$DdVqPGmB4C0R{%GVQE@2gzEgQe< zygng}O8E)=<`Dc)Z(?cr3SScziSZggIKr}jCXkKT{D-+U;wbvjKtw->m_7KsPR8J~ z6%rv-XMYl*wJuCdG*dJLm@808HF-bI;6$N=c+GUW44YOEa=Y!zh1gHSEG~kG9fF9&SzpIaf%td(PNJPwq#y|RMnO6K(tOsx_3wSZ$9YEj} zHNo>rd(KrJqq|w*fx;W`;P3hqCz>3#0Nui$UUz|s@eDF8FJhO`>7VRK+$2u$$fK;$ zlLoM~aekbI=p(}2^gL6c0i@wos9NQYpeN`awG zq}vO}?rWC7EqHk^9z}{z-eQML!I=rvlM~d5Zom*xz7`!Ox$sTcb_yTrRL>nGIy*%M zlP^Zz4E(9iHhDWxKnJv2Ea?$Mf4-tR@gOFMb&k9*$qJvppWhYgY@EcEn!DY+2t5o& zWP=M$iX2X8r;3w*G5p6z$8~oIH@Y~Sp2(Ug_-1RyY7Q2R<%G0^)&-w%-x1-jE-iO( zfUC-2#cGSbd8ROJX(Z_uA$1FN%zogui%8rej=SauX>dlC+HxVEH8hSpAvV{PSsT`2 zLiN&d`v$q!ffmNvfNS7}fj*OzXSexjrtel0ytji5<#3Gi#l224H&-`>)E=k1*h*K% z;O0ZAQ%&J~8*JKN@F1RXoln*_sg1LQ+%&AF95Tc56?KJ^ERBBc@HRsp>*&Vw3>G}Z zLP0w5yx|VnEm5DBrfKX6@5Oan8XP+Xga7~lMfg=L>$jz2MlVU2UzCn9{m%FMlYx+t zfs@G(37yE;5s6+tMLr7ZO=U&dMRe> zOz>bAoX%dltxuP)!5wE&V@KrJuRQ5^4Cc!pEAKN)Sj641>xUYq&pho`TWvzmhRvLm zv%8#Hq{*(fd8BtYvFHdNg3xR`=OUZ1?(FuP7@`+lw74L6cggZ*jxvU0x+0=N#!+0F zHAV>8@;>{Oz!-~@)5uI;8(JZzCiBxd_NS8NO87@P9q4uU)q(;GqK2Uxs6C<4^v>rz z2_LC6C8Uic6kfYG%=S@oE8<>#&Yj39yoyRYmMr_2j$XKsx5BdHq#=1jmC}9#t*z294@H9axt)A<}|6#r$3yG+fI%s#g#sb>y8a$ zt8LDzyFi-jxQ%VfjVb#}$DFQDhZlHtNFu#^%!zM==JH4Tcjxn3@R$0_13+xy{LA_f z*heb8dLd}AS8udmPiBTWuTk%nMai=smcfKsF9p@fPmG#-XZ!A8_!0JTbC{?|n?!bJ zOQ2!oM=tWrgrR;ct(jq8WIB9(pCugYD^QWIDco*tzxGN(roSGe5ZYL}jFnoGYNk|1 zn~o!`-KW@!m3nWK(?)4KKqyYk$@t@*+h@6jQA2c@f>vpy+9h=&?cs9+dCK>X=*P(e@l#sw2mn(-gho2Y0zS`R0vD6p2NJ3JO8vjIly%|dT{}jx3364fC38Tjw005 z98MBc^3?2ypM;_{nD2)yf^pyWVf6KU^}Z85%==S5;t>2upl)`q1@8+~Q=@vY=_{H8UL+HWCho~UUTSLdCjjvDHR)$YChk8Q>9HpUGbhGSJ)++}5nlpdkS0?}uD!TTGbkGM8K%2&8LjsYR0fg17VZO2 ze)3sLf~Nr8K1GsT7m+1oU#RgVt3j5|d4e3bq>XLJdLhLkGzYqV=LB9~1Y$w9q7{K| ziw3bWAj0rsY;bn_VhoKR}dyO zweZh-&Gfn0Nlp?F2nyhz`!SyF?ho{zo{K-bGyZwxOMk|9`YDh7E0Hh#8sACr`SCv@ zpW8hC>fZQgu`m4_-^us+@#oP$baVVOo0oo$@6`1C_>XMx0_sb>yW2E}0h4EvC?d5d; zPD=j+*Y8=&pRxEcvGkIs`%d+k|6c3AXYGEL@naU{B}Mg}aIpWqjDJX2{VeRq(4gWn&^RuiUgXn+XSx|WYUe@1|6F-aiG3@&ijsH&8_`ebH|HbBi=J{io z^Ce*Xo$v^M!}IUqz_BCpVj=) zmwvf4eJ3pHf5q_UE7Z>desmuGzG-ovjr%V({;v+YoFwS88v+1;@%-_H004+$c=`4J E0N_J?K>z>% literal 0 HcmV?d00001 diff --git a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java index 1d647d457f..e5816b837a 100644 --- a/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java +++ b/module/nuls-smart-contract/src/test/java/io/nuls/contract/tx/contractCreate/ContractCreateSendTxTest.java @@ -50,7 +50,7 @@ */ public class ContractCreateSendTxTest extends BaseQuery { - String contractA = "tNULSeBaMwJNC9FUQbiTk2mnCLqYSnF1Ub7nt5"; + String contractA = "tNULSeBaN7MCLavwRjJqH28w9NCmahUbybYC6K"; @Test public void createAndInit() throws Exception { @@ -60,8 +60,17 @@ public void createAndInit() throws Exception { @Test public void testCreate() throws Exception { - Map resultA = this.invokeCall(sender, null, contractA, "createContract", null, null, - new String[]{"tNULSeBaMy3Tw7pHNDYwSMaewDypQMdNywXXUJ", "tccc5", "777"}); + contractA = "tNULSeBaMznzh3a6QZedEABuMiydtN4QgV7Euh"; + Map resultA = this.invokeCall(sender, null, contractA, "createContract4", null, null, + new String[]{"tNULSeBaN7MCLavwRjJqH28w9NCmahUbybYC6K", "2"}); + resultCheck(resultA); + } + + @Test + public void testInnerCallForCreate() throws Exception { + contractA = "tNULSeBaMznzh3a6QZedEABuMiydtN4QgV7Euh"; + Map resultA = this.invokeCall(sender, null, contractA, "innerCall", null, null, + new String[]{"tNULSeBaN8w6ivxm6nqPMrUVV5hp1gVVd3HpDA", "tccc9"}); resultCheck(resultA); } @@ -81,7 +90,8 @@ public void testASD() throws Exception { @Test public void invokeViewTest() throws Exception { - String view = this.invokeView(contractA, "codeHash", List.of("tNULSeBaN1yJ1rZmwCwGjoRs86cajmbBWZ6he5")); + contractA = "tNULSeBaMznzh3a6QZedEABuMiydtN4QgV7Euh"; + String view = this.invokeView(contractA, "decimals", 2, 1); System.out.println(view); } diff --git a/version b/version index 575a07b9f9..c910885a00 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.14.0 \ No newline at end of file +2.15.0 \ No newline at end of file From 0b5534f57979b4af92f54d99ef1f0d908f7a17b4 Mon Sep 17 00:00:00 2001 From: Niels Date: Fri, 14 Oct 2022 10:57:52 +0800 Subject: [PATCH 301/304] Release/pre prod (#680) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * upgrade jar * upgrade jar * update internal create * update nrc20 initial totalsupply * v2.15.0-beta: Modify asset name restriction. The restriction name cannot contain NULS to be NULS. * v2.15.0-beta: add getAddressesAndVerifySignature method * v2.15.0-beta: add getAddressesAndVerifySignature method * add address by key in contract vm sdk * add api for contract tx Signed-off-by: dependabot[bot] Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../api/constant/CommandConstant.java | 1 + .../api/resources/ContractResource.java | 16 ++ .../model/dto/ContractTransactionDto.java | 195 ++++++++++++++++++ .../io/nuls/provider/model/dto/InputDto.java | 98 +++++++++ .../nuls/provider/rpctools/ContractTools.java | 16 ++ .../io/nuls/transaction/tx/TxSignTest.java | 12 ++ version | 2 +- 7 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTransactionDto.java create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/dto/InputDto.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java index 6ee8950cf0..1887b21914 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java @@ -56,6 +56,7 @@ public interface CommandConstant { String CONTRACT_INFO = "sc_contract_info"; //查询智能合约执行结果 String CONTRACT_RESULT = "sc_contract_result"; + String CONTRACT_TX = "sc_contract_tx"; //查询智能合约构造函数 String CONSTRUCTOR = "sc_constructor"; //验证创建合约 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index 16e4051dd1..6b3797e18c 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -603,6 +603,22 @@ public RpcClientResult codeHash(ContractCodeHash form) { return ResultUtil.getRpcClientResult(mapResult); } + @GET + @Path("/tx/{hash}") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "获取智能合约交易详情", order = 420) + @Parameters({ + @Parameter(parameterName = "hash", parameterDes = "交易hash") + }) + @ResponseData(name = "返回值", responseType = @TypeDescriptor(value = ContractTransactionDto.class)) + public RpcClientResult getContractTx(@PathParam("hash") String hash) { + if (hash == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "hash is empty")); + } + Result result = contractTools.getContractTx(config.getChainId(), hash); + RpcClientResult clientResult = ResultUtil.getRpcClientResult(result); + return clientResult; + } @POST @Path("/create/offline") diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTransactionDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTransactionDto.java new file mode 100644 index 0000000000..491a576295 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/ContractTransactionDto.java @@ -0,0 +1,195 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.nuls.provider.model.dto; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.core.rpc.model.Key; +import io.nuls.core.rpc.model.TypeDescriptor; + +import java.util.List; +import java.util.Map; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractTransactionDto { + + @ApiModelProperty(description = "交易hash") + private String hash; + @ApiModelProperty(description = "交易类型") + private Integer type; + @ApiModelProperty(description = "交易时间") + private Long time; + @ApiModelProperty(description = "区块高度") + private Long blockHeight; + @ApiModelProperty(description = "交易手续费") + private String fee; + @ApiModelProperty(description = "交易金额") + private String value; + @ApiModelProperty(description = "备注") + private String remark; + @ApiModelProperty(description = "签名信息") + private String scriptSig; + @ApiModelProperty(description = "交易状态(0 - 确认中,1 - 已确认)") + private Integer status; + @ApiModelProperty(description = "交易确认次数") + private Long confirmCount; + @ApiModelProperty(description = "交易大小") + private int size; + @ApiModelProperty(description = "交易输入集合", type = @TypeDescriptor(value = List.class, collectionElement = InputDto.class)) + private List inputs; + @ApiModelProperty(description = "交易输出集合", type = @TypeDescriptor(value = List.class, collectionElement = OutputDto.class)) + private List outputs; + @ApiModelProperty(description = "合约交易业务数据", type = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "data", description = "根据合约交易类型反映不同的业务数据(这里为了描述四种情况,四种业务放在一起描述,实际上不同时存在,只存在一个)") + })) + private Map txData; + @ApiModelProperty(description = "合约执行结果") + private ContractResultDto contractResult; + + + public String getHash() { + return hash; + } + + public void setHash(String hash) { + this.hash = hash; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Long getTime() { + return time; + } + + public void setTime(Long time) { + this.time = time; + } + + public Long getBlockHeight() { + return blockHeight; + } + + public void setBlockHeight(Long blockHeight) { + this.blockHeight = blockHeight; + } + + public String getFee() { + return fee; + } + + public void setFee(String fee) { + this.fee = fee; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getScriptSig() { + return scriptSig; + } + + public void setScriptSig(String scriptSig) { + this.scriptSig = scriptSig; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Long getConfirmCount() { + return confirmCount; + } + + public void setConfirmCount(Long confirmCount) { + this.confirmCount = confirmCount; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public List getInputs() { + return inputs; + } + + public void setInputs(List inputs) { + this.inputs = inputs; + } + + public List getOutputs() { + return outputs; + } + + public void setOutputs(List outputs) { + this.outputs = outputs; + } + + public Map getTxData() { + return txData; + } + + public void setTxData(Map txData) { + this.txData = txData; + } + + public ContractResultDto getContractResult() { + return contractResult; + } + + public void setContractResult(ContractResultDto contractResult) { + this.contractResult = contractResult; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/dto/InputDto.java b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/InputDto.java new file mode 100644 index 0000000000..3b0c1438a2 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/dto/InputDto.java @@ -0,0 +1,98 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +package io.nuls.provider.model.dto; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + * @date: 2019-03-14 + */ +@ApiModel +public class InputDto { + @ApiModelProperty(description = "输入地址") + private String address; + @ApiModelProperty(description = "资产链ID") + private int assetsChainId; + @ApiModelProperty(description = "资产ID") + private int assetsId; + @ApiModelProperty(description = "花费金额") + private String amount; + @ApiModelProperty(description = "地址的账本nonce值") + private String nonce; + @ApiModelProperty(description = "解锁交易的标签(0 - 非解锁交易,1 - 解锁交易)") + private byte locked; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getAssetsChainId() { + return assetsChainId; + } + + public void setAssetsChainId(int assetsChainId) { + this.assetsChainId = assetsChainId; + } + + public int getAssetsId() { + return assetsId; + } + + public void setAssetsId(int assetsId) { + this.assetsId = assetsId; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getNonce() { + return nonce; + } + + public void setNonce(String nonce) { + this.nonce = nonce; + } + + public byte getLocked() { + return locked; + } + + public void setLocked(byte locked) { + this.locked = locked; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java index bdcd26ce7b..178720d540 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java @@ -71,6 +71,22 @@ public Result getContractResult(int chainId, String hash) { } } + public Result getContractTx(int chainId, String hash) { + Map params = new HashMap(4); + params.put(Constants.CHAIN_ID, chainId); + params.put("hash", hash); + try { + return callRpc(ModuleE.SC.abbr, CONTRACT_TX, params,(Function, Result>) res->{ + if(res == null){ + return new Result(); + } + return new Result(res); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + public Result getContractResultList(int chainId, List hashList) { Map params = new HashMap(4); params.put(Constants.CHAIN_ID, chainId); diff --git a/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java b/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java index 0080971acc..6c36e3df0d 100644 --- a/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java +++ b/module/nuls-transaction/src/test/java/io/nuls/transaction/tx/TxSignTest.java @@ -20,6 +20,10 @@ package io.nuls.transaction.tx; +import io.nuls.base.signture.TransactionSignature; +import io.nuls.core.crypto.HexUtil; +import org.junit.Test; + import java.util.ArrayList; import java.util.List; @@ -151,4 +155,12 @@ public static void main(String[] args) throws Exception { list.add("NULSd6HgUxiPz3EMdZSuMHZf1caN8dVYCxRJx 3885 690661d1d5fc58bfbbdfa90f5874382b0f12ac5aa5382639bb956c14961236b6"); list.add("NULSd6HgdwgigpqWvDBjt5ptPeioGsp49fTbp 2775 ddbcd47c767df7f89fa42412e9bf9105d498b452e6076852795b1590654473b5"); */ + + @Test + public void signData() throws Exception { + String txSign = "210232bdaf6573319eba3b433ed88d6d4b0d06ea3ad9a504596fe967a2dbf95fc07c473045022100f4e1f683803a103b79eeb420a6d04089a673f93b2ea3d3012508320846f91c5302205c133ff512d6865fcb47c7fe07c7d930dfe6857cd5d69ab8065609435929a439"; + TransactionSignature sign = new TransactionSignature(); + sign.parse(HexUtil.decode(txSign),0); + System.out.println(HexUtil.encode(sign.getP2PHKSignatures().get(0).getPublicKey())); + } } diff --git a/version b/version index c910885a00..d91346fd9e 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.15.0 \ No newline at end of file +2.15.1 \ No newline at end of file From b37069de60857bc809a83b6b144d91ca925d7f2e Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 17 Jan 2023 17:50:38 +0800 Subject: [PATCH 302/304] Release/pre prod (#682) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * upgrade jar * upgrade jar * update internal create * v2.15.0-beta * update nrc20 initial totalsupply * update nrc20 initial totalsupply (#675) Co-authored-by: MIMIEYES * v2.15.0-beta * v2.15.0-beta * v2.15.0-beta: Modify asset name restriction. The restriction name cannot contain NULS to be NULS. * v2.15.0-beta: add getAddressesAndVerifySignature method * v2.15.0-beta: add getAddressesAndVerifySignature method * add address by key in contract vm sdk * add api for contract tx * add api for contract tx (#679) Co-authored-by: MIMIEYES * fix: Remove unnecessary code * add ctx rehandle interface * add ctx rehandle interface * 2.15.2-beta * 2.15.2-beta * 2.15.2-beta * 2.15.2 Signed-off-by: dependabot[bot] Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- config/nuls.beta.ncf | 2 +- module.ncf | 86 +++++++++++-------- module/nuls-account/pom.xml | 8 ++ .../java/io/nuls/account/tx/Transfer.java | 2 +- module/nuls-api/pom.xml | 8 +- .../controller/CrossChainController.java | 83 ++++++++++++++++++ .../io/nuls/chain/ChainManagerBootstrap.java | 4 +- .../chain/service/impl/CmTaskManager.java | 2 +- module/nuls-smart-contract/pom.xml | 7 ++ version | 2 +- 10 files changed, 161 insertions(+), 43 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/CrossChainController.java diff --git a/config/nuls.beta.ncf b/config/nuls.beta.ncf index b4ddfcd0c4..935449c9c1 100755 --- a/config/nuls.beta.ncf +++ b/config/nuls.beta.ncf @@ -86,7 +86,7 @@ inflationAmount=41095890410959 #通胀开始计算时间(单位:S)2020-07-12 00:00:00 initTime=1594483200 #通缩比例(如果没有通缩则设为100) -deflationRatio=99.6 +deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 diff --git a/module.ncf b/module.ncf index bc0c1f9d8a..7f89ca8a2c 100644 --- a/module.ncf +++ b/module.ncf @@ -1,45 +1,47 @@ [global] encoding=UTF-8 language=en -logPath=../../../../Logs -logLevel=DEBUG -dataPath=../../../../data +logPath=/Users/niels/workspace/nuls-v2/logs +logLevel=INFO +dataPath=/Users/niels/workspace/nuls-v2/data #默认本链ID -chainId=2 +chainId=1 #地址前缀 -addressPrefix=tNULS +addressPrefix=NULS #默认本链主资产ID assetId=1 #默认资产小数位数 decimals=8 #默认链名称 -chainName=nuls2 +chainName=nuls #本链默认资产符号 symbol=NULS #主网链id -mainChainId=2 +mainChainId=1 #主网主资产id mainAssetId=1 #主网主资产符号 mainSymbol=NULS blackHolePublicKey=000000000000000000000000000000000000000000000000000000000000000000 +packageVersion=%PACKAGE_VERSION% + [network] -port=18001 -crossPort=18002 +port=8001 +crossPort=8002 #魔法参数 -packetMagic=202001177 +packetMagic=20191222 #种子节点 -selfSeedIps=192.168.5.104:18001,192.168.5.10:18001,192.168.5.40:18001 +selfSeedIps=seeda.nuls.io:8001,seedb.nuls.io:8001,seedc.nuls.io:8001,seedd.nuls.io:8001,seede.nuls.io:8001,seedf.nuls.io:8001 #主网的跨链种子连接节点 -moonSeedIps=192.168.5.104:18002,192.168.5.10:18002,192.168.5.40:18002 +moonSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #最大入网连接数 maxInCount=300 #最大出网连接数 maxOutCount=20 [account] -blockAccountManager=tNULSeBaNE8nFpFo6qYiPiNHSbsGyKSceJLwQt +blockAccountManager=NULSd6Hh5e4o3N3y6FnHeGhECFXrETqSzbapx keystoreFolder=/keystore/backup dependent=protocol-update @@ -59,18 +61,19 @@ singleDownloadTimeout=15000 #区块同步过程中缓存的区块字节数上限(20M) cachedBlockSizeLimit=20971520 #创世块文件路径(支持绝对路径与相对路径,相对路径相对于此配置文件的目录) -genesisBlockPath=genesis-block_dev.json +genesisBlockPath=genesis-block.json dependent=cross-chain,protocol-update,smart-contract + [consensus] #种子节点列表 -seedNodes=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +seedNodes=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #出块地址密码 password=nuls123456 #出块间隔时间(单位:s) packingInterval=10 #共识委托抵押资产链ID -agentChainId=2 +agentChainId=1 #共识委托抵押资产ID agentAssetId=1 #共识奖励资产ID(共识奖励必须为本链资产) @@ -87,21 +90,15 @@ initTime=1594483200 deflationRatio=0.4 #通缩间隔时间(单位:S),30天 deflationTimeInterval=2592000 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract,cross-chain -[transaction] -dependent=protocol-update,smart-contract - [ledger] dependent=protocol-update [smart-contract] #合约视图方法调用最大消耗的Gas maxViewGas=100000000 -systemLogLevel=WARN -crossTokenSystemContract=tNULSeBaMy9k29Nj4rd3U4tonVr93mrDLHMNNd +crossTokenSystemContract=NULSd6HgsyGNK1xTcx2GnC9y3Jr1DKd3qL2HS dependent=protocol-update [chain-manager] @@ -109,9 +106,9 @@ dependent=smart-contract,protocol-update [public-service] #public-service模块对外的rpc端口号 -rpcPort=18003 +rpcPort=8003 #数据库url地址 -databaseUrl=192.168.1.39 +databaseUrl=127.0.0.1 #数据库端口号 databasePort=27017 #连接池最大数 @@ -122,8 +119,19 @@ maxWaitTime=120000 socketTimeout=300000 #连接超时时间 connectTimeOut=30000 +developerNodeAddress=NULSd6Hgf15aUZj6918tEwy9aT4JG1ZQotXRF +ambassadorNodeAddress=NULSd6HgcfGtsmm79QDoBK1MAjqNmm3rgKXSj +mappingAddress=NULSd6HgcfwWCD5TLEfehrJ1fFYuZ6nqGbfiu,NULSd6HggAGpQbhhSHU9R1yRxKKuCCTFwayaB +businessAddress=NULSd6HhDrCkRJBj9nX1Gr1PnuQP7bpQz3YfH,NULSd6HhDMDJASAH7VxLRY9Btff1k3ezpM66w +teamAddress=NULSd6Hh6m73yRYCn8ff2jo9qN93bh4GpzFDn +communityAddress=NULSd6Hh76ja8dHkTdYvTJS9gEAygiU1uLRGR,NULSd6Hh84g7u61ntrWhrdEMjXvM9STRPxFZx,NULSd6Hh8xn55HeTWKwRAG31fj2eHtq6Aw2Rg +syncCoinBase=false +syncAddress= dependent=smart-contract,cross-chain,chain-manager +[transaction] +dependent=protocol-update,smart-contract + [cross-chain] #跨链节点链接的最小值 minNodeAmount=3 @@ -132,29 +140,35 @@ sendHeight=6 #跨链交易拜占庭比例 byzantineRatio=66 #主网跨链种子节点列表 -crossSeedIps=192.168.5.104:18002,192.168.5.10:18002,192.168.5.40:18002 +crossSeedIps=seeda.nuls.io:8002,seedb.nuls.io:8002,seedc.nuls.io:8002,seedd.nuls.io:8002,seede.nuls.io:8002,seedf.nuls.io:8002 #主网验证人列表 -verifiers=tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp,tNULSeBaMoGr2RkLZPfJeS5dFzZeNj1oXmaYNe,tNULSeBaMmShSTVwbU4rHkZjpD98JgFgg6rmhF +verifiers=NULSd6Hge7xHDnvsSpnzbR2gWHd31zJ1How11,NULSd6Hgc5VNP4rF4wxdiXEQKpBKUE4w5RS22,NULSd6HgeQwXLdre69ArkqVZNDqMLU4CaAz33,NULSd6HgcjAKAgq8jjXgBCcNLEJUvJEYcoj44,NULSd6HgiDdTjcuvhqzm3bomyBFZmosV3ei55 #主网签名拜占庭比列 mainByzantineRatio=66 #主网最大签名数 maxSignatureCount=100 -dataPath=../../../../../data -logPath=../../../../../Logs dependent=protocol-update,smart-contract +[protocol-update] +#每隔多少个区块统计一次协议占比 +interval=1000 +dependent=smart-contract,cross-chain + [nuls-api] #httpServer的启动ip serverIp=0.0.0.0 #httpServer的启动port -serverPort=18004 +serverPort=8004 dependent=smart-contract,cross-chain,chain-manager -[protocol-update] -continuousIntervalCountMinimum=2 -#每隔多少个区块统计一次协议占比 -interval=2 +[nuls-module-web-wallet] +apiModuleApi=http://127.0.0.1:8003/ +webWalletPort=8006 +webWalletHost=0.0.0.0 dependent=smart-contract,cross-chain -[cmd-client] -clientVersion=2.7.0 +[nuls-module-explorer] +apiModuleApi=http://127.0.0.1:8003/ +explorerPort=1999 +explorerHost=0.0.0.0 + diff --git a/module/nuls-account/pom.xml b/module/nuls-account/pom.xml index 60e05e6cc7..26d5d5e0eb 100644 --- a/module/nuls-account/pom.xml +++ b/module/nuls-account/pom.xml @@ -9,6 +9,14 @@ 1.0.0-SNAPSHOT nuls-account + + + + nuls-release + nuls-release + https://nexus.nuls.io/repository/nuls-release/ + + io.nuls.sdk diff --git a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java index a389187ad4..2e161ad1a5 100644 --- a/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java +++ b/module/nuls-account/src/test/java/io/nuls/account/tx/Transfer.java @@ -237,7 +237,7 @@ public void accountBlockMultiSignTest() throws Exception { System.out.println(Arrays.toString(set.toArray())); data.setAddresses(set.toArray(new String[set.size()]));*/ data.setAddresses(new String[]{ - "NULSd6Hgbcn7gdGuapjgM8QsSTBtqsgKZ7Y8v" + "NULSd6HgUGY1T1QaYYkw4BoA3YH4WmPkJ16hK\n" }); tx.setTxData(data.serialize()); tx.setTime(System.currentTimeMillis() / 1000); diff --git a/module/nuls-api/pom.xml b/module/nuls-api/pom.xml index 372d8ae9ac..1686101496 100644 --- a/module/nuls-api/pom.xml +++ b/module/nuls-api/pom.xml @@ -20,7 +20,13 @@ 1.0.0-SNAPSHOT false - + + + nuls-release + nuls-release + https://nexus.nuls.io/repository/nuls-release/ + + io.nuls.v2 diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/CrossChainController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/CrossChainController.java new file mode 100644 index 0000000000..2d916689d5 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/CrossChainController.java @@ -0,0 +1,83 @@ +/* + * MIT License + * Copyright (c) 2017-2019 nuls.io + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.nuls.provider.api.jsonrpc.controller; + +import io.nuls.base.api.provider.Result; +import io.nuls.base.api.provider.ServiceManager; +import io.nuls.base.api.provider.block.BlockService; +import io.nuls.base.api.provider.block.facade.GetBlockHeaderByLastHeightReq; +import io.nuls.base.api.provider.crosschain.CrossChainProvider; +import io.nuls.base.api.provider.crosschain.facade.RehandleCtxReq; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Controller; +import io.nuls.core.core.annotation.RpcMethod; +import io.nuls.core.rpc.model.Parameter; +import io.nuls.core.rpc.model.Parameters; +import io.nuls.core.rpc.model.ResponseData; +import io.nuls.core.rpc.model.TypeDescriptor; +import io.nuls.provider.model.jsonrpc.RpcErrorCode; +import io.nuls.provider.model.jsonrpc.RpcResult; +import io.nuls.provider.utils.VerifyUtils; +import io.nuls.v2.model.annotation.Api; +import io.nuls.v2.model.annotation.ApiOperation; +import io.nuls.v2.model.annotation.ApiType; + +import java.util.List; + +/** + * @author Niels + */ +@Controller +@Api(type = ApiType.JSONRPC) +public class CrossChainController { + + private BlockService blockService = ServiceManager.get(BlockService.class); + + private CrossChainProvider crossChainProvider = ServiceManager.get(CrossChainProvider.class); + public CrossChainController(){ + System.out.println(); + } + + @RpcMethod("rehandlectx") + @ApiOperation(description = "重发已经卡主的交易", order = 901, detailDesc = "重发只代表本节点的尝试,不能保证最终结果") + @Parameters(value = { + @Parameter(parameterName = "hash", requestType = @TypeDescriptor(value = String.class), parameterDes = "跨链交易的hash") + }) + @ResponseData(name = "返回值", description = "是否成功", responseType = @TypeDescriptor(value = Boolean.class)) + public RpcResult createAccount(List params) { + VerifyUtils.verifyParams(params, 1); + String hash; + try { + hash = (String) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[hash] is inValid"); + } + + long blockHeight = blockService.getBlockHeaderByLastHeight(new GetBlockHeaderByLastHeightReq()).getData().getHeight(); + Result result = crossChainProvider.rehandleCtx(new RehandleCtxReq(hash, blockHeight)); + if (result.isFailed()) { + return RpcResult.failed(RpcErrorCode.SYS_UNKNOWN_EXCEPTION); + } + return RpcResult.success(true); + } + + +} diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/ChainManagerBootstrap.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/ChainManagerBootstrap.java index 48f8994426..f939442eea 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/ChainManagerBootstrap.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/ChainManagerBootstrap.java @@ -261,8 +261,8 @@ public RpcModuleState onDependenciesReady() { LoggerUtil.logger().error("启动异常退出...."); System.exit(-1); } - CmTaskManager cmTaskManager = SpringLiteContext.getBean(CmTaskManager.class); - cmTaskManager.start(); +// CmTaskManager cmTaskManager = SpringLiteContext.getBean(CmTaskManager.class); +// cmTaskManager.start(); NulsDateUtils.getInstance().start(5 * 60 * 1000); LoggerUtil.logger().info("onDependenciesReady ok...."); return RpcModuleState.Running; diff --git a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/CmTaskManager.java b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/CmTaskManager.java index 8c373c23c9..0a127ce85f 100644 --- a/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/CmTaskManager.java +++ b/module/nuls-chain-manager/src/main/java/io/nuls/chain/service/impl/CmTaskManager.java @@ -47,7 +47,7 @@ public class CmTaskManager { private ScheduledThreadPoolExecutor executorService; public void start() { - executorService = ThreadUtils.createScheduledThreadPool(1, new NulsThreadFactory("cmThread")); +// executorService = ThreadUtils.createScheduledThreadPool(1, new NulsThreadFactory("cmThread")); // chainAssetsCirculateUpdate(); } diff --git a/module/nuls-smart-contract/pom.xml b/module/nuls-smart-contract/pom.xml index b5766d121c..b7ecbb589c 100644 --- a/module/nuls-smart-contract/pom.xml +++ b/module/nuls-smart-contract/pom.xml @@ -16,6 +16,13 @@ 1.0.0 + + + nuls-release + nuls-release + https://nexus.nuls.io/repository/nuls-release/ + + io.nuls.v2 diff --git a/version b/version index d91346fd9e..7797528cab 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.15.1 \ No newline at end of file +2.15.2 \ No newline at end of file From 715647103658512f5fd5c77c7e40c36d6c5d1d37 Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 16 May 2023 11:38:28 +0800 Subject: [PATCH 303/304] Pre prod codehash (#685) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * upgrade jar * upgrade jar * update internal create * v2.15.0-beta * update nrc20 initial totalsupply * update nrc20 initial totalsupply (#675) Co-authored-by: MIMIEYES * v2.15.0-beta * v2.15.0-beta * v2.15.0-beta: Modify asset name restriction. The restriction name cannot contain NULS to be NULS. * v2.15.0-beta: add getAddressesAndVerifySignature method * v2.15.0-beta: add getAddressesAndVerifySignature method * add address by key in contract vm sdk * add api for contract tx * add api for contract tx (#679) Co-authored-by: MIMIEYES * fix: Remove unnecessary code * add ctx rehandle interface * add ctx rehandle interface * 2.15.2-beta * 2.15.2-beta * 2.15.2-beta * 2.15.2 * api of code hash * 2.15.3 --------- Signed-off-by: dependabot[bot] Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../api/constant/CommandConstant.java | 2 + .../controller/ContractController.java | 51 +++++++++ .../api/resources/ContractResource.java | 52 +++++++-- .../form/contract/ContractComputeAddress.java | 67 +++++++++++ .../nuls/provider/rpctools/ContractTools.java | 34 ++++++ .../nuls/contract/config/ContractContext.java | 59 ++++++++++ .../constant/ContractCmdConstant.java | 2 + .../contract/model/dto/ContractInfoDto.java | 22 +++- .../rpc/resource/ContractResource.java | 104 +++++++++++++++++- version | 2 +- 10 files changed, 383 insertions(+), 12 deletions(-) create mode 100644 module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractComputeAddress.java diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java index 1887b21914..07b2b30860 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/constant/CommandConstant.java @@ -82,4 +82,6 @@ public interface CommandConstant { //查询已注册的跨链信息 String GET_REGISTERED_CHAIN = "getRegisteredChainInfoList"; String CODE_HASH = "sc_code_hash"; + String CONTRACT_CODE = "sc_contract_code"; + String COMPUTE_ADDRESS = "sc_compute_address"; } diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java index 7b0d1d4b98..eec948dc15 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/ContractController.java @@ -962,6 +962,57 @@ public RpcResult codeHash(List params) { return ResultUtil.getJsonRpcResult(mapResult); } + @RpcMethod("computeAddress") + @ApiOperation(description = "计算合约地址", order = 420) + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "sender", parameterDes = "sender"), + @Parameter(parameterName = "codeHash", parameterDes = "codeHash"), + @Parameter(parameterName = "salt", parameterDes = "salt") + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "contractAddress", description = "合约地址") + })) + public RpcResult computeAddress(List params) { + VerifyUtils.verifyParams(params, 4); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + int i = 1; + Result mapResult = contractTools.computeAddress(chainId, params.get(i++), params.get(i++), params.get(i++)); + return ResultUtil.getJsonRpcResult(mapResult); + } + + @RpcMethod("contractCode") + @ApiOperation(description = "获取合约的code", order = 421) + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "contractAddress", parameterDes = "合约地址") + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "合约的code") + })) + public RpcResult contractCode(List params) { + VerifyUtils.verifyParams(params, 2); + int chainId; + try { + chainId = (int) params.get(0); + } catch (Exception e) { + return RpcResult.paramError("[chainId] is invalid"); + } + if (!Context.isChainExist(chainId)) { + return RpcResult.paramError(String.format("chainId [%s] is invalid", chainId)); + } + Result mapResult = contractTools.contractCode(chainId, params.get(1)); + return ResultUtil.getJsonRpcResult(mapResult); + } + @RpcMethod("contractCreateOffline") @ApiOperation(description = "离线 - 发布合约交易", order = 450) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java index 6b3797e18c..ba75d18525 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/api/resources/ContractResource.java @@ -584,22 +584,21 @@ public RpcClientResult invokeView(ContractViewCall form) { return ResultUtil.getRpcClientResult(mapResult); } - @POST - @Path("/codeHash") + @GET + @Path("/codeHash/{contractAddress}") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(description = "获取合约的codeHash", order = 419) @Parameters(value = { - @Parameter(parameterName = "获取合约的codeHash", parameterDes = "获取合约的codeHash", requestType = @TypeDescriptor(value = ContractCodeHash.class)) + @Parameter(parameterName = "contractAddress", parameterDes = "contractAddress") }) @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { @Key(name = "result", description = "合约的codeHash") })) - public RpcClientResult codeHash(ContractCodeHash form) { - if (form == null) { - return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form data is empty")); + public RpcClientResult codeHash(@PathParam("contractAddress") String contractAddress) { + if (contractAddress == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "contractAddress data is empty")); } - Result mapResult = contractTools.codeHash(config.getChainId(), - form.getContractAddress()); + Result mapResult = contractTools.codeHash(config.getChainId(), contractAddress); return ResultUtil.getRpcClientResult(mapResult); } @@ -620,6 +619,43 @@ public RpcClientResult getContractTx(@PathParam("hash") String hash) { return clientResult; } + @POST + @Path("/computeAddress") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "计算合约地址", order = 421) + @Parameters(value = { + @Parameter(parameterName = "计算合约地址", parameterDes = "计算合约地址", requestType = @TypeDescriptor(value = ContractComputeAddress.class)) + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "合约的codeHash") + })) + public RpcClientResult computeAddress(ContractComputeAddress form) { + if (form == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "form data is empty")); + } + Result mapResult = contractTools.computeAddress(config.getChainId(), + form.getSender(), form.getCodeHash(), form.getSalt()); + return ResultUtil.getRpcClientResult(mapResult); + } + + @GET + @Path("/contractCode/{contractAddress}") + @Produces(MediaType.APPLICATION_JSON) + @ApiOperation(description = "获取合约的code", order = 422) + @Parameters(value = { + @Parameter(parameterName = "contractAddress", parameterDes = "contractAddress") + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "合约的code") + })) + public RpcClientResult contractCode(@PathParam("contractAddress") String contractAddress) { + if (contractAddress == null) { + return RpcClientResult.getFailed(new ErrorData(CommonCodeConstanst.PARAMETER_ERROR.getCode(), "contractAddress data is empty")); + } + Result mapResult = contractTools.contractCode(config.getChainId(), contractAddress); + return ResultUtil.getRpcClientResult(mapResult); + } + @POST @Path("/create/offline") @Produces(MediaType.APPLICATION_JSON) diff --git a/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractComputeAddress.java b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractComputeAddress.java new file mode 100644 index 0000000000..2a356c8414 --- /dev/null +++ b/module/nuls-api/src/main/java/io/nuls/provider/model/form/contract/ContractComputeAddress.java @@ -0,0 +1,67 @@ +/* + * MIT License + * + * Copyright (c) 2017-2019 nuls.io + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +package io.nuls.provider.model.form.contract; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; +import io.nuls.v2.util.ContractUtil; + +import java.math.BigInteger; + +@ApiModel +public class ContractComputeAddress { + + @ApiModelProperty(description = "交易创建者") + private String sender; + @ApiModelProperty(description = "codeHash") + private String codeHash; + @ApiModelProperty(description = "salts", required = false) + private Object[] salt; + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getCodeHash() { + return codeHash; + } + + public void setCodeHash(String codeHash) { + this.codeHash = codeHash; + } + + public Object[] getSalt() { + return salt; + } + + public void setSalt(Object[] salt) { + this.salt = salt; + } +} diff --git a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java index 178720d540..7e906d99cb 100644 --- a/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java +++ b/module/nuls-api/src/main/java/io/nuls/provider/rpctools/ContractTools.java @@ -291,4 +291,38 @@ public Result codeHash(int chainId, Object contractAddress) { } } + public Result contractCode(int chainId, Object contractAddress) { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + params.put("contractAddress", contractAddress); + try { + return callRpc(ModuleE.SC.abbr, CONTRACT_CODE, params,(Function, Result>) res->{ + if(res == null){ + return null; + } + return new Result(res); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + + public Result computeAddress(int chainId, Object sender, Object codeHash, Object salt) { + Map params = new HashMap<>(); + params.put(Constants.CHAIN_ID, chainId); + params.put("sender", sender); + params.put("codeHash", codeHash); + params.put("salt", salt); + try { + return callRpc(ModuleE.SC.abbr, COMPUTE_ADDRESS, params,(Function, Result>) res->{ + if(res == null){ + return null; + } + return new Result(res); + }); + } catch (NulsRuntimeException e) { + return Result.fail(e.getCode(), e.getMessage()); + } + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java index 510de68110..2ebe38ec5a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/config/ContractContext.java @@ -23,8 +23,19 @@ */ package io.nuls.contract.config; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import io.nuls.base.basic.AddressTool; +import io.nuls.contract.enums.TokenTypeStatus; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.model.po.ContractAddressInfoPo; +import io.nuls.core.basic.Result; + import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; /** * @author: PierreLuo @@ -74,4 +85,52 @@ public class ContractContext { public static short UPDATE_VERSION_ACCOUNT_TRANSFER_ON_CONTRACT_CALL = 13; public static short PROTOCOL_14 = 14; public static short PROTOCOL_15 = 15; + public static short PROTOCOL_16 = 16; + private static final LoadingCache CONTRACT_INFO_CACHE; + private static ContractHelper contractHelper; + + static { + CONTRACT_INFO_CACHE = CacheBuilder.newBuilder() + .initialCapacity(200) + .maximumSize(200) + .expireAfterAccess(10, TimeUnit.MINUTES) + .build(new CacheLoader() { + @Override + public ContractAddressInfoPo load(String contract) { + Result contractAddressInfoResult = contractHelper.getContractAddressInfo(CHAIN_ID, AddressTool.getAddress(contract)); + ContractAddressInfoPo po = contractAddressInfoResult.getData(); + return po; + } + }); + } + + public static void loadContractAddressInfo(ContractAddressInfoPo info) { + if (info != null) { + CONTRACT_INFO_CACHE.put(AddressTool.getStringAddressByBytes(info.getContractAddress()), info); + } + } + + public static int getTokenType(String contract) { + ContractAddressInfoPo contractAddressInfo = getContractAddressInfo(contract); + if (contractAddressInfo == null) { + return TokenTypeStatus.NOT_TOKEN.status(); + } + return contractAddressInfo.getTokenType(); + } + + public static ContractAddressInfoPo getContractAddressInfo(String contract) { + try { + return CONTRACT_INFO_CACHE.get(contract); + } catch (ExecutionException e) { + return null; + } + } + + public static void setContractHelper(ContractHelper contractHelper) { + if (contractHelper == null) { + return; + } + ContractContext.contractHelper = contractHelper; + } + } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java index 902d346f39..0921220913 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractCmdConstant.java @@ -74,4 +74,6 @@ public interface ContractCmdConstant { String ACCOUNT_CONTRACTS = "sc_account_contracts"; String GET_CROSS_TOKEN_SYSTEM_CONTRACT = "sc_get_cross_token_system_contract"; String CODE_HASH = "sc_code_hash"; + String CONTRACT_CODE = "sc_contract_code"; + String COMPUTE_ADDRESS = "sc_compute_address"; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java index e70722edb1..5f15d7e66b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractInfoDto.java @@ -53,7 +53,7 @@ public class ContractInfoDto { private boolean directPayable; @ApiModelProperty(description = "是否接受其他资产直接转账") private boolean directPayableByOtherAsset; - @ApiModelProperty(description = "token类型, 0 - 非token, 1 - NRC20, 2 - NRC721") + @ApiModelProperty(description = "token类型, 0 - 非token, 1 - NRC20, 2 - NRC721, 3 - NRC1155") private int tokenType; @ApiModelProperty(description = "是否是NRC20合约") private boolean nrc20; @@ -69,6 +69,18 @@ public class ContractInfoDto { private String status; @ApiModelProperty(description = "合约方法列表", type = @TypeDescriptor(value = List.class, collectionElement = ProgramMethod.class)) private List method; + @ApiModelProperty(description = "tokenUri") + private String tokenUri; + @ApiModelProperty(description = "codeHash") + private String codeHash; + + public String getTokenUri() { + return tokenUri; + } + + public void setTokenUri(String tokenUri) { + this.tokenUri = tokenUri; + } public int getTokenType() { return tokenType; @@ -197,4 +209,12 @@ public List getMethod() { public void setMethod(List method) { this.method = method; } + + public String getCodeHash() { + return codeHash; + } + + public void setCodeHash(String codeHash) { + this.codeHash = codeHash; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 4aa311d2f6..48eed61da8 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -24,12 +24,14 @@ package io.nuls.contract.rpc.resource; import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.Address; import io.nuls.base.data.BlockHeader; import io.nuls.base.data.NulsHash; import io.nuls.base.data.Transaction; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; import io.nuls.contract.enums.ContractStatus; +import io.nuls.contract.enums.TokenTypeStatus; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.manager.ContractTokenBalanceManager; @@ -50,15 +52,19 @@ import io.nuls.contract.util.Log; import io.nuls.contract.util.MapUtil; import io.nuls.contract.vm.program.*; +import io.nuls.contract.vm.util.Utils; import io.nuls.core.basic.Page; import io.nuls.core.basic.Result; +import io.nuls.core.constant.BaseConstant; import io.nuls.core.constant.TxStatusEnum; import io.nuls.core.core.annotation.Autowired; import io.nuls.core.core.annotation.Component; import io.nuls.core.crypto.HexUtil; +import io.nuls.core.crypto.KeccakHash; import io.nuls.core.exception.NulsException; import io.nuls.core.model.FormatValidUtils; import io.nuls.core.model.StringUtils; +import io.nuls.core.parse.SerializeUtils; import io.nuls.core.rpc.cmd.BaseCmd; import io.nuls.core.rpc.info.Constants; import io.nuls.core.rpc.model.*; @@ -169,12 +175,14 @@ public Response create(Map params) { @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { - @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1") + @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1"), + @Key(name = "errorMsg", valueType = String.class, description = "执行失败的错误信息") })) public Response imputedCreateGas(Map params) { try { Map resultMap = MapUtil.createHashMap(1); resultMap.put("gasLimit", 1); + String errorMsg = null; boolean isImputed = false; Result result = null; do { @@ -199,6 +207,7 @@ public Response imputedCreateGas(Map params) { } result = contractTxService.validateContractCreateTx(chainId, senderBytes, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractCodeBytes, convertArgs); if (result.isFailed()) { + errorMsg = result.getMsg(); break; } isImputed = true; @@ -210,6 +219,8 @@ public Response imputedCreateGas(Map params) { gasUsed += gasUsed >> 1; gasUsed = gasUsed > MAX_GASLIMIT ? MAX_GASLIMIT : gasUsed; resultMap.put("gasLimit", gasUsed); + } else if (StringUtils.isNotBlank(errorMsg)) { + resultMap.put("errorMsg", errorMsg); } return success(resultMap); @@ -596,12 +607,14 @@ public Response previewCall(Map params) { @Parameter(parameterName = "args", requestType = @TypeDescriptor(value = Object[].class), parameterDes = "参数列表", canNull = true) }) @ResponseData(name = "返回值", description = "返回消耗的gas值", responseType = @TypeDescriptor(value = Map.class, mapKeys = { - @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1") + @Key(name = "gasLimit", valueType = Long.class, description = "消耗的gas值,执行失败返回数值1"), + @Key(name = "errorMsg", valueType = String.class, description = "执行失败的错误信息") })) public Response imputedCallGas(Map params) { try { Map resultMap = MapUtil.createHashMap(1); resultMap.put("gasLimit", 1); + String errorMsg = null; boolean isImputed = false; Result result = null; do { @@ -655,6 +668,7 @@ public Response imputedCallGas(Map params) { result = contractTxService.validateContractCallTx(chainId, senderBytes, value, MAX_GASLIMIT, CONTRACT_MINIMUM_PRICE, contractAddressBytes, methodName, methodDesc, convertArgs, multyAssetValueList); if (result.isFailed()) { + errorMsg = result.getMsg(); break; } isImputed = true; @@ -667,6 +681,8 @@ public Response imputedCallGas(Map params) { gasUsed += gasUsed >> 1; gasUsed = gasUsed > MAX_GASLIMIT ? MAX_GASLIMIT : gasUsed; resultMap.put("gasLimit", gasUsed); + } else if (StringUtils.isNotBlank(errorMsg)) { + resultMap.put("errorMsg", errorMsg); } return success(resultMap); @@ -1048,6 +1064,88 @@ public Response codeHash(Map params) { } } + @CmdAnnotation(cmd = CONTRACT_CODE, version = 1.0, description = "get code of contract") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "contractAddress", parameterDes = "合约地址"), + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "result", description = "code") + })) + public Response contractCode(Map params) { + try { + Integer chainId = (Integer) params.get("chainId"); + ChainManager.chainHandle(chainId); + String contractAddress = (String) params.get("contractAddress"); + + if (!AddressTool.validAddress(chainId, contractAddress)) { + return failed(ADDRESS_ERROR); + } + byte[] contractAddressBytes = AddressTool.getAddress(contractAddress); + if (!ContractLedgerUtil.isExistContractAddress(chainId, contractAddressBytes)) { + return failed(CONTRACT_ADDRESS_NOT_EXIST); + } + BlockHeader blockHeader = BlockCall.getLatestBlockHeader(chainId); + // 当前区块状态根 + byte[] prevStateRoot = ContractUtil.getStateRoot(blockHeader); + byte[] code = contractHelper.getContractCode(chainId, prevStateRoot, contractAddressBytes); + if (code == null) { + Result result = Result.getFailed(ContractErrorCode.DATA_NOT_FOUND); + return wrapperFailed(result); + } else { + Map resultMap = MapUtil.createLinkedHashMap(2); + resultMap.put("result", HexUtil.encode(code)); + return success(resultMap); + } + } catch (Exception e) { + Log.error(e); + return failed(e.getMessage()); + } + } + + @CmdAnnotation(cmd = COMPUTE_ADDRESS, version = 1.0, description = "compute contract") + @Parameters(value = { + @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), + @Parameter(parameterName = "sender", parameterDes = "sender"), + @Parameter(parameterName = "codeHash", parameterDes = "codeHash"), + @Parameter(parameterName = "salt", parameterDes = "salt") + }) + @ResponseData(name = "返回值", description = "返回Map", responseType = @TypeDescriptor(value = Map.class, mapKeys = { + @Key(name = "contractAddress", description = "合约地址") + })) + public Response computeAddress(Map params) { + try { + Integer chainId = (Integer) params.get("chainId"); + ChainManager.chainHandle(chainId); + String sender = (String) params.get("sender"); + String codeHash = (String) params.get("codeHash"); + List saltList = (List) params.get("salt"); + if (saltList == null || saltList.isEmpty()) { + return failed(PARAMETER_ERROR); + } + int size = saltList.size(); + String[] salts = new String[size]; + for (int i=0;i resultMap = MapUtil.createLinkedHashMap(2); + resultMap.put("contractAddress", newAddress.toString()); + return success(resultMap); + } catch (Exception e) { + Log.error(e); + return failed(e.getMessage()); + } + } + @CmdAnnotation(cmd = CONSTRUCTOR, version = 1.0, description = "contract code constructor") @Parameters(description = "参数", value = { @@ -1113,6 +1211,7 @@ public Response contractInfo(Map params) { byte[] prevStateRoot = ContractUtil.getStateRoot(blockHeader); ProgramExecutor track = contractHelper.getProgramExecutor(chainId).begin(prevStateRoot); + byte[] codeHash = track.contractCodeHash(contractAddressBytes); ProgramStatus status = track.status(contractAddressBytes); List methods = track.method(contractAddressBytes); boolean isAcceptDirectTransferByOtherAsset = false; @@ -1166,6 +1265,7 @@ public Response contractInfo(Map params) { dto.setMethod(methods); dto.setDirectPayable(po.isAcceptDirectTransfer()); dto.setDirectPayableByOtherAsset(isAcceptDirectTransferByOtherAsset); + dto.setCodeHash(HexUtil.encode(codeHash)); return success(dto); } catch (Exception e) { Log.error(e); diff --git a/version b/version index 7797528cab..25dc7aca07 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.15.2 \ No newline at end of file +2.15.3 \ No newline at end of file From 2fececa898be44a0c337eb9d2d5f00e318c596d6 Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 10 Jul 2023 17:25:01 +0800 Subject: [PATCH 304/304] 2.16.0 (#689) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * update getBalanceList * fix pro bug * fix pro bug * fix pro bug * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount * Develop (#651) * 2.6.0 merge to master (#606) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> * Bump junit from 4.12 to 4.13.1 in /common/nuls-core Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] * 2.7.0 merge to master (#610) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Bump commons-beanutils from 1.9.3 to 1.9.4 in /module/nuls-api Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot[bot] * Master push (#612) * 修改chainid强转short的bug * 修复cmd依赖问题 * broad cross chain info change tx remove main chain * cross chain info change handler update * chainManager cross asset record update * 单元测试 * 修改忽略文件配置 * 修改版本号 (#600) * 修改版本号 (#601) * 2.6.0 修改协议版本号 (#602) * 修改版本号 * protocal config update Co-authored-by: tag0313 <981602228@qq.com> * 命令行支持动态执行功能 * update getblock api * update getblock api * nuls-api增加链内转平行链资产的离线交易组装接口 * 修改平行链资产小数位错误的问题。 * 修复链管理在注销资产时验证资产占比时小数位错误的问题 * 修复增加跨链资产时小数位错误的问题 * 优化网络模块连接时间服务器逻辑 * 优化网络模块连接时间服务器逻辑 * 新增可配置的起始协议号。 当程序已经支持到某一个高协议号,比如6,但高度1时默认使用的协议版本号依然是1. 修改为可在nuls.ncf的global配置组下配置beginProtocolVersion配置项修改起始的默认协议号。比如直接从6开始。 * update public-service add cross tx query * fixed NPE * update public-service add cross tx query * 回滚上一个提交 * 去掉对chainid强转short * update public-service add cross tx query * update public-service add cross tx query * 增加快照功能 区块模块根据配置的高度停止保存区块。 * update public-service add cross tx query * update public-service add cross tx query * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * rm testfile * merge * merge * merge * merge * 优化release脚本 Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: Niels * merger 2.8.2 to master (#619) * api module add query Assets interface * 增加beta配置文件 * api module add query Assets interface * ps增加NRC20资产快照接口 * 修改打包配置 * 修改打包配置 * nuls-api增加链内平行链资产转账功能 * update public-service query other chainInfo * Fix a bug where you get the chainId by address * update public-service query acctTxs * 修改停止脚本。 修改手续费计算错误问题 * merge from 2.6.1-beta public service * update public service crossTxList api * update ps calc crossTx fee * update ps calc crossTx fee * update ps get cross asset info * 跨链增加查询方法 * update * update ps get cross asset info * test * update ps get cross asset info * update ps get cross asset info * update getAccountCrossLedgerList * update documents * update public-service getTxlist * update balance of contract token * update createOfflineAccount signOffline * locked balance of nrc20 * update createOfflineAccount signOffline * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * 跨链增加来源链和中间链信息 * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * update 3g mem of contract module * add txType * update cross token system contract * 调试主网配置 * es commit * version * support multy asset with contract in nuls api module * update offline contract transaction Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 Co-authored-by: niels1286 * Pre master (#631) * update query ledger raking * update createOfflineAccount signOffline * 修改跨链协议 * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * update dependen version Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: niels1286 Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: niels1286 * Pre master (#637) * 修改跨链协议 * 修改跨链协议 * test * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 Co-authored-by: lijun.zhou Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * test case * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> * Master merge 2.10.0 (#646) * update calc totalsSupply * add crossTx transfer api * add crossTx transfer api * add crossTx transfer api * add x * update api offline.sh * locked balance of nrc20 * update ps getAssetRanking * update total balance of nrc20 in ps * account token balance * dev * 修改nerve链名称 * 修复卡块BUG * fixed npe * stop脚本 * 修改停止脚本 * 停止脚本 * update ps document * fix NPE about contract tx rollback * commit local config files * update ps coinData decimals * commit local config files * test code * commit local config files * contract database prune disabled * 跨链交易不验证签名部分 * 跨链交易验证资产是否已经注册成跨链资产 * test * add bool * update config * update config * update config * update config * add test logs * add test logs * add test logs * update ps coinData decimals * single thread pool * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * 跨链重新进行拜赞庭签名 * recovery * add boolean of contract cross asset * fix red punish bug * update ps-module getBlockTxList * update ps-module getBlockTxList * add boolean of contract cross asset * update ps-module getTxList * update ps-module getAcctTxs * 测试验证人列表异常问题 * update corsschain tx * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修复因变更跨链资产造成的平行链验证人列表重置问题。 * 修改协议号 * update disable asset * beta config * 兼容验证人恢复的交易 * 兼容验证人恢复的交易 * 配置文件 * 修复nuls-api依赖provider接口版本错误问题 * 修复nulstar在window上启动问题 * update config * update ps-module getContract * contract multi-asset transfer * contract multi-asset test and fix bug * fix bug about balance of contract * fix bug and update test case * test case updated * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * update ps-module getAccountTokenInfo * fix bug about contract transfer merge * update test case * add cmd error log * update test case * add ImportKeyStoreFilesProcessor cmd * dev * dev * fix bug about contract transfer locked * update contract call validation * update contract call validation * update module connection * optimize ledger * transaction block height update * recovery versions * update vm sdk classes * update package * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * 优化跨链交易重新处理机制 * version * update validation of contract args * fix bug * add CrossChainAssetRegMngRepository cmd * v2.7.3 * update multi-asset in contract * v2.7.3 * update package * single thread in contract * revert * update * update max count * 暂时关闭跨链交易 * 暂时关闭跨链交易 * 暂时关闭跨链交易 * support many assets transfer to contract * update vm cache settings * update setting * remove debug logs * update log * 重置本链验证人列表交易 * update data source in contract * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 重置本链验证人列表交易 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 交易模块基础验证中验证手续费获取交易size时, 去掉交易签名的size(针对所有交易) * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * rm * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 重置本链验证人后创建一笔初始化验证人交易重置平行链存储的主链验证人列表 * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * 普通跨链交易饱和签名数在最少签名数的基础上上浮5%。 * update MongoAccountServiceImpl change AddressLIst * 打开跨链交易 * update config * gas price coding * update vm class code load * update mongodb.estimatedDocumentCount() * 普通跨链交易饱和签名数在最少签名数的基础上上浮30%。 * fix bug about contract multi-asset * 修改回滚逻辑,临时,后续需要仔细重构 * remove ps module * update contract execution way * update package logic of contract transactions * test case * 尝试修改切换分叉链失败时,区块模块停止的问题 * fix bug about multi-asset transfer into contract * update contract db and transfer * fix NPE * update memory rule in contract * update result * update contract transfer back tx * update ChainAssetCmd * 启动脚本增加动态JVM参数 * nrc721 support coding in contract module * 启动脚本增加动态JVM参数 * 调整window启动脚本 * nrc721 parse * update validation of call in nuls-api * update nuls api * fix bug about token cross chain * recovery package count (#614) * 修改协议升级的延迟块数 (#615) * update test case * add log trace * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * 重新处理跨链交易增加token跨链 * add log trace * update 3g mem of contract module * contract db query optimize * update log * remove log trace * add txType * contract db query optimize testing * update cross token system contract * 调试主网配置 * es commit * version * 优化协议版本切换逻辑 * update * support multy asset with contract in nuls api module * update offline contract transaction * add contract time out * 测试日志 * clear old cache * update * test * update * update db initial * fix bug * fix bug about conflict contract transaction * 去掉多余日志 * fix bug about setContractGenerateTxTypes * 修复本地验证人丢失的问题 * add time out * remove test code * remove test log * remove unused code * remove test code * extend transaction sync time out * beta setting * smart contract 5G mem * version * smart contract 3G mem * update config * 2.9.0 (#622) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version Co-authored-by: MIMIEYES * V2.9.1 (#626) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * update rpc-api文档 * update rpc-api文档 * 解决有节点提前出块的问题 * version Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: niels1286 * Release/pre prod (#629) * update fastjson version * update dependen version * update nuls.ncf (#634) Co-authored-by: NaboxAdmin * Develop (#640) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 Co-authored-by: MIMIEYES * Develop (#641) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf Co-authored-by: MIMIEYES * Prod limit (#643) * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * Access frequency limit. Co-authored-by: niels1286 * add getBalanceList (#644) * V2.10.0 (#645) * beta 跨链合约更新 * verser * update beta setting * version 290 * update array list limit * update test case * update * update * update * u * update max limit * args bug * update version control * remove log * version * fix bug about nuls-api in testnet * update error log * Merge branch 'release/prod' # Conflicts: # config/nuls.ncf # module.ncf # module/nuls-api/documents/nuls-api_JSONRPC.md # module/nuls-api/documents/nuls-api_RESTFUL.md # module/nuls-api/src/main/java/io/nuls/provider/ApiBootstrap.java # module/nuls-api/src/main/java/io/nuls/provider/api/jsonrpc/controller/TransactionController.java # version * v2.9.2 * add some cmds * update message to data * test file * update contract info * v2.9.3 * update contract info * v2.9.3 * fix pr 638 * update api * update ncf * add getBalanceList * test disable asset * test disable asset * test disable asset * test disable asset * test case * 通过编译 * 通过编译 * 通过编译 * 通过编译 * 通过编译 Co-authored-by: lijun.zhou Co-authored-by: MIMIEYES Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: MIMIEYES Co-authored-by: lijun.zhou Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * fix pro bug * fix pro bug * fix pro bug * Prod api (#647) * add getBalanceList * update getBalanceList * remove h2 * remove mybatis * remove mybatis * remove vm log * remove vm log * update api of token balance about locked amount Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin * add api blackAddressList * 黑名单列表 * 黑名单列表 * add api blackAddressList * blacklist * add api blackAddressList * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update block * blacklist * blacklist * recovery contract api * update pom of contract * update api of contract * update pom * add api blackAddressList * add api blackAddressList * 提交协议升级配置 * update test case * update errormsg * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * 每分钟重置黑名单地址 * update get contractLockBalance * 提交12协议升级配置--允许资产重新注册跨链 * 恢复transfer * update test case * update get contractLockBalance * v2 coding * add api for block account * account block v2 coding * config * update addcrossasset cmd * account block signature validation coding completed * test completed * update get contractLockBalance * update test case * 2.12.1 * update api doc * add decimals for rpc * 2.12.2 * update rpc * update api of account balance * support nuls transfer on contract call * completed to support nuls transfer on contract call * update test case * 2.13.0-beta * optimize the api of broadcast tx * 2.12.3 * 2.12.3 * 2.12.5 * settings * 还原本地特殊处理代码 * fix ignore * fix v12 sync bugs * fix v12 sync bugs * Delay stop agent tx * Delay stop agent tx * dev config * update cmd * 增加api接口 * local-test success * local-test success * fix tx validator bug * fix tx validator bug * modify nulstar oss url * v2.13.0-whole * v2.13.0-whole * v2.13.0-whole * 增加查看跨链交易签名信息功能 * 增加查看跨链交易签名信息功能 * v2.13.1 remove dependency-fastjson * v2.13.1 remove dependency-fastjson * coding initial * remove unused packages * coding for internal-create * optimize code * add computeAddress for internal-create * update gas used of contract create on protocol 14 * update gas cost for contract execution failure * test settings * update multi address for contract call * test setting * test * test * update test case * v2.14.0 * v2.14.0 * v2.14.0 * add internal-create data to the contract result * update the validation of token name * upgrade jar * upgrade jar * update internal create * v2.15.0-beta * update nrc20 initial totalsupply * update nrc20 initial totalsupply (#675) Co-authored-by: MIMIEYES * v2.15.0-beta * v2.15.0-beta * v2.15.0-beta: Modify asset name restriction. The restriction name cannot contain NULS to be NULS. * v2.15.0-beta: add getAddressesAndVerifySignature method * v2.15.0-beta: add getAddressesAndVerifySignature method * add address by key in contract vm sdk * add api for contract tx * add api for contract tx (#679) Co-authored-by: MIMIEYES * fix: Remove unnecessary code * add ctx rehandle interface * add ctx rehandle interface * 2.15.2-beta * 2.15.2-beta * 2.15.2-beta * 2.15.2 * api of code hash * 2.15.3 * nrc1155 * 增加nuls交易预警 --------- Signed-off-by: dependabot[bot] Co-authored-by: lijunzhou Co-authored-by: tag0313 <981602228@qq.com> Co-authored-by: zhouwei1985 <251556768@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MIMIEYES Co-authored-by: Charlie <29900478@qq.com> Co-authored-by: NaboxAdmin --- .../src/main/resources/versions.json | 5 + .../nuls/contract/SmartContractBootStrap.java | 33 +- .../contract/constant/ContractConstant.java | 9 +- .../nuls/contract/enums/TokenTypeStatus.java | 5 +- .../nuls/contract/helper/ContractHelper.java | 191 +++++++----- .../contract/model/bo/ContractCreate.java | 2 +- .../contract/model/bo/ContractResult.java | 2 +- .../contract/model/dto/ContractResultDto.java | 21 +- .../dto/ContractToken1155TransferDto.java | 131 ++++++++ .../dto/ContractToken721TransferDto.java | 11 +- .../model/dto/ContractTokenTransferDto.java | 11 +- .../model/dto/ContractTokenTransferInfo.java | 83 ++++- .../processor/CallContractTxProcessor.java | 6 +- .../processor/CreateContractTxProcessor.java | 3 +- .../rpc/resource/ContractResource.java | 79 +---- .../tx/v16/CallContractProcessorV16.java | 215 +++++++++++++ .../tx/v16/CreateContractProcessorV16.java | 189 ++++++++++++ .../io/nuls/contract/util/ContractUtil.java | 191 ++++++++++-- .../java/io/nuls/contract/util/VMContext.java | 19 +- .../contract/vm/program/ProgramMethod.java | 79 +---- .../contract/vm/program/ProgramMethodArg.java | 16 +- .../src/main/resources/nrc1155.json | 287 ++++++++++++++++++ .../src/main/resources/protocol-config.json | 25 ++ .../io/nuls/contract/tx/base/BaseQuery.java | 4 +- .../ContractCreateSendTxTest.java | 8 + version | 2 +- 26 files changed, 1310 insertions(+), 317 deletions(-) create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken1155TransferDto.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CallContractProcessorV16.java create mode 100644 module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CreateContractProcessorV16.java create mode 100644 module/nuls-smart-contract/src/main/resources/nrc1155.json diff --git a/module/nuls-protocol-update/src/main/resources/versions.json b/module/nuls-protocol-update/src/main/resources/versions.json index e54c420906..595c8e227c 100644 --- a/module/nuls-protocol-update/src/main/resources/versions.json +++ b/module/nuls-protocol-update/src/main/resources/versions.json @@ -73,5 +73,10 @@ "version": "15", "effectiveRatio": "80", "continuousIntervalCount": "10" + }, + { + "version": "16", + "effectiveRatio": "80", + "continuousIntervalCount": "10" } ] \ No newline at end of file diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java index 774f414ddc..3ad4d03e62 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/SmartContractBootStrap.java @@ -9,6 +9,7 @@ import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractDBConstant; +import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.model.bo.Chain; import io.nuls.contract.model.bo.ContractTokenAssetsInfo; @@ -64,6 +65,8 @@ public class SmartContractBootStrap extends RpcModule { private ChainManager chainManager; @Autowired private AddressPrefixDatas addressPrefixDatas; + @Autowired + private ContractHelper contractHelper; public static void main(String[] args) throws Exception { systemConfig(); @@ -88,6 +91,7 @@ public void init() { initDB(); initNRC20Standard(); initNRC721Standard(); + initNRC1155Standard(); chainManager.initChain(); ModuleHelper.init(this); } catch (Exception e) { @@ -106,6 +110,7 @@ private void initNulsConfig() { if (StringUtils.isNotBlank(contractConfig.getCrossTokenSystemContract())) { ContractContext.CROSS_CHAIN_SYSTEM_CONTRACT = AddressTool.getAddress(contractConfig.getCrossTokenSystemContract()); } + ContractContext.setContractHelper(contractHelper); } /** @@ -173,11 +178,31 @@ private void initNRC721Standard() { } catch (Exception e) { Log.error("init NRC721Standard map error.", e); } - ProgramMethod overloadMethodSafeData = jsonMap.remove(NRC721_SAFETRANSFERFROM_DATA); - ProgramMethod overloadMethodSafe = jsonMap.remove(NRC721_SAFETRANSFERFROM); VMContext.setNrc721Methods(jsonMap); - VMContext.setNrc721OverloadMethodSafeData(overloadMethodSafeData); - VMContext.setNrc721OverloadMethodSafe(overloadMethodSafe); + } + + /** + * 初始化NRC1155合约标准格式 + */ + private void initNRC1155Standard() { + String json = null; + try { + json = IoUtils.read(NRC1155_STANDARD_FILE); + } catch (Exception e) { + // skip it + Log.error("init NRC1155Standard error.", e); + } + if (json == null) { + return; + } + + Map jsonMap = null; + try { + jsonMap = JSONUtils.json2map(json, ProgramMethod.class); + } catch (Exception e) { + Log.error("init NRC20Standard map error.", e); + } + VMContext.setNrc1155Methods(jsonMap); } /** diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java index b5d3d0f5c0..634cfb62ac 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/constant/ContractConstant.java @@ -98,8 +98,6 @@ public interface ContractConstant { String TO = "to"; String VALUE = "value"; String TOKEN_ID = "tokenId"; - int TOKEN_TYPE_NRC20 = 1; - int TOKEN_TYPE_NRC721 = 2; /** * NRC20 */ @@ -125,6 +123,13 @@ public interface ContractConstant { String NRC721_EVENT_TRANSFER = "Transfer"; String NRC721_EVENT_APPROVAL = "Approval"; + /** + * NRC1155 + */ + String NRC1155_STANDARD_FILE = "nrc1155.json"; + String NRC1155_EVENT_TRANSFER_SINGLE = "TransferSingle"; + String NRC1155_EVENT_TRANSFER_BATCH = "TransferBatch"; + int DEFAULT_MAX_VIEW_GAS = 100000000; String SYS_FILE_ENCODING = "file.encoding"; String MODULE_CONFIG_FILE = "module.json"; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/enums/TokenTypeStatus.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/enums/TokenTypeStatus.java index a269f7d9a0..90b33d9363 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/enums/TokenTypeStatus.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/enums/TokenTypeStatus.java @@ -32,10 +32,11 @@ * @date: 2019-08-20 */ public enum TokenTypeStatus { - // 0 - 非token, 1 - NRC20, 2 - NRC721 + // 0 - 非token, 1 - NRC20, 2 - NRC721, 3 - NRC1155 NOT_TOKEN(0), NRC20(1), - NRC721(2); + NRC721(2), + NRC1155(3); private int status; private static Map map; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java index 44104fd1f4..253b491526 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/helper/ContractHelper.java @@ -129,7 +129,7 @@ public ContractConstructorInfoDto getConstructor(int chainId, byte[] contractCod break; } } - dto.setNrc20(this.checkNrc20Contract(programMethods)); + dto.setNrc20(this.checkTokenContract(programMethods, null, VMContext.getNrc20Methods().values())); return dto; } catch (Exception e) { Log.error(e); @@ -177,11 +177,7 @@ public ProgramMethod getMethodInfoByContractAddress(int chainId, byte[] currentS return this.getMethodInfo(methodName, methodDesc, methods); } - private boolean checkNrc20Contract(List methods) { - return checkNrc20Contract(methods, null); - } - - private boolean checkNrc20Contract(List methods, Map contractMethodsMap) { + private boolean checkTokenContract(List methods, Map contractMethodsMap, Collection tokenStandardProgramMethods) { if (methods == null || methods.size() == 0) { return false; } @@ -189,22 +185,17 @@ private boolean checkNrc20Contract(List methods, Map(methods.size()); } for (ProgramMethod method : methods) { - contractMethodsMap.put(method.getName(), method); + contractMethodsMap.put(methodSignature(method), method); } - Set> entries = VMContext.getNrc20Methods().entrySet(); - String methodName; - ProgramMethod standardMethod; ProgramMethod mappingMethod; - for (Map.Entry entry : entries) { - methodName = entry.getKey(); - standardMethod = entry.getValue(); - mappingMethod = contractMethodsMap.get(methodName); + for (ProgramMethod standardMethod : tokenStandardProgramMethods) { + mappingMethod = contractMethodsMap.get(methodSignature(standardMethod)); if (mappingMethod == null) { return false; } - if (!standardMethod.equalsNrc20Method(mappingMethod)) { + if (!standardMethod.equalsTokenMethod(mappingMethod)) { return false; } } @@ -212,51 +203,6 @@ private boolean checkNrc20Contract(List methods, Map methods, Map contractMethodsMap) { - if (methods == null || methods.size() == 0) { - return false; - } - - Set> entries = VMContext.getNrc721Methods().entrySet(); - String methodName; - ProgramMethod standardMethod; - ProgramMethod mappingMethod; - for (Map.Entry entry : entries) { - methodName = entry.getKey(); - standardMethod = entry.getValue(); - mappingMethod = contractMethodsMap.get(methodName); - - if (mappingMethod == null) { - return false; - } - if (!standardMethod.equalsNrc721Method(mappingMethod)) { - return false; - } - } - boolean hasSafe = false; - boolean hasSafeData = false; - for (ProgramMethod method : methods) { - if (NRC721_SAFETRANSFERFROM.equals(method.getName())) { - int size = method.getArgs().size(); - if (size == 3 && VMContext.getNrc721OverloadMethodSafe().equalsNrc721Method(method)) { - hasSafe = true; - continue; - } - if (size == 4 && VMContext.getNrc721OverloadMethodSafeData().equalsNrc721Method(method)) { - hasSafeData = true; - continue; - } - } - if (hasSafe && hasSafeData) { - break; - } - } - if (hasSafe && hasSafeData) { - return true; - } - return false; - } - private boolean checkAcceptDirectTransfer(List methods) { if (methods == null || methods.size() == 0) { return false; @@ -397,8 +343,10 @@ private boolean validTokenNameOrSymbol(int chainId, String name) { } public Result validateNrc20Contract(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { - if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_15) { + if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_16) { return validateNrc20ContractP16(chainId, track, contractAddress, contractCode, contractResult); + } else if(ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.PROTOCOL_15) { + return validateNrc20ContractP15(chainId, track, contractAddress, contractCode, contractResult); } else { return validateNrc20ContractP0(chainId, track, contractAddress, contractCode, contractResult); } @@ -411,10 +359,10 @@ private Result validateNrc20ContractP0(int chainId, ProgramExecutor track, byte[ long bestBlockHeight = vmContext.getBestHeight(chainId); List methods = this.getAllMethods(chainId, contractCode); Map contractMethodsMap = new HashMap<>(); - boolean isNrc20 = this.checkNrc20Contract(methods, contractMethodsMap); + boolean isNrc20 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc20Methods().values()); boolean isNrc721 = false; if (!isNrc20) { - isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); + isNrc721 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc721Methods().values()); } if (isNrc20) { contractResult.setTokenType(TokenTypeStatus.NRC20.status()); @@ -495,17 +443,17 @@ private Result validateNrc20ContractP0(int chainId, ProgramExecutor track, byte[ return getSuccess(); } - private Result validateNrc20ContractP16(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { + private Result validateNrc20ContractP15(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { if (contractResult == null) { return Result.getFailed(ContractErrorCode.NULL_PARAMETER); } long bestBlockHeight = vmContext.getBestHeight(chainId); List methods = this.getAllMethods(chainId, contractCode); Map contractMethodsMap = new HashMap<>(); - boolean isNrc20 = this.checkNrc20Contract(methods, contractMethodsMap); + boolean isNrc20 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc20Methods().values()); boolean isNrc721 = false; if (!isNrc20) { - isNrc721 = this.checkNrc721Contract(methods, contractMethodsMap); + isNrc721 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc721Methods().values()); } if (isNrc20) { contractResult.setTokenType(TokenTypeStatus.NRC20.status()); @@ -586,6 +534,103 @@ private Result validateNrc20ContractP16(int chainId, ProgramExecutor track, byte return getSuccess(); } + private Result validateNrc20ContractP16(int chainId, ProgramExecutor track, byte[] contractAddress, byte[] contractCode, ContractResult contractResult) { + if (contractResult == null) { + return Result.getFailed(ContractErrorCode.NULL_PARAMETER); + } + long bestBlockHeight = vmContext.getBestHeight(chainId); + List methods = this.getAllMethods(chainId, contractCode); + Map contractMethodsMap = new HashMap<>(); + boolean isNrc20 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc20Methods().values()); + boolean isNrc721 = false; + boolean isNrc1155 = false; + if (!isNrc20) { + isNrc721 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc721Methods().values()); + } + if (!isNrc721) { + isNrc1155 = this.checkTokenContract(methods, contractMethodsMap, VMContext.getNrc1155Methods().values()); + } + if (isNrc20) { + contractResult.setTokenType(TokenTypeStatus.NRC20.status()); + } else if (isNrc721) { + contractResult.setTokenType(TokenTypeStatus.NRC721.status()); + } else if (isNrc1155) { + contractResult.setTokenType(TokenTypeStatus.NRC1155.status()); + } + boolean isAcceptDirectTransfer = this.checkAcceptDirectTransfer(methods); + contractResult.setNrc20(isNrc20); + contractResult.setAcceptDirectTransfer(isAcceptDirectTransfer); + if (isNrc20 || isNrc721 || isNrc1155) { + // tokenName 验证代币名称格式 + ProgramResult programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_NAME, null, null); + if (programResult.isSuccess()) { + String tokenName = programResult.getResult(); + if (StringUtils.isNotBlank(tokenName)) { + if (!validTokenNameOrSymbol(chainId, tokenName)) { + contractResult.setError(true); + contractResult.setErrorMessage("The format of the name is incorrect."); + return getFailed(); + } + contractResult.setTokenName(tokenName); + } + } + // tokenSymbol 验证代币符号的格式 + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_SYMBOL, null, null); + if (programResult.isSuccess()) { + String symbol = programResult.getResult(); + if (StringUtils.isNotBlank(symbol)) { + if (!validTokenNameOrSymbol(chainId, symbol)) { + contractResult.setError(true); + contractResult.setErrorMessage("The format of the symbol is incorrect."); + return getFailed(); + } + contractResult.setTokenSymbol(symbol); + } + } + + if (isNrc20) { + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_DECIMALS, null, null); + BigInteger decimalsBig = BigInteger.ZERO; + if (programResult.isSuccess()) { + String decimals = programResult.getResult(); + if (StringUtils.isNotBlank(decimals)) { + try { + decimalsBig = new BigInteger(decimals); + if (decimalsBig.compareTo(BigInteger.ZERO) < 0 || decimalsBig.compareTo(MAXIMUM_DECIMALS) > 0) { + contractResult.setError(true); + contractResult.setErrorMessage("The value of decimals ranges from 0 to 18."); + return getFailed(); + } + contractResult.setTokenDecimals(decimalsBig.intValue()); + } catch (Exception e) { + Log.error("Get nrc20 decimals error.", e); + // skip it + } + } + } + programResult = this.invokeViewMethod(chainId, track, null, bestBlockHeight, contractAddress, NRC20_METHOD_TOTAL_SUPPLY, null, null); + if (programResult.isSuccess()) { + String totalSupply = programResult.getResult(); + if (StringUtils.isNotBlank(totalSupply)) { + try { + BigInteger totalSupplyBig = new BigInteger(totalSupply); + if (totalSupplyBig.compareTo(BigInteger.ZERO) < 0 || totalSupplyBig.compareTo(MAXIMUM_TOTAL_SUPPLY.multiply(BigInteger.TEN.pow(decimalsBig.intValue()))) > 0) { + contractResult.setErrorMessage("The value of totalSupply ranges from 0 to 2^256 - 1."); + contractResult.setError(true); + return getFailed(); + } + contractResult.setTokenTotalSupply(totalSupplyBig); + } catch (Exception e) { + Log.error("Get nrc20 totalSupply error.", e); + // skip it + } + } + } + } + } + return getSuccess(); + } + public ContractBalance getBalance(int chainId, int assetChainId, int assetId, byte[] address) { ContractTempBalanceManager tempBalanceManager; if (ProtocolGroupManager.getCurrentVersion(chainId) >= ContractContext.UPDATE_VERSION_CONTRACT_BALANCE) { @@ -1019,14 +1064,13 @@ public Result onCommitForCreateV14(int chainId, BlockHeader blockHeader, Contrac info.setCreateTime(txTime); info.setBlockHeight(blockHeight); - boolean isNrc20Contract = TOKEN_TYPE_NRC20 == contractCreate.getTokenType(); - boolean isNrc721Contract = TOKEN_TYPE_NRC721 == contractCreate.getTokenType(); + boolean isNrc20Contract = TokenTypeStatus.NRC20.status() == contractCreate.getTokenType(); boolean acceptDirectTransfer = contractCreate.isAcceptDirectTransfer(); info.setAcceptDirectTransfer(acceptDirectTransfer); info.setNrc20(isNrc20Contract); info.setTokenType(contractCreate.getTokenType()); do { - if (!isNrc20Contract && !isNrc721Contract) { + if (contractCreate.getTokenType() == TokenTypeStatus.NOT_TOKEN.status()) { break; } // 获取 token tracker @@ -1098,4 +1142,13 @@ public Result onRollbackForCreateV14(int chainId, byte[] contractAddress, boolea } return contractTokenAddressStorageService.deleteTokenAddress(chainId, contractAddress); } + + public Result onCommitForCreateV16(int chainId, BlockHeader blockHeader, ContractCreate contractCreate, + NulsHash hash, long txTime, byte[] contractAddress, byte[] sender, byte[] contractCode, String alias, Map infoPoMap) throws Exception { + return this.onCommitForCreateV14(chainId, blockHeader, contractCreate, hash, txTime, contractAddress, sender, contractCode, alias, infoPoMap); + } + + public Result onRollbackForCreateV16(int chainId, byte[] contractAddress, boolean isNrc20) throws Exception { + return this.onRollbackForCreateV14(chainId, contractAddress, isNrc20); + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java index b761fce6cf..db9342ae9a 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractCreate.java @@ -29,7 +29,7 @@ // add by pierre at 2022/6/1 p14 public class ContractCreate { private boolean acceptDirectTransfer; - // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 + // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721, 3 - NRC1155 private int tokenType; private String tokenName; private String tokenSymbol; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java index d220aba159..f81639b9a1 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/bo/ContractResult.java @@ -75,7 +75,7 @@ public class ContractResult { private String errorMessage; private String stackTrace; private boolean acceptDirectTransfer; - // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 + // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721, 3 - NRC1155 private int tokenType; private boolean isNrc20; private String tokenName; diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java index 81a442bddb..5b7eabdfbe 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractResultDto.java @@ -25,6 +25,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.contract.enums.CmdRegisterMode; +import io.nuls.contract.enums.TokenTypeStatus; import io.nuls.contract.model.bo.ContractInternalCreate; import io.nuls.contract.model.bo.ContractMergedTransfer; import io.nuls.contract.model.bo.ContractMultyAssetMergedTransfer; @@ -47,8 +48,6 @@ import java.util.List; import java.util.stream.Collectors; -import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC20; -import static io.nuls.contract.constant.ContractConstant.TOKEN_TYPE_NRC721; import static io.nuls.contract.util.ContractUtil.bigInteger2String; /** @@ -94,6 +93,8 @@ public class ContractResultDto { private List tokenTransfers; @ApiModelProperty(description = "合约NRC721-token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractToken721TransferDto.class)) private List token721Transfers; + @ApiModelProperty(description = "合约NRC1155-token转账列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractToken1155TransferDto.class)) + private List token1155Transfers; @ApiModelProperty(description = "合约调用外部命令的调用记录列表", type = @TypeDescriptor(value = List.class, collectionElement = ContractInvokeRegisterCmdDto.class)) private List invokeRegisterCmds; @ApiModelProperty(description = "合约生成交易的序列化字符串列表", type = @TypeDescriptor(value = List.class, collectionElement = String.class)) @@ -217,21 +218,25 @@ public void setToken721Transfers(List token721Trans private void makeTokenTransfers(int chainId, List tokenTransferEvents) { List result = new ArrayList<>(); List result721 = new ArrayList<>(); + List result1155 = new ArrayList<>(); if (tokenTransferEvents != null && tokenTransferEvents.size() > 0) { ContractTokenTransferInfo info; for (String event : tokenTransferEvents) { info = ContractUtil.convertJsonToTokenTransferInfo(chainId, event); if (info != null) { - if (TOKEN_TYPE_NRC20 == info.getTokenType()) { + if (TokenTypeStatus.NRC20.status() == info.getTokenType()) { result.add(new ContractTokenTransferDto(info)); - } else if (TOKEN_TYPE_NRC721 == info.getTokenType()) { + } else if (TokenTypeStatus.NRC721.status() == info.getTokenType()) { result721.add(new ContractToken721TransferDto(info)); + } else if (TokenTypeStatus.NRC1155.status() == info.getTokenType()) { + result1155.add(new ContractToken1155TransferDto(info)); } } } } this.tokenTransfers = result; this.token721Transfers = result721; + this.token1155Transfers = result1155; } public List getTransfers() { @@ -420,4 +425,12 @@ public List getInternalCreates() { public void setInternalCreates(List internalCreates) { this.internalCreates = internalCreates; } + + public List getToken1155Transfers() { + return token1155Transfers == null ? new ArrayList<>() : token1155Transfers; + } + + public void setToken1155Transfers(List token1155Transfers) { + this.token1155Transfers = token1155Transfers; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken1155TransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken1155TransferDto.java new file mode 100644 index 0000000000..63114ef50a --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken1155TransferDto.java @@ -0,0 +1,131 @@ +/** + * MIT License + *

+ * Copyright (c) 2017-2019 nuls.io + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.nuls.contract.model.dto; + + +import io.nuls.core.rpc.model.ApiModel; +import io.nuls.core.rpc.model.ApiModelProperty; + +/** + * @author: PierreLuo + */ +@ApiModel +public class ContractToken1155TransferDto { + @ApiModelProperty(description = "合约地址") + private String contractAddress; + @ApiModelProperty(description = "操作方") + private String operator; + @ApiModelProperty(description = "付款方") + private String from; + @ApiModelProperty(description = "收款方") + private String to; + @ApiModelProperty(description = "tokenId") + private String[] ids; + @ApiModelProperty(description = "转账数量") + private String[] values; + @ApiModelProperty(description = "token名称") + private String name; + @ApiModelProperty(description = "token符号") + private String symbol; + + public ContractToken1155TransferDto(ContractTokenTransferInfo info) { + this.contractAddress = info.getContractAddress(); + this.operator = info.getOperator(); + this.from = info.getFrom(); + this.to = info.getTo(); + this.name = info.getName(); + this.symbol = info.getSymbol(); + if (info.getIds() != null) { + this.ids = info.getIds(); + this.values = info.getValues(); + } else { + this.ids = new String[]{info.getId().toString()}; + this.values = new String[]{info.getValue().toString()}; + } + } + + public String getContractAddress() { + return contractAddress; + } + + public void setContractAddress(String contractAddress) { + this.contractAddress = contractAddress; + } + + public String getOperator() { + return operator; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String[] getIds() { + return ids; + } + + public void setIds(String[] ids) { + this.ids = ids; + } + + public String[] getValues() { + return values; + } + + public void setValues(String[] values) { + this.values = values; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java index f10d6e76a6..2c5612d780 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractToken721TransferDto.java @@ -24,8 +24,6 @@ package io.nuls.contract.model.dto; -import io.nuls.contract.model.po.ContractAddressInfoPo; -import io.nuls.contract.util.ContractUtil; import io.nuls.core.rpc.model.ApiModel; import io.nuls.core.rpc.model.ApiModelProperty; @@ -51,12 +49,9 @@ public ContractToken721TransferDto(ContractTokenTransferInfo info) { this.contractAddress = info.getContractAddress(); this.from = info.getFrom(); this.to = info.getTo(); - this.tokenId = ContractUtil.bigInteger2String(info.getValue()); - } - - public void setNrc721Info(ContractAddressInfoPo po) { - this.name = po.getNrc20TokenName(); - this.symbol = po.getNrc20TokenSymbol(); + this.tokenId = info.getValue(); + this.name = info.getName(); + this.symbol = info.getSymbol(); } public String getContractAddress() { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java index 1215952165..4631075b62 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferDto.java @@ -25,7 +25,6 @@ import io.nuls.base.basic.AddressTool; -import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.util.ContractUtil; import io.nuls.core.rpc.model.ApiModel; @@ -69,13 +68,11 @@ public ContractTokenTransferDto(ContractTokenTransferInfo info) { this.contractAddress = info.getContractAddress(); this.from = info.getFrom(); this.to = info.getTo(); - this.value = ContractUtil.bigInteger2String(info.getValue()); - } + this.value = info.getValue(); + this.name = info.getName(); + this.symbol = info.getSymbol(); + this.decimals = info.getDecimals(); - public void setNrc20Info(ContractAddressInfoPo po) { - this.name = po.getNrc20TokenName(); - this.symbol = po.getNrc20TokenSymbol(); - this.decimals = po.getDecimals(); } public String getContractAddress() { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java index 362b5985a3..71bcf38c37 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/model/dto/ContractTokenTransferInfo.java @@ -36,10 +36,17 @@ public class ContractTokenTransferInfo implements Serializable { private String from; private String to; - private BigInteger value; + private String value; private String contractAddress; - // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721 + // token类型, 0 - 非token, 1 - NRC20, 2 - NRC721, 3 - NRC1155 private int tokenType; + private String name; + private String symbol; + private long decimals; + private String operator; + private String id; + private String[] ids; + private String[] values; public String getFrom() { return from; @@ -57,14 +64,6 @@ public void setTo(String to) { this.to = to; } - public BigInteger getValue() { - return value; - } - - public void setValue(BigInteger value) { - this.value = value; - } - public String getContractAddress() { return contractAddress; } @@ -80,4 +79,68 @@ public int getTokenType() { public void setTokenType(int tokenType) { this.tokenType = tokenType; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } + + public long getDecimals() { + return decimals; + } + + public void setDecimals(long decimals) { + this.decimals = decimals; + } + + public String getOperator() { + return operator; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String[] getIds() { + return ids; + } + + public void setIds(String[] ids) { + this.ids = ids; + } + + public String[] getValues() { + return values; + } + + public void setValues(String[] values) { + this.values = values; + } } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java index 0db551b8ca..99b98693f6 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CallContractTxProcessor.java @@ -26,8 +26,7 @@ import io.nuls.base.basic.AddressTool; import io.nuls.base.data.BlockHeader; -import io.nuls.contract.constant.ContractConstant; -import io.nuls.contract.constant.ContractErrorCode; +import io.nuls.contract.enums.TokenTypeStatus; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.model.bo.ContractInternalCreate; import io.nuls.contract.model.bo.ContractResult; @@ -43,7 +42,6 @@ import io.nuls.contract.util.ContractUtil; import io.nuls.contract.util.Log; import io.nuls.contract.vm.program.ProgramStatus; -import io.nuls.contract.vm.util.JsonUtils; import io.nuls.core.basic.Result; import io.nuls.core.basic.VarInt; import io.nuls.core.core.annotation.Autowired; @@ -314,7 +312,7 @@ public Result onRollbackV14(int chainId, ContractWrapperTransaction tx) { List internalCreates = contractResult.getInternalCreates(); if (internalCreates != null && !internalCreates.isEmpty()) { for (ContractInternalCreate internalCreate : internalCreates) { - Result result = contractHelper.onRollbackForCreateV14(chainId, internalCreate.getContractAddress(), internalCreate.getTokenType() == ContractConstant.TOKEN_TYPE_NRC20); + Result result = contractHelper.onRollbackForCreateV14(chainId, internalCreate.getContractAddress(), internalCreate.getTokenType() == TokenTypeStatus.NRC20.status()); if (result.isFailed()) { return result; } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java index 2a9c5ceb76..8e30516a5b 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/processor/CreateContractTxProcessor.java @@ -30,6 +30,7 @@ import io.nuls.base.protocol.ProtocolGroupManager; import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; +import io.nuls.contract.enums.TokenTypeStatus; import io.nuls.contract.helper.ContractHelper; import io.nuls.contract.model.bo.*; import io.nuls.contract.model.dto.ContractResultDto; @@ -238,7 +239,7 @@ public Result onCommitV8(int chainId, ContractWrapperTransaction tx) throws Exce info.setBlockHeight(blockHeight); boolean isNrc20Contract = contractResult.isNrc20(); - boolean isNrc721Contract = ContractConstant.TOKEN_TYPE_NRC721 == contractResult.getTokenType(); + boolean isNrc721Contract = TokenTypeStatus.NRC721.status() == contractResult.getTokenType(); boolean acceptDirectTransfer = contractResult.isAcceptDirectTransfer(); info.setAcceptDirectTransfer(acceptDirectTransfer); info.setNrc20(isNrc20Contract); diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java index 48eed61da8..5670a90be3 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/rpc/resource/ContractResource.java @@ -587,7 +587,7 @@ public Response previewCall(Map params) { } ContractResult contractResult = result.getData(); ContractResultDto contractResultDto = new ContractResultDto(chainId, contractResult, gasLimit); - this.filterRealTokenTransfers(chainId, contractResultDto); + //this.filterRealTokenTransfers(chainId, contractResultDto); return success(contractResultDto); } catch (Exception e) { Log.error(e); @@ -1252,13 +1252,18 @@ public Response contractInfo(Map params) { dto.setBlockHeight(po.getBlockHeight()); dto.setTokenType(po.getTokenType()); dto.setNrc20(po.isNrc20()); - boolean isNrc721 = ContractConstant.TOKEN_TYPE_NRC721 == po.getTokenType(); - if (po.isNrc20() || isNrc721) { + boolean isNrc721 = TokenTypeStatus.NRC721.status() == po.getTokenType(); + boolean isNrc1155 = TokenTypeStatus.NRC1155.status() == po.getTokenType(); + if (po.isNrc20() || isNrc721 || isNrc1155) { dto.setNrc20TokenName(po.getNrc20TokenName()); dto.setNrc20TokenSymbol(po.getNrc20TokenSymbol()); if (po.isNrc20()) { dto.setDecimals(po.getDecimals()); dto.setTotalSupply(ContractUtil.bigInteger2String(po.getTotalSupply())); + } else if (isNrc1155) { + ProgramResult uriResult = contractHelper.invokeViewMethod(chainId, contractAddressBytes, "uri", "() return String", null); + String uri = uriResult.getResult(); + dto.setTokenUri(uri); } } dto.setStatus(status.name()); @@ -1310,7 +1315,7 @@ public Response contractResultList(Map params) { if (contractResultDto == null) { continue; } - this.filterRealTokenTransfers(chainId, contractResultDto); + //this.filterRealTokenTransfers(chainId, contractResultDto); resultMap.put(hash, contractResultDto); } return success(resultMap); @@ -1370,7 +1375,7 @@ public Response contractResult(Map params) { resultMap.put("msg", msg); } if (flag && contractResultDto != null) { - this.filterRealTokenTransfers(chainId, contractResultDto); + //this.filterRealTokenTransfers(chainId, contractResultDto); resultMap.put("data", contractResultDto); } if (!flag) { @@ -1396,68 +1401,6 @@ private ContractResultDto makeContractResultDto(int chainId, ContractBaseTransac return contractResultDto; } - private void filterRealTokenTransfers(int chainId, ContractResultDto contractResultDto) { - List tokenTransfers = contractResultDto.getTokenTransfers(); - List token721Transfers = contractResultDto.getToken721Transfers(); - Map cache = MapUtil.createHashMap(tokenTransfers.size() + token721Transfers.size()); - do { - if (tokenTransfers == null || tokenTransfers.isEmpty()) { - break; - } - List resultDto = new ArrayList<>(); - for (ContractTokenTransferDto tokenTransfer : tokenTransfers) { - try { - if (StringUtils.isBlank(tokenTransfer.getName())) { - String contractAddress = tokenTransfer.getContractAddress(); - ContractAddressInfoPo po = cache.get(contractAddress); - if (po == null) { - po = contractHelper.getContractAddressInfo( - chainId, AddressTool.getAddress(contractAddress)).getData(); - cache.put(contractAddress, po); - } - if (po == null || !po.isNrc20()) { - continue; - } - tokenTransfer.setNrc20Info(po); - resultDto.add(tokenTransfer); - } - } catch (Exception e) { - Log.error(e); - } - } - contractResultDto.setTokenTransfers(resultDto); - } while (false); - - do { - if (token721Transfers == null || token721Transfers.isEmpty()) { - break; - } - List result721Dto = new ArrayList<>(); - for (ContractToken721TransferDto token721Transfer : token721Transfers) { - try { - if (StringUtils.isBlank(token721Transfer.getName())) { - String contractAddress = token721Transfer.getContractAddress(); - ContractAddressInfoPo po = cache.get(contractAddress); - if (po == null) { - po = contractHelper.getContractAddressInfo( - chainId, AddressTool.getAddress(contractAddress)).getData(); - cache.put(contractAddress, po); - } - if (po == null || TOKEN_TYPE_NRC721 != po.getTokenType()) { - continue; - } - token721Transfer.setNrc721Info(po); - result721Dto.add(token721Transfer); - } - } catch (Exception e) { - Log.error(e); - } - } - contractResultDto.setToken721Transfers(result721Dto); - } while (false); - - } - @CmdAnnotation(cmd = CONTRACT_TX, version = 1.0, description = "合约交易/contract tx") @Parameters(value = { @Parameter(parameterName = "chainId", requestType = @TypeDescriptor(value = int.class), parameterDes = "链id"), @@ -1494,7 +1437,7 @@ public Response contractTx(Map params) { // 计算交易实际发生的金额 calTransactionValue(txDto); if (contractResultDto != null) { - this.filterRealTokenTransfers(chainId, contractResultDto); + //this.filterRealTokenTransfers(chainId, contractResultDto); txDto.setContractResult(contractResultDto); } diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CallContractProcessorV16.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CallContractProcessorV16.java new file mode 100644 index 0000000000..ac0f4a2bdb --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CallContractProcessorV16.java @@ -0,0 +1,215 @@ +package io.nuls.contract.tx.v16; + +import io.nuls.base.basic.AddressTool; +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.enums.TokenTypeStatus; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractInternalCreate; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.dto.CallContractDataDto; +import io.nuls.contract.model.dto.ContractResultDto; +import io.nuls.contract.model.po.ContractAddressInfoPo; +import io.nuls.contract.model.tx.CallContractTransaction; +import io.nuls.contract.model.txdata.CallContractData; +import io.nuls.contract.model.txdata.ContractData; +import io.nuls.contract.processor.CallContractTxProcessor; +import io.nuls.contract.service.ContractService; +import io.nuls.contract.util.ContractUtil; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CallContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.JSONUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static io.nuls.contract.util.ContractUtil.getFailed; + +// add by pierre at 2023/4/26 +@Component("CallContractProcessorV16") +public class CallContractProcessorV16 implements TransactionProcessor { + + @Autowired + private CallContractTxProcessor callContractTxProcessor; + @Autowired + private CallContractTxValidator callContractTxValidator; + @Autowired + private ContractHelper contractHelper; + @Autowired + private ChainManager chainManager; + @Autowired + private ContractService contractService; + + @Override + public int getType() { + return TxType.CALL_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CallContractTransaction callTx; + for(Transaction tx : txs) { + callTx = new CallContractTransaction(); + callTx.copyTx(tx); + try { + Result validate = callContractTxValidator.validateV14(chainId, callTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}, txType: {}", txHash, tx.getType()); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + this.onCommit(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CallContractData call; + for (Transaction tx : txs) { + if (tx.getType() == TxType.CROSS_CHAIN) { + call = ContractUtil.parseCrossChainTx(tx, chainManager); + if (call == null) { + continue; + } + } else { + call = new CallContractData(); + call.parse(tx.getTxData(), 0); + } + this.onRollback(chainId, new ContractWrapperTransaction(tx, call)); + } + return true; + } catch (NulsException e) { + Log.error(e); + return false; + } + } + + private Result onCommit(int chainId, ContractWrapperTransaction tx) { + try { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + byte[] stateRoot = blockHeader.getStateRoot(); + long blockHeight = blockHeader.getHeight(); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + + // 保存代币交易 + ContractData callContractData = tx.getContractData(); + byte[] contractAddress = callContractData.getContractAddress(); + String contractAddressStr = AddressTool.getStringAddressByBytes(contractAddress); + + Result contractAddressInfoPoResult = contractHelper.getContractAddressInfo(chainId, contractAddress); + ContractAddressInfoPo contractAddressInfoPo = contractAddressInfoPoResult.getData(); + contractResult.setNrc20(contractAddressInfoPo.isNrc20()); + tx.setBlockHeight(blockHeight); + + Map infoPoMap = new HashMap<>(); + infoPoMap.put(contractAddressStr, contractAddressInfoPo); + // 处理内部创建合约 + List internalCreates = contractResult.getInternalCreates(); + if (internalCreates != null && !internalCreates.isEmpty()) { + for (ContractInternalCreate internalCreate : internalCreates) { + Result result = contractHelper.onCommitForCreateV16(chainId, blockHeader, internalCreate, tx.getHash(), tx.getTime(), internalCreate.getContractAddress(), + internalCreate.getSender(), contractHelper.getContractCode(chainId, stateRoot, internalCreate.getCodeCopyBy()), "internal_create", infoPoMap); + if (result.isFailed()) { + return result; + } + } + } + // 处理合约事件 + contractHelper.dealNrc20Events(chainId, stateRoot, blockHeight, tx.getHash(), tx.getTime(), contractResult.getEvents(), contractResult.isSuccess(), infoPoMap); + + // 保存合约执行结果 + return contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + } catch (Exception e) { + Log.error("save call contract tx error.", e); + return getFailed(); + } + } + + private Result onRollback(int chainId, ContractWrapperTransaction tx) { + try { + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return ContractUtil.getSuccess(); + } + try { + CallContractData contractData = (CallContractData) tx.getContractData(); + Log.info("rollback call tx, contract data is {}, result is {}", JSONUtils.obj2json(new CallContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace call rollback log, error is {}", e.getMessage()); + } + contractHelper.rollbackNrc20Events(chainId, tx.getHash(), contractResult.getEvents()); + // 处理内部创建合约 + List internalCreates = contractResult.getInternalCreates(); + if (internalCreates != null && !internalCreates.isEmpty()) { + for (ContractInternalCreate internalCreate : internalCreates) { + Result result = contractHelper.onRollbackForCreateV16(chainId, internalCreate.getContractAddress(), internalCreate.getTokenType() == TokenTypeStatus.NRC20.status()); + if (result.isFailed()) { + return result; + } + } + } + // 删除合约执行结果 + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } catch (Exception e) { + Log.error("rollback call contract tx error.", e); + return getFailed(); + } + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CreateContractProcessorV16.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CreateContractProcessorV16.java new file mode 100644 index 0000000000..4a2ce6d06a --- /dev/null +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/tx/v16/CreateContractProcessorV16.java @@ -0,0 +1,189 @@ +package io.nuls.contract.tx.v16; + +import io.nuls.base.data.BlockHeader; +import io.nuls.base.data.Transaction; +import io.nuls.base.protocol.TransactionProcessor; +import io.nuls.contract.helper.ContractHelper; +import io.nuls.contract.manager.ChainManager; +import io.nuls.contract.model.bo.BatchInfoV8; +import io.nuls.contract.model.bo.ContractCreate; +import io.nuls.contract.model.bo.ContractResult; +import io.nuls.contract.model.bo.ContractWrapperTransaction; +import io.nuls.contract.model.dto.ContractResultDto; +import io.nuls.contract.model.dto.CreateContractDataDto; +import io.nuls.contract.model.po.ContractAddressInfoPo; +import io.nuls.contract.model.tx.CreateContractTransaction; +import io.nuls.contract.model.txdata.ContractData; +import io.nuls.contract.model.txdata.CreateContractData; +import io.nuls.contract.processor.CreateContractTxProcessor; +import io.nuls.contract.service.ContractService; +import io.nuls.contract.util.Log; +import io.nuls.contract.validator.CreateContractTxValidator; +import io.nuls.core.basic.Result; +import io.nuls.core.constant.TxType; +import io.nuls.core.core.annotation.Autowired; +import io.nuls.core.core.annotation.Component; +import io.nuls.core.exception.NulsException; +import io.nuls.core.parse.JSONUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static io.nuls.contract.util.ContractUtil.getSuccess; + +// add by pierre at 2023/4/26 +@Component("CreateContractProcessorV16") +public class CreateContractProcessorV16 implements TransactionProcessor { + + @Autowired + private CreateContractTxProcessor createContractTxProcessor; + @Autowired + private CreateContractTxValidator createContractTxValidator; + @Autowired + private ContractHelper contractHelper; + @Autowired + private ContractService contractService; + + @Override + public int getType() { + return TxType.CREATE_CONTRACT; + } + + @Override + public Map validate(int chainId, List txs, Map> txMap, BlockHeader blockHeader) { + ChainManager.chainHandle(chainId); + Map result = new HashMap<>(); + List errorList = new ArrayList<>(); + result.put("txList", errorList); + String errorCode = null; + CreateContractTransaction createTx; + for(Transaction tx : txs) { + createTx = new CreateContractTransaction(); + createTx.copyTx(tx); + try { + Result validate = createContractTxValidator.validate(chainId, createTx); + if(validate.isFailed()) { + errorCode = validate.getErrorCode().getCode(); + errorList.add(tx); + } + } catch (NulsException e) { + Log.error(e); + errorCode = e.getErrorCode().getCode(); + errorList.add(tx); + } + } + result.put("errorCode", errorCode); + return result; + } + + @Override + public boolean commit(int chainId, List txs, BlockHeader header) { + try { + BatchInfoV8 batchInfo = contractHelper.getChain(chainId).getBatchInfoV8(); + if (batchInfo != null) { + Map contractResultMap = batchInfo.getContractResultMap(); + ContractResult contractResult; + ContractWrapperTransaction wrapperTx; + String txHash; + for (Transaction tx : txs) { + txHash = tx.getHash().toString(); + contractResult = contractResultMap.get(txHash); + if (contractResult == null) { + Log.warn("empty contract result with txHash: {}", txHash); + continue; + } + wrapperTx = contractResult.getTx(); + wrapperTx.setContractResult(contractResult); + this.onCommit(chainId, wrapperTx); + } + } + + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + @Override + public boolean rollback(int chainId, List txs, BlockHeader blockHeader) { + try { + ChainManager.chainHandle(chainId); + CreateContractData create; + for (Transaction tx : txs) { + create = new CreateContractData(); + create.parse(tx.getTxData(), 0); + this.onRollback(chainId, new ContractWrapperTransaction(tx, create)); + } + return true; + } catch (Exception e) { + Log.error(e); + return false; + } + } + + private Result onCommit(int chainId, ContractWrapperTransaction tx) throws Exception { + BlockHeader blockHeader = contractHelper.getBatchInfoCurrentBlockHeaderV8(chainId); + long blockHeight = blockHeader.getHeight(); + tx.setBlockHeight(blockHeight); + ContractResult contractResult = tx.getContractResult(); + contractResult.setBlockHeight(blockHeight); + Result saveContractExecuteResult = contractService.saveContractExecuteResult(chainId, tx.getHash(), contractResult); + if (saveContractExecuteResult.isFailed()) { + return saveContractExecuteResult; + } + // 执行失败的合约直接返回 + if (!contractResult.isSuccess()) { + return getSuccess(); + } + CreateContractData txData = (CreateContractData) tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + byte[] sender = txData.getSender(); + String alias = txData.getAlias(); + byte[] code = txData.getCode(); + byte[] newestStateRoot = blockHeader.getStateRoot(); + + ContractCreate create = new ContractCreate(); + create.setTokenType(contractResult.getTokenType()); + create.setTokenName(contractResult.getTokenName()); + create.setTokenSymbol(contractResult.getTokenSymbol()); + create.setTokenDecimals(contractResult.getTokenDecimals()); + create.setTokenTotalSupply(contractResult.getTokenTotalSupply()); + create.setAcceptDirectTransfer(contractResult.isAcceptDirectTransfer()); + Map infoPoMap = new HashMap<>(); + Result result = contractHelper.onCommitForCreateV16(chainId, blockHeader, create, tx.getHash(), tx.getTime(), contractAddress, sender, code, alias, infoPoMap); + if (result.isFailed()) { + return result; + } + //处理NRC20合约事件 + contractHelper.dealNrc20Events(chainId, newestStateRoot, blockHeight, tx.getHash(), tx.getTime(), contractResult.getEvents(), contractResult.isSuccess(), infoPoMap); + return result; + } + + private Result onRollback(int chainId, ContractWrapperTransaction tx) throws Exception { + ContractData txData = tx.getContractData(); + byte[] contractAddress = txData.getContractAddress(); + // 回滚代币转账交易 + ContractResult contractResult = tx.getContractResult(); + if (contractResult == null) { + contractResult = contractService.getContractExecuteResult(chainId, tx.getHash()); + } + if (contractResult == null) { + return Result.getSuccess(null); + } + try { + CreateContractData contractData = (CreateContractData) tx.getContractData(); + Log.info("rollback create tx, contract data is {}, result is {}", JSONUtils.obj2json(new CreateContractDataDto(contractData)), JSONUtils.obj2json(new ContractResultDto(chainId, contractResult, contractData.getGasLimit()))); + } catch (Exception e) { + Log.warn("failed to trace create rollback log, error is {}", e.getMessage()); + } + contractHelper.rollbackNrc20Events(chainId, tx.getHash(), contractResult.getEvents()); + Result result = contractHelper.onRollbackForCreateV16(chainId, contractAddress, contractResult.isNrc20()); + if (result.isFailed()) { + return result; + } + return contractService.deleteContractExecuteResult(chainId, tx.getHash()); + } +} diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java index d1a7c37d66..385f4d03c5 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/util/ContractUtil.java @@ -34,10 +34,12 @@ import io.nuls.contract.config.ContractContext; import io.nuls.contract.constant.ContractConstant; import io.nuls.contract.constant.ContractErrorCode; +import io.nuls.contract.enums.TokenTypeStatus; import io.nuls.contract.manager.ChainManager; import io.nuls.contract.model.bo.*; import io.nuls.contract.model.dto.AccountAmountDto; import io.nuls.contract.model.dto.ContractTokenTransferInfo; +import io.nuls.contract.model.po.ContractAddressInfoPo; import io.nuls.contract.model.po.ContractTokenTransferInfoPo; import io.nuls.contract.model.tx.*; import io.nuls.contract.model.txdata.CallContractData; @@ -46,6 +48,8 @@ import io.nuls.contract.model.txdata.DeleteContractData; import io.nuls.contract.rpc.call.BlockCall; import io.nuls.contract.rpc.call.ChainManagerCall; +import io.nuls.contract.vm.program.ProgramMethod; +import io.nuls.contract.vm.program.ProgramMethodArg; import io.nuls.contract.vm.program.ProgramMultyAssetValue; import io.nuls.core.basic.Result; import io.nuls.core.constant.ErrorCode; @@ -277,6 +281,9 @@ public static ContractTokenTransferInfoPo convertJsonToTokenTransferInfoPo(int c Map eventMap = JSONUtils.json2map(event); String eventName = (String) eventMap.get(CONTRACT_EVENT); String contractAddress = (String) eventMap.get(CONTRACT_EVENT_ADDRESS); + if (ContractContext.getTokenType(contractAddress) != TokenTypeStatus.NRC20.status()) { + return null; + } po = new ContractTokenTransferInfoPo(); po.setContractAddress(contractAddress); if (NRC20_EVENT_TRANSFER.equals(eventName)) { @@ -321,48 +328,145 @@ public static ContractTokenTransferInfo convertJsonToTokenTransferInfo(int chain Map eventMap = JSONUtils.json2map(event); String eventName = (String) eventMap.get(CONTRACT_EVENT); String contractAddress = (String) eventMap.get(CONTRACT_EVENT_ADDRESS); + ContractAddressInfoPo contractAddressInfo = ContractContext.getContractAddressInfo(contractAddress); + int tokenType = contractAddressInfo.getTokenType(); info = new ContractTokenTransferInfo(); info.setContractAddress(contractAddress); if (NRC20_EVENT_TRANSFER.equals(eventName)) { - boolean isNRC20; - Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); - isNRC20 = data.containsKey(VALUE); - if (!isNRC20) { + if (tokenType != TokenTypeStatus.NRC20.status()) { return null; } - String from = (String) data.get(FROM); - String to = (String) data.get(TO); - String value = (String) data.get(VALUE); - if (AddressTool.validAddress(chainId, from)) { - info.setFrom(from); - } - if (AddressTool.validAddress(chainId, to)) { - info.setTo(to); - } - if (isNRC20) { - info.setTokenType(TOKEN_TYPE_NRC20); - info.setValue(isBlank(value) ? BigInteger.ZERO : new BigInteger(value)); + Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); + info.setTokenType(TokenTypeStatus.NRC20.status()); + info.setName(contractAddressInfo.getNrc20TokenName()); + info.setSymbol(contractAddressInfo.getNrc20TokenSymbol()); + info.setDecimals(contractAddressInfo.getDecimals()); + Collection values = data.values(); + int i = 0; + String transferEventdata; + for (Object object : values) { + transferEventdata = (String) object; + if (i == 0 || i == 1) { + if (AddressTool.validAddress(chainId, transferEventdata)) { + if (i == 0) { + info.setFrom(transferEventdata); + } else { + info.setTo(transferEventdata); + } + } + } + if (i == 2) { + info.setValue(isBlank(transferEventdata) ? "0" : transferEventdata); + break; + } + i++; } return info; } else if (NRC721_EVENT_TRANSFER.equals(eventName)) { - boolean isNRC721; + if (tokenType != TokenTypeStatus.NRC721.status()) { + return null; + } Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); - isNRC721 = data.containsKey(TOKEN_ID); - if (!isNRC721) { + info.setTokenType(TokenTypeStatus.NRC721.status()); + info.setName(contractAddressInfo.getNrc20TokenName()); + info.setSymbol(contractAddressInfo.getNrc20TokenSymbol()); + Collection values = data.values(); + int i = 0; + String transferEventdata; + for (Object object : values) { + transferEventdata = (String) object; + if (i == 0 || i == 1) { + if (AddressTool.validAddress(chainId, transferEventdata)) { + if (i == 0) { + info.setFrom(transferEventdata); + } else { + info.setTo(transferEventdata); + } + } + } + if (i == 2) { + info.setValue(isBlank(transferEventdata) ? "0" : transferEventdata); + break; + } + i++; + } + return info; + } else if (NRC1155_EVENT_TRANSFER_SINGLE.equals(eventName)) { + if (tokenType != TokenTypeStatus.NRC1155.status()) { return null; } - String from = (String) data.get(FROM); - String to = (String) data.get(TO); - String tokenId = (String) data.get(TOKEN_ID); - if (AddressTool.validAddress(chainId, from)) { - info.setFrom(from); + Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); + info.setTokenType(TokenTypeStatus.NRC1155.status()); + info.setName(contractAddressInfo.getNrc20TokenName()); + info.setSymbol(contractAddressInfo.getNrc20TokenSymbol()); + Collection values = data.values(); + int i = 0; + String transferEventdata; + for (Object object : values) { + transferEventdata = (String) object; + if (i <= 2) { + if (AddressTool.validAddress(chainId, transferEventdata)) { + if (i == 0) { + info.setOperator(transferEventdata); + } else if (i == 1) { + info.setFrom(transferEventdata); + } else { + info.setTo(transferEventdata); + } + } + } + if (i == 3) { + info.setId(isBlank(transferEventdata) ? "0" : transferEventdata); + } else if (i == 4) { + info.setValue(isBlank(transferEventdata) ? "0" : transferEventdata); + break; + } + i++; } - if (AddressTool.validAddress(chainId, to)) { - info.setTo(to); + return info; + } else if (NRC1155_EVENT_TRANSFER_BATCH.equals(eventName)) { + if (tokenType != TokenTypeStatus.NRC1155.status()) { + return null; } - if (isNRC721) { - info.setTokenType(TOKEN_TYPE_NRC721); - info.setValue(isBlank(tokenId) ? BigInteger.ZERO : new BigInteger(tokenId)); + Map data = (Map) eventMap.get(CONTRACT_EVENT_DATA); + info.setTokenType(TokenTypeStatus.NRC1155.status()); + info.setName(contractAddressInfo.getNrc20TokenName()); + info.setSymbol(contractAddressInfo.getNrc20TokenSymbol()); + Collection datas = data.values(); + int i = 0; + String transferEventdata; + for (Object object : datas) { + if (i <= 2) { + transferEventdata = (String) object; + if (AddressTool.validAddress(chainId, transferEventdata)) { + if (i == 0) { + info.setOperator(transferEventdata); + } else if (i == 1) { + info.setFrom(transferEventdata); + } else { + info.setTo(transferEventdata); + } + } + } + if (i == 3) { + List ids = (List) object; + String[] _ids = null; + if (ids != null) { + _ids = new String[ids.size()]; + ids.toArray(_ids); + } + info.setIds(_ids); + } else if (i == 4) { + List values = (List) object; + String[] _values = null; + if (values != null) { + _values = new String[values.size()]; + values.toArray(_values); + } + info.setValues(_values); + break; + } + i++; } return info; } @@ -373,6 +477,22 @@ public static ContractTokenTransferInfo convertJsonToTokenTransferInfo(int chain } } + public static String[] big2strArray(BigInteger[] bigArray) { + String[] result = new String[bigArray.length]; + for (int i = 0; i < bigArray.length; i++) { + result[i] = bigArray[i].toString(); + } + return result; + } + + public static BigInteger[] str2bigArray(String[] strArrays) { + BigInteger[] result = new BigInteger[strArrays.length]; + for (int i = 0; i < strArrays.length; i++) { + result[i] = new BigInteger(strArrays[i]); + } + return result; + } + public static boolean isContractTransaction(Transaction tx) { if (tx == null) { return false; @@ -898,4 +1018,17 @@ public static ProgramMultyAssetValue[] multyAssetObjectArray(String[][] multyAss } return array; } + + public static String methodSignature(ProgramMethod method) { + List args = method.getArgs(); + StringBuilder key = new StringBuilder(method.getName()).append("("); + if (args != null && !args.isEmpty()) { + for (int i=0;i NRC20_METHODS = null; private static Map NRC721_METHODS = null; - private static ProgramMethod NRC721_OVERLOAD_METHOD_SAFE_DATA = null; - private static ProgramMethod NRC721_OVERLOAD_METHOD_SAFE = null; + private static Map NRC1155_METHODS = null; /** * @param hash @@ -220,20 +219,12 @@ public static void setNrc721Methods(Map nrc721Methods) { NRC721_METHODS = nrc721Methods; } - public static ProgramMethod getNrc721OverloadMethodSafeData() { - return NRC721_OVERLOAD_METHOD_SAFE_DATA; + public static Map getNrc1155Methods() { + return NRC1155_METHODS; } - public static void setNrc721OverloadMethodSafeData(ProgramMethod nrc721OverloadMethodSafeData) { - NRC721_OVERLOAD_METHOD_SAFE_DATA = nrc721OverloadMethodSafeData; - } - - public static ProgramMethod getNrc721OverloadMethodSafe() { - return NRC721_OVERLOAD_METHOD_SAFE; - } - - public static void setNrc721OverloadMethodSafe(ProgramMethod nrc721OverloadMethodSafe) { - NRC721_OVERLOAD_METHOD_SAFE = nrc721OverloadMethodSafe; + public static void setNrc1155Methods(Map nrc1155Methods) { + NRC1155_METHODS = nrc1155Methods; } public long getBestHeight(int chainId) { diff --git a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java index b22037b536..6c91494ea0 100644 --- a/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java +++ b/module/nuls-smart-contract/src/main/java/io/nuls/contract/vm/program/ProgramMethod.java @@ -159,7 +159,7 @@ public boolean equals(Object o) { return returnArg != null ? returnArg.equals(that.returnArg) : that.returnArg == null; } - public boolean equalsNrc20Method(Object o) { + public boolean equalsTokenMethod(Object o) { if (this == o) { return true; } @@ -182,41 +182,7 @@ public boolean equalsNrc20Method(Object o) { if (that.args == null) { return false; } - if (!isEqualNrc20Args(args, that.args)) { - return false; - } - } else { - if (that.args != null) { - return false; - } - } - return returnArg != null ? returnArg.equals(that.returnArg) : that.returnArg == null; - } - - public boolean equalsNrc721Method(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - ProgramMethod that = (ProgramMethod) o; - - if (view != that.view) { - return false; - } - if (event != that.event) { - return false; - } - if (name != null ? !name.equals(that.name) : that.name != null) { - return false; - } - if (args != null) { - if (that.args == null) { - return false; - } - if (!isEqualNrc721Args(args, that.args)) { + if (!isEqualTokenArgs(args, that.args)) { return false; } } else { @@ -240,44 +206,7 @@ public String[] argsType2Array() { } } - private boolean isEqualNrc20Args(List a, List b) { - if (a.size() != b.size()) { - return false; - } else { - /* - // 参数类型、名称完全相同 - Map mapA = a.stream().collect(Collectors.toMap(ProgramMethodArg::getName, Function.identity(), (key1, key2) -> key2, LinkedHashMap::new)); - Map mapB = b.stream().collect(Collectors.toMap(ProgramMethodArg::getName, Function.identity(), (key1, key2) -> key2, LinkedHashMap::new)); - Set> entriesA = mapA.entrySet(); - String methodName; - ProgramMethodArg methodArg; - for(Map.Entry entryA : entriesA) { - methodName = entryA.getKey(); - if(!mapB.containsKey(methodName)) { - return false; - } - methodArg = entryA.getValue(); - if(!methodArg.equalsNrc20(mapB.get(methodName))) { - return false; - } - } - */ - - // 参数类型相同 - int size = a.size(); - ProgramMethodArg argA, argB; - for (int i = 0; i < size; i++) { - argA = a.get(i); - argB = b.get(i); - if (!argA.equalsNrc20(argB)) { - return false; - } - } - return true; - } - } - - private boolean isEqualNrc721Args(List a, List b) { + private boolean isEqualTokenArgs(List a, List b) { if (a.size() != b.size()) { return false; } else { @@ -287,7 +216,7 @@ private boolean isEqualNrc721Args(List a, List